Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/DistanceMatrixPathTSPEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/DistanceMatrixPathTSPEvaluator.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/DistanceMatrixPathTSPEvaluator.cs	(revision 1697)
@@ -0,0 +1,67 @@
+#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;
+using HeuristicLab.Operators;
+using HeuristicLab.Permutation;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Evaluates the TSP path by using values in the distance matrix.
+  /// </summary>
+  public class DistanceMatrixPathTSPEvaluator : SingleObjectiveEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return @"TODO\r\nOperator description still missing ..."; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="DistanceMatrixPathTSPEvaluator"/> with two variable 
+    /// infos (<c>Permutation</c>, <c>DistanceMatrix</c>).
+    /// </summary>
+    public DistanceMatrixPathTSPEvaluator()
+      : base() {
+      AddVariableInfo(new VariableInfo("Permutation", "Permutation representing a TSP solution in path encoding", typeof(Permutation.Permutation), VariableKind.In));
+      AddVariableInfo(new VariableInfo("DistanceMatrix", "Distance matrix containing all distances between cities", typeof(DoubleMatrixData), VariableKind.In));
+    }
+
+    /// <summary>
+    /// Calculates the length of the path in the given <paramref name="scope"/> by taking the 
+    /// values of the distance matrix.
+    /// </summary>
+    /// <param name="scope">The current scope with the permutation and the distance matrix.</param>
+    /// <returns>The calculated length.</returns>
+    protected override double Evaluate(IScope scope) {
+      double[,] distanceMatrix = GetVariableValue<DoubleMatrixData>("DistanceMatrix", scope, true).Data;
+      int[] perm = GetVariableValue<Permutation.Permutation>("Permutation", scope, false).Data;
+      double length = 0;
+
+      for (int i = 0; i < perm.Length - 1; i++)
+        length += distanceMatrix[perm[i], perm[i + 1]];
+      length += distanceMatrix[perm[perm.Length - 1], perm[0]];
+      return length;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.2.csproj
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.2.csproj	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLab.Routing.TSP-3.2.csproj	(revision 1697)
@@ -0,0 +1,163 @@
+﻿<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{9EF75B49-D507-44E0-BC5D-C200FDA53B9B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Routing.TSP</RootNamespace>
+    <AssemblyName>HeuristicLab.Routing.TSP-3.2</AssemblyName>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>
+    </DocumentationFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile>bin\Release\HeuristicLab.Routing.TSP-3.2.XML</DocumentationFile>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\HeuristicLab.Routing.TSP-3.2.XML</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>bin\Release\HeuristicLab.Routing.TSP-3.2.XML</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="TSPTourInjector.cs" />
+    <Compile Include="TSPTourView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="TSPTourView.Designer.cs">
+      <DependentUpon>TSPTourView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="TSPTour.cs" />
+    <Compile Include="TSPInjectorView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="TSPInjectorView.Designer.cs">
+      <DependentUpon>TSPInjectorView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="TSPRoundedEuclideanDistanceMatrixInjector.cs" />
+    <Compile Include="TSPDistanceMatrixInjectorBase.cs" />
+    <Compile Include="DistanceMatrixPathTSPEvaluator.cs" />
+    <Compile Include="PathTSPEvaluatorBase.cs" />
+    <Compile Include="HeuristicLabRoutingTSPPlugin.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="RoundedEuclideanPathTSPEvaluator.cs" />
+    <Compile Include="TSPInjector.cs" />
+    <Compile Include="TSPParser.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Charting\3.2\HeuristicLab.Charting-3.2.csproj">
+      <Project>{B462D3CC-8866-42F0-9832-AD0967613B72}</Project>
+      <Name>HeuristicLab.Charting-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj">
+      <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project>
+      <Name>HeuristicLab.Core-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Data\3.2\HeuristicLab.Data-3.2.csproj">
+      <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project>
+      <Name>HeuristicLab.Data-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Operators\3.2\HeuristicLab.Operators-3.2.csproj">
+      <Project>{A9983BA2-B3B2-475E-8E2C-62050B71D1C5}</Project>
+      <Name>HeuristicLab.Operators-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Permutation\3.2\HeuristicLab.Permutation-3.2.csproj">
+      <Project>{55FDCFB3-3E8C-4FB0-837C-0CF06BEDED39}</Project>
+      <Name>HeuristicLab.Permutation-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="TSPTourView.resx">
+      <DependentUpon>TSPTourView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="TSPInjectorView.resx">
+      <DependentUpon>TSPInjectorView.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/HeuristicLabRoutingTSPPlugin.cs	(revision 1697)
@@ -0,0 +1,40 @@
+#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.PluginInfrastructure;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Plugin class for HeuristicLab.Routing.TSP plugin
+  /// </summary>
+  [ClassInfo(Name = "HeuristicLab.Routing.TSP-3.2")]
+  [PluginFile(Filename = "HeuristicLab.Routing.TSP-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Core-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Data-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Operators-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Permutation-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Charting-3.2")]
+  public class HeuristicLabRoutingTSPPlugin : PluginBase {
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/PathTSPEvaluatorBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/PathTSPEvaluatorBase.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/PathTSPEvaluatorBase.cs	(revision 1697)
@@ -0,0 +1,77 @@
+#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;
+using HeuristicLab.Operators;
+using HeuristicLab.Permutation;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Base class for TSP path evaluation, based on length calculation.
+  /// </summary>
+  public abstract class PathTSPEvaluatorBase : SingleObjectiveEvaluatorBase {
+    /// <summary>
+    /// Initializes a new instance of <see cref="PathTSPEvaluatorBase"/> with two variable infos
+    /// (<c>Coordinates</c> and <c>Permutation</c>).
+    /// </summary>
+    public PathTSPEvaluatorBase()
+      : base() {
+      AddVariableInfo(new VariableInfo("Coordinates", "City coordinates", typeof(DoubleMatrixData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("Permutation", "Permutation representing a TSP solution in path encoding", typeof(Permutation.Permutation), VariableKind.In));
+    }
+
+    /// <summary>
+    /// Calculates the length of a whole path of the given <paramref name="scope"/>.
+    /// </summary>
+    /// <param name="scope">The scope where to evaluate the path.</param>
+    /// <returns>The calculated length.</returns>
+    protected sealed override double Evaluate(IScope scope) {
+      double[,] coordinates = GetVariableValue<DoubleMatrixData>("Coordinates", scope, true).Data;
+      int[] perm = GetVariableValue<Permutation.Permutation>("Permutation", scope, false).Data;
+      double length = 0;
+
+      for (int i = 0; i < perm.Length - 1; i++)
+        length += CalculateDistance(coordinates[perm[i], 0],
+                                    coordinates[perm[i], 1],
+                                    coordinates[perm[i + 1], 0],
+                                    coordinates[perm[i + 1], 1]);
+      length += CalculateDistance(coordinates[perm[perm.Length - 1], 0],
+                                  coordinates[perm[perm.Length - 1], 1],
+                                  coordinates[perm[0], 0],
+                                  coordinates[perm[0], 1]);
+      return length;
+    }
+
+    /// <summary>
+    /// Calculates the distance between two given points.
+    /// </summary>
+    /// <param name="x1">The x coordinate of point 1.</param>
+    /// <param name="y1">The y coordinate of point 1.</param>
+    /// <param name="x2">The x coordinate of point 2.</param>
+    /// <param name="y2">The y coordinate of point 2.</param>
+    /// <returns>The calculated distance.</returns>
+    protected abstract double CalculateDistance(double x1, double y1, double x2, double y2);
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/Properties/AssemblyInfo.frame
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/Properties/AssemblyInfo.frame	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/Properties/AssemblyInfo.frame	(revision 1697)
@@ -0,0 +1,58 @@
+#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.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Routing.TSP")]
+[assembly: AssemblyDescription("HeuristicLab Traveling Salesman Problem classes")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("3c4c7e0d-ad0b-4e9b-8182-cd7498c7e55d")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/RoundedEuclideanPathTSPEvaluator.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/RoundedEuclideanPathTSPEvaluator.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/RoundedEuclideanPathTSPEvaluator.cs	(revision 1697)
@@ -0,0 +1,52 @@
+#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;
+using HeuristicLab.Operators;
+using HeuristicLab.Permutation;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Evaluates the TSP path by using the euclidean distance between two points.
+  /// </summary>
+  public class RoundedEuclideanPathTSPEvaluator : PathTSPEvaluatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return @"TODO\r\nOperator description still missing ..."; }
+    }
+
+    /// <summary>
+    /// Calculates the distance between two points by using the euclidean distance.
+    /// </summary>
+    /// <param name="x1">The x coordinate of point 1.</param>
+    /// <param name="y1">The y coordinate of point 1.</param>
+    /// <param name="x2">The x coordinate of point 2.</param>
+    /// <param name="y2">The y coordinate of point 2.</param>
+    /// <returns>The euclidean distance between the two points.</returns>
+    protected override double CalculateDistance(double x1, double y1, double x2, double y2) {
+      return Math.Round(Math.Sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPDistanceMatrixInjectorBase.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPDistanceMatrixInjectorBase.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPDistanceMatrixInjectorBase.cs	(revision 1697)
@@ -0,0 +1,78 @@
+#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;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Base class to inject the calculated distance matrix of the TSP path into the current scope.
+  /// </summary>
+  public abstract class TSPDistanceMatrixInjectorBase : OperatorBase {
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPDistanceMatrixInjectorBase"/> with three variable infos
+    /// (<c>Cities</c>, <c>Coordinates</c> and <c>DistanceMatrix</c>).
+    /// </summary>
+    public TSPDistanceMatrixInjectorBase()
+      : base() {
+      AddVariableInfo(new VariableInfo("Cities", "Number of cities", typeof(IntData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("Coordinates", "City coordinates", typeof(DoubleMatrixData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("DistanceMatrix", "Distance matrix containing all distances between cities", typeof(DoubleMatrixData), VariableKind.New));
+    }
+
+    /// <summary>
+    /// Generates a distance matrix with the distances between all cities in the current path.
+    /// </summary>
+    /// <param name="scope">The current scope with the path.</param>
+    /// <returns><c>null</c>.</returns>
+    public override IOperation Apply(IScope scope) {
+      int cities = GetVariableValue<IntData>("Cities", scope, true).Data;
+      double[,] coordinates = GetVariableValue<DoubleMatrixData>("Coordinates", scope, true).Data;
+      double[,] distanceMatrix = new double[cities, cities];
+
+      for (int i = 0; i < cities; i++) {
+        for (int j = 0; j < cities; j++) {
+          distanceMatrix[i, j] = CalculateDistance(coordinates[i, 0],
+                                                   coordinates[i, 1],
+                                                   coordinates[j, 0],
+                                                   coordinates[j, 1]);
+        }
+      }
+      scope.AddVariable(new Variable(scope.TranslateName("DistanceMatrix"), new DoubleMatrixData(distanceMatrix)));
+
+      return null;
+    }
+
+    /// <summary>
+    /// Calculates the distance between two points in the path.
+    /// </summary>
+    /// <param name="x1">The x coordinate of point 1.</param>
+    /// <param name="y1">The y coordinate of point 1.</param>
+    /// <param name="x2">The x coordinate of point 2.</param>
+    /// <param name="y2">The y coordinate of point 2.</param>
+    /// <returns>The calculated distance.</returns>
+    protected abstract double CalculateDistance(double x1, double y1, double x2, double y2);
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjector.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjector.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjector.cs	(revision 1697)
@@ -0,0 +1,78 @@
+#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 System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Injects a new TSP in a given scope with all its needed variables....
+  /// </summary>
+  public class TSPInjector : OperatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return @"TODO\r\nOperator description still missing ..."; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPInjector"/> with four variable infos 
+    /// (<c>Maximization</c>, <c>Cities</c>, <c>Coordinates</c> and <c>BestKnownQuality</c>).
+    /// </summary>
+    public TSPInjector()
+      : base() {
+      AddVariableInfo(new VariableInfo("Maximization", "Set to false as TSP is a minimization problem", typeof(BoolData), VariableKind.New));
+      AddVariableInfo(new VariableInfo("Cities", "Number of cities", typeof(IntData), VariableKind.New));
+      AddVariable(new Variable("Cities", new IntData(0)));
+      AddVariableInfo(new VariableInfo("Coordinates", "City coordinates", typeof(DoubleMatrixData), VariableKind.New));
+      AddVariable(new Variable("Coordinates", new DoubleMatrixData(new double[0,0])));
+      AddVariableInfo(new VariableInfo("BestKnownQuality", "Quality of best known solution", typeof(DoubleData), VariableKind.New));
+      AddVariable(new Variable("InjectBestKnownQuality", new BoolData(false)));
+      AddVariable(new Variable("BestKnownQuality", new DoubleData(0)));
+    }
+
+    /// <summary>
+    /// Creates a new instance of <see cref="TSPInjectorView"/> to display the current instance.
+    /// </summary>
+    /// <returns>The created view as <see cref="TSPInjectorView"/>.</returns>
+    public override IView CreateView() {
+      return new TSPInjectorView(this);
+    }
+
+    /// <summary>
+    /// Adds a new TSP to the given <paramref name="scope"/>, through adding the needed variables.
+    /// </summary>
+    /// <param name="scope">The current scope where to inject the variables.</param>
+    /// <returns><c>null</c>.</returns>
+    public override IOperation Apply(IScope scope) {
+      scope.AddVariable(new Variable(scope.TranslateName("Maximization"), new BoolData(false)));
+      scope.AddVariable(new Variable(scope.TranslateName("Cities"), (IItem)GetVariable("Cities").Value.Clone()));
+      scope.AddVariable(new Variable(scope.TranslateName("Coordinates"), (IItem)GetVariable("Coordinates").Value.Clone()));
+      if (GetVariable("InjectBestKnownQuality").GetValue<BoolData>().Data)
+        scope.AddVariable(new Variable(scope.TranslateName("BestKnownQuality"), (IItem)GetVariable("BestKnownQuality").Value.Clone()));
+      return null;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.Designer.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.Designer.cs	(revision 1697)
@@ -0,0 +1,248 @@
+#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.Routing.TSP {
+  partial class TSPInjectorView {
+    /// <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.citiesLabel = new System.Windows.Forms.Label();
+      this.bestKnownQualityTextBox = new System.Windows.Forms.TextBox();
+      this.bestKnownQualityAvailableCheckBox = new System.Windows.Forms.CheckBox();
+      this.citiesTextBox = new System.Windows.Forms.TextBox();
+      this.importInstanceButton = new System.Windows.Forms.Button();
+      this.bestKnownQualityLabel = new System.Windows.Forms.Label();
+      this.bestKnownQualityAvailableLabel = new System.Windows.Forms.Label();
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.tabControl = new System.Windows.Forms.TabControl();
+      this.dataTabPage = new System.Windows.Forms.TabPage();
+      this.variableInfosTabPage = new System.Windows.Forms.TabPage();
+      this.operatorBaseVariableInfosView = new HeuristicLab.Core.OperatorBaseVariableInfosView();
+      this.descriptionTabPage = new System.Windows.Forms.TabPage();
+      this.operatorBaseDescriptionView = new HeuristicLab.Core.OperatorBaseDescriptionView();
+      this.tabControl.SuspendLayout();
+      this.dataTabPage.SuspendLayout();
+      this.variableInfosTabPage.SuspendLayout();
+      this.descriptionTabPage.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // citiesLabel
+      // 
+      this.citiesLabel.Anchor = System.Windows.Forms.AnchorStyles.Left;
+      this.citiesLabel.AutoSize = true;
+      this.citiesLabel.Location = new System.Drawing.Point(6, 36);
+      this.citiesLabel.Name = "citiesLabel";
+      this.citiesLabel.Size = new System.Drawing.Size(35, 13);
+      this.citiesLabel.TabIndex = 0;
+      this.citiesLabel.Text = "&Cities:";
+      // 
+      // bestKnownQualityTextBox
+      // 
+      this.bestKnownQualityTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.bestKnownQualityTextBox.Location = new System.Drawing.Point(166, 79);
+      this.bestKnownQualityTextBox.Name = "bestKnownQualityTextBox";
+      this.bestKnownQualityTextBox.Size = new System.Drawing.Size(96, 20);
+      this.bestKnownQualityTextBox.TabIndex = 5;
+      this.bestKnownQualityTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.bestKnownQualityTextBox_Validating);
+      // 
+      // bestKnownQualityAvailableCheckBox
+      // 
+      this.bestKnownQualityAvailableCheckBox.Anchor = System.Windows.Forms.AnchorStyles.Left;
+      this.bestKnownQualityAvailableCheckBox.AutoSize = true;
+      this.bestKnownQualityAvailableCheckBox.Location = new System.Drawing.Point(166, 59);
+      this.bestKnownQualityAvailableCheckBox.Name = "bestKnownQualityAvailableCheckBox";
+      this.bestKnownQualityAvailableCheckBox.Size = new System.Drawing.Size(15, 14);
+      this.bestKnownQualityAvailableCheckBox.TabIndex = 3;
+      this.bestKnownQualityAvailableCheckBox.UseVisualStyleBackColor = true;
+      this.bestKnownQualityAvailableCheckBox.CheckedChanged += new System.EventHandler(this.bestKnownQualityAvailableCheckBox_CheckedChanged);
+      // 
+      // citiesTextBox
+      // 
+      this.citiesTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.citiesTextBox.Location = new System.Drawing.Point(166, 33);
+      this.citiesTextBox.Name = "citiesTextBox";
+      this.citiesTextBox.ReadOnly = true;
+      this.citiesTextBox.Size = new System.Drawing.Size(96, 20);
+      this.citiesTextBox.TabIndex = 1;
+      // 
+      // importInstanceButton
+      // 
+      this.importInstanceButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
+      this.importInstanceButton.Location = new System.Drawing.Point(6, 105);
+      this.importInstanceButton.Name = "importInstanceButton";
+      this.importInstanceButton.Size = new System.Drawing.Size(256, 21);
+      this.importInstanceButton.TabIndex = 6;
+      this.importInstanceButton.Text = "&Import Instance from TSPLib";
+      this.importInstanceButton.UseVisualStyleBackColor = true;
+      this.importInstanceButton.Click += new System.EventHandler(this.importInstanceButton_Click);
+      // 
+      // bestKnownQualityLabel
+      // 
+      this.bestKnownQualityLabel.Anchor = System.Windows.Forms.AnchorStyles.Left;
+      this.bestKnownQualityLabel.AutoSize = true;
+      this.bestKnownQualityLabel.Location = new System.Drawing.Point(6, 82);
+      this.bestKnownQualityLabel.Name = "bestKnownQualityLabel";
+      this.bestKnownQualityLabel.Size = new System.Drawing.Size(102, 13);
+      this.bestKnownQualityLabel.TabIndex = 4;
+      this.bestKnownQualityLabel.Text = "&Best Known Quality:";
+      // 
+      // bestKnownQualityAvailableLabel
+      // 
+      this.bestKnownQualityAvailableLabel.Anchor = System.Windows.Forms.AnchorStyles.Left;
+      this.bestKnownQualityAvailableLabel.AutoSize = true;
+      this.bestKnownQualityAvailableLabel.Location = new System.Drawing.Point(6, 59);
+      this.bestKnownQualityAvailableLabel.Name = "bestKnownQualityAvailableLabel";
+      this.bestKnownQualityAvailableLabel.Size = new System.Drawing.Size(148, 13);
+      this.bestKnownQualityAvailableLabel.TabIndex = 2;
+      this.bestKnownQualityAvailableLabel.Text = "Best Known Quality &Available:";
+      // 
+      // openFileDialog
+      // 
+      this.openFileDialog.DefaultExt = "tsp";
+      this.openFileDialog.FileName = "tsp";
+      this.openFileDialog.Filter = "TSPLib files|*.tsp|All files|*.*";
+      this.openFileDialog.Title = "Import TSPLib File";
+      // 
+      // tabControl
+      // 
+      this.tabControl.Controls.Add(this.dataTabPage);
+      this.tabControl.Controls.Add(this.variableInfosTabPage);
+      this.tabControl.Controls.Add(this.descriptionTabPage);
+      this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tabControl.Location = new System.Drawing.Point(0, 0);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(276, 184);
+      this.tabControl.TabIndex = 0;
+      // 
+      // dataTabPage
+      // 
+      this.dataTabPage.Controls.Add(this.citiesLabel);
+      this.dataTabPage.Controls.Add(this.bestKnownQualityAvailableLabel);
+      this.dataTabPage.Controls.Add(this.bestKnownQualityTextBox);
+      this.dataTabPage.Controls.Add(this.bestKnownQualityLabel);
+      this.dataTabPage.Controls.Add(this.bestKnownQualityAvailableCheckBox);
+      this.dataTabPage.Controls.Add(this.importInstanceButton);
+      this.dataTabPage.Controls.Add(this.citiesTextBox);
+      this.dataTabPage.Location = new System.Drawing.Point(4, 22);
+      this.dataTabPage.Name = "dataTabPage";
+      this.dataTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.dataTabPage.Size = new System.Drawing.Size(268, 158);
+      this.dataTabPage.TabIndex = 0;
+      this.dataTabPage.Text = "TSP Data";
+      this.dataTabPage.UseVisualStyleBackColor = true;
+      // 
+      // variableInfosTabPage
+      // 
+      this.variableInfosTabPage.Controls.Add(this.operatorBaseVariableInfosView);
+      this.variableInfosTabPage.Location = new System.Drawing.Point(4, 22);
+      this.variableInfosTabPage.Name = "variableInfosTabPage";
+      this.variableInfosTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.variableInfosTabPage.Size = new System.Drawing.Size(268, 158);
+      this.variableInfosTabPage.TabIndex = 1;
+      this.variableInfosTabPage.Text = "Variable Infos";
+      this.variableInfosTabPage.UseVisualStyleBackColor = true;
+      // 
+      // operatorBaseVariableInfosView
+      // 
+      this.operatorBaseVariableInfosView.Caption = "Operator";
+      this.operatorBaseVariableInfosView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operatorBaseVariableInfosView.Location = new System.Drawing.Point(3, 3);
+      this.operatorBaseVariableInfosView.Name = "operatorBaseVariableInfosView";
+      this.operatorBaseVariableInfosView.Operator = null;
+      this.operatorBaseVariableInfosView.Size = new System.Drawing.Size(262, 152);
+      this.operatorBaseVariableInfosView.TabIndex = 0;
+      // 
+      // descriptionTabPage
+      // 
+      this.descriptionTabPage.Controls.Add(this.operatorBaseDescriptionView);
+      this.descriptionTabPage.Location = new System.Drawing.Point(4, 22);
+      this.descriptionTabPage.Name = "descriptionTabPage";
+      this.descriptionTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.descriptionTabPage.Size = new System.Drawing.Size(268, 158);
+      this.descriptionTabPage.TabIndex = 2;
+      this.descriptionTabPage.Text = "Description";
+      this.descriptionTabPage.UseVisualStyleBackColor = true;
+      // 
+      // operatorBaseDescriptionView
+      // 
+      this.operatorBaseDescriptionView.Caption = "Operator";
+      this.operatorBaseDescriptionView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operatorBaseDescriptionView.Location = new System.Drawing.Point(3, 3);
+      this.operatorBaseDescriptionView.Name = "operatorBaseDescriptionView";
+      this.operatorBaseDescriptionView.Operator = null;
+      this.operatorBaseDescriptionView.Size = new System.Drawing.Size(262, 152);
+      this.operatorBaseDescriptionView.TabIndex = 0;
+      // 
+      // TSPInjectorView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tabControl);
+      this.Name = "TSPInjectorView";
+      this.Size = new System.Drawing.Size(276, 184);
+      this.tabControl.ResumeLayout(false);
+      this.dataTabPage.ResumeLayout(false);
+      this.dataTabPage.PerformLayout();
+      this.variableInfosTabPage.ResumeLayout(false);
+      this.descriptionTabPage.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label citiesLabel;
+    private System.Windows.Forms.TextBox bestKnownQualityTextBox;
+    private System.Windows.Forms.CheckBox bestKnownQualityAvailableCheckBox;
+    private System.Windows.Forms.TextBox citiesTextBox;
+    private System.Windows.Forms.Button importInstanceButton;
+    private System.Windows.Forms.Label bestKnownQualityLabel;
+    private System.Windows.Forms.Label bestKnownQualityAvailableLabel;
+    private System.Windows.Forms.OpenFileDialog openFileDialog;
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage dataTabPage;
+    private System.Windows.Forms.TabPage variableInfosTabPage;
+    private HeuristicLab.Core.OperatorBaseVariableInfosView operatorBaseVariableInfosView;
+    private System.Windows.Forms.TabPage descriptionTabPage;
+    private HeuristicLab.Core.OperatorBaseDescriptionView operatorBaseDescriptionView;
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.cs	(revision 1697)
@@ -0,0 +1,153 @@
+#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.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Class to represent a <see cref="TSPInjector"/> visually.
+  /// </summary>
+  public partial class TSPInjectorView : ViewBase {
+    /// <summary>
+    /// Gets or set the <see cref="TSPInjector"/> to represent visually.
+    /// </summary>        
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
+    /// No own data storage present.</remarks>
+    public TSPInjector TSPInjector {
+      get { return (TSPInjector)Item; }
+      set { base.Item = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPInjectorView"/>.
+    /// </summary>
+    public TSPInjectorView() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPInjectorView"/> with the given 
+    /// <paramref name="tspInjector"/>.
+    /// </summary>
+    /// <param name="tspInjector">The <see cref="TSPInjector"/> to display.</param>
+    public TSPInjectorView(TSPInjector tspInjector)
+      : this() {
+      TSPInjector = tspInjector;
+    }
+
+    /// <summary>
+    /// Removes the event handlers in all children.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void RemoveItemEvents() {
+      operatorBaseVariableInfosView.Operator = null;
+      operatorBaseDescriptionView.Operator = null;
+      base.RemoveItemEvents();
+    }
+    /// <summary>
+    /// Adds event handlers in all children.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      operatorBaseVariableInfosView.Operator = TSPInjector;
+      operatorBaseDescriptionView.Operator = TSPInjector;
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      if (TSPInjector == null) {
+        citiesTextBox.Text = "-";
+        bestKnownQualityAvailableCheckBox.Checked = false;
+        bestKnownQualityAvailableCheckBox.Enabled = false;
+        bestKnownQualityTextBox.Text = "-";
+        bestKnownQualityTextBox.Enabled = false;
+        importInstanceButton.Enabled = false;
+      } else {
+        citiesTextBox.Text = TSPInjector.GetVariable("Cities").Value.ToString();
+        bestKnownQualityAvailableCheckBox.Checked = TSPInjector.GetVariable("InjectBestKnownQuality").GetValue<BoolData>().Data;
+        bestKnownQualityAvailableCheckBox.Enabled = true;
+        if (bestKnownQualityAvailableCheckBox.Checked) {
+          bestKnownQualityTextBox.Text = TSPInjector.GetVariable("BestKnownQuality").Value.ToString();
+          bestKnownQualityTextBox.Enabled = true;
+        } else {
+          bestKnownQualityTextBox.Text = "-";
+          bestKnownQualityTextBox.Enabled = false;
+        }
+        importInstanceButton.Enabled = true;
+      }
+    }
+
+    private void bestKnownQualityAvailableCheckBox_CheckedChanged(object sender, EventArgs e) {
+      TSPInjector.GetVariable("InjectBestKnownQuality").GetValue<BoolData>().Data = bestKnownQualityAvailableCheckBox.Checked;
+      if (bestKnownQualityAvailableCheckBox.Checked) {
+        bestKnownQualityTextBox.Text = TSPInjector.GetVariable("BestKnownQuality").Value.ToString();
+        bestKnownQualityTextBox.Enabled = true;
+      } else {
+        bestKnownQualityTextBox.Text = "-";
+        bestKnownQualityTextBox.Enabled = false;
+      }
+    }
+
+    private void bestKnownQualityTextBox_Validating(object sender, CancelEventArgs e) {
+      e.Cancel = false;
+      try {
+        TSPInjector.GetVariable("BestKnownQuality").GetValue<DoubleData>().Data = double.Parse(bestKnownQualityTextBox.Text);
+      }
+      catch (Exception) {
+        bestKnownQualityTextBox.SelectAll();
+        e.Cancel = true;
+      }
+    }
+
+    private void importInstanceButton_Click(object sender, EventArgs e) {
+      if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
+        TSPParser parser = null;
+        bool success = false;
+        try {
+          parser = new TSPParser(openFileDialog.FileName);
+          parser.Parse();
+          success = true;
+        }
+        catch (Exception ex) {
+          MessageBox.Show(this, ex.Message, ex.GetType().Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
+        }
+        if (success) {
+          TSPInjector.GetVariable("Cities").Value = new IntData(parser.Vertices.GetLength(0));
+          TSPInjector.GetVariable("Coordinates").Value = new DoubleMatrixData(parser.Vertices);
+          Refresh();
+        }
+      }
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.resx
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.resx	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.resx	(revision 1697)
@@ -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="openFileDialog.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.Routing.TSP/3.3/TSPParser.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPParser.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPParser.cs	(revision 1697)
@@ -0,0 +1,210 @@
+#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 System.IO;
+using System.Globalization;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Parses a *.tsp file and extracts its information about a TSP.
+  /// </summary>
+  public class TSPParser {
+    private const int EOF = 0;
+    private const int NAME = 1;
+    private const int TYPE = 2;
+    private const int DIM = 3;
+    private const int WEIGHTTYPE = 4;
+    private const int NODETYPE = 5;
+    private const int NODESECTION = 6;
+
+    private StreamReader source;
+
+    private string myName;
+    /// <summary>
+    /// Gets the name of the parsed TSP.
+    /// </summary>
+    public string Name {
+      get { return myName; }
+    }
+    private double[,] myVertices;
+    /// <summary>
+    /// Gets the vertices of the parsed TSP.
+    /// </summary>
+    public double[,] Vertices {
+      get { return myVertices; }
+    }
+    private int myWeightType;
+    /// <summary>
+    /// Gets the weight type of the parsed TSP.
+    /// </summary>
+    public int WeightType {
+      get { return myWeightType; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPParser"/> with the given <paramref name="path"/>.
+    /// </summary>
+    /// <exception cref="ArgumentException">Thrown when the input file name is not in TSP format (*.tsp)
+    /// </exception>
+    /// <param name="path">The path where the TSP is stored.</param>
+    public TSPParser(String path) {
+      if (!path.EndsWith(".tsp"))
+        throw new ArgumentException("Input file name has to be in TSP format (*.tsp)");
+
+      source = new StreamReader(path);
+      myName = path;
+      myVertices = null;
+      myWeightType = -1;
+    }
+
+    /// <summary>
+    /// Reads the TSP file and parses the elements.
+    /// </summary>
+    /// <exception cref="InvalidDataException">Thrown when file contains unknown (edge) types.</exception>
+    public void Parse() {
+      int section = -1;
+      string str = null;
+      bool typeIsChecked = false;
+      bool weightTypeIsChecked = false;
+
+      do {
+        str = source.ReadLine();
+        section = GetSection(str);
+
+        if (section != -1) {
+          switch (section) {
+            case NAME:
+              ReadName(str);
+              break;
+            case TYPE:
+              CheckType(str);
+              typeIsChecked = true;
+              break;
+            case DIM:
+              InitVerticesArray(str);
+              break;
+            case WEIGHTTYPE:
+              ReadWeightType(str);
+              weightTypeIsChecked = true;
+              break;
+            case NODETYPE:
+              CheckNodeType(str);
+              break;
+            case NODESECTION:
+              ReadVertices();
+              break;
+          }
+        }
+      } while (!((section == EOF) || (str == null)));
+
+      if (!(typeIsChecked && weightTypeIsChecked))
+        throw new InvalidDataException("File contains unknown (edge) types");
+    }
+
+    private int GetSection(string str) {
+      if (str == null)
+        return EOF;
+
+      string[] tokens = str.Split(new string[] { ":" }, StringSplitOptions.None);
+      if (tokens.Length == 0)
+        return -1;
+
+      string token = tokens[0].Trim();
+      if (token.Equals("eof", StringComparison.OrdinalIgnoreCase))
+        return EOF;
+      if (token.Equals("name", StringComparison.OrdinalIgnoreCase))
+        return NAME;
+      if (token.Equals("type", StringComparison.OrdinalIgnoreCase))
+        return TYPE;
+      if (token.Equals("dimension", StringComparison.OrdinalIgnoreCase))
+        return DIM;
+      if (token.Equals("edge_weight_type", StringComparison.OrdinalIgnoreCase))
+        return WEIGHTTYPE;
+      if (token.Equals("node_coord_type", StringComparison.OrdinalIgnoreCase))
+        return NODETYPE;
+      if (token.Equals("node_coord_section", StringComparison.OrdinalIgnoreCase))
+        return NODESECTION;
+
+      return -1;
+    }
+
+    private void ReadName(string str) {
+      string[] tokens = str.Split(new string[] { ":" }, StringSplitOptions.None);
+      myName = tokens[tokens.Length - 1].Trim();
+    }
+
+    private void CheckType(string str) {
+      string[] tokens = str.Split(new string[] { ":" }, StringSplitOptions.None);
+
+      string type = tokens[tokens.Length - 1].Trim();
+      if (!type.Equals("tsp", StringComparison.OrdinalIgnoreCase))
+        throw new InvalidDataException("Input data format is not \"TSP\"");
+    }
+
+    private void InitVerticesArray(string str) {
+      string[] tokens = str.Split(new string[] { ":" }, StringSplitOptions.None);
+      string dimension = tokens[tokens.Length - 1].Trim();
+
+      int dim = Int32.Parse(dimension);
+      myVertices = new double[dim, 2];
+    }
+
+    private void ReadWeightType(string str) {
+      string[] tokens = str.Split(new string[] { ":" }, StringSplitOptions.None);
+      string type = tokens[tokens.Length - 1].Trim();
+
+      if (type.Equals("euc_2d", StringComparison.OrdinalIgnoreCase))
+        myWeightType = 0;
+      else if (type.Equals("geo", StringComparison.OrdinalIgnoreCase))
+        myWeightType = 1;
+      else
+        throw new InvalidDataException("Unsupported type of edge weights");
+    }
+
+    private void CheckNodeType(string str) {
+      string[] tokens = str.Split(new string[] { ":" }, StringSplitOptions.None);
+      string type = tokens[tokens.Length - 1].Trim();
+
+      if (!type.Equals("twod_coords", StringComparison.OrdinalIgnoreCase))
+        throw new InvalidDataException("Unsupported node type");
+    }
+
+    private void ReadVertices() {
+      if (myVertices == null)
+        throw new InvalidDataException("Dimension not found");
+
+      for (int i = 0; i < (myVertices.Length / 2); i++) {
+        string str = source.ReadLine();
+        string[] tokens = str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
+
+        if (tokens.Length != 3)
+          throw new InvalidDataException("Invalid node format");
+
+        CultureInfo culture = new CultureInfo("en-US");
+        myVertices[i, 0] = Double.Parse(tokens[1], culture.NumberFormat);
+        myVertices[i, 1] = Double.Parse(tokens[2], culture.NumberFormat);
+      }
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPRoundedEuclideanDistanceMatrixInjector.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPRoundedEuclideanDistanceMatrixInjector.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPRoundedEuclideanDistanceMatrixInjector.cs	(revision 1697)
@@ -0,0 +1,51 @@
+#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;
+using HeuristicLab.Operators;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Injects a distance matrix with euclidean distances of a TSP path into the current scope.
+  /// </summary>
+  public class TSPRoundedEuclideanDistanceMatrixInjector : TSPDistanceMatrixInjectorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return @"TODO\r\nOperator description still missing ..."; }
+    }
+
+    /// <summary>
+    /// Calculates the distance between two points by using the euclidean distance.
+    /// </summary>
+    /// <param name="x1">The x coordinate of point 1.</param>
+    /// <param name="y1">The y coordinate of point 1.</param>
+    /// <param name="x2">The x coordinate of point 2.</param>
+    /// <param name="y2">The y coordinate of point 2.</param>
+    /// <returns>The euclidean distance between the two points.</returns>
+    protected override double CalculateDistance(double x1, double y1, double x2, double y2) {
+      return Math.Round(Math.Sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTour.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTour.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTour.cs	(revision 1697)
@@ -0,0 +1,147 @@
+#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 System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Permutation;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Represent the tour of a TSP.
+  /// </summary>
+  public class TSPTour : ItemBase, IVisualizationItem {
+    private DoubleMatrixData myCoordinates;
+    /// <summary>
+    /// Gets or sets the coordinates of the current instance.
+    /// </summary>
+    public DoubleMatrixData Coordinates {
+      get { return myCoordinates; }
+      set { myCoordinates = value; }
+    }
+    private Permutation.Permutation myTour;
+    /// <summary>
+    /// Gets or sets the current permutation/tour of the current instance.
+    /// </summary>
+    public Permutation.Permutation Tour {
+      get { return myTour; }
+      set { myTour = value; }
+    }
+
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPTour"/>.
+    /// </summary>
+    public TSPTour() { }
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPTour"/> with the given <paramref name="coordinates"/>
+    /// and the given <paramref name="tour"/>.
+    /// </summary>
+    /// <param name="coordinates">The coordinates of the TSP.</param>
+    /// <param name="tour">The tour the current instance should represent.</param>
+    public TSPTour(DoubleMatrixData coordinates, Permutation.Permutation tour) {
+      myCoordinates = coordinates;
+      myTour = tour;
+    }
+
+    /// <summary>
+    /// Clones the current instance (deep clone).
+    /// </summary>
+    /// <remarks>Uses <see cref="Auxiliary.Clone"/> method of class <see cref="Auxiliary"/> to clone
+    /// the coordinates.</remarks>
+    /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param>
+    /// <returns>The cloned object as <see cref="TSPTour"/>.</returns>
+    public override object Clone(IDictionary<Guid, object> clonedObjects) {
+      TSPTour clone = (TSPTour)base.Clone(clonedObjects);
+      clone.myCoordinates = (DoubleMatrixData)Auxiliary.Clone(Coordinates, clonedObjects);
+      clone.myTour = Tour;
+      return clone;
+    }
+
+    /// <summary>
+    /// Creates a new instance of <see cref="TSPTourView"/> to display the current instance.
+    /// </summary>
+    /// <returns>The created view as <see cref="TSPTourView"/>.</returns>
+    public override IView CreateView() {
+      return new TSPTourView(this);
+    }
+
+    /// <summary>
+    /// Occurs when the coordinates of the current instance have been changed.
+    /// </summary>
+    public event EventHandler CoordinatesChanged;
+    /// <summary>
+    /// Fires a new <c>CoordinatesChanged</c> event.
+    /// </summary>
+    protected virtual void OnCoordinatesChanged() {
+      if (CoordinatesChanged != null)
+        CoordinatesChanged(this, new EventArgs());
+    }
+    /// <summary>
+    /// Occurs when the tour of the current instance has been changed.
+    /// </summary>
+    public event EventHandler TourChanged;
+    /// <summary>
+    /// Fires a new <c>TourChanged</c> event.
+    /// </summary>
+    protected virtual void OnTourChanged() {
+      if (TourChanged != null)
+        TourChanged(this, new EventArgs());
+    }
+
+    #region Persistence Methods
+    /// <summary>
+    /// Saves the current instance as <see cref="XmlNode"/> in the specified <paramref name="document"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="StorableBase.GetXmlNode"/> of base class <see cref="ItemBase"/>. <br/>
+    /// The coordinates and the tour are saved as a child node with the tag names <c>Coordinates</c> and 
+    /// <c>Tour</c>.</remarks>
+    /// <param name="name">The (tag)name of the <see cref="XmlNode"/>.</param>
+    /// <param name="document">The <see cref="XmlDocument"/> where to save the data.</param>
+    /// <param name="persistedObjects">The dictionary of all already persisted objects. 
+    /// (Needed to avoid cycles.)</param>
+    /// <returns>The saved <see cref="XmlNode"/>.</returns>
+    public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
+      XmlNode node = base.GetXmlNode(name, document, persistedObjects);
+      node.AppendChild(PersistenceManager.Persist("Coordinates", Coordinates, document, persistedObjects));
+      node.AppendChild(PersistenceManager.Persist("Tour", Tour, document, persistedObjects));
+      return node;
+    }
+    /// <summary>
+    /// Loads the persisted TSP tour from the specified <paramref name="node"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="StorableBase.Populate"/> of base class 
+    /// <see cref="ItemBase"/>.<br/>
+    /// The coordinates and the tour must be saved as child nodes with the tag names <c>Coordinates</c>
+    /// and <c>Tour</c> (see <see cref="GetXmlNode"/>).</remarks>
+    /// <param name="node">The <see cref="XmlNode"/> where the TSP tour is saved.</param>
+    /// <param name="restoredObjects">A dictionary of all already restored objects. (Needed to avoid cycles.)</param>
+    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
+      base.Populate(node, restoredObjects);
+      myCoordinates = (DoubleMatrixData)PersistenceManager.Restore(node.SelectSingleNode("Coordinates"), restoredObjects);
+      myTour = (Permutation.Permutation)PersistenceManager.Restore(node.SelectSingleNode("Tour"), restoredObjects);
+    }
+    #endregion
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourInjector.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourInjector.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourInjector.cs	(revision 1697)
@@ -0,0 +1,74 @@
+#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;
+using HeuristicLab.Operators;
+using HeuristicLab.Permutation;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Injects a new TSP tour in a given scope with all its neccessary variables.
+  /// </summary>
+  public class TSPTourInjector : OperatorBase {
+    /// <inheritdoc select="summary"/>
+    public override string Description {
+      get { return @"TODO\r\nOperator description still missing ..."; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPTourInjector"/> with three variable infos 
+    /// (<c>Coordinates</c>, <c>Permutation</c> and <c>Tour</c>).
+    /// </summary>
+    public TSPTourInjector() {
+      AddVariableInfo(new VariableInfo("Coordinates", "City coordinates", typeof(DoubleMatrixData), VariableKind.In));
+      AddVariableInfo(new VariableInfo("Permutation", "Permutation representing a TSP solution in path encoding", typeof(Permutation.Permutation), VariableKind.In));
+      AddVariableInfo(new VariableInfo("Tour", "Object representing a whole TSP tour", typeof(TSPTour), VariableKind.New | VariableKind.Out));
+    }
+
+    /// <summary>
+    /// Adds a new <see cref="TSPTour"/> to the given <paramref name="scope"/> with all 
+    /// its neccessary variables.
+    /// </summary>
+    /// <param name="scope">The current scope where to inject the TSP tour.</param>
+    /// <returns><c>null</c>.</returns>
+    public override IOperation Apply(IScope scope) {
+      DoubleMatrixData coordinates = GetVariableValue<DoubleMatrixData>("Coordinates", scope, true);
+      Permutation.Permutation permutation = GetVariableValue<Permutation.Permutation>("Permutation", scope, false);
+      TSPTour tour = GetVariableValue<TSPTour>("Tour", scope, false, false);
+      if (tour == null) {
+        tour = new TSPTour(coordinates, permutation);
+        IVariableInfo info = GetVariableInfo("Tour");
+        if (info.Local)
+          AddVariable(new Variable(info.ActualName, tour));
+        else
+          scope.AddVariable(new Variable(scope.TranslateName(info.FormalName), tour));
+      } else {
+        tour.Coordinates = coordinates;
+        tour.Tour = permutation;
+      }
+      return null;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.Designer.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.Designer.cs	(revision 1697)
@@ -0,0 +1,78 @@
+#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.Routing.TSP {
+  partial class TSPTourView {
+    /// <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.chartControl = new HeuristicLab.Charting.ChartControl();
+      this.SuspendLayout();
+      // 
+      // chartControl
+      // 
+      this.chartControl.BackColor = System.Drawing.SystemColors.Control;
+      this.chartControl.Chart = null;
+      this.chartControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.chartControl.Location = new System.Drawing.Point(0, 0);
+      this.chartControl.Name = "chartControl";
+      this.chartControl.ScaleOnResize = true;
+      this.chartControl.Size = new System.Drawing.Size(160, 147);
+      this.chartControl.TabIndex = 0;
+      // 
+      // TSPTourScopeView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.chartControl);
+      this.Name = "TSPTourScopeView";
+      this.Size = new System.Drawing.Size(160, 147);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private HeuristicLab.Charting.ChartControl chartControl;
+
+
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.cs
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.cs	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.cs	(revision 1697)
@@ -0,0 +1,141 @@
+#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.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Permutation;
+using HeuristicLab.Charting;
+
+namespace HeuristicLab.Routing.TSP {
+  /// <summary>
+  /// Class for the visual representation of a <see cref="TSPTour"/>.
+  /// </summary>
+  public partial class TSPTourView : ViewBase {
+    /// <summary>
+    /// Gets or sets the <see cref="TSPTour"/> to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
+    /// No own data storage present.</remarks>
+    public TSPTour TSPTour {
+      get { return (TSPTour)base.Item; }
+      set { base.Item = value; }
+    }
+
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPTourView"/> with caption "TSP Tour View".
+    /// </summary>
+    public TSPTourView() {
+      InitializeComponent();
+      Caption = "TSP Tour View";
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="TSPTourView"/> with the given <paramref name="tspTour"/>.
+    /// </summary>
+    /// <param name="tspTour">The tour to display.</param>
+    public TSPTourView(TSPTour tspTour)
+      : this() {
+      TSPTour = tspTour;
+    }
+
+
+    /// <summary>
+    /// Removes all event handlers from the underlying <see cref="TSPTour"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks> 
+    protected override void RemoveItemEvents() {
+      TSPTour.CoordinatesChanged -= new EventHandler(TSPTour_CoordinatesChanged);
+      TSPTour.TourChanged -= new EventHandler(TSPTour_TourChanged);
+      base.RemoveItemEvents();
+    }
+    /// <summary>
+    /// Adds event handlers to the underlying <see cref="TSPTour"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      TSPTour.CoordinatesChanged += new EventHandler(TSPTour_CoordinatesChanged);
+      TSPTour.TourChanged += new EventHandler(TSPTour_TourChanged);
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      Chart chart = new Chart(0, 0, 10, 10);
+      chartControl.ScaleOnResize = false;
+
+      if ((TSPTour.Coordinates != null) && (TSPTour.Tour != null)) {
+        chart.UpdateEnabled = false;
+
+        double[,] coords = TSPTour.Coordinates.Data;
+        int[] tour = TSPTour.Tour.Data;
+
+        for (int i = 0; i < tour.Length - 1; i++)
+          chart.Group.Add(new Line(chart, coords[tour[i], 0], coords[tour[i], 1],
+                                          coords[tour[i + 1], 0], coords[tour[i + 1], 1], Pens.Black));
+        chart.Group.Add(new Line(chart, coords[tour[tour.Length - 1], 0], coords[tour[tour.Length - 1], 1],
+                                        coords[tour[0], 0], coords[tour[0], 1], Pens.Black));
+
+        for (int i = 0; i < coords.GetLength(0); i++) {
+          FixedSizeCircle circle = new FixedSizeCircle(chart, coords[i, 0], coords[i, 1], 8, Pens.Black, Brushes.Blue);
+          circle.ToolTipText = "(" + coords[i, 0].ToString() + " ; " + coords[i, 1].ToString() + ")";
+          chart.Group.Add(circle);
+        }
+
+        if (coords.GetLength(0) > 0) {
+          PointD min = new PointD(coords[0, 0], coords[0, 1]);
+          PointD max = new PointD(coords[0, 0], coords[0, 1]);
+          for (int i = 0; i < coords.GetLength(0); i++) {
+            if (coords[i, 0] < min.X) min.X = coords[i, 0];
+            if (coords[i, 1] < min.Y) min.Y = coords[i, 1];
+            if (coords[i, 0] > max.X) max.X = coords[i, 0];
+            if (coords[i, 1] > max.Y) max.Y = coords[i, 1];
+          }
+          Offset offset = new Offset((max.X - min.X) / 20, (max.Y - min.Y) / 20);
+          min = min - offset;
+          max = max + offset;
+          chart.SetPosition(min, max);
+        }
+        chart.UpdateEnabled = true;
+      }
+      chartControl.Chart = chart;
+    }
+
+    #region TSPTour Events
+    private void TSPTour_TourChanged(object sender, EventArgs e) {
+      Refresh();
+    }
+    private void TSPTour_CoordinatesChanged(object sender, EventArgs e) {
+      Refresh();
+    }
+    #endregion
+  }
+}
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.resx
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.resx	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.resx	(revision 1697)
@@ -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>
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/ch130.tsp
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/ch130.tsp	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/ch130.tsp	(revision 1697)
@@ -0,0 +1,137 @@
+NAME: ch130
+TYPE: TSP
+COMMENT: 130 city problem (Churritz)
+DIMENSION: 130
+EDGE_WEIGHT_TYPE: EUC_2D
+NODE_COORD_SECTION
+1 334.5909245845 161.7809319139
+2 397.6446634067 262.8165330708
+3 503.8741827107 172.8741151168
+4 444.0479403502 384.6491809647
+5 311.6137146746 2.0091699828
+6 662.8551011379 549.2301263653
+7 40.0979030612 187.2375430791
+8 526.8941409181 215.7079092185
+9 209.1887938487 691.0262291948
+10 683.2674131973 414.2096286906
+11 280.7494438748 5.9206392047
+12 252.7493090080 535.7430385019
+13 698.7850451923 348.4413729766
+14 678.7574678104 410.7256424438
+15 220.0041131179 409.1225812873
+16 355.1528556851 76.3912076444
+17 296.9724227786 313.1312792361
+18 504.5154071733 240.8866564499
+19 224.1079496785 358.4872228907
+20 470.6801296968 309.6259188406
+21 554.2530513223 279.4242466521
+22 567.6332684419 352.7162027273
+23 599.0532671093 361.0948690386
+24 240.5232959211 430.6036007844
+25 32.0825972787 345.8551009775
+26 91.0538736891 148.7213270256
+27 248.2179894723 343.9528017384
+28 488.8909044347 3.6122311393
+29 206.0467939820 437.7639406167
+30 575.8409415632 141.9670960195
+31 282.6089948164 329.4183805862
+32 27.6581484868 424.7684581747
+33 568.5737309870 287.0975660546
+34 269.4638933331 295.9464636385
+35 417.8004856811 341.2596589955
+36 32.1680938737 448.8998721172
+37 561.4775136009 357.3543930067
+38 342.9482167470 492.3321423839
+39 399.6752075383 156.8435035519
+40 571.7371050025 375.7575350833
+41 370.7559842751 151.9060751898
+42 509.7093253204 435.7975189314
+43 177.0206999750 295.6044772584
+44 526.1674198605 409.4859418161
+45 316.5725171854 65.6400108214
+46 469.2908100279 281.9891445025
+47 572.7630641427 373.3208821255
+48 29.5176994283 330.0382309000
+49 454.0082936692 537.2178547659
+50 416.1546762271 227.6133100741
+51 535.2514330806 471.0648643744
+52 265.4455533675 684.9987192464
+53 478.0542110167 509.6452028741
+54 370.4781203413 332.5390063041
+55 598.3479202004 446.8693279856
+56 201.1521139175 649.0260268945
+57 193.6925360026 680.2322840744
+58 448.5792598859 532.7934059740
+59 603.2853485624 134.4006473609
+60 543.0102490781 481.5168231148
+61 214.5750793346 43.6460117543
+62 426.3501451825 61.7285415996
+63 89.0447037063 277.1158385868
+64 84.4920100219 31.8474816424
+65 220.0468614154 623.0778103080
+66 688.4613313444 0.4702312726
+67 687.2857531630 373.5346236130
+68 75.4934933967 312.9175377486
+69 63.4170993511 23.7039309674
+70 97.9363495877 211.0910930878
+71 399.5255884970 170.8221968365
+72 456.3167017346 597.1937161677
+73 319.8855102422 626.8396604886
+74 295.9250894897 664.6291554845
+75 288.4868857235 667.7284070537
+76 268.3951858954 52.9010181645
+77 140.4709056068 513.5566720960
+78 689.8079027159 167.5947003748
+79 280.5784506848 458.7533546925
+80 453.3884433554 282.9082328989
+81 213.5704943432 525.8681817779
+82 133.6953004520 677.1757808026
+83 521.1658690522 132.8617086506
+84 30.2657946347 450.0754502986
+85 657.0199585283 39.7772908299
+86 6.9252241961 23.8749241575
+87 252.4286967767 535.1659364856
+88 42.8551682504 63.8232081774
+89 145.8999393902 399.5255884970
+90 638.4885715591 62.6262558472
+91 489.2756391122 665.3131282446
+92 361.2231139311 564.2347787901
+93 519.9475425732 347.9711417040
+94 129.3349741063 435.6692740389
+95 259.7172815016 454.6495181318
+96 676.3421890013 371.0979706551
+97 84.5133841706 183.3260738572
+98 77.7164048671 354.3833863300
+99 335.9802442534 660.6321896676
+100 264.3554717810 377.5743377274
+101 51.6826916855 676.0429509187
+102 692.1376849300 543.8010925819
+103 169.2191356800 547.8194325476
+104 194.0131482339 263.4791316822
+105 415.1928395332 78.9133571973
+106 415.0432204919 479.0801701569
+107 169.8389859939 245.6103433244
+108 525.0987124228 213.5063718969
+109 238.6851191283 33.4932910965
+110 116.2112467718 363.5742702940
+111 16.9283258126 656.5711014044
+112 434.3440768162 92.6996831431
+113 40.5253860363 424.6829615797
+114 530.4849979086 183.8390534273
+115 484.3595848990 49.2460387276
+116 263.6501248722 426.5852608187
+117 450.2891917862 126.3853415784
+118 441.7822805823 299.7724362653
+119 24.2169105375 500.3474481664
+120 503.7886861157 514.6895019799
+121 635.5389390312 200.9811207275
+122 614.5922732529 418.8691931188
+123 21.7161351334 660.9741760476
+124 143.8266469611 92.6996831431
+125 637.7191022040 54.2048412384
+126 566.5645610042 199.9551615873
+127 196.6849168280 221.8209157619
+128 384.9270448985 87.4630166986
+129 178.1107815614 104.6905805938
+130 403.2874386776 205.8971749407
+EOF
Index: trunk/sources/HeuristicLab.Routing.TSP/3.3/fl1400.tsp
===================================================================
--- trunk/sources/HeuristicLab.Routing.TSP/3.3/fl1400.tsp	(revision 1697)
+++ trunk/sources/HeuristicLab.Routing.TSP/3.3/fl1400.tsp	(revision 1697)
@@ -0,0 +1,1407 @@
+NAME: fl1400
+COMMENT: Drilling problem (Reinelt)
+TYPE: TSP
+DIMENSION: 1400
+EDGE_WEIGHT_TYPE: EUC_2D
+NODE_COORD_SECTION
+1 2.10461e+03 1.96835e+03
+2 2.10461e+03 2.32264e+02
+3 2.95591e+02 1.96835e+03
+4 2.95591e+02 2.32264e+02
+5 1.02570e+03 1.97130e+03
+6 1.16167e+03 1.96539e+03
+7 1.19123e+03 1.95949e+03
+8 1.16759e+03 1.95949e+03
+9 1.09664e+03 1.95949e+03
+10 1.10256e+03 1.95358e+03
+11 1.09073e+03 1.95358e+03
+12 1.01979e+03 1.95358e+03
+13 1.23262e+03 1.94177e+03
+14 1.04344e+03 1.94177e+03
+15 1.23853e+03 1.93587e+03
+16 1.16759e+03 1.93587e+03
+17 1.13211e+03 1.93587e+03
+18 1.26809e+03 1.92996e+03
+19 1.24444e+03 1.92996e+03
+20 1.06708e+03 1.92996e+03
+21 1.17941e+03 1.92406e+03
+22 1.04935e+03 1.92406e+03
+23 1.03753e+03 1.92406e+03
+24 1.12620e+03 1.91815e+03
+25 1.09073e+03 1.91815e+03
+26 9.84319e+02 1.91815e+03
+27 1.32720e+03 1.90634e+03
+28 1.03161e+03 1.90634e+03
+29 9.96143e+02 1.90634e+03
+30 1.04935e+03 1.90044e+03
+31 1.18532e+03 1.89453e+03
+32 1.11438e+03 1.89453e+03
+33 1.31538e+03 1.88272e+03
+34 1.29173e+03 1.88272e+03
+35 1.07891e+03 1.88272e+03
+36 1.01388e+03 1.87682e+03
+37 1.73512e+03 1.74691e+03
+38 7.41934e+02 1.74691e+03
+39 1.72921e+03 1.74100e+03
+40 7.36022e+02 1.74100e+03
+41 1.52230e+03 1.72329e+03
+42 5.29108e+02 1.72329e+03
+43 1.18532e+03 1.64652e+03
+44 1.56959e+03 1.52252e+03
+45 5.76403e+02 1.52252e+03
+46 1.14985e+03 1.44575e+03
+47 6.17786e+02 1.44575e+03
+48 1.03161e+03 1.42213e+03
+49 1.10847e+03 1.41622e+03
+50 7.53758e+02 1.41622e+03
+51 1.03161e+03 1.41032e+03
+52 5.94138e+02 1.41032e+03
+53 7.59670e+02 1.39851e+03
+54 6.05962e+02 1.39851e+03
+55 7.53758e+02 1.27450e+03
+56 6.59169e+02 1.25088e+03
+57 1.26809e+03 1.24498e+03
+58 5.94138e+02 1.24498e+03
+59 6.11874e+02 1.22726e+03
+60 1.27991e+03 1.22136e+03
+61 6.59169e+02 1.15640e+03
+62 1.22670e+03 1.00287e+03
+63 1.14985e+03 9.96967e+02
+64 1.61097e+03 9.73347e+02
+65 1.03753e+03 8.02101e+02
+66 1.31538e+03 7.96196e+02
+67 1.11438e+03 7.96196e+02
+68 1.09073e+03 7.96196e+02
+69 1.27400e+03 7.90290e+02
+70 1.13211e+03 7.90290e+02
+71 1.10847e+03 7.90290e+02
+72 1.01388e+03 7.90290e+02
+73 1.26809e+03 7.84386e+02
+74 1.11438e+03 7.84386e+02
+75 1.03161e+03 7.84386e+02
+76 1.66418e+03 7.78481e+02
+77 1.23853e+03 7.78481e+02
+78 1.09664e+03 7.78481e+02
+79 1.04935e+03 7.78481e+02
+80 9.78407e+02 7.78481e+02
+81 1.23262e+03 7.72576e+02
+82 1.18532e+03 7.72576e+02
+83 1.07891e+03 7.72576e+02
+84 1.05526e+03 7.72576e+02
+85 1.01979e+03 7.72576e+02
+86 1.21488e+03 7.66670e+02
+87 1.19123e+03 7.66670e+02
+88 1.16759e+03 7.66670e+02
+89 1.08482e+03 7.66670e+02
+90 1.07300e+03 7.66670e+02
+91 1.23262e+03 7.60765e+02
+92 1.16167e+03 7.60765e+02
+93 1.26218e+03 7.54861e+02
+94 1.25035e+03 7.54861e+02
+95 1.17941e+03 7.54861e+02
+96 1.02570e+03 7.54861e+02
+97 1.26809e+03 7.48955e+02
+98 1.24444e+03 7.48955e+02
+99 1.17350e+03 7.48955e+02
+100 1.13211e+03 7.43050e+02
+101 1.12029e+03 7.43050e+02
+102 1.01979e+03 7.25335e+02
+103 9.96143e+02 7.25335e+02
+104 1.03753e+03 7.19430e+02
+105 1.00205e+03 7.19430e+02
+106 1.17350e+03 5.59994e+02
+107 1.61097e+03 5.48184e+02
+108 1.17350e+03 5.48184e+02
+109 1.22079e+03 5.36374e+02
+110 1.07300e+03 1.96539e+03
+111 1.04935e+03 1.96539e+03
+112 1.13803e+03 1.95949e+03
+113 1.11438e+03 1.95949e+03
+114 1.05526e+03 1.95949e+03
+115 1.73512e+03 1.95358e+03
+116 1.27400e+03 1.95358e+03
+117 1.25035e+03 1.95358e+03
+118 7.41934e+02 1.95358e+03
+119 1.06117e+03 1.94177e+03
+120 1.29173e+03 1.93587e+03
+121 1.21488e+03 1.92996e+03
+122 1.12029e+03 1.92996e+03
+123 1.09073e+03 1.92406e+03
+124 1.20306e+03 1.91815e+03
+125 1.20897e+03 1.91225e+03
+126 1.11438e+03 1.91225e+03
+127 1.22670e+03 1.90634e+03
+128 1.14394e+03 1.90634e+03
+129 1.29173e+03 1.90044e+03
+130 1.26809e+03 1.90044e+03
+131 1.30947e+03 1.89453e+03
+132 1.00205e+03 1.89453e+03
+133 9.78407e+02 1.88272e+03
+134 1.09073e+03 1.87682e+03
+135 1.56959e+03 1.87091e+03
+136 1.52230e+03 1.87091e+03
+137 1.15576e+03 1.87091e+03
+138 5.76403e+02 1.87091e+03
+139 5.29108e+02 1.87091e+03
+140 1.18532e+03 1.86501e+03
+141 1.09073e+03 1.86501e+03
+142 1.72921e+03 1.74691e+03
+143 7.36022e+02 1.74691e+03
+144 2.05436e+03 1.51661e+03
+145 1.16759e+03 1.51661e+03
+146 1.18532e+03 1.48708e+03
+147 3.10371e+02 1.48708e+03
+148 1.18532e+03 1.47528e+03
+149 6.11874e+02 1.42213e+03
+150 6.17786e+02 1.41622e+03
+151 5.40932e+02 1.41032e+03
+152 6.05962e+02 1.39260e+03
+153 5.82315e+02 1.39260e+03
+154 1.14985e+03 1.27450e+03
+155 7.59670e+02 1.27450e+03
+156 5.82315e+02 1.27450e+03
+157 1.03161e+03 1.22726e+03
+158 5.40932e+02 1.22136e+03
+159 1.26809e+03 1.15640e+03
+160 2.05436e+03 1.15050e+03
+161 1.16759e+03 1.15050e+03
+162 1.27991e+03 1.14459e+03
+163 1.18532e+03 1.05011e+03
+164 1.17350e+03 1.00287e+03
+165 1.66418e+03 9.96967e+02
+166 1.17941e+03 9.96967e+02
+167 1.32720e+03 8.02101e+02
+168 1.23262e+03 8.02101e+02
+169 1.09073e+03 8.02101e+02
+170 9.84319e+02 8.02101e+02
+171 1.17941e+03 7.96196e+02
+172 1.16759e+03 7.96196e+02
+173 1.08482e+03 7.96196e+02
+174 1.06117e+03 7.96196e+02
+175 1.23262e+03 7.90290e+02
+176 1.26218e+03 7.84386e+02
+177 1.15576e+03 7.84386e+02
+178 1.13211e+03 7.84386e+02
+179 1.04935e+03 7.84386e+02
+180 1.22079e+03 7.78481e+02
+181 1.13803e+03 7.78481e+02
+182 1.01979e+03 7.78481e+02
+183 1.20306e+03 7.72576e+02
+184 1.14985e+03 7.66670e+02
+185 1.11438e+03 7.66670e+02
+186 1.30947e+03 7.60765e+02
+187 1.14394e+03 7.60765e+02
+188 1.04935e+03 7.60765e+02
+189 1.20897e+03 7.54861e+02
+190 1.18532e+03 7.54861e+02
+191 1.12620e+03 7.54861e+02
+192 1.10256e+03 7.54861e+02
+193 1.09073e+03 7.54861e+02
+194 1.06708e+03 7.54861e+02
+195 1.03753e+03 7.48955e+02
+196 1.04344e+03 7.43050e+02
+197 1.03161e+03 7.43050e+02
+198 1.29173e+03 7.31240e+02
+199 1.23262e+03 7.31240e+02
+200 3.10371e+02 6.01329e+02
+201 1.22966e+03 1.94473e+03
+202 1.09960e+03 1.93292e+03
+203 1.20601e+03 1.92111e+03
+204 9.81363e+02 1.92111e+03
+205 1.14690e+03 1.90930e+03
+206 1.02866e+03 1.90930e+03
+207 1.07595e+03 1.88568e+03
+208 9.81363e+02 1.88568e+03
+209 2.05732e+03 1.51956e+03
+210 9.81363e+02 7.99148e+02
+211 9.81363e+02 7.75528e+02
+212 3.07415e+02 5.98377e+02
+213 1.16463e+03 1.96835e+03
+214 1.07004e+03 1.96835e+03
+215 1.05231e+03 1.96244e+03
+216 1.73217e+03 1.95654e+03
+217 1.27104e+03 1.95654e+03
+218 1.24740e+03 1.95654e+03
+219 1.02275e+03 1.95654e+03
+220 7.38978e+02 1.95654e+03
+221 1.04639e+03 1.94473e+03
+222 1.24740e+03 1.93292e+03
+223 1.16463e+03 1.93292e+03
+224 1.11733e+03 1.93292e+03
+225 1.07004e+03 1.93292e+03
+226 1.09960e+03 1.92701e+03
+227 1.09369e+03 1.92111e+03
+228 1.04639e+03 1.92111e+03
+229 1.22375e+03 1.90930e+03
+230 1.11733e+03 1.90930e+03
+231 9.99099e+02 1.90930e+03
+232 1.29469e+03 1.89748e+03
+233 1.27104e+03 1.89748e+03
+234 1.18828e+03 1.89748e+03
+235 9.99099e+02 1.89748e+03
+236 1.29469e+03 1.88568e+03
+237 1.56664e+03 1.87386e+03
+238 1.51934e+03 1.87386e+03
+239 1.09369e+03 1.87386e+03
+240 5.73447e+02 1.87386e+03
+241 5.26152e+02 1.87386e+03
+242 1.72625e+03 1.74986e+03
+243 7.33066e+02 1.74986e+03
+244 1.18828e+03 1.64947e+03
+245 1.16463e+03 1.51956e+03
+246 3.07415e+02 1.49004e+03
+247 6.08918e+02 1.42508e+03
+248 1.02866e+03 1.41918e+03
+249 6.20742e+02 1.41327e+03
+250 5.97094e+02 1.41327e+03
+251 5.37976e+02 1.41327e+03
+252 6.08918e+02 1.38965e+03
+253 1.15281e+03 1.27155e+03
+254 7.62626e+02 1.27155e+03
+255 7.50802e+02 1.27155e+03
+256 1.27104e+03 1.24793e+03
+257 1.28287e+03 1.22431e+03
+258 1.03457e+03 1.22431e+03
+259 6.56213e+02 1.15345e+03
+260 2.05732e+03 1.14755e+03
+261 1.18828e+03 1.04716e+03
+262 1.17054e+03 1.00583e+03
+263 1.66122e+03 9.99920e+02
+264 1.18237e+03 9.94014e+02
+265 1.61393e+03 9.76300e+02
+266 1.16463e+03 7.99148e+02
+267 1.09369e+03 7.99148e+02
+268 1.08186e+03 7.99148e+02
+269 1.03457e+03 7.99148e+02
+270 1.22966e+03 7.93243e+02
+271 1.27104e+03 7.87338e+02
+272 1.25922e+03 7.87338e+02
+273 1.12916e+03 7.87338e+02
+274 1.10551e+03 7.87338e+02
+275 1.03457e+03 7.87338e+02
+276 1.21784e+03 7.81433e+02
+277 1.05231e+03 7.81433e+02
+278 1.23557e+03 7.75528e+02
+279 1.18828e+03 7.75528e+02
+280 1.09369e+03 7.75528e+02
+281 1.02275e+03 7.75528e+02
+282 1.20601e+03 7.69623e+02
+283 1.07595e+03 7.69623e+02
+284 1.05231e+03 7.69623e+02
+285 1.23557e+03 7.63718e+02
+286 1.21193e+03 7.63718e+02
+287 1.18828e+03 7.63718e+02
+288 1.15281e+03 7.63718e+02
+289 1.11733e+03 7.63718e+02
+290 1.17645e+03 7.51908e+02
+291 1.12916e+03 7.51908e+02
+292 1.10551e+03 7.51908e+02
+293 1.03457e+03 7.51908e+02
+294 1.02275e+03 7.51908e+02
+295 1.17645e+03 5.62947e+02
+296 1.63167e+03 2.05102e+03
+297 1.63167e+03 2.03921e+03
+298 1.63167e+03 2.02740e+03
+299 1.61984e+03 2.05102e+03
+300 1.61984e+03 2.03921e+03
+301 1.61984e+03 2.02740e+03
+302 1.60802e+03 2.05102e+03
+303 1.60802e+03 2.03921e+03
+304 1.60802e+03 2.02740e+03
+305 1.59619e+03 2.05102e+03
+306 1.59619e+03 2.03921e+03
+307 1.59619e+03 2.02740e+03
+308 1.58437e+03 2.05102e+03
+309 1.58437e+03 2.03921e+03
+310 1.58437e+03 2.02740e+03
+311 1.57255e+03 2.05102e+03
+312 1.57255e+03 2.03921e+03
+313 1.57255e+03 2.02740e+03
+314 1.56072e+03 2.05102e+03
+315 1.56072e+03 2.03921e+03
+316 1.56072e+03 2.02740e+03
+317 1.54890e+03 2.05102e+03
+318 1.54890e+03 2.03921e+03
+319 1.54890e+03 2.02740e+03
+320 1.53708e+03 2.05102e+03
+321 1.53708e+03 2.03921e+03
+322 1.53708e+03 2.02740e+03
+323 1.52525e+03 2.05102e+03
+324 1.52525e+03 2.03921e+03
+325 1.52525e+03 2.02740e+03
+326 1.51343e+03 2.05102e+03
+327 1.51343e+03 2.03921e+03
+328 1.51343e+03 2.02740e+03
+329 1.50160e+03 2.05102e+03
+330 1.50160e+03 2.03921e+03
+331 1.50160e+03 2.02740e+03
+332 1.48978e+03 2.05102e+03
+333 1.48978e+03 2.03921e+03
+334 1.48978e+03 2.02740e+03
+335 1.62575e+03 2.04511e+03
+336 1.62575e+03 2.03330e+03
+337 1.61393e+03 2.04511e+03
+338 1.61393e+03 2.03330e+03
+339 1.60211e+03 2.04511e+03
+340 1.60211e+03 2.03330e+03
+341 1.59028e+03 2.04511e+03
+342 1.59028e+03 2.03330e+03
+343 1.57846e+03 2.04511e+03
+344 1.57846e+03 2.03330e+03
+345 1.56664e+03 2.04511e+03
+346 1.56664e+03 2.03330e+03
+347 1.55481e+03 2.04511e+03
+348 1.55481e+03 2.03330e+03
+349 1.54299e+03 2.04511e+03
+350 1.54299e+03 2.03330e+03
+351 1.53116e+03 2.04511e+03
+352 1.53116e+03 2.03330e+03
+353 1.51934e+03 2.04511e+03
+354 1.51934e+03 2.03330e+03
+355 1.50752e+03 2.04511e+03
+356 1.50752e+03 2.03330e+03
+357 1.49569e+03 2.04511e+03
+358 1.49569e+03 2.03330e+03
+359 1.62575e+03 2.05102e+03
+360 1.62575e+03 2.03921e+03
+361 1.62575e+03 2.02740e+03
+362 1.61393e+03 2.05102e+03
+363 1.61393e+03 2.03921e+03
+364 1.61393e+03 2.02740e+03
+365 1.60211e+03 2.05102e+03
+366 1.60211e+03 2.03921e+03
+367 1.60211e+03 2.02740e+03
+368 1.59028e+03 2.05102e+03
+369 1.59028e+03 2.03921e+03
+370 1.59028e+03 2.02740e+03
+371 1.57846e+03 2.05102e+03
+372 1.57846e+03 2.03921e+03
+373 1.57846e+03 2.02740e+03
+374 1.56664e+03 2.05102e+03
+375 1.56664e+03 2.03921e+03
+376 1.56664e+03 2.02740e+03
+377 1.55481e+03 2.05102e+03
+378 1.55481e+03 2.03921e+03
+379 1.55481e+03 2.02740e+03
+380 1.54299e+03 2.05102e+03
+381 1.54299e+03 2.03921e+03
+382 1.54299e+03 2.02740e+03
+383 1.53116e+03 2.05102e+03
+384 1.53116e+03 2.03921e+03
+385 1.53116e+03 2.02740e+03
+386 1.51934e+03 2.05102e+03
+387 1.51934e+03 2.03921e+03
+388 1.51934e+03 2.02740e+03
+389 1.50752e+03 2.05102e+03
+390 1.50752e+03 2.03921e+03
+391 1.50752e+03 2.02740e+03
+392 1.49569e+03 2.05102e+03
+393 1.49569e+03 2.03921e+03
+394 1.49569e+03 2.02740e+03
+395 1.63167e+03 2.04511e+03
+396 1.63167e+03 2.03330e+03
+397 1.61984e+03 2.04511e+03
+398 1.61984e+03 2.03330e+03
+399 1.60802e+03 2.04511e+03
+400 1.60802e+03 2.03330e+03
+401 1.59619e+03 2.04511e+03
+402 1.59619e+03 2.03330e+03
+403 1.58437e+03 2.04511e+03
+404 1.58437e+03 2.03330e+03
+405 1.57255e+03 2.04511e+03
+406 1.57255e+03 2.03330e+03
+407 1.56072e+03 2.04511e+03
+408 1.56072e+03 2.03330e+03
+409 1.54890e+03 2.04511e+03
+410 1.54890e+03 2.03330e+03
+411 1.53708e+03 2.04511e+03
+412 1.53708e+03 2.03330e+03
+413 1.52525e+03 2.04511e+03
+414 1.52525e+03 2.03330e+03
+415 1.51343e+03 2.04511e+03
+416 1.51343e+03 2.03330e+03
+417 1.50160e+03 2.04511e+03
+418 1.50160e+03 2.03330e+03
+419 1.48978e+03 2.04511e+03
+420 1.48978e+03 2.03330e+03
+421 1.62871e+03 2.04806e+03
+422 1.62871e+03 2.03625e+03
+423 1.61689e+03 2.04806e+03
+424 1.61689e+03 2.03625e+03
+425 1.60506e+03 2.04806e+03
+426 1.60506e+03 2.03625e+03
+427 1.59324e+03 2.04806e+03
+428 1.59324e+03 2.03625e+03
+429 1.58141e+03 2.04806e+03
+430 1.58141e+03 2.03625e+03
+431 1.56959e+03 2.04806e+03
+432 1.56959e+03 2.03625e+03
+433 1.55777e+03 2.04806e+03
+434 1.55777e+03 2.03625e+03
+435 1.54594e+03 2.04806e+03
+436 1.54594e+03 2.03625e+03
+437 1.53412e+03 2.04806e+03
+438 1.53412e+03 2.03625e+03
+439 1.52230e+03 2.04806e+03
+440 1.52230e+03 2.03625e+03
+441 1.51047e+03 2.04806e+03
+442 1.51047e+03 2.03625e+03
+443 1.49865e+03 2.04806e+03
+444 1.49865e+03 2.03625e+03
+445 1.62280e+03 2.04216e+03
+446 1.62280e+03 2.03035e+03
+447 1.61097e+03 2.04216e+03
+448 1.61097e+03 2.03035e+03
+449 1.59915e+03 2.04216e+03
+450 1.59915e+03 2.03035e+03
+451 1.58733e+03 2.04216e+03
+452 1.58733e+03 2.03035e+03
+453 1.57550e+03 2.04216e+03
+454 1.57550e+03 2.03035e+03
+455 1.56368e+03 2.04216e+03
+456 1.56368e+03 2.03035e+03
+457 1.55185e+03 2.04216e+03
+458 1.55185e+03 2.03035e+03
+459 1.54003e+03 2.04216e+03
+460 1.54003e+03 2.03035e+03
+461 1.52821e+03 2.04216e+03
+462 1.52821e+03 2.03035e+03
+463 1.51638e+03 2.04216e+03
+464 1.51638e+03 2.03035e+03
+465 1.50456e+03 2.04216e+03
+466 1.50456e+03 2.03035e+03
+467 1.49274e+03 2.04216e+03
+468 1.49274e+03 2.03035e+03
+469 1.62871e+03 2.04216e+03
+470 1.62871e+03 2.03035e+03
+471 1.61689e+03 2.04216e+03
+472 1.61689e+03 2.03035e+03
+473 1.60506e+03 2.04216e+03
+474 1.60506e+03 2.03035e+03
+475 1.59324e+03 2.04216e+03
+476 1.59324e+03 2.03035e+03
+477 1.58141e+03 2.04216e+03
+478 1.58141e+03 2.03035e+03
+479 1.56959e+03 2.04216e+03
+480 1.56959e+03 2.03035e+03
+481 1.55777e+03 2.04216e+03
+482 1.55777e+03 2.03035e+03
+483 1.54594e+03 2.04216e+03
+484 1.54594e+03 2.03035e+03
+485 1.53412e+03 2.04216e+03
+486 1.53412e+03 2.03035e+03
+487 1.52230e+03 2.04216e+03
+488 1.52230e+03 2.03035e+03
+489 1.51047e+03 2.04216e+03
+490 1.51047e+03 2.03035e+03
+491 1.49865e+03 2.04216e+03
+492 1.49865e+03 2.03035e+03
+493 1.62280e+03 2.04806e+03
+494 1.62280e+03 2.03625e+03
+495 1.61097e+03 2.04806e+03
+496 1.61097e+03 2.03625e+03
+497 1.59915e+03 2.04806e+03
+498 1.59915e+03 2.03625e+03
+499 1.58733e+03 2.04806e+03
+500 1.58733e+03 2.03625e+03
+501 1.57550e+03 2.04806e+03
+502 1.57550e+03 2.03625e+03
+503 1.56368e+03 2.04806e+03
+504 1.56368e+03 2.03625e+03
+505 1.55185e+03 2.04806e+03
+506 1.55185e+03 2.03625e+03
+507 1.54003e+03 2.04806e+03
+508 1.54003e+03 2.03625e+03
+509 1.52821e+03 2.04806e+03
+510 1.52821e+03 2.03625e+03
+511 1.51638e+03 2.04806e+03
+512 1.51638e+03 2.03625e+03
+513 1.50456e+03 2.04806e+03
+514 1.50456e+03 2.03625e+03
+515 1.49274e+03 2.04806e+03
+516 1.49274e+03 2.03625e+03
+517 6.50302e+02 2.05102e+03
+518 6.50302e+02 2.03921e+03
+519 6.50302e+02 2.02740e+03
+520 6.38478e+02 2.05102e+03
+521 6.38478e+02 2.03921e+03
+522 6.38478e+02 2.02740e+03
+523 6.26655e+02 2.05102e+03
+524 6.26655e+02 2.03921e+03
+525 6.26655e+02 2.02740e+03
+526 6.14831e+02 2.05102e+03
+527 6.14831e+02 2.03921e+03
+528 6.14831e+02 2.02740e+03
+529 6.03007e+02 2.05102e+03
+530 6.03007e+02 2.03921e+03
+531 6.03007e+02 2.02740e+03
+532 5.91184e+02 2.05102e+03
+533 5.91184e+02 2.03921e+03
+534 5.91184e+02 2.02740e+03
+535 5.79360e+02 2.05102e+03
+536 5.79360e+02 2.03921e+03
+537 5.79360e+02 2.02740e+03
+538 5.67537e+02 2.05102e+03
+539 5.67537e+02 2.03921e+03
+540 5.67537e+02 2.02740e+03
+541 5.55713e+02 2.05102e+03
+542 5.55713e+02 2.03921e+03
+543 5.55713e+02 2.02740e+03
+544 5.43889e+02 2.05102e+03
+545 5.43889e+02 2.03921e+03
+546 5.43889e+02 2.02740e+03
+547 5.32066e+02 2.05102e+03
+548 5.32066e+02 2.03921e+03
+549 5.32066e+02 2.02740e+03
+550 5.20242e+02 2.05102e+03
+551 5.20242e+02 2.03921e+03
+552 5.20242e+02 2.02740e+03
+553 5.08418e+02 2.05102e+03
+554 5.08418e+02 2.03921e+03
+555 5.08418e+02 2.02740e+03
+556 6.44390e+02 2.04511e+03
+557 6.44390e+02 2.03330e+03
+558 6.32566e+02 2.04511e+03
+559 6.32566e+02 2.03330e+03
+560 6.20743e+02 2.04511e+03
+561 6.20743e+02 2.03330e+03
+562 6.08919e+02 2.04511e+03
+563 6.08919e+02 2.03330e+03
+564 5.97096e+02 2.04511e+03
+565 5.97096e+02 2.03330e+03
+566 5.85272e+02 2.04511e+03
+567 5.85272e+02 2.03330e+03
+568 5.73448e+02 2.04511e+03
+569 5.73448e+02 2.03330e+03
+570 5.61625e+02 2.04511e+03
+571 5.61625e+02 2.03330e+03
+572 5.49801e+02 2.04511e+03
+573 5.49801e+02 2.03330e+03
+574 5.37977e+02 2.04511e+03
+575 5.37977e+02 2.03330e+03
+576 5.26153e+02 2.04511e+03
+577 5.26153e+02 2.03330e+03
+578 5.14330e+02 2.04511e+03
+579 5.14330e+02 2.03330e+03
+580 6.44390e+02 2.05102e+03
+581 6.44390e+02 2.03921e+03
+582 6.44390e+02 2.02740e+03
+583 6.32566e+02 2.05102e+03
+584 6.32566e+02 2.03921e+03
+585 6.32566e+02 2.02740e+03
+586 6.20743e+02 2.05102e+03
+587 6.20743e+02 2.03921e+03
+588 6.20743e+02 2.02740e+03
+589 6.08919e+02 2.05102e+03
+590 6.08919e+02 2.03921e+03
+591 6.08919e+02 2.02740e+03
+592 5.97096e+02 2.05102e+03
+593 5.97096e+02 2.03921e+03
+594 5.97096e+02 2.02740e+03
+595 5.85272e+02 2.05102e+03
+596 5.85272e+02 2.03921e+03
+597 5.85272e+02 2.02740e+03
+598 5.73448e+02 2.05102e+03
+599 5.73448e+02 2.03921e+03
+600 5.73448e+02 2.02740e+03
+601 5.61625e+02 2.05102e+03
+602 5.61625e+02 2.03921e+03
+603 5.61625e+02 2.02740e+03
+604 5.49801e+02 2.05102e+03
+605 5.49801e+02 2.03921e+03
+606 5.49801e+02 2.02740e+03
+607 5.37977e+02 2.05102e+03
+608 5.37977e+02 2.03921e+03
+609 5.37977e+02 2.02740e+03
+610 5.26153e+02 2.05102e+03
+611 5.26153e+02 2.03921e+03
+612 5.26153e+02 2.02740e+03
+613 5.14330e+02 2.05102e+03
+614 5.14330e+02 2.03921e+03
+615 5.14330e+02 2.02740e+03
+616 6.50302e+02 2.04511e+03
+617 6.50302e+02 2.03330e+03
+618 6.38478e+02 2.04511e+03
+619 6.38478e+02 2.03330e+03
+620 6.26655e+02 2.04511e+03
+621 6.26655e+02 2.03330e+03
+622 6.14831e+02 2.04511e+03
+623 6.14831e+02 2.03330e+03
+624 6.03007e+02 2.04511e+03
+625 6.03007e+02 2.03330e+03
+626 5.91184e+02 2.04511e+03
+627 5.91184e+02 2.03330e+03
+628 5.79360e+02 2.04511e+03
+629 5.79360e+02 2.03330e+03
+630 5.67537e+02 2.04511e+03
+631 5.67537e+02 2.03330e+03
+632 5.55713e+02 2.04511e+03
+633 5.55713e+02 2.03330e+03
+634 5.43889e+02 2.04511e+03
+635 5.43889e+02 2.03330e+03
+636 5.32066e+02 2.04511e+03
+637 5.32066e+02 2.03330e+03
+638 5.20242e+02 2.04511e+03
+639 5.20242e+02 2.03330e+03
+640 5.08418e+02 2.04511e+03
+641 5.08418e+02 2.03330e+03
+642 6.47346e+02 2.04806e+03
+643 6.47346e+02 2.03625e+03
+644 6.35522e+02 2.04806e+03
+645 6.35522e+02 2.03625e+03
+646 6.23699e+02 2.04806e+03
+647 6.23699e+02 2.03625e+03
+648 6.11875e+02 2.04806e+03
+649 6.11875e+02 2.03625e+03
+650 6.00051e+02 2.04806e+03
+651 6.00051e+02 2.03625e+03
+652 5.88228e+02 2.04806e+03
+653 5.88228e+02 2.03625e+03
+654 5.76404e+02 2.04806e+03
+655 5.76404e+02 2.03625e+03
+656 5.64581e+02 2.04806e+03
+657 5.64581e+02 2.03625e+03
+658 5.52757e+02 2.04806e+03
+659 5.52757e+02 2.03625e+03
+660 5.40933e+02 2.04806e+03
+661 5.40933e+02 2.03625e+03
+662 5.29109e+02 2.04806e+03
+663 5.29109e+02 2.03625e+03
+664 5.17286e+02 2.04806e+03
+665 5.17286e+02 2.03625e+03
+666 6.41434e+02 2.04216e+03
+667 6.41434e+02 2.03035e+03
+668 6.29611e+02 2.04216e+03
+669 6.29611e+02 2.03035e+03
+670 6.17787e+02 2.04216e+03
+671 6.17787e+02 2.03035e+03
+672 6.05963e+02 2.04216e+03
+673 6.05963e+02 2.03035e+03
+674 5.94140e+02 2.04216e+03
+675 5.94140e+02 2.03035e+03
+676 5.82316e+02 2.04216e+03
+677 5.82316e+02 2.03035e+03
+678 5.70492e+02 2.04216e+03
+679 5.70492e+02 2.03035e+03
+680 5.58669e+02 2.04216e+03
+681 5.58669e+02 2.03035e+03
+682 5.46845e+02 2.04216e+03
+683 5.46845e+02 2.03035e+03
+684 5.35022e+02 2.04216e+03
+685 5.35022e+02 2.03035e+03
+686 5.23198e+02 2.04216e+03
+687 5.23198e+02 2.03035e+03
+688 5.11374e+02 2.04216e+03
+689 5.11374e+02 2.03035e+03
+690 6.47346e+02 2.04216e+03
+691 6.47346e+02 2.03035e+03
+692 6.35522e+02 2.04216e+03
+693 6.35522e+02 2.03035e+03
+694 6.23699e+02 2.04216e+03
+695 6.23699e+02 2.03035e+03
+696 6.11875e+02 2.04216e+03
+697 6.11875e+02 2.03035e+03
+698 6.00051e+02 2.04216e+03
+699 6.00051e+02 2.03035e+03
+700 5.88228e+02 2.04216e+03
+701 5.88228e+02 2.03035e+03
+702 5.76404e+02 2.04216e+03
+703 5.76404e+02 2.03035e+03
+704 5.64581e+02 2.04216e+03
+705 5.64581e+02 2.03035e+03
+706 5.52757e+02 2.04216e+03
+707 5.52757e+02 2.03035e+03
+708 5.40933e+02 2.04216e+03
+709 5.40933e+02 2.03035e+03
+710 5.29109e+02 2.04216e+03
+711 5.29109e+02 2.03035e+03
+712 5.17286e+02 2.04216e+03
+713 5.17286e+02 2.03035e+03
+714 6.41434e+02 2.04806e+03
+715 6.41434e+02 2.03625e+03
+716 6.29611e+02 2.04806e+03
+717 6.29611e+02 2.03625e+03
+718 6.17787e+02 2.04806e+03
+719 6.17787e+02 2.03625e+03
+720 6.05963e+02 2.04806e+03
+721 6.05963e+02 2.03625e+03
+722 5.94140e+02 2.04806e+03
+723 5.94140e+02 2.03625e+03
+724 5.82316e+02 2.04806e+03
+725 5.82316e+02 2.03625e+03
+726 5.70492e+02 2.04806e+03
+727 5.70492e+02 2.03625e+03
+728 5.58669e+02 2.04806e+03
+729 5.58669e+02 2.03625e+03
+730 5.46845e+02 2.04806e+03
+731 5.46845e+02 2.03625e+03
+732 5.35022e+02 2.04806e+03
+733 5.35022e+02 2.03625e+03
+734 5.23198e+02 2.04806e+03
+735 5.23198e+02 2.03625e+03
+736 5.11374e+02 2.04806e+03
+737 5.11374e+02 2.03625e+03
+738 1.63167e+03 1.73215e+02
+739 1.63167e+03 1.61405e+02
+740 1.63167e+03 1.49595e+02
+741 1.61984e+03 1.73215e+02
+742 1.61984e+03 1.61405e+02
+743 1.61984e+03 1.49595e+02
+744 1.60802e+03 1.73215e+02
+745 1.60802e+03 1.61405e+02
+746 1.60802e+03 1.49595e+02
+747 1.59619e+03 1.73215e+02
+748 1.59619e+03 1.61405e+02
+749 1.59619e+03 1.49595e+02
+750 1.58437e+03 1.73215e+02
+751 1.58437e+03 1.61405e+02
+752 1.58437e+03 1.49595e+02
+753 1.57255e+03 1.73215e+02
+754 1.57255e+03 1.61405e+02
+755 1.57255e+03 1.49595e+02
+756 1.56072e+03 1.73215e+02
+757 1.56072e+03 1.61405e+02
+758 1.56072e+03 1.49595e+02
+759 1.54890e+03 1.73215e+02
+760 1.54890e+03 1.61405e+02
+761 1.54890e+03 1.49595e+02
+762 1.53708e+03 1.73215e+02
+763 1.53708e+03 1.61405e+02
+764 1.53708e+03 1.49595e+02
+765 1.52525e+03 1.73215e+02
+766 1.52525e+03 1.61405e+02
+767 1.52525e+03 1.49595e+02
+768 1.51343e+03 1.73215e+02
+769 1.51343e+03 1.61405e+02
+770 1.51343e+03 1.49595e+02
+771 1.50160e+03 1.73215e+02
+772 1.50160e+03 1.61405e+02
+773 1.50160e+03 1.49595e+02
+774 1.48978e+03 1.73215e+02
+775 1.48978e+03 1.61405e+02
+776 1.48978e+03 1.49595e+02
+777 1.62575e+03 1.67310e+02
+778 1.62575e+03 1.55500e+02
+779 1.61393e+03 1.67310e+02
+780 1.61393e+03 1.55500e+02
+781 1.60211e+03 1.67310e+02
+782 1.60211e+03 1.55500e+02
+783 1.59028e+03 1.67310e+02
+784 1.59028e+03 1.55500e+02
+785 1.57846e+03 1.67310e+02
+786 1.57846e+03 1.55500e+02
+787 1.56664e+03 1.67310e+02
+788 1.56664e+03 1.55500e+02
+789 1.55481e+03 1.67310e+02
+790 1.55481e+03 1.55500e+02
+791 1.54299e+03 1.67310e+02
+792 1.54299e+03 1.55500e+02
+793 1.53116e+03 1.67310e+02
+794 1.53116e+03 1.55500e+02
+795 1.51934e+03 1.67310e+02
+796 1.51934e+03 1.55500e+02
+797 1.50752e+03 1.67310e+02
+798 1.50752e+03 1.55500e+02
+799 1.49569e+03 1.67310e+02
+800 1.49569e+03 1.55500e+02
+801 1.62575e+03 1.73215e+02
+802 1.62575e+03 1.61405e+02
+803 1.62575e+03 1.49595e+02
+804 1.61393e+03 1.73215e+02
+805 1.61393e+03 1.61405e+02
+806 1.61393e+03 1.49595e+02
+807 1.60211e+03 1.73215e+02
+808 1.60211e+03 1.61405e+02
+809 1.60211e+03 1.49595e+02
+810 1.59028e+03 1.73215e+02
+811 1.59028e+03 1.61405e+02
+812 1.59028e+03 1.49595e+02
+813 1.57846e+03 1.73215e+02
+814 1.57846e+03 1.61405e+02
+815 1.57846e+03 1.49595e+02
+816 1.56664e+03 1.73215e+02
+817 1.56664e+03 1.61405e+02
+818 1.56664e+03 1.49595e+02
+819 1.55481e+03 1.73215e+02
+820 1.55481e+03 1.61405e+02
+821 1.55481e+03 1.49595e+02
+822 1.54299e+03 1.73215e+02
+823 1.54299e+03 1.61405e+02
+824 1.54299e+03 1.49595e+02
+825 1.53116e+03 1.73215e+02
+826 1.53116e+03 1.61405e+02
+827 1.53116e+03 1.49595e+02
+828 1.51934e+03 1.73215e+02
+829 1.51934e+03 1.61405e+02
+830 1.51934e+03 1.49595e+02
+831 1.50752e+03 1.73215e+02
+832 1.50752e+03 1.61405e+02
+833 1.50752e+03 1.49595e+02
+834 1.49569e+03 1.73215e+02
+835 1.49569e+03 1.61405e+02
+836 1.49569e+03 1.49595e+02
+837 1.63167e+03 1.67310e+02
+838 1.63167e+03 1.55500e+02
+839 1.61984e+03 1.67310e+02
+840 1.61984e+03 1.55500e+02
+841 1.60802e+03 1.67310e+02
+842 1.60802e+03 1.55500e+02
+843 1.59619e+03 1.67310e+02
+844 1.59619e+03 1.55500e+02
+845 1.58437e+03 1.67310e+02
+846 1.58437e+03 1.55500e+02
+847 1.57255e+03 1.67310e+02
+848 1.57255e+03 1.55500e+02
+849 1.56072e+03 1.67310e+02
+850 1.56072e+03 1.55500e+02
+851 1.54890e+03 1.67310e+02
+852 1.54890e+03 1.55500e+02
+853 1.53708e+03 1.67310e+02
+854 1.53708e+03 1.55500e+02
+855 1.52525e+03 1.67310e+02
+856 1.52525e+03 1.55500e+02
+857 1.51343e+03 1.67310e+02
+858 1.51343e+03 1.55500e+02
+859 1.50160e+03 1.67310e+02
+860 1.50160e+03 1.55500e+02
+861 1.48978e+03 1.67310e+02
+862 1.48978e+03 1.55500e+02
+863 1.62871e+03 1.70262e+02
+864 1.62871e+03 1.58452e+02
+865 1.61689e+03 1.70262e+02
+866 1.61689e+03 1.58452e+02
+867 1.60506e+03 1.70262e+02
+868 1.60506e+03 1.58452e+02
+869 1.59324e+03 1.70262e+02
+870 1.59324e+03 1.58452e+02
+871 1.58141e+03 1.70262e+02
+872 1.58141e+03 1.58452e+02
+873 1.56959e+03 1.70262e+02
+874 1.56959e+03 1.58452e+02
+875 1.55777e+03 1.70262e+02
+876 1.55777e+03 1.58452e+02
+877 1.54594e+03 1.70262e+02
+878 1.54594e+03 1.58452e+02
+879 1.53412e+03 1.70262e+02
+880 1.53412e+03 1.58452e+02
+881 1.52230e+03 1.70262e+02
+882 1.52230e+03 1.58452e+02
+883 1.51047e+03 1.70262e+02
+884 1.51047e+03 1.58452e+02
+885 1.49865e+03 1.70262e+02
+886 1.49865e+03 1.58452e+02
+887 1.62280e+03 1.64357e+02
+888 1.62280e+03 1.52547e+02
+889 1.61097e+03 1.64357e+02
+890 1.61097e+03 1.52547e+02
+891 1.59915e+03 1.64357e+02
+892 1.59915e+03 1.52547e+02
+893 1.58733e+03 1.64357e+02
+894 1.58733e+03 1.52547e+02
+895 1.57550e+03 1.64357e+02
+896 1.57550e+03 1.52547e+02
+897 1.56368e+03 1.64357e+02
+898 1.56368e+03 1.52547e+02
+899 1.55185e+03 1.64357e+02
+900 1.55185e+03 1.52547e+02
+901 1.54003e+03 1.64357e+02
+902 1.54003e+03 1.52547e+02
+903 1.52821e+03 1.64357e+02
+904 1.52821e+03 1.52547e+02
+905 1.51638e+03 1.64357e+02
+906 1.51638e+03 1.52547e+02
+907 1.50456e+03 1.64357e+02
+908 1.50456e+03 1.52547e+02
+909 1.49274e+03 1.64357e+02
+910 1.49274e+03 1.52547e+02
+911 1.62871e+03 1.64357e+02
+912 1.62871e+03 1.52547e+02
+913 1.61689e+03 1.64357e+02
+914 1.61689e+03 1.52547e+02
+915 1.60506e+03 1.64357e+02
+916 1.60506e+03 1.52547e+02
+917 1.59324e+03 1.64357e+02
+918 1.59324e+03 1.52547e+02
+919 1.58141e+03 1.64357e+02
+920 1.58141e+03 1.52547e+02
+921 1.56959e+03 1.64357e+02
+922 1.56959e+03 1.52547e+02
+923 1.55777e+03 1.64357e+02
+924 1.55777e+03 1.52547e+02
+925 1.54594e+03 1.64357e+02
+926 1.54594e+03 1.52547e+02
+927 1.53412e+03 1.64357e+02
+928 1.53412e+03 1.52547e+02
+929 1.52230e+03 1.64357e+02
+930 1.52230e+03 1.52547e+02
+931 1.51047e+03 1.64357e+02
+932 1.51047e+03 1.52547e+02
+933 1.49865e+03 1.64357e+02
+934 1.49865e+03 1.52547e+02
+935 1.62280e+03 1.70262e+02
+936 1.62280e+03 1.58452e+02
+937 1.61097e+03 1.70262e+02
+938 1.61097e+03 1.58452e+02
+939 1.59915e+03 1.70262e+02
+940 1.59915e+03 1.58452e+02
+941 1.58733e+03 1.70262e+02
+942 1.58733e+03 1.58452e+02
+943 1.57550e+03 1.70262e+02
+944 1.57550e+03 1.58452e+02
+945 1.56368e+03 1.70262e+02
+946 1.56368e+03 1.58452e+02
+947 1.55185e+03 1.70262e+02
+948 1.55185e+03 1.58452e+02
+949 1.54003e+03 1.70262e+02
+950 1.54003e+03 1.58452e+02
+951 1.52821e+03 1.70262e+02
+952 1.52821e+03 1.58452e+02
+953 1.51638e+03 1.70262e+02
+954 1.51638e+03 1.58452e+02
+955 1.50456e+03 1.70262e+02
+956 1.50456e+03 1.58452e+02
+957 1.49274e+03 1.70262e+02
+958 1.49274e+03 1.58452e+02
+959 6.50302e+02 1.73215e+02
+960 6.50302e+02 1.61405e+02
+961 6.50302e+02 1.49595e+02
+962 6.38478e+02 1.73215e+02
+963 6.38478e+02 1.61405e+02
+964 6.38478e+02 1.49595e+02
+965 6.26655e+02 1.73215e+02
+966 6.26655e+02 1.61405e+02
+967 6.26655e+02 1.49595e+02
+968 6.14831e+02 1.73215e+02
+969 6.14831e+02 1.61405e+02
+970 6.14831e+02 1.49595e+02
+971 6.03007e+02 1.73215e+02
+972 6.03007e+02 1.61405e+02
+973 6.03007e+02 1.49595e+02
+974 5.91184e+02 1.73215e+02
+975 5.91184e+02 1.61405e+02
+976 5.91184e+02 1.49595e+02
+977 5.79360e+02 1.73215e+02
+978 5.79360e+02 1.61405e+02
+979 5.79360e+02 1.49595e+02
+980 5.67537e+02 1.73215e+02
+981 5.67537e+02 1.61405e+02
+982 5.67537e+02 1.49595e+02
+983 5.55713e+02 1.73215e+02
+984 5.55713e+02 1.61405e+02
+985 5.55713e+02 1.49595e+02
+986 5.43889e+02 1.73215e+02
+987 5.43889e+02 1.61405e+02
+988 5.43889e+02 1.49595e+02
+989 5.32066e+02 1.73215e+02
+990 5.32066e+02 1.61405e+02
+991 5.32066e+02 1.49595e+02
+992 5.20242e+02 1.73215e+02
+993 5.20242e+02 1.61405e+02
+994 5.20242e+02 1.49595e+02
+995 5.08418e+02 1.73215e+02
+996 5.08418e+02 1.61405e+02
+997 5.08418e+02 1.49595e+02
+998 6.44390e+02 1.67310e+02
+999 6.44390e+02 1.55500e+02
+1000 6.32566e+02 1.67310e+02
+1001 6.32566e+02 1.55500e+02
+1002 6.20743e+02 1.67310e+02
+1003 6.20743e+02 1.55500e+02
+1004 6.08919e+02 1.67310e+02
+1005 6.08919e+02 1.55500e+02
+1006 5.97096e+02 1.67310e+02
+1007 5.97096e+02 1.55500e+02
+1008 5.85272e+02 1.67310e+02
+1009 5.85272e+02 1.55500e+02
+1010 5.73448e+02 1.67310e+02
+1011 5.73448e+02 1.55500e+02
+1012 5.61625e+02 1.67310e+02
+1013 5.61625e+02 1.55500e+02
+1014 5.49801e+02 1.67310e+02
+1015 5.49801e+02 1.55500e+02
+1016 5.37977e+02 1.67310e+02
+1017 5.37977e+02 1.55500e+02
+1018 5.26153e+02 1.67310e+02
+1019 5.26153e+02 1.55500e+02
+1020 5.14330e+02 1.67310e+02
+1021 5.14330e+02 1.55500e+02
+1022 6.44390e+02 1.73215e+02
+1023 6.44390e+02 1.61405e+02
+1024 6.44390e+02 1.49595e+02
+1025 6.32566e+02 1.73215e+02
+1026 6.32566e+02 1.61405e+02
+1027 6.32566e+02 1.49595e+02
+1028 6.20743e+02 1.73215e+02
+1029 6.20743e+02 1.61405e+02
+1030 6.20743e+02 1.49595e+02
+1031 6.08919e+02 1.73215e+02
+1032 6.08919e+02 1.61405e+02
+1033 6.08919e+02 1.49595e+02
+1034 5.97096e+02 1.73215e+02
+1035 5.97096e+02 1.61405e+02
+1036 5.97096e+02 1.49595e+02
+1037 5.85272e+02 1.73215e+02
+1038 5.85272e+02 1.61405e+02
+1039 5.85272e+02 1.49595e+02
+1040 5.73448e+02 1.73215e+02
+1041 5.73448e+02 1.61405e+02
+1042 5.73448e+02 1.49595e+02
+1043 5.61625e+02 1.73215e+02
+1044 5.61625e+02 1.61405e+02
+1045 5.61625e+02 1.49595e+02
+1046 5.49801e+02 1.73215e+02
+1047 5.49801e+02 1.61405e+02
+1048 5.49801e+02 1.49595e+02
+1049 5.37977e+02 1.73215e+02
+1050 5.37977e+02 1.61405e+02
+1051 5.37977e+02 1.49595e+02
+1052 5.26153e+02 1.73215e+02
+1053 5.26153e+02 1.61405e+02
+1054 5.26153e+02 1.49595e+02
+1055 5.14330e+02 1.73215e+02
+1056 5.14330e+02 1.61405e+02
+1057 5.14330e+02 1.49595e+02
+1058 6.50302e+02 1.67310e+02
+1059 6.50302e+02 1.55500e+02
+1060 6.38478e+02 1.67310e+02
+1061 6.38478e+02 1.55500e+02
+1062 6.26655e+02 1.67310e+02
+1063 6.26655e+02 1.55500e+02
+1064 6.14831e+02 1.67310e+02
+1065 6.14831e+02 1.55500e+02
+1066 6.03007e+02 1.67310e+02
+1067 6.03007e+02 1.55500e+02
+1068 5.91184e+02 1.67310e+02
+1069 5.91184e+02 1.55500e+02
+1070 5.79360e+02 1.67310e+02
+1071 5.79360e+02 1.55500e+02
+1072 5.67537e+02 1.67310e+02
+1073 5.67537e+02 1.55500e+02
+1074 5.55713e+02 1.67310e+02
+1075 5.55713e+02 1.55500e+02
+1076 5.43889e+02 1.67310e+02
+1077 5.43889e+02 1.55500e+02
+1078 5.32066e+02 1.67310e+02
+1079 5.32066e+02 1.55500e+02
+1080 5.20242e+02 1.67310e+02
+1081 5.20242e+02 1.55500e+02
+1082 5.08418e+02 1.67310e+02
+1083 5.08418e+02 1.55500e+02
+1084 6.47346e+02 1.70262e+02
+1085 6.47346e+02 1.58452e+02
+1086 6.35522e+02 1.70262e+02
+1087 6.35522e+02 1.58452e+02
+1088 6.23699e+02 1.70262e+02
+1089 6.23699e+02 1.58452e+02
+1090 6.11875e+02 1.70262e+02
+1091 6.11875e+02 1.58452e+02
+1092 6.00051e+02 1.70262e+02
+1093 6.00051e+02 1.58452e+02
+1094 5.88228e+02 1.70262e+02
+1095 5.88228e+02 1.58452e+02
+1096 5.76404e+02 1.70262e+02
+1097 5.76404e+02 1.58452e+02
+1098 5.64581e+02 1.70262e+02
+1099 5.64581e+02 1.58452e+02
+1100 5.52757e+02 1.70262e+02
+1101 5.52757e+02 1.58452e+02
+1102 5.40933e+02 1.70262e+02
+1103 5.40933e+02 1.58452e+02
+1104 5.29109e+02 1.70262e+02
+1105 5.29109e+02 1.58452e+02
+1106 5.17286e+02 1.70262e+02
+1107 5.17286e+02 1.58452e+02
+1108 6.41434e+02 1.64357e+02
+1109 6.41434e+02 1.52547e+02
+1110 6.29611e+02 1.64357e+02
+1111 6.29611e+02 1.52547e+02
+1112 6.17787e+02 1.64357e+02
+1113 6.17787e+02 1.52547e+02
+1114 6.05963e+02 1.64357e+02
+1115 6.05963e+02 1.52547e+02
+1116 5.94140e+02 1.64357e+02
+1117 5.94140e+02 1.52547e+02
+1118 5.82316e+02 1.64357e+02
+1119 5.82316e+02 1.52547e+02
+1120 5.70492e+02 1.64357e+02
+1121 5.70492e+02 1.52547e+02
+1122 5.58669e+02 1.64357e+02
+1123 5.58669e+02 1.52547e+02
+1124 5.46845e+02 1.64357e+02
+1125 5.46845e+02 1.52547e+02
+1126 5.35022e+02 1.64357e+02
+1127 5.35022e+02 1.52547e+02
+1128 5.23198e+02 1.64357e+02
+1129 5.23198e+02 1.52547e+02
+1130 5.11374e+02 1.64357e+02
+1131 5.11374e+02 1.52547e+02
+1132 6.47346e+02 1.64357e+02
+1133 6.47346e+02 1.52547e+02
+1134 6.35522e+02 1.64357e+02
+1135 6.35522e+02 1.52547e+02
+1136 6.23699e+02 1.64357e+02
+1137 6.23699e+02 1.52547e+02
+1138 6.11875e+02 1.64357e+02
+1139 6.11875e+02 1.52547e+02
+1140 6.00051e+02 1.64357e+02
+1141 6.00051e+02 1.52547e+02
+1142 5.88228e+02 1.64357e+02
+1143 5.88228e+02 1.52547e+02
+1144 5.76404e+02 1.64357e+02
+1145 5.76404e+02 1.52547e+02
+1146 5.64581e+02 1.64357e+02
+1147 5.64581e+02 1.52547e+02
+1148 5.52757e+02 1.64357e+02
+1149 5.52757e+02 1.52547e+02
+1150 5.40933e+02 1.64357e+02
+1151 5.40933e+02 1.52547e+02
+1152 5.29109e+02 1.64357e+02
+1153 5.29109e+02 1.52547e+02
+1154 5.17286e+02 1.64357e+02
+1155 5.17286e+02 1.52547e+02
+1156 6.41434e+02 1.70262e+02
+1157 6.41434e+02 1.58452e+02
+1158 6.29611e+02 1.70262e+02
+1159 6.29611e+02 1.58452e+02
+1160 6.17787e+02 1.70262e+02
+1161 6.17787e+02 1.58452e+02
+1162 6.05963e+02 1.70262e+02
+1163 6.05963e+02 1.58452e+02
+1164 5.94140e+02 1.70262e+02
+1165 5.94140e+02 1.58452e+02
+1166 5.82316e+02 1.70262e+02
+1167 5.82316e+02 1.58452e+02
+1168 5.70492e+02 1.70262e+02
+1169 5.70492e+02 1.58452e+02
+1170 5.58669e+02 1.70262e+02
+1171 5.58669e+02 1.58452e+02
+1172 5.46845e+02 1.70262e+02
+1173 5.46845e+02 1.58452e+02
+1174 5.35022e+02 1.70262e+02
+1175 5.35022e+02 1.58452e+02
+1176 5.23198e+02 1.70262e+02
+1177 5.23198e+02 1.58452e+02
+1178 5.11374e+02 1.70262e+02
+1179 5.11374e+02 1.58452e+02
+1180 1.88883e+03 2.04806e+03
+1181 1.87701e+03 2.04806e+03
+1182 1.85336e+03 2.04806e+03
+1183 1.84154e+03 2.04806e+03
+1184 1.82971e+03 2.04806e+03
+1185 1.78242e+03 2.04806e+03
+1186 1.74695e+03 2.04806e+03
+1187 1.72330e+03 2.04806e+03
+1188 1.71147e+03 2.04806e+03
+1189 1.67600e+03 2.04806e+03
+1190 1.65236e+03 2.04806e+03
+1191 9.07466e+02 2.04806e+03
+1192 8.95642e+02 2.04806e+03
+1193 8.71994e+02 2.04806e+03
+1194 8.60171e+02 2.04806e+03
+1195 8.48347e+02 2.04806e+03
+1196 8.01053e+02 2.04806e+03
+1197 7.65581e+02 2.04806e+03
+1198 7.41934e+02 2.04806e+03
+1199 7.30111e+02 2.04806e+03
+1200 6.94640e+02 2.04806e+03
+1201 6.70992e+02 2.04806e+03
+1202 1.87109e+03 2.04216e+03
+1203 1.80015e+03 2.04216e+03
+1204 1.77651e+03 2.04216e+03
+1205 1.75286e+03 2.04216e+03
+1206 8.89730e+02 2.04216e+03
+1207 8.18788e+02 2.04216e+03
+1208 7.95141e+02 2.04216e+03
+1209 7.71494e+02 2.04216e+03
+1210 1.87701e+03 2.03625e+03
+1211 1.85336e+03 2.03625e+03
+1212 1.84154e+03 2.03625e+03
+1213 1.74695e+03 2.03625e+03
+1214 1.72330e+03 2.03625e+03
+1215 1.69965e+03 2.03625e+03
+1216 8.95642e+02 2.03625e+03
+1217 8.71994e+02 2.03625e+03
+1218 8.60171e+02 2.03625e+03
+1219 7.65581e+02 2.03625e+03
+1220 7.41934e+02 2.03625e+03
+1221 7.18287e+02 2.03625e+03
+1222 1.89474e+03 2.03035e+03
+1223 1.87109e+03 2.03035e+03
+1224 1.85927e+03 2.03035e+03
+1225 1.82380e+03 2.03035e+03
+1226 1.81198e+03 2.03035e+03
+1227 1.80015e+03 2.03035e+03
+1228 1.77651e+03 2.03035e+03
+1229 1.76468e+03 2.03035e+03
+1230 1.75286e+03 2.03035e+03
+1231 9.13377e+02 2.03035e+03
+1232 8.89730e+02 2.03035e+03
+1233 8.77906e+02 2.03035e+03
+1234 8.42435e+02 2.03035e+03
+1235 8.30612e+02 2.03035e+03
+1236 8.18788e+02 2.03035e+03
+1237 7.95141e+02 2.03035e+03
+1238 7.83317e+02 2.03035e+03
+1239 7.71494e+02 2.03035e+03
+1240 1.88883e+03 1.70261e+02
+1241 1.87701e+03 1.70261e+02
+1242 1.85336e+03 1.70261e+02
+1243 1.84154e+03 1.70261e+02
+1244 1.82971e+03 1.70261e+02
+1245 1.78242e+03 1.70261e+02
+1246 1.74695e+03 1.70261e+02
+1247 1.72330e+03 1.70261e+02
+1248 1.71147e+03 1.70261e+02
+1249 1.67600e+03 1.70261e+02
+1250 1.65236e+03 1.70261e+02
+1251 9.07466e+02 1.70261e+02
+1252 8.95642e+02 1.70261e+02
+1253 8.71994e+02 1.70261e+02
+1254 8.60171e+02 1.70261e+02
+1255 8.48347e+02 1.70261e+02
+1256 8.01053e+02 1.70261e+02
+1257 7.65581e+02 1.70261e+02
+1258 7.41934e+02 1.70261e+02
+1259 7.30111e+02 1.70261e+02
+1260 6.94640e+02 1.70261e+02
+1261 6.70992e+02 1.70261e+02
+1262 1.87109e+03 1.64357e+02
+1263 1.80015e+03 1.64357e+02
+1264 1.77651e+03 1.64357e+02
+1265 1.75286e+03 1.64357e+02
+1266 8.89730e+02 1.64357e+02
+1267 8.18788e+02 1.64357e+02
+1268 7.95141e+02 1.64357e+02
+1269 7.71494e+02 1.64357e+02
+1270 1.87701e+03 1.58451e+02
+1271 1.85336e+03 1.58451e+02
+1272 1.84154e+03 1.58451e+02
+1273 1.74695e+03 1.58451e+02
+1274 1.72330e+03 1.58451e+02
+1275 1.69965e+03 1.58451e+02
+1276 8.95642e+02 1.58451e+02
+1277 8.71994e+02 1.58451e+02
+1278 8.60171e+02 1.58451e+02
+1279 7.65581e+02 1.58451e+02
+1280 7.41934e+02 1.58451e+02
+1281 7.18287e+02 1.58451e+02
+1282 1.89474e+03 1.52546e+02
+1283 1.87109e+03 1.52546e+02
+1284 1.85927e+03 1.52546e+02
+1285 1.82380e+03 1.52546e+02
+1286 1.81198e+03 1.52546e+02
+1287 1.80015e+03 1.52546e+02
+1288 1.77651e+03 1.52546e+02
+1289 1.76468e+03 1.52546e+02
+1290 1.75286e+03 1.52546e+02
+1291 9.13377e+02 1.52546e+02
+1292 8.89730e+02 1.52546e+02
+1293 8.77906e+02 1.52546e+02
+1294 8.42435e+02 1.52546e+02
+1295 8.30612e+02 1.52546e+02
+1296 8.18788e+02 1.52546e+02
+1297 7.95141e+02 1.52546e+02
+1298 7.83317e+02 1.52546e+02
+1299 7.71494e+02 1.52546e+02
+1300 1.89474e+03 2.04806e+03
+1301 1.88292e+03 2.04806e+03
+1302 1.85927e+03 2.04806e+03
+1303 1.81198e+03 2.04806e+03
+1304 1.76468e+03 2.04806e+03
+1305 1.67009e+03 2.04806e+03
+1306 9.13377e+02 2.04806e+03
+1307 9.01554e+02 2.04806e+03
+1308 8.77906e+02 2.04806e+03
+1309 8.30612e+02 2.04806e+03
+1310 7.83317e+02 2.04806e+03
+1311 6.88728e+02 2.04806e+03
+1312 1.88883e+03 2.04216e+03
+1313 1.82971e+03 2.04216e+03
+1314 1.73512e+03 2.04216e+03
+1315 1.69965e+03 2.04216e+03
+1316 1.67600e+03 2.04216e+03
+1317 9.07466e+02 2.04216e+03
+1318 8.48347e+02 2.04216e+03
+1319 7.53758e+02 2.04216e+03
+1320 7.18287e+02 2.04216e+03
+1321 6.94640e+02 2.04216e+03
+1322 1.88292e+03 2.03625e+03
+1323 1.82380e+03 2.03625e+03
+1324 1.67009e+03 2.03625e+03
+1325 9.01554e+02 2.03625e+03
+1326 8.42435e+02 2.03625e+03
+1327 6.88728e+02 2.03625e+03
+1328 1.78242e+03 2.03035e+03
+1329 1.73512e+03 2.03035e+03
+1330 1.71147e+03 2.03035e+03
+1331 1.65236e+03 2.03035e+03
+1332 8.01053e+02 2.03035e+03
+1333 7.53758e+02 2.03035e+03
+1334 7.30111e+02 2.03035e+03
+1335 6.70992e+02 2.03035e+03
+1336 1.89474e+03 1.70261e+02
+1337 1.88292e+03 1.70261e+02
+1338 1.85927e+03 1.70261e+02
+1339 1.81198e+03 1.70261e+02
+1340 1.76468e+03 1.70261e+02
+1341 1.67009e+03 1.70261e+02
+1342 9.13377e+02 1.70261e+02
+1343 9.01554e+02 1.70261e+02
+1344 8.77906e+02 1.70261e+02
+1345 8.30612e+02 1.70261e+02
+1346 7.83317e+02 1.70261e+02
+1347 6.88728e+02 1.70261e+02
+1348 1.88883e+03 1.64357e+02
+1349 1.82971e+03 1.64357e+02
+1350 1.73512e+03 1.64357e+02
+1351 1.69965e+03 1.64357e+02
+1352 1.67600e+03 1.64357e+02
+1353 9.07466e+02 1.64357e+02
+1354 8.48347e+02 1.64357e+02
+1355 7.53758e+02 1.64357e+02
+1356 7.18287e+02 1.64357e+02
+1357 6.94640e+02 1.64357e+02
+1358 1.88292e+03 1.58451e+02
+1359 1.82380e+03 1.58451e+02
+1360 1.67009e+03 1.58451e+02
+1361 9.01554e+02 1.58451e+02
+1362 8.42435e+02 1.58451e+02
+1363 6.88728e+02 1.58451e+02
+1364 1.78242e+03 1.52546e+02
+1365 1.73512e+03 1.52546e+02
+1366 1.71147e+03 1.52546e+02
+1367 1.65236e+03 1.52546e+02
+1368 8.01053e+02 1.52546e+02
+1369 7.53758e+02 1.52546e+02
+1370 7.30111e+02 1.52546e+02
+1371 6.70992e+02 1.52546e+02
+1372 1.89179e+03 2.05102e+03
+1373 1.67896e+03 2.05102e+03
+1374 9.10422e+02 2.05102e+03
+1375 6.97596e+02 2.05102e+03
+1376 1.73217e+03 2.04511e+03
+1377 7.50802e+02 2.04511e+03
+1378 1.89179e+03 2.03921e+03
+1379 1.67896e+03 2.03921e+03
+1380 9.10422e+02 2.03921e+03
+1381 6.97596e+02 2.03921e+03
+1382 1.83858e+03 2.03330e+03
+1383 8.57215e+02 2.03330e+03
+1384 1.78537e+03 2.02740e+03
+1385 8.04009e+02 2.02740e+03
+1386 1.89179e+03 1.73214e+02
+1387 1.67896e+03 1.73214e+02
+1388 9.10422e+02 1.73214e+02
+1389 6.97596e+02 1.73214e+02
+1390 1.73217e+03 1.67309e+02
+1391 7.50802e+02 1.67309e+02
+1392 1.89179e+03 1.61404e+02
+1393 1.67896e+03 1.61404e+02
+1394 9.10422e+02 1.61404e+02
+1395 6.97596e+02 1.61404e+02
+1396 1.83858e+03 1.55499e+02
+1397 8.57215e+02 1.55499e+02
+1398 1.78537e+03 1.49594e+02
+1399 8.04009e+02 1.49594e+02
+1400 0.00000e+00 0.00000e+00
+EOF
