Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL2TreeEvaluatorInjector.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL2TreeEvaluatorInjector.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL2TreeEvaluatorInjector.cs	(revision 2327)
@@ -0,0 +1,63 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.GP.Interfaces;
+using HeuristicLab.Modeling;
+using HeuristicLab.DataAnalysis;
+
+namespace HeuristicLab.GP.StructureIdentification {
+  public class HL2TreeEvaluatorInjector : OperatorBase {
+    public HL2TreeEvaluatorInjector()
+      : base() {
+      AddVariableInfo(new VariableInfo("Dataset", "The dataset", typeof(Dataset), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TrainingSamplesStart", "Start index of training set", typeof(DoubleData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "End index of training set", typeof(DoubleData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TargetVariable", "Index of the target variable", typeof(IntData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("PunishmentFactor", "The punishment factor limits the estimated values to a certain range", typeof(DoubleData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TreeEvaluator", "The tree evaluator to evaluate models", typeof(ITreeEvaluator), VariableKind.New));
+    }
+
+    public override string Description {
+      get { return "Injects a HL2 compatible tree evaluator."; }
+    }
+
+    public override IOperation Apply(IScope scope) {
+      double punishmentFactor = GetVariableValue<DoubleData>("PunishmentFactor", scope, true).Data;
+      Dataset dataset = GetVariableValue<Dataset>("Dataset", scope, true);
+      int start = GetVariableValue<IntData>("TrainingSamplesStart", scope, true).Data;
+      int end = GetVariableValue<IntData>("TrainingSamplesEnd", scope, true).Data;
+      int targetVariable = GetVariableValue<IntData>("TargetVariable", scope, true).Data;
+      double mean = dataset.GetMean(targetVariable, start, end);
+      double range = dataset.GetRange(targetVariable, start, end);
+      double minEstimatedValue = mean - punishmentFactor * range;
+      double maxEstimatedValue = mean + punishmentFactor * range;
+      HL2TreeEvaluator evaluator = new HL2TreeEvaluator(minEstimatedValue, maxEstimatedValue);
+      scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("TreeEvaluator"), evaluator));
+      return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL3TreeEvaluatorInjector.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL3TreeEvaluatorInjector.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HL3TreeEvaluatorInjector.cs	(revision 2327)
@@ -0,0 +1,63 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.GP.Interfaces;
+using HeuristicLab.Modeling;
+using HeuristicLab.DataAnalysis;
+
+namespace HeuristicLab.GP.StructureIdentification {
+  public class HL3TreeEvaluatorInjector : OperatorBase {
+    public HL3TreeEvaluatorInjector()
+      : base() {
+      AddVariableInfo(new VariableInfo("Dataset", "The dataset", typeof(Dataset), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TrainingSamplesStart", "Start index of training set", typeof(DoubleData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TrainingSamplesEnd", "End index of training set", typeof(DoubleData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TargetVariable", "Index of the target variable", typeof(IntData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("PunishmentFactor", "The punishment factor limits the estimated values to a certain range", typeof(DoubleData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("TreeEvaluator", "The tree evaluator to evaluate models", typeof(ITreeEvaluator), VariableKind.New));
+    }
+
+    public override string Description {
+      get { return "Injects a tree evaluator."; }
+    }
+
+    public override IOperation Apply(IScope scope) {
+      double punishmentFactor = GetVariableValue<DoubleData>("PunishmentFactor", scope, true).Data;
+      Dataset dataset = GetVariableValue<Dataset>("Dataset", scope, true);
+      int start = GetVariableValue<IntData>("TrainingSamplesStart", scope, true).Data;
+      int end = GetVariableValue<IntData>("TrainingSamplesEnd", scope, true).Data;
+      int targetVariable = GetVariableValue<IntData>("TargetVariable", scope, true).Data;
+      double mean = dataset.GetMean(targetVariable, start, end);
+      double range = dataset.GetRange(targetVariable, start, end);
+      double minEstimatedValue = mean - punishmentFactor * range;
+      double maxEstimatedValue = mean + punishmentFactor * range;
+      HL3TreeEvaluator evaluator = new HL3TreeEvaluator(minEstimatedValue, maxEstimatedValue);
+      scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("TreeEvaluator"), evaluator));
+      return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.Designer.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.Designer.cs	(revision 2327)
@@ -0,0 +1,140 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.GP.StructureIdentification {
+  partial class PredictorView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.lowerPredictionLimit = new System.Windows.Forms.Label();
+      this.lowerLimitTextbox = new System.Windows.Forms.TextBox();
+      this.upperLimitTextbox = new System.Windows.Forms.TextBox();
+      this.upperPredictionLimit = new System.Windows.Forms.Label();
+      this.SuspendLayout();
+      // 
+      // sizeLabel
+      // 
+      this.sizeLabel.Location = new System.Drawing.Point(3, 58);
+      // 
+      // sizeTextBox
+      // 
+      this.sizeTextBox.Location = new System.Drawing.Point(134, 55);
+      // 
+      // heightLabel
+      // 
+      this.heightLabel.Location = new System.Drawing.Point(3, 84);
+      // 
+      // heightTextBox
+      // 
+      this.heightTextBox.Location = new System.Drawing.Point(134, 81);
+      // 
+      // funTreeView
+      // 
+      this.funTreeView.Location = new System.Drawing.Point(0, 107);
+      this.funTreeView.Size = new System.Drawing.Size(417, 304);
+      // 
+      // lowerPredictionLimit
+      // 
+      this.lowerPredictionLimit.AutoSize = true;
+      this.lowerPredictionLimit.Location = new System.Drawing.Point(3, 6);
+      this.lowerPredictionLimit.Name = "lowerPredictionLimit";
+      this.lowerPredictionLimit.Size = new System.Drawing.Size(113, 13);
+      this.lowerPredictionLimit.TabIndex = 13;
+      this.lowerPredictionLimit.Text = "Lower Prediction Limit:";
+      // 
+      // lowerLimitTextbox
+      // 
+      this.lowerLimitTextbox.Location = new System.Drawing.Point(134, 3);
+      this.lowerLimitTextbox.Name = "lowerLimitTextbox";
+      this.lowerLimitTextbox.ReadOnly = true;
+      this.lowerLimitTextbox.Size = new System.Drawing.Size(100, 20);
+      this.lowerLimitTextbox.TabIndex = 14;
+      // 
+      // upperLimitTextbox
+      // 
+      this.upperLimitTextbox.Location = new System.Drawing.Point(134, 29);
+      this.upperLimitTextbox.Name = "upperLimitTextbox";
+      this.upperLimitTextbox.ReadOnly = true;
+      this.upperLimitTextbox.Size = new System.Drawing.Size(100, 20);
+      this.upperLimitTextbox.TabIndex = 16;
+      // 
+      // upperPredictionLimit
+      // 
+      this.upperPredictionLimit.AutoSize = true;
+      this.upperPredictionLimit.Location = new System.Drawing.Point(3, 32);
+      this.upperPredictionLimit.Name = "upperPredictionLimit";
+      this.upperPredictionLimit.Size = new System.Drawing.Size(113, 13);
+      this.upperPredictionLimit.TabIndex = 15;
+      this.upperPredictionLimit.Text = "Upper Prediction Limit:";
+      // 
+      // PredictorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.upperLimitTextbox);
+      this.Controls.Add(this.upperPredictionLimit);
+      this.Controls.Add(this.lowerLimitTextbox);
+      this.Controls.Add(this.lowerPredictionLimit);
+      this.Name = "PredictorView";
+      this.Size = new System.Drawing.Size(420, 414);
+      this.Controls.SetChildIndex(this.sizeTextBox, 0);
+      this.Controls.SetChildIndex(this.sizeLabel, 0);
+      this.Controls.SetChildIndex(this.heightTextBox, 0);
+      this.Controls.SetChildIndex(this.heightLabel, 0);
+      this.Controls.SetChildIndex(this.funTreeView, 0);
+      this.Controls.SetChildIndex(this.lowerPredictionLimit, 0);
+      this.Controls.SetChildIndex(this.lowerLimitTextbox, 0);
+      this.Controls.SetChildIndex(this.upperPredictionLimit, 0);
+      this.Controls.SetChildIndex(this.upperLimitTextbox, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label lowerPredictionLimit;
+    private System.Windows.Forms.TextBox lowerLimitTextbox;
+    private System.Windows.Forms.TextBox upperLimitTextbox;
+    private System.Windows.Forms.Label upperPredictionLimit;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.cs	(revision 2327)
@@ -0,0 +1,48 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.GP.StructureIdentification {
+  public partial class PredictorView : GeneticProgrammingModelView {
+    private Predictor predictor;
+
+    public PredictorView() : base() {
+      InitializeComponent();
+    }    
+
+    public PredictorView(Predictor predictor)
+      : base(predictor.FunctionTree) {
+      InitializeComponent();
+      this.predictor = predictor;
+      upperLimitTextbox.DataBindings.Add(new Binding("Text", predictor, "UpperPredictionLimit"));
+      lowerLimitTextbox.DataBindings.Add(new Binding("Text", predictor, "LowerPredictionLimit"));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.resx
===================================================================
--- /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.resx	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/PredictorView.resx	(revision 2327)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="treeNodeContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
Index: /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.Designer.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.Designer.cs	(revision 2327)
@@ -0,0 +1,124 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+namespace HeuristicLab.GP {
+  partial class GeneticProgrammingModelView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.sizeLabel = new System.Windows.Forms.Label();
+      this.sizeTextBox = new System.Windows.Forms.TextBox();
+      this.heightLabel = new System.Windows.Forms.Label();
+      this.heightTextBox = new System.Windows.Forms.TextBox();
+      this.SuspendLayout();
+      // 
+      // funTreeView
+      // 
+      this.funTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.funTreeView.LineColor = System.Drawing.Color.Black;
+      this.funTreeView.Location = new System.Drawing.Point(0, 55);
+      this.funTreeView.Size = new System.Drawing.Size(428, 429);
+      // 
+      // sizeLabel
+      // 
+      this.sizeLabel.AutoSize = true;
+      this.sizeLabel.Location = new System.Drawing.Point(17, 6);
+      this.sizeLabel.Name = "sizeLabel";
+      this.sizeLabel.Size = new System.Drawing.Size(30, 13);
+      this.sizeLabel.TabIndex = 1;
+      this.sizeLabel.Text = "Size:";
+      // 
+      // sizeTextBox
+      // 
+      this.sizeTextBox.Location = new System.Drawing.Point(58, 3);
+      this.sizeTextBox.Name = "sizeTextBox";
+      this.sizeTextBox.ReadOnly = true;
+      this.sizeTextBox.Size = new System.Drawing.Size(100, 20);
+      this.sizeTextBox.TabIndex = 2;
+      // 
+      // heightLabel
+      // 
+      this.heightLabel.AutoSize = true;
+      this.heightLabel.Location = new System.Drawing.Point(6, 32);
+      this.heightLabel.Name = "heightLabel";
+      this.heightLabel.Size = new System.Drawing.Size(41, 13);
+      this.heightLabel.TabIndex = 3;
+      this.heightLabel.Text = "Height:";
+      // 
+      // heightTextBox
+      // 
+      this.heightTextBox.Location = new System.Drawing.Point(58, 29);
+      this.heightTextBox.Name = "heightTextBox";
+      this.heightTextBox.ReadOnly = true;
+      this.heightTextBox.Size = new System.Drawing.Size(100, 20);
+      this.heightTextBox.TabIndex = 4;
+      // 
+      // GeneticProgrammingModelView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.Controls.Add(this.heightLabel);
+      this.Controls.Add(this.heightTextBox);
+      this.Controls.Add(this.sizeLabel);
+      this.Controls.Add(this.sizeTextBox);
+      this.Name = "GeneticProgrammingModelView";
+      this.Size = new System.Drawing.Size(428, 487);
+      this.Controls.SetChildIndex(this.sizeTextBox, 0);
+      this.Controls.SetChildIndex(this.sizeLabel, 0);
+      this.Controls.SetChildIndex(this.funTreeView, 0);
+      this.Controls.SetChildIndex(this.heightTextBox, 0);
+      this.Controls.SetChildIndex(this.heightLabel, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.Label sizeLabel;
+    protected System.Windows.Forms.TextBox sizeTextBox;
+    protected System.Windows.Forms.Label heightLabel;
+    protected System.Windows.Forms.TextBox heightTextBox;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.cs
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.cs	(revision 2327)
@@ -0,0 +1,44 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.GP.Interfaces;
+
+namespace HeuristicLab.GP {
+  public partial class GeneticProgrammingModelView : FunctionTreeView {
+    private IGeneticProgrammingModel model;
+
+    public GeneticProgrammingModelView() : base() {
+      InitializeComponent();
+    }
+
+    public GeneticProgrammingModelView(IGeneticProgrammingModel model)
+      : base(model.FunctionTree) {
+      this.model = model;
+      InitializeComponent();
+      sizeTextBox.DataBindings.Add(new Binding("Text", model, "Size"));
+      heightTextBox.DataBindings.Add(new Binding("Text", model, "Height"));
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.resx
===================================================================
--- /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.resx	(revision 2327)
+++ /trunk/sources/HeuristicLab.GP/3.3/GeneticProgrammingModelView.resx	(revision 2327)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="treeNodeContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
Index: /trunk/sources/HeuristicLab.Modeling/3.2/SolutionExtractor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Modeling/3.2/SolutionExtractor.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.Modeling/3.2/SolutionExtractor.cs	(revision 2327)
@@ -0,0 +1,45 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.Modeling {
+  public class SolutionExtractor : OperatorBase {
+    public override string Description {
+      get { return @"Extracts a scope stored in a variable and appends it as child of the current scope."; }
+    }
+
+    public SolutionExtractor()
+      : base() {
+      AddVariableInfo(new VariableInfo("Scope", "The scope to extract", typeof(IScope), VariableKind.In));
+    }
+
+    public override IOperation Apply(IScope scope) {
+      IScope extractedScope = GetVariableValue<IScope>("Scope", scope, true);
+      scope.AddSubScope(extractedScope);
+      return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.Designer.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.Designer.cs	(revision 2327)
@@ -0,0 +1,114 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.SupportVectorMachines {
+  partial class PredictorView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.lowerPredictionLimit = new System.Windows.Forms.Label();
+      this.lowerLimitTextbox = new System.Windows.Forms.TextBox();
+      this.upperLimitTextbox = new System.Windows.Forms.TextBox();
+      this.upperPredictionLimit = new System.Windows.Forms.Label();
+      this.SuspendLayout();
+      // 
+      // lowerPredictionLimit
+      // 
+      this.lowerPredictionLimit.AutoSize = true;
+      this.lowerPredictionLimit.Location = new System.Drawing.Point(3, 137);
+      this.lowerPredictionLimit.Name = "lowerPredictionLimit";
+      this.lowerPredictionLimit.Size = new System.Drawing.Size(113, 13);
+      this.lowerPredictionLimit.TabIndex = 13;
+      this.lowerPredictionLimit.Text = "Lower Prediction Limit:";
+      // 
+      // lowerLimitTextbox
+      // 
+      this.lowerLimitTextbox.Location = new System.Drawing.Point(144, 134);
+      this.lowerLimitTextbox.Name = "lowerLimitTextbox";
+      this.lowerLimitTextbox.ReadOnly = true;
+      this.lowerLimitTextbox.Size = new System.Drawing.Size(100, 20);
+      this.lowerLimitTextbox.TabIndex = 14;
+      // 
+      // upperLimitTextbox
+      // 
+      this.upperLimitTextbox.Location = new System.Drawing.Point(144, 160);
+      this.upperLimitTextbox.Name = "upperLimitTextbox";
+      this.upperLimitTextbox.ReadOnly = true;
+      this.upperLimitTextbox.Size = new System.Drawing.Size(100, 20);
+      this.upperLimitTextbox.TabIndex = 16;
+      // 
+      // upperPredictionLimit
+      // 
+      this.upperPredictionLimit.AutoSize = true;
+      this.upperPredictionLimit.Location = new System.Drawing.Point(3, 163);
+      this.upperPredictionLimit.Name = "upperPredictionLimit";
+      this.upperPredictionLimit.Size = new System.Drawing.Size(113, 13);
+      this.upperPredictionLimit.TabIndex = 15;
+      this.upperPredictionLimit.Text = "Upper Prediction Limit:";
+      // 
+      // PredictorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.upperLimitTextbox);
+      this.Controls.Add(this.upperPredictionLimit);
+      this.Controls.Add(this.lowerLimitTextbox);
+      this.Controls.Add(this.lowerPredictionLimit);
+      this.Name = "PredictorView";
+      this.Size = new System.Drawing.Size(291, 193);
+      this.Controls.SetChildIndex(this.lowerPredictionLimit, 0);
+      this.Controls.SetChildIndex(this.lowerLimitTextbox, 0);
+      this.Controls.SetChildIndex(this.upperPredictionLimit, 0);
+      this.Controls.SetChildIndex(this.upperLimitTextbox, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label lowerPredictionLimit;
+    private System.Windows.Forms.TextBox lowerLimitTextbox;
+    private System.Windows.Forms.TextBox upperLimitTextbox;
+    private System.Windows.Forms.Label upperPredictionLimit;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.cs	(revision 2327)
+++ /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.cs	(revision 2327)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.SupportVectorMachines {
+  public partial class PredictorView : SVMModelView {
+    private Predictor predictor;
+
+    public PredictorView() : base() {
+      InitializeComponent();
+    }    
+
+    public PredictorView(Predictor predictor)
+      : base(predictor.Model) {
+      InitializeComponent();
+      this.predictor = predictor;
+      UpdateControls();
+    }
+
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      lowerLimitTextbox.Text = predictor.LowerPredictionLimit.ToString();
+      upperLimitTextbox.Text = predictor.UpperPredictionLimit.ToString();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.resx
===================================================================
--- /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.resx	(revision 2327)
+++ /trunk/sources/HeuristicLab.SupportVectorMachines/3.2/PredictorView.resx	(revision 2327)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
