mirror of
https://github.com/eggplantlwj/VisionEdit.git
synced 2026-03-30 20:56:36 +08:00
添加功能:
1、在工具箱窗体点击某工具后将该工具添加到流程中 2、使用工厂模式和反射对工具进行添加,去掉原先大量的Switch case操作
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,12 +1,12 @@
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.exe.config
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.exe
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\HalconWindowTest.pdb
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.dll
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.xml
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csprojResolveAssemblyReference.cache
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.HalconWindow.HWindow_Final.resources
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.MainForm.resources
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.Properties.Resources.resources
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csproj.GenerateResource.Cache
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.exe
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.pdb
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.dll
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\bin\Debug\halcondotnet.xml
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.HalconWindow.HWindow_Final.resources
|
||||
F:\VSCode\VisionEditTest\HalconWindowTest\obj\Debug\HalconWindowTest.csprojResolveAssemblyReference.cache
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -28,21 +28,11 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormImageWindow));
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 28);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(899, 552);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
@@ -53,7 +43,18 @@
|
||||
this.comboBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(899, 28);
|
||||
this.comboBox1.TabIndex = 1;
|
||||
this.comboBox1.TabIndex = 3;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel1.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 28);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(899, 552);
|
||||
this.panel1.TabIndex = 2;
|
||||
//
|
||||
// FormImageWindow
|
||||
//
|
||||
@@ -63,8 +64,9 @@
|
||||
this.Controls.Add(this.comboBox1);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "FormImageWindow";
|
||||
this.Text = "图像显示";
|
||||
this.Text = "图像";
|
||||
this.Load += new System.EventHandler(this.FormImageWindow_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
@@ -72,7 +74,7 @@
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using HalconWindowTest.HalconWindow;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
@@ -8,6 +7,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using HalconWindowTest.HalconWindow;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace VisionEdit.FormLib
|
||||
@@ -18,7 +18,6 @@ namespace VisionEdit.FormLib
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public string m_fileName = string.Empty;
|
||||
/// <summary>
|
||||
/// 窗体对象实例
|
||||
@@ -40,6 +39,5 @@ namespace VisionEdit.FormLib
|
||||
this.panel1.Controls.Add(myHWindow);
|
||||
myHWindow.Dock = DockStyle.Fill;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
3593
VisionEdit/FormLib/FormImageWindow.cs.resx
Normal file
3593
VisionEdit/FormLib/FormImageWindow.cs.resx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,120 +0,0 @@
|
||||
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
49
VisionEdit/FormLib/FormJobManage.Designer.cs
generated
49
VisionEdit/FormLib/FormJobManage.Designer.cs
generated
@@ -32,6 +32,10 @@
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.btnCycleRun = new System.Windows.Forms.Button();
|
||||
this.btnSignael = new System.Windows.Forms.Button();
|
||||
this.picDeleteJob = new System.Windows.Forms.PictureBox();
|
||||
this.picNewJob = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picDeleteJob)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNewJob)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControl1
|
||||
@@ -39,18 +43,18 @@
|
||||
this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl1.Location = new System.Drawing.Point(-1, 3);
|
||||
this.tabControl1.Location = new System.Drawing.Point(-1, 1);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(373, 586);
|
||||
this.tabControl1.Size = new System.Drawing.Size(373, 588);
|
||||
this.tabControl1.TabIndex = 0;
|
||||
//
|
||||
// btnCycleRun
|
||||
//
|
||||
this.btnCycleRun.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnCycleRun.Location = new System.Drawing.Point(199, 595);
|
||||
this.btnCycleRun.Location = new System.Drawing.Point(218, 595);
|
||||
this.btnCycleRun.Name = "btnCycleRun";
|
||||
this.btnCycleRun.Size = new System.Drawing.Size(74, 33);
|
||||
this.btnCycleRun.Size = new System.Drawing.Size(63, 33);
|
||||
this.btnCycleRun.TabIndex = 1;
|
||||
this.btnCycleRun.Text = "连续运行";
|
||||
this.btnCycleRun.UseVisualStyleBackColor = true;
|
||||
@@ -58,32 +62,61 @@
|
||||
// btnSignael
|
||||
//
|
||||
this.btnSignael.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSignael.Location = new System.Drawing.Point(286, 595);
|
||||
this.btnSignael.Location = new System.Drawing.Point(297, 595);
|
||||
this.btnSignael.Name = "btnSignael";
|
||||
this.btnSignael.Size = new System.Drawing.Size(74, 33);
|
||||
this.btnSignael.Size = new System.Drawing.Size(63, 33);
|
||||
this.btnSignael.TabIndex = 1;
|
||||
this.btnSignael.Text = "单次运行";
|
||||
this.btnSignael.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// picDeleteJob
|
||||
//
|
||||
this.picDeleteJob.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.picDeleteJob.Image = global::VisionEdit.Properties.Resources.删除;
|
||||
this.picDeleteJob.Location = new System.Drawing.Point(53, 595);
|
||||
this.picDeleteJob.Name = "picDeleteJob";
|
||||
this.picDeleteJob.Size = new System.Drawing.Size(35, 40);
|
||||
this.picDeleteJob.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picDeleteJob.TabIndex = 2;
|
||||
this.picDeleteJob.TabStop = false;
|
||||
//
|
||||
// picNewJob
|
||||
//
|
||||
this.picNewJob.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.picNewJob.Image = global::VisionEdit.Properties.Resources.新建1;
|
||||
this.picNewJob.Location = new System.Drawing.Point(12, 595);
|
||||
this.picNewJob.Name = "picNewJob";
|
||||
this.picNewJob.Size = new System.Drawing.Size(35, 40);
|
||||
this.picNewJob.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.picNewJob.TabIndex = 2;
|
||||
this.picNewJob.TabStop = false;
|
||||
//
|
||||
// FormJobManage
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(372, 636);
|
||||
this.Controls.Add(this.picDeleteJob);
|
||||
this.Controls.Add(this.picNewJob);
|
||||
this.Controls.Add(this.btnSignael);
|
||||
this.Controls.Add(this.btnCycleRun);
|
||||
this.Controls.Add(this.tabControl1);
|
||||
this.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "FormJobManage";
|
||||
this.Text = "JobManage";
|
||||
this.Load += new System.EventHandler(this.FormJobManage_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.picDeleteJob)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNewJob)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.Button btnCycleRun;
|
||||
private System.Windows.Forms.Button btnSignael;
|
||||
private System.Windows.Forms.PictureBox picNewJob;
|
||||
private System.Windows.Forms.PictureBox picDeleteJob;
|
||||
public System.Windows.Forms.TabControl tabControl1;
|
||||
}
|
||||
}
|
||||
@@ -31,5 +31,9 @@ namespace VisionEdit.FormLib
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
private void FormJobManage_Load(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
162
VisionEdit/FormLib/FormToolBox.Designer.cs
generated
162
VisionEdit/FormLib/FormToolBox.Designer.cs
generated
@@ -29,28 +29,31 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("流程");
|
||||
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("Halcon窗口");
|
||||
System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("Basler");
|
||||
System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("HIKVision");
|
||||
System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("获取图像", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode15,
|
||||
treeNode16,
|
||||
treeNode17});
|
||||
System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("滤波");
|
||||
System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("平滑");
|
||||
System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("去噪");
|
||||
System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("图像预处理", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode19,
|
||||
treeNode20,
|
||||
treeNode21});
|
||||
System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("形状匹配");
|
||||
System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("可变形匹配");
|
||||
System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("灰度匹配");
|
||||
System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("匹配", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode23,
|
||||
treeNode24,
|
||||
treeNode25});
|
||||
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("流程", 1, 1);
|
||||
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Halcon窗口", 3, 3);
|
||||
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Basler");
|
||||
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("HIKVision");
|
||||
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("获取图像", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode2,
|
||||
treeNode3,
|
||||
treeNode4});
|
||||
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("滤波");
|
||||
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("平滑");
|
||||
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("去噪");
|
||||
System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("图像预处理", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode6,
|
||||
treeNode7,
|
||||
treeNode8});
|
||||
System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("形状匹配");
|
||||
System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("可变形匹配");
|
||||
System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("灰度匹配");
|
||||
System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("匹配", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode10,
|
||||
treeNode11,
|
||||
treeNode12});
|
||||
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("找线");
|
||||
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("几何", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode14});
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormToolBox));
|
||||
this.tvw_ToolBox = new System.Windows.Forms.TreeView();
|
||||
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
|
||||
@@ -68,45 +71,58 @@
|
||||
this.tvw_ToolBox.Indent = 32;
|
||||
this.tvw_ToolBox.Location = new System.Drawing.Point(0, 4);
|
||||
this.tvw_ToolBox.Name = "tvw_ToolBox";
|
||||
treeNode14.ImageIndex = 1;
|
||||
treeNode14.Name = "NodeJob";
|
||||
treeNode14.Text = "流程";
|
||||
treeNode15.ImageIndex = 3;
|
||||
treeNode15.Name = "节点1";
|
||||
treeNode15.Text = "Halcon窗口";
|
||||
treeNode16.ImageKey = "图像.png";
|
||||
treeNode16.Name = "节点2";
|
||||
treeNode16.Text = "Basler";
|
||||
treeNode17.ImageKey = "图像.png";
|
||||
treeNode17.Name = "节点3";
|
||||
treeNode17.Text = "HIKVision";
|
||||
treeNode18.ImageIndex = 4;
|
||||
treeNode18.Name = "节点0";
|
||||
treeNode18.Text = "获取图像";
|
||||
treeNode19.Name = "节点5";
|
||||
treeNode19.Text = "滤波";
|
||||
treeNode20.Name = "节点6";
|
||||
treeNode20.Text = "平滑";
|
||||
treeNode21.Name = "节点7";
|
||||
treeNode21.Text = "去噪";
|
||||
treeNode22.Name = "节点4";
|
||||
treeNode22.Text = "图像预处理";
|
||||
treeNode23.Name = "节点9";
|
||||
treeNode23.Text = "形状匹配";
|
||||
treeNode24.Name = "节点10";
|
||||
treeNode24.Text = "可变形匹配";
|
||||
treeNode25.Name = "节点11";
|
||||
treeNode25.Text = "灰度匹配";
|
||||
treeNode26.Name = "节点8";
|
||||
treeNode26.Text = "匹配";
|
||||
treeNode1.ImageIndex = 1;
|
||||
treeNode1.Name = "NodeJob";
|
||||
treeNode1.SelectedImageIndex = 1;
|
||||
treeNode1.Text = "流程";
|
||||
treeNode2.ImageIndex = 3;
|
||||
treeNode2.Name = "节点1";
|
||||
treeNode2.SelectedImageIndex = 3;
|
||||
treeNode2.Tag = "HalconToolInterface";
|
||||
treeNode2.Text = "Halcon窗口";
|
||||
treeNode3.ImageKey = "图像.png";
|
||||
treeNode3.Name = "节点2";
|
||||
treeNode3.SelectedImageIndex = 3;
|
||||
treeNode3.Text = "Basler";
|
||||
treeNode4.ImageKey = "图像.png";
|
||||
treeNode4.Name = "节点3";
|
||||
treeNode4.SelectedImageIndex = 3;
|
||||
treeNode4.Text = "HIKVision";
|
||||
treeNode5.ImageIndex = 4;
|
||||
treeNode5.Name = "节点0";
|
||||
treeNode5.Text = "获取图像";
|
||||
treeNode6.Name = "节点5";
|
||||
treeNode6.Text = "滤波";
|
||||
treeNode7.Name = "节点6";
|
||||
treeNode7.Text = "平滑";
|
||||
treeNode8.Name = "节点7";
|
||||
treeNode8.Text = "去噪";
|
||||
treeNode9.Name = "节点4";
|
||||
treeNode9.Text = "图像预处理";
|
||||
treeNode10.Name = "节点9";
|
||||
treeNode10.Text = "形状匹配";
|
||||
treeNode11.Name = "节点10";
|
||||
treeNode11.Text = "可变形匹配";
|
||||
treeNode12.Name = "节点11";
|
||||
treeNode12.Text = "灰度匹配";
|
||||
treeNode13.Name = "节点8";
|
||||
treeNode13.Text = "匹配";
|
||||
treeNode14.Name = "FindLine";
|
||||
treeNode14.Tag = "FindLine";
|
||||
treeNode14.Text = "找线";
|
||||
treeNode15.Name = "节点0";
|
||||
treeNode15.Text = "几何";
|
||||
this.tvw_ToolBox.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
|
||||
treeNode14,
|
||||
treeNode18,
|
||||
treeNode22,
|
||||
treeNode26});
|
||||
treeNode1,
|
||||
treeNode5,
|
||||
treeNode9,
|
||||
treeNode13,
|
||||
treeNode15});
|
||||
this.tvw_ToolBox.SelectedImageIndex = 4;
|
||||
this.tvw_ToolBox.Size = new System.Drawing.Size(367, 545);
|
||||
this.tvw_ToolBox.TabIndex = 1;
|
||||
this.tvw_ToolBox.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvw_ToolBox_AfterSelect);
|
||||
this.tvw_ToolBox.DoubleClick += new System.EventHandler(this.tvw_ToolBox_DoubleClick);
|
||||
//
|
||||
// imageList1
|
||||
//
|
||||
@@ -117,6 +133,36 @@
|
||||
this.imageList1.Images.SetKeyName(2, "流程图.png");
|
||||
this.imageList1.Images.SetKeyName(3, "图像.png");
|
||||
this.imageList1.Images.SetKeyName(4, "文件夹.png");
|
||||
this.imageList1.Images.SetKeyName(5, "20190709065619943_easyicon_net_256.ico");
|
||||
this.imageList1.Images.SetKeyName(6, "20190715063459237_easyicon_net_256.ico");
|
||||
this.imageList1.Images.SetKeyName(7, "20190716033549111_easyicon_net_128.ico");
|
||||
this.imageList1.Images.SetKeyName(8, "20190716033559344_easyicon_net_128.ico");
|
||||
this.imageList1.Images.SetKeyName(9, "avatar_guy_male_man_user_64px_1212479_easyicon.net.ico");
|
||||
this.imageList1.Images.SetKeyName(10, "avatar_male_man_user_64px_1212481_easyicon.net.ico");
|
||||
this.imageList1.Images.SetKeyName(11, "camera_96px_1157134_easyicon.net.ico");
|
||||
this.imageList1.Images.SetKeyName(12, "start.ico");
|
||||
this.imageList1.Images.SetKeyName(13, "stop.ico");
|
||||
this.imageList1.Images.SetKeyName(14, "User_64px_1115223_easyicon.net.ico");
|
||||
this.imageList1.Images.SetKeyName(15, "user_64px_1218470_easyicon.net.ico");
|
||||
this.imageList1.Images.SetKeyName(16, "保存.png");
|
||||
this.imageList1.Images.SetKeyName(17, "保存2.png");
|
||||
this.imageList1.Images.SetKeyName(18, "保存3.png");
|
||||
this.imageList1.Images.SetKeyName(19, "打开.png");
|
||||
this.imageList1.Images.SetKeyName(20, "复位.png");
|
||||
this.imageList1.Images.SetKeyName(21, "工具箱.ico");
|
||||
this.imageList1.Images.SetKeyName(22, "工具箱.png");
|
||||
this.imageList1.Images.SetKeyName(23, "镜头.png");
|
||||
this.imageList1.Images.SetKeyName(24, "开始.png");
|
||||
this.imageList1.Images.SetKeyName(25, "流程.ico");
|
||||
this.imageList1.Images.SetKeyName(26, "流程.png");
|
||||
this.imageList1.Images.SetKeyName(27, "流程图.png");
|
||||
this.imageList1.Images.SetKeyName(28, "删除.png");
|
||||
this.imageList1.Images.SetKeyName(29, "停止.png");
|
||||
this.imageList1.Images.SetKeyName(30, "图像.png");
|
||||
this.imageList1.Images.SetKeyName(31, "文件夹.png");
|
||||
this.imageList1.Images.SetKeyName(32, "相机.png");
|
||||
this.imageList1.Images.SetKeyName(33, "新建.png");
|
||||
this.imageList1.Images.SetKeyName(34, "新建2.png");
|
||||
//
|
||||
// richTextBoxEx1
|
||||
//
|
||||
@@ -154,6 +200,6 @@
|
||||
|
||||
private System.Windows.Forms.TreeView tvw_ToolBox;
|
||||
private DevComponents.DotNetBar.Controls.RichTextBoxEx richTextBoxEx1;
|
||||
private System.Windows.Forms.ImageList imageList1;
|
||||
public System.Windows.Forms.ImageList imageList1;
|
||||
}
|
||||
}
|
||||
@@ -7,29 +7,124 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using VisionEdit.VisionTool;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace VisionEdit.FormLib
|
||||
{
|
||||
public partial class FormToolBox : DockContent
|
||||
{
|
||||
public FormToolBox()
|
||||
FormLog myFormLog = null;
|
||||
FormJobManage myFormJobManage = null;
|
||||
|
||||
public FormToolBox(FormLog inputFormLog, FormJobManage inputFormJob)
|
||||
{
|
||||
InitializeComponent();
|
||||
myFormLog = inputFormLog;
|
||||
myFormJobManage = inputFormJob;
|
||||
VisionToolFactory.InitVisionToolTypeDic();
|
||||
}
|
||||
|
||||
private void tvw_ToolBox_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void tvw_ToolBox_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (tvw_ToolBox.SelectedNode.SelectedImageIndex == 0) //如果双击的是文件夹节点,返回
|
||||
return;
|
||||
if (myFormJobManage.tabControl1.TabPages.Count > 0) //如果已存在流程
|
||||
{
|
||||
object selectTag = tvw_ToolBox.SelectedNode.Tag;
|
||||
Add_Tool((ToolType)Enum.Parse(typeof(ToolType), selectTag.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
//如果当前不存在可用流程,先创建流程,在添加工具
|
||||
OperateJob.CreateNewJob();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("添加流程失败!" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 窗体对象实例
|
||||
/// 向流程中添加工具,需要根据选择的工具名对工具类型等进行判断
|
||||
/// </summary>
|
||||
private static FormToolBox _instance;
|
||||
public static FormToolBox Instance
|
||||
/// <param name="tool">工具类型</param>
|
||||
/// <param name="isInsert">插入位置,当为-1时,表示在末尾插入,当不为-1时,表示被插入的工具索引</param>
|
||||
internal void Add_Tool(ToolType tool, int insertPos = -1)
|
||||
{
|
||||
get
|
||||
string toolName = GetNewToolName(tool.ToString());
|
||||
IToolInfo insertTool = VisionToolFactory.CreateToolVision(tool, toolName);
|
||||
TreeNode insertNode = new TreeNode();
|
||||
insertNode = GlobalParams.myJobTreeView.Nodes.Add("", insertTool.toolName, (int)tool, (int)tool); // 该工具对应的节点
|
||||
// 判断节点是否添加默认输入输出图
|
||||
for (int i = 0; i < insertTool.toolOutput.Count; i++)
|
||||
{
|
||||
if (_instance == null)
|
||||
_instance = new FormToolBox();
|
||||
return _instance;
|
||||
TreeNode childrenNode = new TreeNode();
|
||||
childrenNode.Text = "-->" + insertTool.toolOutput[i].IOName;
|
||||
childrenNode.Tag = insertTool.toolOutput[i].ioType;
|
||||
insertNode.Nodes.Add(childrenNode);
|
||||
}
|
||||
|
||||
|
||||
GlobalParams.myVisionJob.L_toolList.Add(insertTool);
|
||||
}
|
||||
|
||||
internal string GetNewToolName(string toolType)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!TreeView_Contains_Key(toolType))
|
||||
{
|
||||
return toolType;
|
||||
}
|
||||
for (int i = 1; i < 101; i++)
|
||||
{
|
||||
if (!TreeView_Contains_Key(toolType + "_" + i))
|
||||
{
|
||||
return toolType + "_" + i;
|
||||
}
|
||||
}
|
||||
myFormLog.ShowLog("此工具已添加个数已达到数量上限,无法继续添加");
|
||||
return "Error";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("添加出错!" + ex.Message);
|
||||
return "Error";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断TreeView是否已经包含某节点
|
||||
/// </summary>
|
||||
/// <param name="key">节点文本</param>
|
||||
/// <returns>是否包含</returns>
|
||||
private bool TreeView_Contains_Key(string key)
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (TreeNode node in GlobalParams.myJobTreeView.Nodes)
|
||||
{
|
||||
if (node.Text == key)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog(ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,80 +124,372 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADi
|
||||
EAAAAk1TRnQBSQFMAgEBBQEAARABAAEQAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABgAMAAUADAAEBAQABCAYAASAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
|
||||
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
|
||||
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
|
||||
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
|
||||
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
|
||||
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
|
||||
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
|
||||
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
|
||||
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
|
||||
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
|
||||
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
|
||||
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
|
||||
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
|
||||
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
|
||||
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
|
||||
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
|
||||
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
|
||||
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
|
||||
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
|
||||
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
|
||||
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
|
||||
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
|
||||
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
|
||||
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
|
||||
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8AhAAB9htZZAAdWWMA
|
||||
HVljAB1ZYwAdWWMAHVljAB1ZYwAdWWMAHVljAB1ZYwAdWWMAHVljAB1ZYwAdWWMAHVljAB1ZYwAdWWMA
|
||||
ATEbWQExYwADMQFYFf8EMWMAAzEBWBX/BDFjAB0xYwAbMQF5ZAASMW4AETEBmW4AETH/AP8AdgABsxAA
|
||||
Af8Bu20AAbIRAAGybAABsgEJAbICCQGzAgkBugIJAbsHCQG6AbNqAAL/AQABswIAAQkCAAHzAgAB/wgA
|
||||
AQlqAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRQAC7IBswYAHfQGAAH/
|
||||
AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRMAAQkMsgUAH4oFAAH/ArMBshKz
|
||||
CQAB/wIJAf8CCQH0AgABGQEJARkB/wIJAf8CAAMJAf8B8gEJCgABswqyAfQIAAG6AbIEAAG0AYoBZQK7
|
||||
GhkBigUAAf8UAAEZCQAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJAQAB8wEJCQAB8wGzCAABugGy
|
||||
AfQIAAG6AbIEAAGzAYoCZQK7GRkBigUAAf8UAAEZCQAB/wUJAfQCAAEZBQkB/wIABgkJAAG6AfQIAAEJ
|
||||
DLIEAAGzAYoBuwJlAbsBCRgZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJAf8CAAYJCQABugH0CQAMsgQA
|
||||
AbMBigG7ARkCZQG7AQkJGQEJDBkBuwGKBQAB/xQAARkKAAH/AgkC/wMAAv8DCQH/AwAC/wIJAfMB/wkA
|
||||
AboB9BkAAbMBigG7AhkCZQG7CBkCuwsZAQkBZQGKBQAB/xQAARkLAAIJBwADCQYAAgkB9AoAAboB9BkA
|
||||
AbMBigG7AxkCZQG7BhkBuwJlAbsKGQJlAYoFAAH/FAABGQsAAgkH/wMJBv8CCQH0CgABugH0CQALsgGz
|
||||
BAABswGKAbsEGQJlAbsFGQFmAmUBZgEJCBkBuwFlARkBigUAAf8UAAEZCwAUCQH0CgABugH0CAABCQyy
|
||||
BAABswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZAYoFAAH/FAABGQsAFAkB9AoAAboB9AQA
|
||||
BPQBswGyAfQIAAG6AbIEAAGzAYoBuwYZAWUBZgG7AQkBuwJlAhkBZQFmAQkGGQFmAWUCGQGKBQAB/xWy
|
||||
FAAB8wIJEwABugH0AgAIsgH0CAABugGyBAABswGKAbsGGQG7AmUBuwJlAxkBCQFlAbsFGQG7AWUBbAIZ
|
||||
AYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkUAAHzAgkTAAG6AfQCAAGyBQABCQyyBAABswGKAbsHGQG1
|
||||
A2UFGQJlAbsDGQEJAmUDGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDQAH/wEZAgkH/wwAAboB9AIA
|
||||
AbIGAAyyBAABswGKAbsQGQEJAWUBuwMZAa4BZQQZAYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkMAAHz
|
||||
EgkLAAG6AfQCAAGyFgABswGKAbsCGQFmAmUMGQJlAbsBGQG7AmUEGQGKBQAB/wIAAbMCAAEJAgAB8wIA
|
||||
Af8IAAEZDAAB8wEJDv8DCQsAAboB9AIAAbIWAAGzAYoBuwEZAWUBiwIZAWUMGQFlArsCZQUZAYoEAAH/
|
||||
AbIVtAGyCwAB8wEJDgADCQoAB7IBswQAC7IBswQAAbMBigG7ARkBZQG7AhkBZQwZBGUBkQUZAYoEAAGy
|
||||
FwABsgoAAfMBCQMAAgkJAAMJCQABCQiyAwABCQyyBAABswGKAbsBGQFlAbsCCQFlDhkBtQcZAYoEAAGy
|
||||
F7MBsgoAAfMBCQMAAgkJAAMJCQABugGyAfQEAAG6AbID9AGzAbIB9AgAAboBsgQAAbMBigG7AhkDZQG7
|
||||
FhkBigQAAboXAAGyCgAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6AbIEAAGzAYoBuxwZAYoEAAG6
|
||||
FwABsgoAAfMBCQ4AAwkJAAEJCLIDAAEJDLIEAAGzAYoduwGKBAABuhcAAbIKAAHzEgkKAAiyBAAMsgUA
|
||||
H4oEAAG6BAABsgH0CwABCQGyBAABsgoAAf8RCQHzJwAB/xytAbQFAAG6AwABsgEAAbMLAAEJAQABsgMA
|
||||
AbJnAAG6AgABsgMAAbIJAAGyAwABswIAAbJnAAG6AbMBugQAAboIAALzAwAB/wG6AbMBCW8AAbIBCQUA
|
||||
AboBs3kAAboDsgEJbQABQgFNAT4HAAE+AwABKAMAAYADAAFAAwABAQEAAQEGAAEEFgAD/wEABP8MAAT/
|
||||
DAAE/wwAAcACAAEDDAABwAIAAQEMAAHAAgABAQwAAcACAAEBDAABwAIAAQEMAAHAAgABAQwAAcACAAEB
|
||||
DAABwAIAAQEMAAHAAgABAQwAAcACAAEBDAABwAIAAQEMAAHAAgABAQwAAcACAAEBDAABwAIAAQEMAAHA
|
||||
AgABAQwAAcACAAEBDAABwAIAAQEMAAHAAgABAQwAAcACAAEBDAABwAIAAQEMAAHAAgABAQwAAcACAAED
|
||||
DAABwAEAAQ8B/wwAAcABAAEPAf8MAAHAAQABHwH/DAAE/wwABP8MAAT/DAAE/wwAAf4C/wE/DP8B/gL/
|
||||
Ab8M/wH8AgABHwz/AfkBbQG/Ad8M/wH7AW0BvwHfAfABGAEMAQ8C/wEAAQ8BwAIAAQEB+wFtAb8B3wHw
|
||||
ARgBDAEPAf8B/gEAAQ8BgAMAAfgCAAEfAfABGAEMAQ8B/AEAAT8BzwQAAfsC/wHfAfEBGAGMAU8B+QH+
|
||||
AT8BzwQAAfsC/wHfAfABGAEMAQ8B+QH+AQABDwQAAfsC/wHfAfABGAEMAQ8B+QH/AQABDwQAAfsC/wHf
|
||||
AfgBOAEcAQ8B+QP/BAAB+wL/Ad8B/AH+AT8BHwH5A/8EAAH7Av8B3wH8AgABHwH5Af8BAAEPBAAB+wL/
|
||||
Ad8B/AIAAR8B+QH+AQABDwQAAfsC/wHfAfwCAAEfAfkB4AE/Ac8EAAH4AgABHwH/Af4BPwH/AfkBgAE/
|
||||
Ac8EAAH7AW0BvwHfAf8B/gE/Af8B+QG+AQABDwQAAfsBbQG/Ad8B/wIAAX8B+QG/AQABDwQAAfsBbQG/
|
||||
Ad8B/gIAAT8B+QG/Av8EAAH7AW0BvwHfAf4CAAE/AfkBvwL/BAAB8AIAAQ8B/gF/Af4BPwHwAQ8BAAEP
|
||||
BAAB9wL/AfcB/gFzAf4BPwHgAQ4BAAEPBAAB8AIAAQcB/gFzAf4BPwHjAcABPwHPBAAB9wL/AfcB/gF/
|
||||
Af4BPwHjAcABPwHPBAAB9wL/AfcB/gF/Af4BPwHgAQ4BAAEPBAAB9wL/AfcB/gIAAT8B8AEPAQABDwGA
|
||||
AwAB9wGfAfwB9wH+AgABPwT/AYACAAEBAfcBXwH9AXcM/wH2Ae8B+wG3DP8B8QHvAfMBhw3/AfMB5w7/
|
||||
AfwBHw3/Cw==
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB+
|
||||
VQAAAk1TRnQBSQFMAgEBIwEAAUgBAAEYAQABIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABgAMAASABAQIAAQEBAAEIBgABkBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc
|
||||
AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA
|
||||
AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz
|
||||
AwABZgMAAZkDAAHMAgABMwMAAjMCAAEzAWYCAAEzAZkCAAEzAcwCAAEzAf8CAAFmAwABZgEzAgACZgIA
|
||||
AWYBmQIAAWYBzAIAAWYB/wIAAZkDAAGZATMCAAGZAWYCAAKZAgABmQHMAgABmQH/AgABzAMAAcwBMwIA
|
||||
AcwBZgIAAcwBmQIAAswCAAHMAf8CAAH/AWYCAAH/AZkCAAH/AcwBAAEzAf8CAAH/AQABMwEAATMBAAFm
|
||||
AQABMwEAAZkBAAEzAQABzAEAATMBAAH/AQAB/wEzAgADMwEAAjMBZgEAAjMBmQEAAjMBzAEAAjMB/wEA
|
||||
ATMBZgIAATMBZgEzAQABMwJmAQABMwFmAZkBAAEzAWYBzAEAATMBZgH/AQABMwGZAgABMwGZATMBAAEz
|
||||
AZkBZgEAATMCmQEAATMBmQHMAQABMwGZAf8BAAEzAcwCAAEzAcwBMwEAATMBzAFmAQABMwHMAZkBAAEz
|
||||
AswBAAEzAcwB/wEAATMB/wEzAQABMwH/AWYBAAEzAf8BmQEAATMB/wHMAQABMwL/AQABZgMAAWYBAAEz
|
||||
AQABZgEAAWYBAAFmAQABmQEAAWYBAAHMAQABZgEAAf8BAAFmATMCAAFmAjMBAAFmATMBZgEAAWYBMwGZ
|
||||
AQABZgEzAcwBAAFmATMB/wEAAmYCAAJmATMBAANmAQACZgGZAQACZgHMAQABZgGZAgABZgGZATMBAAFm
|
||||
AZkBZgEAAWYCmQEAAWYBmQHMAQABZgGZAf8BAAFmAcwCAAFmAcwBMwEAAWYBzAGZAQABZgLMAQABZgHM
|
||||
Af8BAAFmAf8CAAFmAf8BMwEAAWYB/wGZAQABZgH/AcwBAAHMAQAB/wEAAf8BAAHMAQACmQIAAZkBMwGZ
|
||||
AQABmQEAAZkBAAGZAQABzAEAAZkDAAGZAjMBAAGZAQABZgEAAZkBMwHMAQABmQEAAf8BAAGZAWYCAAGZ
|
||||
AWYBMwEAAZkBMwFmAQABmQFmAZkBAAGZAWYBzAEAAZkBMwH/AQACmQEzAQACmQFmAQADmQEAApkBzAEA
|
||||
ApkB/wEAAZkBzAIAAZkBzAEzAQABZgHMAWYBAAGZAcwBmQEAAZkCzAEAAZkBzAH/AQABmQH/AgABmQH/
|
||||
ATMBAAGZAcwBZgEAAZkB/wGZAQABmQH/AcwBAAGZAv8BAAHMAwABmQEAATMBAAHMAQABZgEAAcwBAAGZ
|
||||
AQABzAEAAcwBAAGZATMCAAHMAjMBAAHMATMBZgEAAcwBMwGZAQABzAEzAcwBAAHMATMB/wEAAcwBZgIA
|
||||
AcwBZgEzAQABmQJmAQABzAFmAZkBAAHMAWYBzAEAAZkBZgH/AQABzAGZAgABzAGZATMBAAHMAZkBZgEA
|
||||
AcwCmQEAAcwBmQHMAQABzAGZAf8BAALMAgACzAEzAQACzAFmAQACzAGZAQADzAEAAswB/wEAAcwB/wIA
|
||||
AcwB/wEzAQABmQH/AWYBAAHMAf8BmQEAAcwB/wHMAQABzAL/AQABzAEAATMBAAH/AQABZgEAAf8BAAGZ
|
||||
AQABzAEzAgAB/wIzAQAB/wEzAWYBAAH/ATMBmQEAAf8BMwHMAQAB/wEzAf8BAAH/AWYCAAH/AWYBMwEA
|
||||
AcwCZgEAAf8BZgGZAQAB/wFmAcwBAAHMAWYB/wEAAf8BmQIAAf8BmQEzAQAB/wGZAWYBAAH/ApkBAAH/
|
||||
AZkBzAEAAf8BmQH/AQAB/wHMAgAB/wHMATMBAAH/AcwBZgEAAf8BzAGZAQAB/wLMAQAB/wHMAf8BAAL/
|
||||
ATMBAAHMAf8BZgEAAv8BmQEAAv8BzAEAAmYB/wEAAWYB/wFmAQABZgL/AQAB/wJmAQAB/wFmAf8BAAL/
|
||||
AWYBAAEhAQABpQEAA18BAAN3AQADhgEAA5YBAAPLAQADsgEAA9cBAAPdAQAD4wEAA+oBAAPxAQAD+AEA
|
||||
AfAB+wH/AQABpAKgAQADgAMAAf8CAAH/AwAC/wEAAf8DAAH/AQAB/wEAAv8CAAP/AgAfZykAAf8D8jMA
|
||||
AfQBZx2YAWcpAAEJA7IHAAj0JAAB7QFnHZgBZykAAQkDsgcACLIkAAHtAWcMmAFtA2cB6wyYAWcpAAEJ
|
||||
A7IHAAiyJAAB7QFnCpgB7AdnAZIKmAFnFgACshEAAQkDsg0AArIkAAHtAWcJmANnBf8CZwHrCZgBZxYA
|
||||
ArIMAAXzAQkDsgXzAf8HAAKyJAAB7QFnCZgBZwH3B/8CZwmYAWcHAAqyBQACsgwADrIB9AcAArIkAAHt
|
||||
AWcImAJnCf8CZwiYAWcHAAqyBQACsgwADrIB9AcAArIkAAHtAWcHmAHrAWcE/wHzAe0B9AT/AWcImAFn
|
||||
BwACsgoACbIIAA6yAfQHAAKyJAAB7QFnB5gCZwP/BWcD/wJnB5gBZwcAArIKAAmyCAAF8wG7A7IF8wH/
|
||||
BwACsiQAAe0BZweYAWcD/wFtAWcCmAHtAWcBBwP/AWcHmAFnBwACsg0AArIRAAEJA7INAAKyJAAB7QFn
|
||||
B5gBZwP/AWcB7AOYAmcD/wFnB5gBZwcAArINAAKyEQABCQOyDQACsiQAAe0BZweYAWcD/wFnBZgBZwP/
|
||||
AWcHmAFnBwACsgMACAkCAAKyEQABCQOyDQACsiQAAe0BZweYAWcD/wFnBZgBZwP/AWcHmAFnBwACsgMA
|
||||
CLIVAAEJA7INAAKyJAAB7QFnB5gBZwP/AWcBkgOYAeoBZwP/AWcHmAFnBwACsgMACAkDAAHzARkB8w8A
|
||||
AfQDCQ0AArIkAAHtAWcHmAFnA/8CZwOYAWcBjQP/AWcHmAFnBwACsg4AAboBsgG6IAACsiQAAe0BZweY
|
||||
AWcB6wP/BWcD/wJnB5gBZwcAArIOAAG6AbIBuiAAArIkAAHtAWcHmAHrAWcE/wH3AWcBvAT/AWcImAFn
|
||||
BwACsg4AAboBsgG6IAACsiQAAe0BZwiYAWcBbQn/AmcImAFnBwACsgMACAkDAAG6AbIBuiAAArIkAAHt
|
||||
AWcImAHsAWcB8wf/AZIBZwOYBWcBmAFnBwACsgMACLIDAAG6AbIBuiAAArIkAAHtAWcJmANnBf8DZwOY
|
||||
BWcBmAFnBwACsgMACLoDAAG6AbIBugoAArIB9BMAArIkAAHtAWcKmAFtB2cB7ASYAWcD4wFnAZgBZwcA
|
||||
ArIOAAG6AbIBugoAArIB9BMAArIkAAHtAWcMmAVnBpgFZwGYAWcHAAKyDgABugGyAboKAAKyAfQTAAKy
|
||||
JAAB7QFnF5gBbQNnAewBmAFnBwACsg4AAboBsgG6CgACsgH0EwACsiQAAfABZx2YAWcHAAKyDgABugGy
|
||||
AboKAAKyAfQTAAKyJQAfZwcAErIBugoAArIB9BMAArImAAUHAmcPbgFnAewFBwgAErIBugoAArIB9BMA
|
||||
ArIrAAHwAWcPmgFnAf8qAAKyAfQTAAKyLAABZw+aAWcrABiyLAABZw+aAWcrAAKzFrosABFnbwAB9A9n
|
||||
Af+SAAolAW9zAA8lUwAL9BEACSUBTAglAW9PAA/rDgAFJQFvCQABRgUlJwAB9htZCgAC6wHyCwABBwLr
|
||||
DAAEJQFMDQAFJQYAHfQDAB1ZCQAB6wHtDQAC6wsABCUQAAH0BCUEAB+KAgAdWQkAAesB8gEAAusCAAHy
|
||||
AesDAAHrAewBAAHsAesKAAQlEgAB/wMlAW8CAAG0AYoBZQK7GhkBigIAHVkJAAHrAfQBAALrAgAB8gHr
|
||||
AwAB6wHsAQABkgHrCQAB/wMlFAAB9AMlAgABswGKAmUCuxkZAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMA
|
||||
AesB7AEAAZIB6wkAAyUBFhUAAUYDJQEAAbMBigG7AmUBuwEJGBkBigIAHVkJAAHrAfQBAALrAgAB8gHr
|
||||
AwAB6wHsAQABkgHrCAAB/wMlBQAM/wYAAyUBAAGzAYoBuwEZAmUBuwEJCRkBCQwZAbsBigIAHVkJAAHr
|
||||
AfQBAALrAgAB8gHrAwAB6wHsAQABkgHrCAADJQHzBQABbwslBgABRgIlAW8BswGKAbsCGQJlAbsIGQK7
|
||||
CxkBCQFlAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlAbMBigG7
|
||||
AxkCZQG7BhkBuwJlAbsKGQJlAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wgAAyUGAAFv
|
||||
CyUHAAMlAbMBigG7BBkCZQG7BRkBZgJlAWYBCQgZAbsBZQEZAYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMA
|
||||
AesB7AEAAZIB6wcAAf8DJQYAAW8LJQcAAyUBswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZ
|
||||
AYoCAB1ZCQAB6wH0AQAC6wIAAfIB6wMAAesB7AEAAZIB6wcAAZQCJQEaBgABbwslBwADJQGzAYoBuwYZ
|
||||
AWUBZgG7AQkBuwJlAhkBZQFmAQkGGQFmAWUCGQGKAgAdWQkAAesB9AEAAusCAAHyAesDAAHrAewBAAGS
|
||||
AesHAAFGAiUB9AYAAW8LJQcAAW8CJQGzAYoBuwYZAbsCZQG7AmUDGQEJAWUBuwUZAbsBZQFsAhkBigIA
|
||||
HVkJAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwABkwIlARoGAAFvCyUHAAMlAbMBigG7BxkBtQNl
|
||||
BRkCZQG7AxkBCQJlAxkBigIAHVkJAAHrAfQBAALrAgAB8gHrAwAB6wHsAQABkgHrBwAB/wIlAUwGAAFv
|
||||
CyUHAAMlAbMBigG7EBkBCQFlAbsDGQGuAWUEGQGKAgAdWQkAAesB9AEAAusCAAHyAesDAAHrAewBAAGS
|
||||
AesIAAMlBgABbwslBwADJQGzAYoBuwIZAWYCZQwZAmUBuwEZAbsCZQQZAYoCAB1ZCQAB6wH0AQAC6wIA
|
||||
AfIB6wMAAesB7AEAAZIB6wgAAyUGAAFvCyUHAAMlAbMBigG7ARkBZQGLAhkBZQwZAWUCuwJlBRkBigIA
|
||||
HVkJAAHrAfQNAAGSAesIAAMlAf8FAAFvCyUGAAEWAyUBswGKAbsBGQFlAbsCGQFlDBkEZQGRBRkBigIA
|
||||
ATEbWQExBwAC/wHrAfAN/wHsAesC/wYAAfQDJQUAARYLRgYAAyUB/wGzAYoBuwEZAWUBuwIJAWUOGQG1
|
||||
BxkBigIAAzEBWBX/BDEHABXrBwADJQHzFQABbwMlAQABswGKAbsCGQNlAbsWGQGKAgADMQFYFf8EMQcA
|
||||
FesHAAEaAyUVAAMlAgABswGKAbscGQGKAgAdMQcAFesIAAQlEwAEJQIAAbMBih27AYoCABsxAXkNAALr
|
||||
BwAB6wHsDgAEJREABCUEAB+KAgASMRcAAusB9AUAAbwB6wHvDwAEJQHzDQABkwQlBQAB/xytAbQDABEx
|
||||
AZkYAAnrEQAFJQH/CQAB8wUlJwARMRoAAfEFkgH0EwAHJQFvARsB9AEaAUYHJW4AARoPJQH/cQAB9Asl
|
||||
Af93AAH/AZMBRgGTAf9ZAAH0BlUBdwH/dQANVXEAB1UBlwGYAXcGVQF3bgAEVQGYCQABdwRVawAB9ANV
|
||||
AZ0NAAGXA1UB/xMAAf8BGQkJARkB/wgAAf8FCQH0AgABGQUJAf8CAAYJFAALsgGzCAAB/wNVEAAB/wNV
|
||||
EwABuwuyAbsIAAH/BQkB9AIAARkFCQH/AgAGCRMAAQkMsggAA1USAAH/A1UIAAH/ARkICQKzCQkCswgA
|
||||
Af8CCQH/AgkB9AIAARkBCQEZAf8CCQH/AgADCQH/AfIBCQoAAbMKsgH0CAABugGyBwADVRQAAfQCVQGX
|
||||
BwACuwgJArMB/wcAAf8BswGyCAAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJAQAB8wEJCQAB8wGz
|
||||
CAABugGyAfQIAAG6AbIGAAH/AlUBCAcAAfENAAF3AlUGAAH/AbMB/wcAAf8CswkJAbMBsggAAf8FCQH0
|
||||
AgABGQUJAf8CAAYJCQABugH0CAABCQyyBgADVQgAAlUNAAJVAXcFAAH/AbMB/wgAAbsLsgG7CAAB/wUJ
|
||||
AfQCAAEZBQkB/wIABgkJAAG6AfQJAAyyBgACVQH0CAADVQwAAXcCVQUAAf8BswH/CAAB/wEZCQkBGQH/
|
||||
CQAB/wIJAv8DAAL/AwkB/wMAAv8CCQHzAf8JAAG6AfQaAAEIAlUJAARVAfELAAJVAf8EAAH/AbMB/x8A
|
||||
AgkHAAMJBgACCQH0CgABugH0GgADVQkABlUKAAJVAXcEAAH/AbMB/wgAAf8BGQkJARkB/woAAgkH/wMJ
|
||||
Bv8CCQH0CgABugH0CQALsgGzBQACVQGXCQAHVQkAA1UEAAH/AbMB/wgAAbsLsgG7CgAUCQH0CgABugH0
|
||||
CAABCQyyBQACVQHzCQAIVQEIBwADVQQAAf8BswH/AwAF/wKzCQkCswoAFAkB9AoAAboB9AQABPQBswGy
|
||||
AfQIAAG6AbIFAAJVAfQJAAlVBwABnQJVBAAB/wGzAf8BAAH/AbsFswGyAbMB/wcAAf8BswGyEwAB8wIJ
|
||||
EwABugH0AgAIsgH0CAABugGyBQACVQHzCQAIVQgAA1UEAAH/AbMB/wEAARkBuwH/AwAB/wKzCQkBswGy
|
||||
EwAB8wIJEwABugH0AgABsgUAAQkMsgUAAlUBlwkABlUBCAkAA1UEAAH/AbMB/wEAAgkFAAG7C7IBuwwA
|
||||
B/8BGQIJB/8MAAG6AfQCAAGyBgAMsgUAA1UJAAVVAf8KAANVBAAB/wGzAf8BAAIJBQAB/wEZCQkBGQH/
|
||||
CwAB8xIJCwABugH0AgABshcAAZgCVQkABFUMAAJVAfQEAAH/AbMB/wEAAgkdAAHzAQkO/wMJCwABugH0
|
||||
AgABshgAAlUB/wgAAlUBCAwAAZcCVQQAAf8BGQGzAgkCugEZAf8DAAH/ARkJCQEZAf8LAAHzAQkOAAMJ
|
||||
CgAHsgGzBAALsgGzBgADVQgAAVUOAANVBAABuweyAbsDAAG7C7IBuwsAAfMBCQMAAgkJAAMJCQABCQiy
|
||||
AwABCQyyBgAB9AJVAfMVAAGXAlUEAAH/ArMFCQKzA/8CswkJArMLAAHzAQkDAAIJCQADCQkAAboBsgH0
|
||||
BAABugGyA/QBswGyAfQIAAG6AbIHAANVFQADVQQAAf8CswH/AwAB/wGzAbIDswGyAbMB/wcAAf8BswGy
|
||||
CwAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6AbIIAANVEwADVQUAAf8CswUJAbMBsgIAAf8CswkJ
|
||||
AbMBsgsAAfMBCQ4AAwkJAAEJCLIDAAEJDLIIAAHyA1URAANVBwABuweyAbsDAAG7C7IBuwsAAfMSCQoA
|
||||
CLIEAAyyCQABCANVAfINAAGYA1UB9AcAAf8BGQUJARkB/wMAAf8BGQkJARkB/wsAAf8RCQHzLAAB8gRV
|
||||
Af8JAAHyBFVuAAZVAZcB8QH0AfEHVXAAAfQNVQH/dAABmAdVAfD0AAHCCFoB8w4AAbwBbRrrAW0BBwH/
|
||||
AQAB8wHyG/8B9wgAAbMQAAH/AbsNAAHzDFoB9AsAAf8B6xwZAewB/wEAAREdCQHqBwABshEAAbIMABBa
|
||||
CgAB/wHrAbsEUQG7FgkB7AH0AQABEQEJBFkBERcJAeoGAAGyAQkBsgIJAbMCCQG6AgkBuwcJAboBswoA
|
||||
BloBCAQAAZ4FWgoAAf8B6wG7AXMCdAFzAbsWCQHsAfQBAAERAQkBuwMTGAkB6gUAAv8BAAGzAgABCQIA
|
||||
AfMCAAH/CAABCQkABVoB/wgAAf8DWgoAAf8B6xsJAewB6wH0AQABERwJAbsB6gUAAf8CAAGzAgABCQIA
|
||||
AfMCAAH/CAABGQgAAZ4EWgwAAeQB/woAAf8B6xsJAZEBbQH0AQABERwJAbsB6gUAAf8CAAGzAgABCQIA
|
||||
AfMCAAH/CAABGQgABFoZAAH/AesbCQGRAW0B9AEAAREcCQG7AeoFAAH/ArMBshKzBwAEWhoAAf8B6xsJ
|
||||
AbsB6wH0AQABER0JAeoFAAH/FAABGQcAA1oB/xoAAf8B6xsJAZEB6wH0AQABERwJAbsB6gUAAf8UAAEZ
|
||||
BgABngNaGwAB/wHrGwkBuwHrAfQBAAERHQkB6gUAAf8UAAEZBgADWgH/GwAB/wHrCwkBuwHsA+sBuwsJ
|
||||
AewB9AEAAREMCQURDAkB6gUAAf8UAAEZBgADWhQAA1oFAAH/AesLCQH3AWgCsQFvAZILCQHsAfQBAAER
|
||||
DAkBQwMWAREMCQHqBQAB/xQAARkGAANaEwABCARaBAAB/wHrCwkB9wFvAhYBbwH3CwkB7AH0AQABEQwJ
|
||||
AUMBFgFvARYBEQwJAeoFAAH/FAABGQUAAf8DWhIAAf8GWgMAAf8B6wsJAfcEbwH3CwkB7AH0AQABEQwJ
|
||||
AUMBFgFZARYBEQwJAeoFAAH/FAABGQUAAZ4CWgGeEgAHWgEIAgAB8wESCrQBkQGuBG8B6wGRCrQB6gHx
|
||||
ARMNEQFDARYBWQEWDhEFAAH/FAABGQUAA1oBwhEACVoB/wEAARQMiwFtAW4CTAFvAW0MiwEUARENugFD
|
||||
AREBWQFEARENugUAAf8VsgUAAZ4CWgGeEAALWgH/AeoFuwEJBdwBCQH3AW4CUgFuAZIBCQvcAW0BEQEJ
|
||||
AhEBCQERAUMHCQFDARUBWQFoARENCQUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQUAAf8DWg8ABFoBngNa
|
||||
Af8EWgFtAbsBkQH3AbsB7QG7BgkB9wFuAo4BbwH3DAkB6wERDQkBQwMWARENCQUAAf8CAAGzAgABCQIA
|
||||
AfMCAAH/CAABGQYAA1oPAARaAQADWgEAAf8DWgFtDAkB9wFvArEBbwH3DAkB6wERDQkBFAOUARENCQUA
|
||||
Af8CAAGzAgABCQIAAfMCAAH/CAABGQYAA1oPAANaAgADWgIAAcACWgFtDAkBuwFtAusBbQH3DAkB6wER
|
||||
DQkBkgMRAbsNCQUAAf8CAAGzAgABCQIAAfMCAAH/CAABGQYAA1oQAAEbAgAB8wNaAwAB/wEAAW0eCQHr
|
||||
AREfCQQAAf8BshW0AbIFAAF8A1oSAANaAZ4FAAFtHgkB6wERHwkEAAGyFwABsgUAA1oRAAH/A1oGAAFt
|
||||
HgkB6wERHgkBGQQAAbIXswGyBQAEWhAABFoGAAHrAfMc9AHzAesBAAESHf8BEQQAAboXAAGyBgAEWg4A
|
||||
BFoHAAHzBuwBbQFKAeoM7AHqAUoB6gbsAfMIAAFEAUwNAAFSARELAAG6FwABsgYABVoMAARaAZ4OAAEH
|
||||
AVIBHAH/CwABHAFSAe8PAAFEAVINAAFZARELAAG6FwABsgcABVoKAAVaDwABBwFSARwB/wsAARwBUgHv
|
||||
DwABRAFSDQABWQERCwABugQAAbIB9AsAAQkBsgQAAbIIAAZaBgAGWhAAAQcBUgEcAf8LAAEcAVIB7w8A
|
||||
AUQBUg0AAVkBEQsAAboDAAGyAQABswsAAQkBAAGyAwABsgkAEFoRAAG8AVIBSwH/CgAB/wFuAVIBBw8A
|
||||
AREBWQHqCwABEQFZARELAAG6AgABsgMAAbIJAAGyAwABswIAAbIKAAHkDFoBnhIAAfMBdAFSAewKBwHs
|
||||
AVIBdAHyDwABvAF6AVkLEQFZARoB/wsAAboBswG6BAABuggAAvMDAAH/AboBswEJDAAKWhQAAf8B7wF0
|
||||
AVkKUgFZAXQB9wH/EAABEQH/AcMJmgHDAfEBExQAAbIBCQUAAboBsxcAAfQCngH/GAAB/wG8AewL6wEH
|
||||
Af8TAAEUCREBExgAAboDsgEJEQAY/woAFP8IAB2yJQAZ1AcAAf8XrAUAA7IEuhCyBboDsiQAGdQHABms
|
||||
AwAB/wKyBQAQsgYAArIkAALUAgAC1A0AAtQCAALUBgACrAEJFQABsgGsAfQCAAGzAbIB8wUAELIGAAG6
|
||||
AbIkAALUAgAC1A0AAtQCAALUBgACrBcAAqwCAAKyAfQFABCyBgABugGyCAAR9AsAAtQCAALUDQAC1AIA
|
||||
AtQGAAKsFwACrAIAArIB9AUAELIGAAG6AbIGAAGzE7IBCQkAAtQCAALUAwAB1QXUAfMDAALUAgAC1AYA
|
||||
AqwXAAKsAgACsgH0BQAQsgYAAboBsgYAArIQGQEJArIJAALUAgAC1AMABtQB3QMAAtQCAALUBgACrBcA
|
||||
AqwCAAKyAfQFABCyBgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0
|
||||
BQABsw+yBgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0BQAB9A+y
|
||||
BgABugGyBQAB9AGyAQkRAAKyCQAC1AIAAtQNAALUAgAC1AYAAqwXAAKsAgACsgH0BgAPsgYAAboBsgUA
|
||||
AfQBsgEJEQACsgkAAtQCABHUAgAC1AYAAqwXAAKsAgACsgH0BgAB/w2yBwABugGyBQAB9AGyAQkRAAKy
|
||||
CQAC1AIAEdQCAALUBgACrBcAAqwCAAKyAfQIAAHzCboB/wgAAboBsgUAAfQBsgEJEQACsgkAAtQCAAH/
|
||||
D/MDAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCREAArIJAALUFQAC1AYAAqwXAAKsAgACsgH0
|
||||
GwABugGyBQAB9AGyAQkIAAG6CAACsgkAAtQVAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCQcA
|
||||
AboCshIAAtQVAALUBgACrBcAAqwCAAKyAfQbAAG6AbIFAAH0AbIBCQgAA7IRAALUFQAC1AYAAqwXAAKs
|
||||
AgACsgH0GwABugGyBQAB9AGyAQkJAAOyEAAC1BUAAtQGAAKsBAABsw2sAQkEAAKsAgACsgH0GwABugGy
|
||||
BQAB9AGyAQkKAAOyBQABugkAAtQVAALUBgACrAQAD6wEAAKsAgACsgH0GwABugGyBQAB9AGyAQkLAAOy
|
||||
AwACsgkAAtQVAALUBgACrAQAAqwLAAKsBAACrAIAArIB9BsAAboBsgUAAfQBsgEJDAADsgIAArIJAALU
|
||||
FQAC1AYAAqwEAAKsCwACrAQAAqwCAAKyAfQHAA30BwABugGyBQAB9AGyAQkNAAOyAQACsgkAAtQCAAzU
|
||||
AQkGAALUBgACrAQAAqwGAAEZAawDAAKsBAACrAIAArIB9AUAEbIFAAG6AbIFAAH0AbIBCQ4ABbIJAALU
|
||||
AgAN1AUAA9QGAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AQAE7IEAAG6AbIFAAH0AbIBuw8ABLIJAALU
|
||||
AgAN1AQAA9QHAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AMAAfQTsgQAAboBsgYACrIEAAeyCQAC1AIA
|
||||
DdQDAAPUAf8HAAKsBAACrAYAAqwDAAKsBAACrAIAArIB9AMAAbsTsgH0AwABugGyBgABCQmyAwABugey
|
||||
CQAC1AIADdQCAAPUAf8IAAKsBAACrAcAAf8DAAKsBAACrAIAArIB9AMAAboTsgH0AwABugGyJAAC1AIA
|
||||
DdQBAAPUCgACrAQAAqwLAAKsAwABCQGsAQkCAAKyAfQDAAG6E7IB9AMAAboBsiQAFNQLAAH/AqwBtAIZ
|
||||
AqwLtAKsAhkBswKsAwAB9AGyAbMDAAG6E7IB9AMAArIkABPUAf8MAAGzF6wB8wQAArIBswL0AboTsgEZ
|
||||
AfQB8wOyJAAB8xHdAf8OAAH/AbMTrAG0BgAB/x2yZAAB9BiyAbMmAAGXA1UBCD8AAf8B9AHcAdQK0wHU
|
||||
AdsBGQH/KQABwgZVAfQiAAH/AZMBbwMXAW8BGgH/EAAB/wHbEtMB1AH0CQAB/wHvARQSDwERAewB8wYA
|
||||
CVUB/x4AARYLFwEaDQABGRbTAdUB/wUAAf8B7xgAARQB/wQAClUBlxsAAbcPFwH/CgABGRjTAdQFAAEH
|
||||
AQABDgHxFAAB/wFtAQABEQH/AwAMVQHCGAASFwGTCAAB/xrTARkDAAH/ARABDgHzFgAB/wFtAQABvAMA
|
||||
DlUB/xUAFBcBFgcAARka0wHUAwAB8gEAARUB/xcAAfABAAHtAwAQVRMAFhcBkwYAAQkN0wGyDNMB1AMA
|
||||
AfEBAAETAf8XAAHxAQAB7AMAEVUBmBAAARYXFwH/BQAB8w3TAW0M0wHUAwAB8gEAARUB/xcAAfEBAAHt
|
||||
AwATVQHyDQAB/xkXBQAB/wzTAbIBSgzTAQkDAAHzAQABEAH/FwABBwEAAe8DABVVAf8LAAYXARYN/wYX
|
||||
ARoFAAHUC9MBiwFKDNMB/wMAAf8BEQEOAfQXAAHsAQABvAMAFlUBlwkAAf8GFwEWDf8HFwUAAfML0wHq
|
||||
AUoBrQrTAdUFAAHrAQAB8RYAAf8BEQEAAfMDABhVAZgHAAGTBhcBFg3/BxcB/wUAC9MCSgFtCtMB/wUA
|
||||
AbwBAAHsAf8VAAHwAQABQwH/AwAaVQH0BQAHFwEWDf8HFwEaBQAB8wnTAawDRAHNCNMB1QYAAfQBDgEA
|
||||
AfEGAAH/AfIBkgHqARIB7AG8Af8GAAH/ARIBAAHwBAAbVQGYBAAHFwEWDf8HFwFvBgAB1AbTAqwBbANE
|
||||
AqwBzQbTAf8HAAHxAQABDwHzAwAB/wHrCAABEAHxAwAB/wHqAQAB6gH/BAAcVQH/AwAHFwEWDf8IFwYA
|
||||
Af8F0wOsAUoDRAGLAqwF0wHzCAAB/wHvAgABFQH3AewCAAERAQcB/wIAAf8B8gFtAgABEAHvAW0CAAES
|
||||
Af8FABxVAZgDAAcXARYN/wgXBwAB9ATTA6wBSgJuAUoBEgOsA9MBGQsAAfMBFAMAAQ8B8ggAAf8B7AMA
|
||||
AQ4BBwH/BgAcVQEbAwAHFwEWDf8IFwgAAf8D0wKsAfcEmgF0AqwBzQLTAfQOAAT/AQAB/wHwAewCEwHs
|
||||
AfAB/wIAA/8JABxVBAAHFwEWDf8HFwFvCQAB/wEJAtMBHAeaAawB0wEJAf8SAAH/AewIAAHsAf8MABpV
|
||||
AZcFAAcXARYN/wcXAZMMAAEaCZoUAAH0AQ4BAAEQAfAB/wIAAf8B8AEPAQABEQH0CwAZVQH/BgABFgYX
|
||||
ARYN/wcXAf8LAAH/CpoB8xIAAfQBDgEAAfcHAAH/Ae0BAAEPAf8KABdVAfEIAAH0BhcBFg3/BxcMAAEa
|
||||
C5oSAAHsAQABkgoAAZIBAAHsAf8JABVWAZgLAAYXARYN/wYXARYLAAH/DJoB9BAAAfQBDgEQAf8KAAH0
|
||||
AQ4BAAH0CQAUVgH/DAABGgYXDRYGFwwAAfQMmgEaEAAB8QEAAW0B/woAAf8B6gEAAfEJABJWAfQPABgX
|
||||
AbcMAAEaC5oBkwHrEAABvAEAAesB/woAAf8B6wEAAfAJABBWAQgRAAH/FxcNAAEcAewD6wFzAZMEmgGZ
|
||||
Am0QAAHyAQABEwH/CgAB/wEVAQAB8gkADlYBlxQAAfQVFw4AAewHbQEcApoB6wJtEAAB/wFDAQ4B9AoA
|
||||
AfIBAAEQAf8JAA1WAf8WAAH0ExcPAAEHCG0B6wGTAm0B7BEAAQcBAAERAf8IAAH/ARQBAAG8CgALVgH0
|
||||
GQAB/xAXARYQAAH/DG0B8BEAAf8B7AEAAREB8wYAAfMBEAEAAesB/woACVYBCB0AARoNFwH/EgAB7Qtt
|
||||
EwAB/wHsAgABEQH3AvAB9wERAgABkgwAAZgGVgGXIQAB9AEWBxcBkwH/FAAB/wHrCW0B9BUAAfQB6gYA
|
||||
AeoB9A4ABVYB/0IAAf8BkgZtAewB/xkAAf8C9AH/EgACCAH/RgAB9AHvAusB9wHzjQAB/x4AAREhAAHy
|
||||
HO0B7wH/AQAB8gHtCZIB7QHsAesDbQHsAe0JkgHtAe8B/wFtKgAL/wsAAfIB8An/AfMB8A//AfQBBwH/
|
||||
AQAB8gHxBv8B9AP/Au8CFAHsAbwB8wL/AfQG/wH0AQcB/ykAD+sJAAHzAbwJ/wHxAe8E/wLyCf8B8gG8
|
||||
AgAB8wG8Bf8B9AHvA/8B7wHzARIBEwHwAbwB8wL/Ae0B8wX/AfEBvCkAAusB8Qv/AfcB6wH3CAAB/wHv
|
||||
Cf8B8QHvBP8CBwn/AfcB9AIAAf8B9wX/AQcB8QP/Ae0B7wHrAeoB7wHsAfMC/wH0Ae8F/wH3AfQOAAEP
|
||||
Ae0B8QHzAfABbQEOFAAB6wH3DQAC6wkAAfMB9wj/AfEB7wH/AfMB8gHzAe8BBwj/AbwB8QQAAfMB9wT/
|
||||
AfMB7wP/Ae8B9AHrAW0B9AG8AfMC/wGSAfIE/wG8AfENAAERAfQGAAH/AfISAAH/AesB9AEAAusCAAHw
|
||||
AesDAAHrAewBAAHsAesKAAH0AfcE/wH0AQcB7QH3AQcBkgHzAf8BBwHvAQcBkgHtAfEE/wEHAfAB/wUA
|
||||
AfMB7wj/Ae0B7wL/AQcB7QHzB/8BBwG8Af8MAAH3CwABEhAAAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEA
|
||||
AewB6wsAAf8BvAH3AbwB7QG8A/QB9wH0A/8B7wHyAvQB8wH3AQcC7wH/CAAB/wEHAfcB8wX/Ae8B9AP/
|
||||
AQcB8wT/AfQBBwHvAf8NAAEHDQABQw8AAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w0AAfQB7wH/
|
||||
A/QB8wH3BP8B7wHxBPQBvAHwDQAB/wHzAfID8QHvAf8C9AH/AQcB8APxAfMB/w8AAW0GAAP/FQAB9AHr
|
||||
Af8BAALrAgAB8AHrAwAB6wHsAQAB7AHrDQAB/wHxAfcB8ALzAZIB7AHvAbwB8AEHAZIB7AHvAfMB8AHv
|
||||
AQcB/xEAAf8B8AHsAQcB8gHzAbwB7QHvAfQYAAHzARADAAETAf8EAAH0DgAB9AHrAf8BAALrAgAB8AHr
|
||||
AwAB6wHsAQAB7AHrEAAB/wH3Ae8B9AL/A/QB/wH0AfIB7AHwAf8RAAH/AbwB7wj/AfAB9wH/EAAB9wQA
|
||||
AfcHAAH0BAABDg0AAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w8AAf8B9wHzAfQC/wH0AQcB7wG8
|
||||
A/8B9AG8AQcQAAH/Ae8B9AP/AfMCBwHyBP8BkgHyEwAB8gkAAf8DAAHzDQAB9AHrAf8BAALrAgAB8AHr
|
||||
AwAB6wHsAQAB7AHrDgAB/wHsAfMB9AL/AfQB8AEHAe8BBwHxAv8C9AG8AQcB/w0AAf8B7wHzA/8B9AHw
|
||||
AgcBvAHzBP8B7wHzHAABFREAAfQB6wH/AQAC6wIAAfAB6wMAAesB7AEAAewB6w0AAf8BvAHxAvQB8wHv
|
||||
AfMF/wHxAe8B8wL0AfcB8wwAAf8BBwHwAv8B8AH3AfME/wH0AQcB9wL/AfQB9wH/DAABbQMAAf8cAAH0
|
||||
AesB/wEAAusCAAHwAesDAAHrAewBAAHsAesNAAH/AQcD/wv0Av8B8wEHAf8LAAH0AfcQ/wEHAfEMAAEH
|
||||
AwAB7QsAAf8DAAEODAAB9AHrAf8BAALrAgAB8AHrAwAB6wHsAQAB7AHrDAAB8gHtAQcI/wEHAfcB9AX/
|
||||
AfQB7QH3Af8JAAHxAewBvAj/AfcB7wb/AfMB7AG8Af8KAAHyAwABEwsAAfMDAAFDDAAB9AHrAf8BAALr
|
||||
AgAB8AHrAwAB6wHsAQAB7AHrCwAB8wG8AfIBvAL/AfIBvAHxA/8B9AHvAv8B8QHwAfIC/wHvAfQB7wH/
|
||||
BwAB8QHwAbwB8QL/A/QD/wG8Ae8C/wL0AfYB/wHzAfcB8gEHCgAB8AMAAesLAAH0AwABEAwAAfQB6wH/
|
||||
AQAC6wIAAfAB6wMAAesB7AEAAewB6woAAf8B8QHvAQcBvAL3AfEB8wHxAfcB7AH0Af8BvAHsAbwB8wHy
|
||||
AQcB7QH0A+8B8wYAAf8BvALvAfIQ/wH0AfcBBwH3Af8JAAGSAwAB8RwAAfQB6wH/AQAC6wIAAfAB6wMA
|
||||
AesB7AEAAewB6woAAf8BvAHvAesBbQHzAf8B8QHtAe8B/wG8AfcB8wHsAvQBBwHvAfQB/wPsAQcB8gH/
|
||||
BQAB/wEHAfcB7AHyAv8B8wEHAfQH/wK8A/8B7AGSAfcB9AkAAQ8DAAH/HAAB9AHrAf8BAALrAgAB8AHr
|
||||
AwAB6wHsAQAB7AHrCgAB/wG8AfABBwHqAfIC/wLzAfEB9wESAeoB6wHwAfIC8wL/AesBbQHyAe8B8wYA
|
||||
Af8BBwH/AQcB8wL/AfQB8Aj/AvED/wH3AfQB7QH0DgAB6wkAAfIDAAH/DQAB9AHrAf8NAAHsAesLAAL/
|
||||
AQcB6wHtAfcB7wEHAfAB8QHzAv8B9AHyAfABvAEHAfcB7QHsAW0B8QH/CAAB/wHzAewB8QG8AZIC8wG8
|
||||
AQcE/wHwAQcC8wHvAfcB9AHtAfIB/wsAAfMEAAEOBwAB6gQAAW0MAAL/AesB8w3/AewB6wL/CwABBwHt
|
||||
Ef8B6wHzCgAB/wFtARIB8AL/AfQI/wL0Av8B9AFtAfIMAAEOBAAB/wHqBQAB7xIAFesLAAEHAesB8w//
|
||||
AbwB6wHyCgAB8gETARQB6gHxCf8D9AL/AfEBEwH3Af8MAAHxBQAB/wEHAZIBvAH/BQAB6g0AFesLAAHw
|
||||
AuwO/wHyAesB7QHzCgAB8AMUAfcD/wHxAZIB6gETCRQB7AH/DQAB/w0AAfIOABXrCwAB8wPtAfMBBwHs
|
||||
Am0D6wFtAewB7wH0AfAB7AH3Ae0B9AoAAbwDFAHsAfQB7A4UAW0B/w4AAf8LAAHxFAAC6wcAAesB7BAA
|
||||
Af8D9wHtAvcDkgH3AZID9wLtAfcBkgHvAf8KAAH0ARICFAETEBQB7AH/BAAB7AoAAfEIAAH/AZIVAALr
|
||||
Af8FAAHwAesBBxEAAfMB6wf3Ae0H9wHsAf8LAAH/AfMB7AESERQBBwH/BAAB/wEOCgABDwG8Af8DAAH/
|
||||
AZIBDgoAAeoLAAH/CesTAAHzAesB7AGSBPcBkgb3Ae0B/w8AAf8B7w8UAewB/wcABf8BkhEAAfAF/w4A
|
||||
AQcF7AHyFgAB/wEHAewB9wHtAZID9wHsAe0B7AHvAf8RAAH/AesMFAESAbwfAAHsMwAB/wG8AfMB9wLs
|
||||
Ae8D/xQAAf8B8AFtBxQBbQHvAfQB/xAAARIPAAHzNwAC/xsABv8VAAHzgAAB8AwAARAB/ykAAfMB8Rv/
|
||||
AfcB/wEAH2dBAAERHQkB6gH0AWcdmAFnQQABEQEJBFkBERcJAeoB7QFnHZgBZyIAAfYbWQMAAREBCQG7
|
||||
AxIYCQHqAe0BZwyYAW0DZwHsDJgBZyIAHVkCAAERHAkBuwHqAe0BZwqYAewHZwGSCpgBZxYAAroKAB1Z
|
||||
AgABERwJAbsB6gHtAWcJmAHqAmcF/wJnAesJmAFnFgACsgoAHVkCAAERHAkBuwHqAe0BZwmYAWcB9wf/
|
||||
AW0BZwmYAWcHAAqyBQACsgoAHVkCAAERHQkB6gHtAWcImAJnCf8CZwiYAWcHAAqyBQACsgoAHVkCAAER
|
||||
HAkBuwHqAe0BZweYAesBZwT/AfMB7QH0BP8BZwiYAWcHAAKyCgAIsgG6BgAdWQIAAREdCQHqAe0BZweY
|
||||
AWcB6wP/BWcD/wJnB5gBZwcAArIKAAiyAboGAB1ZAgABEQwJAREDQwERDAkB6gHtAWcHmAFnA/8B7AFn
|
||||
ApgB7QFnAQcC/wH0AWcHmAFnBwACsg0AArIKAB1ZAgABEQwJAUMDFgERDAkB6gHtAWcHmAFnA/8BZwHs
|
||||
A5gCZwP/AWcHmAFnBwACsg0AArIKAB1ZAgABEQwJAUMBFgFvARYBEQwJAeoB7QFnB5gBZwP/AWcFmAFn
|
||||
A/8BZweYAWcHAAKyAwAIGQIAArIKAB1ZAgABEQwJAUMBFgFZARYBEQwJAeoB7QFnB5gBZwP/AWcFmAFn
|
||||
A/8BZweYAWcHAAKyAwAIsg4AHVkBAAHqDREBQwEWAVkBFg0RAUMB7QFnB5gBZwP/AWcB7QOYAeoBZwP/
|
||||
AWcHmAFnBwACsgMACLoDAAL0Af8IAB1ZAQABEQ26AkMBWQFEARENugHtAWcHmAFnA/8CZwOYAWcB7QL/
|
||||
AfQBZweYAWcHAAKyDgABtAGyAQkIAB1ZAQABEQEJAhUBCQEVARQHCQFDAUQBegFoARENCQHtAWcHmAFn
|
||||
AY0D/wVnA/8CZweYAWcHAAKyDgABtAGyAQkIAB1ZAQABEQ0JAUMDFgERDQkB7QFnB5gB6wFnBP8B9wFn
|
||||
AbwE/wFnAZIHmAFnBwACsg4AAbQBsgEJCAAdWQEAARENCQEUA5QBEQ0JAe0BZwiYAWcB6wn/AmcImAFn
|
||||
BwACsgMACBkDAAG0AbIBCQgAHVkBAAERDQkBkQMSAfcNCQHtAWcImAHsAWcB8Af/AZIBZwOYBWcBmAFn
|
||||
BwACsgMACLIDAAG0AbIBCQgAATEbWQExAQABER8JAe0BZwmYA2cF/wJnAeoDmAVnAZgBZwcAArIDAAiz
|
||||
AwABtAGyAQkIAAMxAVgV/wQxAQABER8JAe0BZwqYAW0HZwHsBJgBZwPjAWcBmAFnBwACsg4AAbQBsgEJ
|
||||
CAADMQFYFf8EMQEAAREBGR0JARkB7QFnDJgFZwaYBWcBmAFnBwACsg4AAbQBsgEJCAAdMQIAAW0d/wEU
|
||||
Ae0BZxeYAW0DZwHsAZgBZwcAArIOAAG0AbIBCQgAGzEBeQQABv8BRAFLDf8BMQERBv8BAAHwAWcdmAFn
|
||||
BwACsg4AAbQBsgEJCAASMRQAAUQBUg0AAVkBEQgAH2cHABKyAQkIABExAZkUAAFEAVINAAFZAREJAAUH
|
||||
AmcPbgFnAewFBwgAErIBCQgAETEVAAFEAVINAAFZAREOAAHxAWcPmgFnAf9OAAERAVkBbQsAAUMBWQER
|
||||
DgAB/wFnD5oBZwH/TgABBwF6AVMLEQFZARoB/w8AAWcPmgFnUAABEQH/AcMJmgHDAfEBExAAEWdSAAEU
|
||||
CREBExIAAfQPZwH/LgABsxAAAf8Bu20AAbIRAAGybAABsgEJAbICCQGzAgkBugIJAbsHCQG6AbNqAAL/
|
||||
AQABswIAAQkCAAHzAgAB/wgAAQlqAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/
|
||||
AgAGCRQAC7IBswYAHfQGAAH/AgABswIAAQkCAAHzAgAB/wgAARkJAAH/BQkB9AIAARkFCQH/AgAGCRMA
|
||||
AQkMsgUAH4oFAAH/ArMBshKzCQAB/wIJAf8CCQH0AgABGQEJARkB/wIJAf8CAAMJAf8B8gEJCgABswqy
|
||||
AfQIAAG6AbIEAAG0AYoBZQK7GhkBigUAAf8UAAEZCQAB/wIJAQACCQH0AgABGQEJAfMBAAIJAf8CAAMJ
|
||||
AQAB8wEJCQAB8wGzCAABugGyAfQIAAG6AbIEAAGzAYoCZQK7GRkBigUAAf8UAAEZCQAB/wUJAfQCAAEZ
|
||||
BQkB/wIABgkJAAG6AfQIAAEJDLIEAAGzAYoBuwJlAbsBCRgZAYoFAAH/FAABGQkAAf8FCQH0AgABGQUJ
|
||||
Af8CAAYJCQABugH0CQAMsgQAAbMBigG7ARkCZQG7AQkJGQEJDBkBuwGKBQAB/xQAARkKAAH/AgkC/wMA
|
||||
Av8DCQH/AwAC/wIJAfMB/wkAAboB9BkAAbMBigG7AhkCZQG7CBkCuwsZAQkBZQGKBQAB/xQAARkLAAIJ
|
||||
BwADCQYAAgkB9AoAAboB9BkAAbMBigG7AxkCZQG7BhkBuwJlAbsKGQJlAYoFAAH/FAABGQsAAgkH/wMJ
|
||||
Bv8CCQH0CgABugH0CQALsgGzBAABswGKAbsEGQJlAbsFGQFmAmUBZgEJCBkBuwFlARkBigUAAf8UAAEZ
|
||||
CwAUCQH0CgABugH0CAABCQyyBAABswGKAbsFGQJlAbsDGQG7AWUBZgGRAWUBuwcZAQkCZQEZAYoFAAH/
|
||||
FAABGQsAFAkB9AoAAboB9AQABPQBswGyAfQIAAG6AbIEAAGzAYoBuwYZAWUBZgG7AQkBuwJlAhkBZQFm
|
||||
AQkGGQFmAWUCGQGKBQAB/xWyFAAB8wIJEwABugH0AgAIsgH0CAABugGyBAABswGKAbsGGQG7AmUBuwJl
|
||||
AxkBCQFlAbsFGQG7AWUBbAIZAYoFAAH/AgABswIAAQkCAAHzAgAB/wgAARkUAAHzAgkTAAG6AfQCAAGy
|
||||
BQABCQyyBAABswGKAbsHGQG1A2UFGQJlAbsDGQEJAmUDGQGKBQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZ
|
||||
DQAH/wEZAgkH/wwAAboB9AIAAbIGAAyyBAABswGKAbsQGQEJAWUBuwMZAa4BZQQZAYoFAAH/AgABswIA
|
||||
AQkCAAHzAgAB/wgAARkMAAHzEgkLAAG6AfQCAAGyFgABswGKAbsCGQFmAmUMGQJlAbsBGQG7AmUEGQGK
|
||||
BQAB/wIAAbMCAAEJAgAB8wIAAf8IAAEZDAAB8wEJDv8DCQsAAboB9AIAAbIWAAGzAYoBuwEZAWUBiwIZ
|
||||
AWUMGQFlArsCZQUZAYoEAAH/AbIVtAGyCwAB8wEJDgADCQoAB7IBswQAC7IBswQAAbMBigG7ARkBZQG7
|
||||
AhkBZQwZBGUBkQUZAYoEAAGyFwABsgoAAfMBCQMAAgkJAAMJCQABCQiyAwABCQyyBAABswGKAbsBGQFl
|
||||
AbsCCQFlDhkBtQcZAYoEAAGyF7MBsgoAAfMBCQMAAgkJAAMJCQABugGyAfQEAAG6AbID9AGzAbIB9AgA
|
||||
AboBsgQAAbMBigG7AhkDZQG7FhkBigQAAboXAAGyCgAB8wEJDgADCQkAAboBsgH0BAABugayAfQIAAG6
|
||||
AbIEAAGzAYoBuxwZAYoEAAG6FwABsgoAAfMBCQ4AAwkJAAEJCLIDAAEJDLIEAAGzAYoduwGKBAABuhcA
|
||||
AbIKAAHzEgkKAAiyBAAMsgUAH4oEAAG6BAABsgH0CwABCQGyBAABsgoAAf8RCQHzJwAB/xytAbQFAAG6
|
||||
AwABsgEAAbMLAAEJAQABsgMAAbJnAAG6AgABsgMAAbIJAAGyAwABswIAAbJnAAG6AbMBugQAAboIAALz
|
||||
AwAB/wG6AbMBCW8AAbIBCQUAAboBs3kAAboDsgEJbQABQgFNAT4HAAE+AwABKAMAAYADAAEgAQECAAEB
|
||||
AQABAQYAARIWAAP/AQABgAMABf8BhwL/CAAF/wGHAfABDwgABf8BhwHwAQ8IAAX/AYcB8AEPCAAC/wH8
|
||||
Av8BhwH/Ac8IAAL/AfwB/wHwAQABHwHPCAAB/gEAAXwB/wHwAQABHwHPCAAB/gEAAXwB/wHwAQABHwHP
|
||||
CAAB/gF/AeABDwHwAQABHwHPCAAB/gF/AeABDwHwAQABHwHPCAAB/gF/AfwC/wGHAf8BzwgAAf4BfwH8
|
||||
Av8BhwH/Ac8IAAH+AXABDAL/AYcB/wHPCAAB/gFwAQ8C/wGHAf8BzwgAAf4BcAEOAT8B/wGHAf8BzwgA
|
||||
Af4BfwH+AT8D/wHPCAAB/gF/Af4BPwP/Ac8IAAH+AX8B/gE/A/8BzwgAAf4BcAEOAT8D/wHPCAAB/gFw
|
||||
AQ4BPwP/Ac8IAAH+AXABDgE/AfEC/wHPCAAB/gF/Af4BPwHxAv8BzwgAAf4BfwH+AT8B8QL/Ac8IAAH+
|
||||
AX8B/gE/AfEC/wHPCAAB/gF/Af4BPwHxAv8BzwQAAYADAAH+AgABPwHxAv8BzwQAAcACAAEBAf4CAAE/
|
||||
AfEC/wHPBAAB/gIAAT8E/wHxAv8BzwQAAf8CAAF/BP8B8AIAAQ8EAAH/AgABfwT/AfACAAEPBAAB/wIA
|
||||
AX8I/wQAAf8CAAF/CP8EAAX/AeABAw7/AYABAAr/AeABAwH/Af4CAAE/Cf8BgAEAAf8B/AEPAfgBHwT/
|
||||
AcACAAEDAf8BHwH8AX8B+AE/Af4BDwHAAgABAQHAAgABAQH/AT8B/gF/AfAC/wEHAYADAAHAAgABAQH/
|
||||
ASYBcgF/AeEC/wGDBAABwAIAAQEB/wEmAXIBfwHDAv8BwwQAAcACAAEBAf8BJgFyAX8BwwL/AeEEAAHA
|
||||
AgABAQH/ASYBcgF/AYcBwAEDAfEEAAHAAgABAQH/ASYBcgF/AYcBwAEDAfAEAAHAAgABAQH/ASYBcgF/
|
||||
AY8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AY8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHA
|
||||
AgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/
|
||||
AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AQ8BwAEDAfgEAAHAAgABAQH/ASYBcgF/AY8BwAEDAfgEAAHA
|
||||
AgABAQH/ASYBcgF/AY8BwAEDAfgEAAHAAgABAQH/AT8B/gF/AYcBwAEDAfAEAAHAAgABAQH8AgABHwGH
|
||||
AcABAwHwBAABwAIAAQEB/AIAAR8BwwL/AeEEAAHAAgABAQH8AgABHwHDAv8B4wQAAcACAAEBAfwCAAEf
|
||||
AeEC/wHDBAABwAIAAQMB/wHnAfMB/wHwAv8BhwGAAwABwAEAAQ8C/wLjAf8B+AE/Af4BDwGAAgABAQHA
|
||||
AQABDwL/AfABBwH/AfwBDwH4AR8E/wHAAQABHwL/AfgBDwH/Af4CAAE/Df8CAAF/Df8BwAEBDv8B/AEf
|
||||
Cv8B8AEHDv8BwAEBDv8CAAF/DP8B/gEPAfgBPwz/AfgBPwH+AQ8B/wH+AQABDwHwARgBDAEPAv8BAAEP
|
||||
AfAC/wEPAf8B/gEAAQ8B8AEYAQwBDwH/Af4BAAEPAfEC/wGHAfgCAAEPAfABGAEMAQ8B/AEAAT8BzwHj
|
||||
Av8BwwH4AQABPwGPAfEBGAGMAU8B+QH+AT8BzwHDAfsB/wHjAfEB/AEAAQ8B8AEYAQwBDwH5Af4BAAEP
|
||||
AccB+QH/AvEB/gEAAQ8B8AEYAQwBDwH5Af8BAAEPAccB+AH/AvEB/gEAAQ8B+AE4ARwBDwH5A/8BjwH4
|
||||
AT8B+AHxA/8B/AH+AT8BHwH5A/8BjwH4AR8B+AHxAf4BAAEPAfwCAAEfAfkB/wEAAQ8BjwH4AQ8B+AHx
|
||||
Af4BAAEPAfwCAAEfAfkB/gEAAQ8BjwH4AQMB+AHxAcABAAEPAfwCAAEfAfkB4AE/Ac8BjwH4AQMB+AHx
|
||||
AQABPwGPAf8B/gE/Af8B+QGAAT8BzwGPAfgBBwH4AfEBHAEAAQ8B/wH+AT8B/wH5Ab4BAAEPAY8B+AEP
|
||||
AfgB8QE+AQABDwH/AgABfwH5Ab8BAAEPAY8B+AEfAfgB8QE+AQABDwH+AgABPwH5Ab8C/wGPAfgBfwH4
|
||||
AfEBPwL/Af4CAAE/AfkBvwL/AccB+AH/AfEB4AEOAQABDwH+AX8B/gE/AfABDwEAAQ8BxwH7Af8B8QHg
|
||||
AQ4BAAEPAf4BcwH+AT8B4AEOAQABDwHDAv8B4wHAAgABDwH+AXMB/gE/AeMBwAE/Ac8B4wL/AeMBwwGA
|
||||
AT8BjwH+AX8B/gE/AeMBwAE/Ac8B8QL/AccBwAEMAQABDwH+AX8B/gE/AeABDgEAAQ8B8AL/AY8B4AEO
|
||||
AQABDwH+AgABPwHwAQ8BAAEPAfgBPwH+AQ8B4AEOAQABDwH+AgABPwT/AfwBDwH4AT8N/wIAAX8N/wGA
|
||||
AQAO/wHwAQce/wGAAR8B/wGAAwABgAIAAQEB/gL/AT8B/gEAAQcB/wQAAYADAAH+Av8BvwH8AQABAwH/
|
||||
BAABgAMAAfwCAAEfAfgBDwEDAf8EAAGAAwAB+QFtAb8B3wHwAT8BwwH/BAABgAMAAfsBbQG/Ad8B4AH/
|
||||
AfMB/wQAAYADAAH7AW0BvwHfAeED/wQAAYADAAH4AgABHwHDA/8EAAGAAwAB+wL/Ad8BwwP/BAABgAMA
|
||||
AfsC/wHfAYcD/wQAAYADAAH7Av8B3wGHA/8EAAGAAwAB+wL/Ad8BjwL/AR8EAAGAAwAB+wL/Ad8BjwH/
|
||||
Af4BDwQAAYADAAH7Av8B3wEPAf8B/AEHBAABgAMAAfsC/wHfAQ8B/wH8AQMIAAH7Av8B3wEPAf8B+AEB
|
||||
CAAB+AIAAR8BDwH/AfAJAAH7AW0BvwHfAQ8B/wHgCQAB+wFtAb8B3wGPAf8B4QEQCAAB+wFtAb8B3wGP
|
||||
Af8B4wEYCAAB+wFtAb8B3wGPAf8B9gEdCAAB8AIAAQ8BhwH/Af4BHwgAAfcC/wH3AccB/wH8AT8IAAHw
|
||||
AgABBwHDAf8B/AE/BAABgAMAAfcC/wH3AeEB/wH4AX8EAAH/AT8B/gF/AfcC/wH3AeAB/wHwAX8B/gEf
|
||||
AfwBfwH/AT8B/gF/AfcC/wH3AfABfwHgAf8B/gEfAfwBfwH/AT8B/gF/AfcBnwH8AfcB+AEfAYEB/wH+
|
||||
AR8B/AF/Af8BPwH+AX8B9wFfAf0BdwH8AQABAwH/Af4BHwH4AX8B/wEfAfwBfwH2Ae8B+wG3Af4BAAEH
|
||||
Af8B/gIAAX8B/wIAAX8B8QHvAfMBhwH/AYABHwH/Af4CAAF/Af8BgAEAAv8B8wHnAv8B8AP/AgAC/wHg
|
||||
AQMC/wH8AR8B/wHwAgABDwH8AgABPwHAAgABAQT/AfACAAEHAfACAAEPAYADAAT/AfACAAEHAfACAAEH
|
||||
AR8CAAH8BP8B8wE/Af4BZwHjAv8B4wEfAgAB/AT/AfMBPwH+AWcB5wL/AfMBHwIAAfwB/wIAAX8B8wE/
|
||||
Af4BZwHnAv8B8wEfAgAC/AIAAR8B8wE4AQ4BZwHnAv8B8wEfAgAC/AIAAR8B8wE4AQ4BZwHnAv8B8wEf
|
||||
AgAB/AH4Av8BnwHzAT8B/gFnAecC/wHzAR8CAAH8AfgC/wGfAfMBPwH+AWcB5wL/AfMBHwIAAfwB+AL/
|
||||
AZ8B8wE/Af4BZwHnAv8B8wEfAYABAAH8AfgC/wGfAfMCAAFnAecC/wHzAR8BgAEBAfwB+AL/AZ8B8wIA
|
||||
AWcB5wL/AfMBHwHgAQMB/AH4Av8BnwHzAgAC5wL/AfMBHwL/AfwB+AL/AZ8B8wL/AucC/wHzAR8C/wH8
|
||||
AfgB/wF/AZ8B8wL/AucC/wHzAR8C/wH8AfgB/gE/Af8B8wL/AucC/wHzAR8C/wH8AfgB/wEfAf8B8wL/
|
||||
AucC/wHzAR8C/wH8AfgB/wGPAf8B8wL/AucBgAEAAfMBHwL/AfwB+AH/AccB3wHzAv8C5wGAAQAB8wEf
|
||||
Av8B/AH4Af8B4wGfAfMC/wLnAZ8B/AHzAR8C/wH8AfgB/wHxAZ8B8wL/AucBnwH8AfMBHwHAAQEB/AH4
|
||||
Af8B+AGfAfMBAAEHAucBnwGcAfMBHwIAAXwB+AH/AfwBHwHzAQABBwHHAecBnwGcAfMBHgIAATwB+AH/
|
||||
Af4BHwHzAQABBwGPAecBnwGcAfMBHAIAATwB/AEAAfABHwHzAQABBwEPAecBnwGcAfMBHAIAARwB/AEA
|
||||
AeABHwHzAQABBgEfAecBnwHcAfMBHAIAARwE/wHzAQABBAF/AecBnwH8AeMBHAIAARwE/wHwAgAB/wHg
|
||||
AgABBwEcAgABHAT/AfACAAH/AfACAAEHAYADAAT/AfABAAEBAf8B+AIAAR8BgAIAAQEM/wHgAgABBwT/
|
||||
AeAH/wH+AgABfwT/AcABPwP/AfABBwH/AfgCAAEfAfACAAEPAcABDwP/AcABAQH/AfACAAEHAcACAAED
|
||||
AcABBwP/AgABfwHgAgABBwHDAv8BwQHAAQEC/wH+AgABPwHAAgABAwGHAv8B4QHAAQABfwH/AfwCAAEf
|
||||
AcACAAEDAYcC/wHxAcABAAE/Af8B+AIAAQ8BwAIAAQMBhwL/AfEBwAEAAQ8B/wHwAgABBwHAAgABAwGH
|
||||
Av8B8QHAAQABAwH/AeACAAEHAcACAAEDAYcC/wHxAcACAAH/AeACAAEDAeACAAEDAYcC/wHxAcACAAF/
|
||||
AcACAAEDAeACAAEHAccC/wHhAcACAAEfAcACAAEBAfACAAEHAcMC/wHhAcACAAEHAcACAAEBAfACAAEP
|
||||
AcMB8AEPAcMBwAIAAQMBwAIAAQEB+AIAAQ8B4QHAAQMBgwHAAgABAQHAAgABAQH4AgABHwHgAQEBgAEH
|
||||
AcACAAEBAcACAAEBAfwCAAE/AfgBDwHwAQ8BwAIAAQEBwAIAAQEB/gIAAX8B/gEQAQwBfwHAAgABAwHA
|
||||
AgABAQH/AgAC/wHAAQMB/wHAAgABBwHAAgABAQH/AeABBwL/AoEB/wHAAgABDwHAAgABAQH/AcABAwL/
|
||||
AQ8B4AH/AcACAAE/AcACAAEDAf8BwAEDAv8BHwH4AX8BwAIAAf8B4AIAAQMB/wGAAQEB/wH+AR8B+AF/
|
||||
AcABAAEBAf8B4AIAAQcB/wGAAQEB/wH+AR8B+AF/AcABAAEHAf8B8AIAAQcB/wGAAQEB/wH+AR8B+AF/
|
||||
AcABAAEfAf8B8AIAAQ8B/wGAAQEB/wH+AR8B+AF/AcABAAF/Af8B+AIAAR8B/wGAAQEB/wH+AR8B+AF/
|
||||
AcABAAL/AfwCAAE/Af8BgAEBAv8BDwHwAf8BwAEDAv8B/gIAAX8B/wGAAQEC/wEHAeAB/wHAAQ8D/wGA
|
||||
AQAC/wHAAQMC/wGAAQMB/wHAAT8D/wHgAQMC/wHAAQMC/wHgAQcB/wHgAX8H/wHgAQcC/wH8AT8B/wHx
|
||||
CP8B+AEfEf8EAAT/AYADAAGABwAB/wHgAQMB/wGAAwABgAcAAf8BgAEAAf8BgAIAAQEBgAIAAQEEAAH/
|
||||
AgABfwGAAgABAQGAAgABAQQAAf8BPwH+AX8BwAIAAQMBwAIAAQMBAAEHAeABAAH+ASYBcgF/AeACAAED
|
||||
AeACAAEDAQABHwH8AQAB/gEmAXIBfwHwAgABDwHwAgABDwEAAT8B/gEAAf4BJgFyAX8B/AIAAT8B/gIA
|
||||
AX8BAAF+AT8BAAH+ASYBcgF/AfwCAAE/Af8B4AEHAf8BAAH4AQ8BAAH+ASYBcgF/Af8BgAEAAv8BgAEB
|
||||
Af8BAAHwAQcBgAH+ASYBcgF/Af8CAAL/AgAB/wEBAeABAwGAAf4BJgFyAX8B/gIAAT8B/gIAAX8BAQHg
|
||||
AQMBwAH+ASYBcgF/AfwCAAE/AfwCAAE/AQEBwAEDAcAB/gEmAXIBfwH8AgABHwH8AgABPwEBAcABAQHA
|
||||
Af4BJgFyAX8B+AIAAQ8B+AIAAQ8BAQHAAQEBwAH+ASYBcgF/AfACAAEHAfACAAEPAQEBwAEBAcAB/gEm
|
||||
AXIBfwHgAgABBwHgAgABBwEBAcABAwHAAf4BJgFyAX8B4AIAAQMB4AIAAQcBAQHAAQMBwAH+ASYBcgF/
|
||||
AeACAAEHAeACAAEHAQEB4AEDAYAB/gE/Af4BfwHwAgABDwHwAgABDwEAAfABBwGAAfwCAAEfAfwCAAEf
|
||||
AfgCAAEfAQAB8AEPAYAB/AIAAR8B/AIAAR8B+AIAAQ8BAAF8AR8BAAH8AgABHwH8AgABHwH4AgABDwEA
|
||||
AT8B/gEAAfwCAAEfAfwCAAEfAfgCAAEPAQABHwH8AQAB/wHnAfMB/wH8AgABHwH4AgABDwEAAQ8B8AEA
|
||||
Af8C4wH/Af4CAAE/AfgCAAEPAQABAQHAAQAB/wHgAQcC/wIAAX8B/wIAAR8BwAIAAQEB/wH4AQ8C/wHA
|
||||
AQAC/wGAAQABfwH/AgABfwX/AfABAwL/AcABAAL/AgABfwb/AT8C/wH4AR8C/wIADv8BgAEABf8BgAMA
|
||||
AYADAAj/AYAHAAj/AYAHAAT/AcACAAEDAYAHAAT/AcACAAEBAYAHAAL/AfwB/wHAAgABAQGABwAC/wH8
|
||||
Af8BwAIAAQEBgAcAAf4BAAF8Af8BwAIAAQEBgAcAAf4BAAF8Af8BwAIAAQEBgAcAAf4BfwHgAQ8BwAIA
|
||||
AQEBgAcAAf4BfwHgAQ8BwAIAAQEBgAcAAf4BfwH8Af8BwAIAAQEBgAcAAf4BfwH8Af8BwAIAAQEBgAcA
|
||||
Af4BcAEMAf8BwAIAAQEBgAcAAf4BcAEPAf8BwAIAAQEIAAH+AXABDgE/AcACAAEBCAAB/gF/Af4BPwHA
|
||||
AgABAQgAAf4BfwH+AT8BwAIAAQEIAAH+AX8B/gE/AcACAAEBCAAB/gFwAQ4BPwHAAgABAQgAAf4BcAEO
|
||||
AT8BwAIAAQEIAAH+AXABDgE/AcACAAEBCAAB/gF/Af4BPwHAAgABAQgAAf4BfwH+AT8BwAIAAQEBgAcA
|
||||
Af4BfwH+AT8BwAIAAQMBwAIAAQEEAAH+AX8B/gE/AcABAAEPAv8BPwH+AX8BgAMAAf4CAAE/AcABAAEP
|
||||
Av8BPwH+AX8BwAIAAQEB/gIAAT8BwAEAAR8C/wE/Af4BfwH+AgABPwn/AR8B/AF/Af4CAAE/Cf8CAAF/
|
||||
Af8CAAF/Cf8BgAEAAv8CAAF/Cf8B4AEDAv8CAAF/BP8B/gL/AT8M/wH+Av8Bvwz/AfwCAAEfDP8B+QFt
|
||||
Ab8B3wz/AfsBbQG/Ad8B8AEYAQwBDwL/AQABDwHAAgABAQH7AW0BvwHfAfABGAEMAQ8B/wH+AQABDwGA
|
||||
AwAB+AIAAR8B8AEYAQwBDwH8AQABPwHPBAAB+wL/Ad8B8QEYAYwBTwH5Af4BPwHPBAAB+wL/Ad8B8AEY
|
||||
AQwBDwH5Af4BAAEPBAAB+wL/Ad8B8AEYAQwBDwH5Af8BAAEPBAAB+wL/Ad8B+AE4ARwBDwH5A/8EAAH7
|
||||
Av8B3wH8Af4BPwEfAfkD/wQAAfsC/wHfAfwCAAEfAfkB/wEAAQ8EAAH7Av8B3wH8AgABHwH5Af4BAAEP
|
||||
BAAB+wL/Ad8B/AIAAR8B+QHgAT8BzwQAAfgCAAEfAf8B/gE/Af8B+QGAAT8BzwQAAfsBbQG/Ad8B/wH+
|
||||
AT8B/wH5Ab4BAAEPBAAB+wFtAb8B3wH/AgABfwH5Ab8BAAEPBAAB+wFtAb8B3wH+AgABPwH5Ab8C/wQA
|
||||
AfsBbQG/Ad8B/gIAAT8B+QG/Av8EAAHwAgABDwH+AX8B/gE/AfABDwEAAQ8EAAH3Av8B9wH+AXMB/gE/
|
||||
AeABDgEAAQ8EAAHwAgABBwH+AXMB/gE/AeMBwAE/Ac8EAAH3Av8B9wH+AX8B/gE/AeMBwAE/Ac8EAAH3
|
||||
Av8B9wH+AX8B/gE/AeABDgEAAQ8EAAH3Av8B9wH+AgABPwHwAQ8BAAEPAYADAAH3AZ8B/AH3Af4CAAE/
|
||||
BP8BgAIAAQEB9wFfAf0Bdwz/AfYB7wH7AbcM/wHxAe8B8wGHDf8B8wHnDv8B/AEfDf8L
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
|
||||
@@ -17,10 +17,10 @@ namespace VisionEdit
|
||||
{
|
||||
#region 变量定义
|
||||
private string m_DockPath { get; set; } = string.Empty;
|
||||
public FormImageWindow myFormImageWindow = new FormImageWindow();
|
||||
public FormJobManage myFormJobManage = new FormJobManage();
|
||||
public FormToolBox myFormToolBox = new FormToolBox();
|
||||
public FormLog myFormLog = new FormLog();
|
||||
public static FormImageWindow myFormImageWindow = new FormImageWindow();
|
||||
public static FormJobManage myFormJobManage = new FormJobManage();
|
||||
public static FormLog myFormLog = new FormLog();
|
||||
public FormToolBox myFormToolBox = new FormToolBox(myFormLog, myFormJobManage);
|
||||
#endregion
|
||||
|
||||
public FormMain()
|
||||
@@ -54,6 +54,8 @@ namespace VisionEdit
|
||||
myFormJobManage.Show(this.dockPanel1, DockState.DockRight);
|
||||
myFormImageWindow.Show(this.dockPanel1, DockState.Document);
|
||||
myFormLog.Show(this.dockPanel1, DockState.DockBottom);
|
||||
// 初始化JOB
|
||||
InitJob();
|
||||
}
|
||||
|
||||
#region 按照配置文件初始化Dockpanel
|
||||
@@ -113,5 +115,16 @@ namespace VisionEdit
|
||||
{
|
||||
this.lbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
}
|
||||
|
||||
public void InitJob()
|
||||
{
|
||||
// 初始化加载默认Job
|
||||
myFormJobManage.tabControl1.TabPages.Add("defultJob");
|
||||
GlobalParams.myJobTreeView = new TreeView();
|
||||
GlobalParams.myVisionJob = new VisionJob(GlobalParams.myJobTreeView, myFormLog, "defultJob");
|
||||
myFormJobManage.tabControl1.TabPages[0].Controls.Add(GlobalParams.myJobTreeView);
|
||||
GlobalParams.myJobTreeView.Dock = DockStyle.Fill;
|
||||
GlobalParams.myJobTreeView.ImageList = myFormToolBox.imageList1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,19 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using VisionEdit.VisionTool;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public class GlobalParams
|
||||
{
|
||||
/// <summary>
|
||||
/// 流程树
|
||||
/// </summary>
|
||||
public static TreeView myJobTreeView { get; set; }
|
||||
public static VisionJob myVisionJob { get; set; }
|
||||
|
||||
public static VisionToolFactory myVisionToolFactory = new VisionToolFactory();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public enum ToolType
|
||||
public enum ToolType:int
|
||||
{
|
||||
None,
|
||||
Job,
|
||||
HalconInterface,
|
||||
HalconToolInterface,
|
||||
SDK_Basler,
|
||||
SDK_Congex,
|
||||
SDK_PointGray,
|
||||
@@ -55,4 +55,49 @@ namespace VisionEdit
|
||||
Circle,
|
||||
Pose,
|
||||
}
|
||||
|
||||
public enum ToolRunStatu
|
||||
{
|
||||
Not_Run,
|
||||
Not_Enabled,
|
||||
No_Input_Image,
|
||||
Not_Input_Image,
|
||||
Character_Untrained,
|
||||
Not_Assign_Image_Template,
|
||||
Not_Assign_Input_Image,
|
||||
Not_Assign_Input_Source,
|
||||
Not_Assign_Input_Pos,
|
||||
Not_Asign_Input_Source,
|
||||
Lack_Of_Input_Image,
|
||||
Lack_Of_Input_Search_Region,
|
||||
Not_Assign_Path,
|
||||
Not_Asign_Input_Image,
|
||||
Input_Image_Cannot_Be_Converted,
|
||||
Not_Create_Template,
|
||||
No_Image_In_Folder,
|
||||
File_Error_Or_Path_Invalid,
|
||||
Not_Assign_Acq_Device,
|
||||
Not_Succeed,
|
||||
Succeed,
|
||||
No_Input_String,
|
||||
未运行,
|
||||
未启用,
|
||||
缺少输入搜索区域,
|
||||
未指定路径,
|
||||
无输入图像,
|
||||
未创建模板,
|
||||
未训练字符,
|
||||
无输入字符串,
|
||||
未指定输入图像,
|
||||
未指定图像模板,
|
||||
缺少输入图像,
|
||||
未指定输入坐标点,
|
||||
未指定输入源,
|
||||
输入图像不能被转化,
|
||||
文件夹内无图像,
|
||||
图像文件异常或路径不合法,
|
||||
未指定采集设备,
|
||||
失败,
|
||||
成功,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,42 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public class ToolInfo:IToolInfo
|
||||
public class IToolInfo
|
||||
{
|
||||
public ToolInfo()
|
||||
/// <summary>
|
||||
/// 工具是否启用
|
||||
/// </summary>
|
||||
public bool enable { get; set; }
|
||||
/// <summary>
|
||||
/// 工具名称
|
||||
/// </summary>
|
||||
public string toolName { get; set; }
|
||||
/// <summary>
|
||||
/// 工具类型
|
||||
/// </summary>
|
||||
public ToolType toolType { get; set; }
|
||||
/// <summary>
|
||||
/// 工具对象
|
||||
/// </summary>
|
||||
public object tool { get; set; }
|
||||
/// <summary>
|
||||
/// 工具描述信息
|
||||
/// </summary>
|
||||
public string toolTipInfo { get; set; }
|
||||
/// <summary>
|
||||
/// 工具输入字典集合
|
||||
/// </summary>
|
||||
public List<ToolIO> toolInput { get; set; }
|
||||
/// <summary>
|
||||
/// 工具输出字典集合
|
||||
/// </summary>
|
||||
public List<ToolIO> toolOutput { get; set; }
|
||||
|
||||
public IToolInfo()
|
||||
{
|
||||
enable = true;
|
||||
toolType = ToolType.None;
|
||||
@@ -46,6 +76,7 @@ namespace VisionEdit
|
||||
}
|
||||
return new ToolIO();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除工具输入项
|
||||
/// </summary>
|
||||
@@ -71,4 +102,27 @@ namespace VisionEdit
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 工具的输入输出类
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class ToolIO
|
||||
{
|
||||
|
||||
public string IOName;
|
||||
public object value;
|
||||
public DataType ioType;
|
||||
|
||||
public ToolIO() { }
|
||||
public ToolIO(string IOName1, object value1, DataType ioType1)
|
||||
{
|
||||
this.IOName = IOName1;
|
||||
this.value = value1;
|
||||
this.ioType = ioType1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
17
VisionEdit/Interface/ToolBase.cs
Normal file
17
VisionEdit/Interface/ToolBase.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VisionEdit.Interface
|
||||
{
|
||||
public interface ToolBase
|
||||
{
|
||||
// internal ToolRunStatu runStatu = ToolRunStatu.Not_Run;
|
||||
/// <summary>
|
||||
/// 工具运行
|
||||
/// </summary>
|
||||
void Run(string jobName);
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public abstract class IToolInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 工具是否启用
|
||||
/// </summary>
|
||||
public bool enable { get; set; }
|
||||
/// <summary>
|
||||
/// 工具名称
|
||||
/// </summary>
|
||||
public string toolName { get; set; }
|
||||
/// <summary>
|
||||
/// 工具类型
|
||||
/// </summary>
|
||||
public ToolType toolType { get; set; }
|
||||
/// <summary>
|
||||
/// 工具对象
|
||||
/// </summary>
|
||||
public object tool { get; set; }
|
||||
/// <summary>
|
||||
/// 工具描述信息
|
||||
/// </summary>
|
||||
public string toolTipInfo { get; set; }
|
||||
/// <summary>
|
||||
/// 工具输入字典集合
|
||||
/// </summary>
|
||||
public List<ToolIO> toolInput { get; set; }
|
||||
/// <summary>
|
||||
/// 工具输出字典集合
|
||||
/// </summary>
|
||||
public List<ToolIO> toolOutput { get; set; }
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 工具的输入输出类
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class ToolIO
|
||||
{
|
||||
|
||||
public string IOName;
|
||||
public object value;
|
||||
public DataType ioType;
|
||||
|
||||
public ToolIO() { }
|
||||
public ToolIO(string IOName1, object value1, DataType ioType1)
|
||||
{
|
||||
this.IOName = IOName1;
|
||||
this.value = value1;
|
||||
this.ioType = ioType1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -20,11 +20,11 @@ namespace VisionEdit
|
||||
/// 需要连线的节点对,不停的画连线,注意键值对中第一个为连线的结束节点,第二个为起始节点,一个输出可能连接多个输入,而键值对中的键不能重复,
|
||||
/// 所以把源作为值,输入作为键
|
||||
/// </summary>
|
||||
public Dictionary<TreeNode, TreeNode> D_itemAndSource { get; set; }
|
||||
public Dictionary<TreeNode, TreeNode> D_itemAndSource { get; set; } = new Dictionary<TreeNode, TreeNode>();
|
||||
/// <summary>
|
||||
/// 流程运行结果图像
|
||||
/// </summary>
|
||||
public HObject jobResultImage { get; set; }
|
||||
public HObject jobResultImage { get; set; } = new HObject();
|
||||
/// <summary>
|
||||
/// 流程树中节点的最大长度
|
||||
/// </summary>
|
||||
@@ -32,7 +32,7 @@ namespace VisionEdit
|
||||
/// <summary>
|
||||
/// 工具对象集合
|
||||
/// </summary>
|
||||
public List<IToolInfo> L_toolList { get; set; }
|
||||
public List<IToolInfo> L_toolList { get; set; } = new List<IToolInfo>();
|
||||
/// <summary>
|
||||
/// 正在绘制输入输出指向线
|
||||
/// </summary>
|
||||
@@ -44,19 +44,19 @@ namespace VisionEdit
|
||||
/// <summary>
|
||||
/// 标准图像字典,用于存储标准图像路径和图像对象
|
||||
/// </summary>
|
||||
public Dictionary<string, HObject> D_standardImage { get; set; }
|
||||
public Dictionary<string, HObject> D_standardImage { get; set; } = new Dictionary<string, HObject>();
|
||||
/// <summary>
|
||||
/// 记录起始节点和此节点的列坐标值
|
||||
/// </summary>
|
||||
public Dictionary<TreeNode, Color> startNodeAndColor { get; set; }
|
||||
public Dictionary<TreeNode, Color> startNodeAndColor { get; set; } = new Dictionary<TreeNode, Color>();
|
||||
/// <summary>
|
||||
/// 记录前面的划线所跨越的列段,
|
||||
/// </summary>
|
||||
public Dictionary<int, Dictionary<TreeNode, TreeNode>> list { get; set; }
|
||||
public Dictionary<int, Dictionary<TreeNode, TreeNode>> list { get; set; } = new Dictionary<int, Dictionary<TreeNode, TreeNode>>();
|
||||
/// <summary>
|
||||
/// 每一个列坐标值对应一种颜色
|
||||
/// </summary>
|
||||
public Dictionary<int, Color> colValueAndColor { get; set; }
|
||||
public Dictionary<int, Color> colValueAndColor { get; set; } = new Dictionary<int, Color>();
|
||||
/// <summary>
|
||||
/// 输入输出指向线的颜色数组
|
||||
/// </summary>
|
||||
|
||||
16
VisionEdit/OperateJob.cs
Normal file
16
VisionEdit/OperateJob.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public class OperateJob
|
||||
{
|
||||
public static void CreateNewJob()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
VisionEdit/Properties/Resources.Designer.cs
generated
BIN
VisionEdit/Properties/Resources.Designer.cs
generated
Binary file not shown.
@@ -127,19 +127,28 @@
|
||||
<data name="停止" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\停止.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="保存21" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\保存21.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="保存2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\保存2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="打开" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\打开.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="保存3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\保存3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="开始" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\开始.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="保存21" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\保存21.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="保存3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\保存3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="打开" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\打开.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="删除" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\删除.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="新建1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\新建1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="新建2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\新建2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
VisionEdit/Resources/删除.png
Normal file
BIN
VisionEdit/Resources/删除.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
BIN
VisionEdit/Resources/新建1.png
Normal file
BIN
VisionEdit/Resources/新建1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
VisionEdit/Resources/新建2.png
Normal file
BIN
VisionEdit/Resources/新建2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
78
VisionEdit/ToolLib/HalconTool.cs
Normal file
78
VisionEdit/ToolLib/HalconTool.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using HalconDotNet;
|
||||
|
||||
namespace VisionEdit.ToolLib
|
||||
{
|
||||
public class HalconTool
|
||||
{
|
||||
/// <summary>
|
||||
/// 流程名
|
||||
/// </summary>
|
||||
internal string jobName = string.Empty;
|
||||
/// <summary>
|
||||
/// 曝光时间
|
||||
/// </summary>
|
||||
internal Int32 exposure = 30;
|
||||
/// <summary>
|
||||
/// 图像的获取方式
|
||||
/// </summary>
|
||||
//internal ImageSourceMode imageSourceMode = ImageSourceMode.FormDevice;
|
||||
/// <summary>
|
||||
/// 是否处于实时采集模式
|
||||
/// </summary>
|
||||
internal bool realTimeMode = false;
|
||||
/// <summary>
|
||||
/// 相机句柄
|
||||
/// </summary>
|
||||
internal Int64 cameraHandle = -1;
|
||||
/// <summary>
|
||||
/// 设备信息字符串,包括了相机SN、品牌等信息
|
||||
/// </summary>
|
||||
internal string deviceInfoStr = string.Empty;
|
||||
/// <summary>
|
||||
/// 实时采集线程
|
||||
/// </summary>
|
||||
internal static Thread th_acq; //Thread类不能序列化,所以申明为静态的
|
||||
/// <summary>
|
||||
/// 读取文件夹图像模式时每次运行是否自动切换图像
|
||||
/// </summary>
|
||||
internal bool autoSwitch = true;
|
||||
/// <summary>
|
||||
/// 是否将彩色图像转化成灰度图像
|
||||
/// </summary>
|
||||
internal bool RGBToGray = true;
|
||||
/// <summary>
|
||||
/// 工作模式为读取文件夹图像时,当前图像的名称
|
||||
/// </summary>
|
||||
internal string currentImageName = "";
|
||||
/// <summary>
|
||||
/// 工作模式为读取文件夹图像时,当前显示的图片的索引
|
||||
/// </summary>
|
||||
internal int currentImageIndex = 0;
|
||||
/// <summary>
|
||||
/// 文件夹中的图像文件集合
|
||||
/// </summary>
|
||||
internal List<string> L_imageFile = new List<string>();
|
||||
/// <summary>
|
||||
/// 单张图像的文件路径
|
||||
/// </summary>
|
||||
internal string imagePath = string.Empty;
|
||||
/// <summary>
|
||||
/// 图像文件夹路径
|
||||
/// </summary>
|
||||
internal string imageDirectoryPath = string.Empty;
|
||||
/// <summary>
|
||||
/// 输出图像
|
||||
/// </summary>
|
||||
internal HObject outputImage;
|
||||
/// <summary>
|
||||
/// 读取单张图像或批量读取文件夹图像工作模式
|
||||
/// </summary>
|
||||
//internal WorkMode workMode = WorkMode.ReadMultImage;
|
||||
}
|
||||
}
|
||||
@@ -55,11 +55,11 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AppConfig.cs" />
|
||||
<Compile Include="FormLib\FormImageWindow.cs">
|
||||
<Compile Include="FormLib\FormImageWindow.cs.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormLib\FormImageWindow.Designer.cs">
|
||||
<DependentUpon>FormImageWindow.cs</DependentUpon>
|
||||
<Compile Include="FormLib\FormImageWindow.cs.Designer.cs">
|
||||
<DependentUpon>FormImageWindow.cs.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FormLib\FormJobManage.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -87,14 +87,18 @@
|
||||
</Compile>
|
||||
<Compile Include="GlobalParams.cs" />
|
||||
<Compile Include="Interface\EnumList.cs" />
|
||||
<Compile Include="ToolInfo.cs" />
|
||||
<Compile Include="Interface\ToolInfoInterface.cs" />
|
||||
<Compile Include="Interface\ToolBase.cs" />
|
||||
<Compile Include="OperateJob.cs" />
|
||||
<Compile Include="Interface\IToolInfo.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Interface\VisionJobInterface.cs" />
|
||||
<Compile Include="ToolLib\HalconTool.cs" />
|
||||
<Compile Include="VisionJob.cs" />
|
||||
<EmbeddedResource Include="FormLib\FormImageWindow.resx">
|
||||
<DependentUpon>FormImageWindow.cs</DependentUpon>
|
||||
<Compile Include="VisionTool\VisionToolFactory.cs" />
|
||||
<Compile Include="VisionTool\VisionToolList.cs" />
|
||||
<EmbeddedResource Include="FormLib\FormImageWindow.cs.resx">
|
||||
<DependentUpon>FormImageWindow.cs.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormLib\FormJobManage.resx">
|
||||
<DependentUpon>FormJobManage.cs</DependentUpon>
|
||||
@@ -161,6 +165,15 @@
|
||||
<Name>HalconWindowTest</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\删除.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\新建1.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\新建2.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\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.
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using HalconDotNet;
|
||||
@@ -16,10 +17,11 @@ namespace VisionEdit
|
||||
public TreeView tvwOnWorkJob = new TreeView();
|
||||
FormLog myFormLog = null;
|
||||
|
||||
public VisionJob(TreeView inputTreeView, FormLog inputFormLog)
|
||||
public VisionJob(TreeView inputTreeView, FormLog inputFormLog, string jobName)
|
||||
{
|
||||
tvwOnWorkJob = inputTreeView;
|
||||
this.myFormLog = inputFormLog;
|
||||
this.JobName = jobName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -91,7 +93,6 @@ namespace VisionEdit
|
||||
pt = ((TreeView)(sender)).PointToClient(new System.Drawing.Point(e.X, e.Y));
|
||||
targeNode = tvwOnWorkJob.GetNodeAt(pt);
|
||||
//如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
|
||||
|
||||
if (moveNode == targeNode) //若是把自己拖放到自己,不可,返回
|
||||
return;
|
||||
|
||||
@@ -107,36 +108,31 @@ namespace VisionEdit
|
||||
|
||||
if (moveNode.Level == 0) // 被拖动的是子节点,也就是工具节点
|
||||
{
|
||||
if (targeNode.Level == 0)
|
||||
if (targeNode.Level == 0) // 目标也是工具节点
|
||||
{
|
||||
moveNode.Remove();
|
||||
tvwOnWorkJob.Nodes.Insert(targeNode.Index, moveNode);
|
||||
|
||||
ToolInfo temp = new ToolInfo();
|
||||
IToolInfo temp = new IToolInfo();
|
||||
for (int i = 0; i < L_toolList.Count; i++)
|
||||
{
|
||||
if (L_toolList[i].toolName == moveNode.Text)
|
||||
{
|
||||
temp = (ToolInfo)L_toolList[i];
|
||||
L_toolList.RemoveAt(i);
|
||||
L_toolList.Insert(targeNode.Index - 2, temp);
|
||||
SwapDataFun(L_toolList, i, targeNode.Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
// 目标是子节点,则移动到该子节点的父节点的下一个节点上
|
||||
moveNode.Remove();
|
||||
tvwOnWorkJob.Nodes.Insert(targeNode.Parent.Index + 1, moveNode);
|
||||
|
||||
ToolInfo temp = new ToolInfo();
|
||||
for (int i = 0; i < L_toolList.Count; i++)
|
||||
{
|
||||
if (L_toolList[i].toolName == moveNode.Text)
|
||||
{
|
||||
temp = (ToolInfo)L_toolList[i];
|
||||
L_toolList.RemoveAt(i);
|
||||
L_toolList.Insert(targeNode.Parent.Index, temp);
|
||||
SwapDataFun(L_toolList, i, targeNode.Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -144,15 +140,16 @@ namespace VisionEdit
|
||||
}
|
||||
else //被拖动的是输入输出节点
|
||||
{
|
||||
if (targeNode.Level == 0 && GetToolInfoByToolName(jobName, targeNode.Text).toolType == ToolType.Output)
|
||||
if (targeNode.Level == 0 && GetToolInfoByToolName(JobName, targeNode.Text).toolType == ToolType.Output)
|
||||
{
|
||||
string result = moveNode.Parent.Text + " . -->" + moveNode.Text.Substring(3);
|
||||
GetToolInfoByToolName(jobName, targeNode.Text).input.Add(new ToolIO("<--" + result, "", DataType.String));
|
||||
TreeNode node = targeNode.Nodes.Add("", "<--" + result, 26, 26);
|
||||
node.ForeColor = Color.DarkMagenta;
|
||||
D_itemAndSource.Add(node, moveNode);
|
||||
targeNode.Expand();
|
||||
DrawLine();
|
||||
// 如果目标节点是工具节点,并且工具节点类型为可接收输入的节点,则直接将输出添加,先不考虑该情况
|
||||
//string result = moveNode.Parent.Text + " . -->" + moveNode.Text.Substring(3);
|
||||
//GetToolInfoByToolName(jobName, targeNode.Text).input.Add(new ToolIO("<--" + result, "", DataType.String));
|
||||
//TreeNode node = targeNode.Nodes.Add("", "<--" + result, 26, 26);
|
||||
//node.ForeColor = Color.DarkMagenta;
|
||||
//D_itemAndSource.Add(node, moveNode);
|
||||
//targeNode.Expand();
|
||||
//DrawLine();
|
||||
return;
|
||||
}
|
||||
else if (targeNode.Level == 0)
|
||||
@@ -161,13 +158,14 @@ namespace VisionEdit
|
||||
//连线前首先要判断被拖动节点是否为输出项,目标节点是否为输入项
|
||||
if (moveNode.Text.Substring(0, 3) != "-->" || targeNode.Text.Substring(0, 3) != "<--")
|
||||
{
|
||||
myFormLog.ShowLog("拖动类型不匹配!");
|
||||
return;
|
||||
}
|
||||
|
||||
//连线前要判断被拖动节点和目标节点的数据类型是否一致
|
||||
if ((DataType)moveNode.Tag != (DataType)targeNode.Tag)
|
||||
{
|
||||
// Frm_Main.Instance.OutputMsg("被拖动节点和目标节点数据类型不一致,不可关联", Color.Red);
|
||||
myFormLog.ShowLog("被拖动节点和目标节点数据类型不一致,不可关联");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -176,7 +174,7 @@ namespace VisionEdit
|
||||
input = Regex.Split(input, "《")[0];
|
||||
else //第一次连接源就需要添加到输入输出集合
|
||||
D_itemAndSource.Add(targeNode, moveNode);
|
||||
GetToolInfoByToolName(jobName, targeNode.Parent.Text).GetInput(input.Substring(3)).value = "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
|
||||
GetToolInfoByToolName(this.JobName, targeNode.Parent.Text).GetInput(input.Substring(3)).value = "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
|
||||
targeNode.Text = input + "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
|
||||
DrawLine();
|
||||
|
||||
@@ -191,6 +189,219 @@ namespace VisionEdit
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("释放节点出错,原因: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private static Graphics graph;
|
||||
/// <summary>
|
||||
/// 绘制输入输出指向线
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
public void DrawLine()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!isDrawing)
|
||||
{
|
||||
isDrawing = true;
|
||||
Thread th = new Thread(() =>
|
||||
{
|
||||
tvwOnWorkJob.MouseWheel += new MouseEventHandler(CancelUpDowm_MouseWheel); //划线的时候不能滚动,否则画好了线,结果已经滚到其它地方了
|
||||
maxLength = 150;
|
||||
colValueAndColor.Clear();
|
||||
startNodeAndColor.Clear();
|
||||
list.Clear();
|
||||
TreeView tree = tvwOnWorkJob;
|
||||
graph = tree.CreateGraphics();
|
||||
tree.CreateGraphics().Dispose();
|
||||
|
||||
foreach (KeyValuePair<TreeNode, TreeNode> item in D_itemAndSource)
|
||||
{
|
||||
CreateLine(tree, item.Key, item.Value);
|
||||
}
|
||||
Application.DoEvents();
|
||||
tvwOnWorkJob.MouseWheel -= new MouseEventHandler(CancelUpDowm_MouseWheel);
|
||||
isDrawing = false;
|
||||
});
|
||||
th.IsBackground = true;
|
||||
th.ApartmentState = ApartmentState.STA; //此处要加一行,否则画线时会报错
|
||||
th.Start();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelUpDowm_MouseWheel(object sender, MouseEventArgs e)
|
||||
{
|
||||
HandledMouseEventArgs h = e as HandledMouseEventArgs;
|
||||
if (h != null)
|
||||
{
|
||||
h.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 画Treeview控件两个节点之间的连线
|
||||
/// </summary>
|
||||
/// <param name="treeview">要画连线的Treeview</param>
|
||||
/// <param name="startNode">结束节点</param>
|
||||
/// <param name="endNode">开始节点</param>
|
||||
private void CreateLine(TreeView treeview, TreeNode endNode, TreeNode startNode)
|
||||
{
|
||||
try
|
||||
{
|
||||
//得到起始与结束节点之间所有节点的最大长度,保证画线不穿过节点
|
||||
int startNodeParantIndex = startNode.Parent.Index;
|
||||
int endNodeParantIndex = endNode.Parent.Index;
|
||||
int startNodeIndex = startNode.Index;
|
||||
int endNodeIndex = endNode.Index;
|
||||
int max = 0;
|
||||
|
||||
if (!startNode.Parent.IsExpanded)
|
||||
{
|
||||
max = startNode.Parent.Bounds.X + startNode.Parent.Bounds.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = startNodeIndex; i < startNode.Parent.Nodes.Count - 1; i++)
|
||||
{
|
||||
if (max < treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.Width)
|
||||
max = treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.Width;
|
||||
}
|
||||
}
|
||||
for (int i = startNodeParantIndex + 1; i < endNodeParantIndex; i++)
|
||||
{
|
||||
if (!treeview.Nodes[i].IsExpanded)
|
||||
{
|
||||
if (max < treeview.Nodes[i].Bounds.X + treeview.Nodes[i].Bounds.Width)
|
||||
max = treeview.Nodes[i].Bounds.X + treeview.Nodes[i].Bounds.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int j = 0; j < treeview.Nodes[i].Nodes.Count; j++)
|
||||
{
|
||||
if (max < treeview.Nodes[i].Nodes[j].Bounds.X + treeview.Nodes[i].Nodes[j].Bounds.Width)
|
||||
max = treeview.Nodes[i].Nodes[j].Bounds.X + treeview.Nodes[i].Nodes[j].Bounds.Width;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!endNode.Parent.IsExpanded)
|
||||
{
|
||||
if (max < endNode.Parent.Bounds.X + endNode.Parent.Bounds.Width)
|
||||
max = endNode.Parent.Bounds.X + endNode.Parent.Bounds.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < endNode.Index; i++)
|
||||
{
|
||||
if (max < treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.Width)
|
||||
max = treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.Width;
|
||||
}
|
||||
}
|
||||
max += 10; //箭头不能连着 节点,
|
||||
|
||||
if (!startNode.Parent.IsExpanded)
|
||||
startNode = startNode.Parent;
|
||||
if (!endNode.Parent.IsExpanded)
|
||||
endNode = endNode.Parent;
|
||||
|
||||
if (endNode.Bounds.X + endNode.Bounds.Width + 20 > max)
|
||||
max = endNode.Bounds.X + endNode.Bounds.Width + 20;
|
||||
if (startNode.Bounds.X + startNode.Bounds.Width + 20 > max)
|
||||
max = startNode.Bounds.X + startNode.Bounds.Width + 20;
|
||||
|
||||
//判断是否可以在当前处划线
|
||||
foreach (KeyValuePair<int, Dictionary<TreeNode, TreeNode>> item in list)
|
||||
{
|
||||
if (Math.Abs(max - item.Key) < 15)
|
||||
{
|
||||
foreach (KeyValuePair<TreeNode, TreeNode> item1 in item.Value)
|
||||
{
|
||||
if (startNode != item1.Value)
|
||||
{
|
||||
if ((item1.Value.Bounds.X < maxLength && item1.Key.Bounds.X < maxLength) || (item1.Value.Bounds.X < maxLength && item1.Key.Bounds.X < maxLength))
|
||||
{
|
||||
max += (15 - Math.Abs(max - item.Key));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Dictionary<TreeNode, TreeNode> temp = new Dictionary<TreeNode, TreeNode>();
|
||||
temp.Add(endNode, startNode);
|
||||
if (!list.ContainsKey(max))
|
||||
list.Add(max, temp);
|
||||
else
|
||||
list[max].Add(endNode, startNode);
|
||||
|
||||
if (!startNodeAndColor.ContainsKey(startNode))
|
||||
startNodeAndColor.Add(startNode, color[startNodeAndColor.Count]);
|
||||
|
||||
Pen pen = new Pen(startNodeAndColor[startNode], 1);
|
||||
Brush brush = new SolidBrush(startNodeAndColor[startNode]);
|
||||
|
||||
graph.DrawLine(pen, startNode.Bounds.X + startNode.Bounds.Width,
|
||||
startNode.Bounds.Y + startNode.Bounds.Height / 2,
|
||||
max,
|
||||
startNode.Bounds.Y + startNode.Bounds.Height / 2);
|
||||
graph.DrawLine(pen, max,
|
||||
startNode.Bounds.Y + startNode.Bounds.Height / 2,
|
||||
max,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2);
|
||||
graph.DrawLine(pen, max,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2,
|
||||
endNode.Bounds.X + endNode.Bounds.Width,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2);
|
||||
graph.DrawString("<", new Font("微软雅黑", 12F), brush, endNode.Bounds.X + endNode.Bounds.Width - 5,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2 - 12);
|
||||
Application.DoEvents();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 交换List中的两个位置的值
|
||||
/// </summary>
|
||||
/// <param name="inputList">要交换的List</param>
|
||||
/// <param name="souceIndex">原位置索引</param>
|
||||
/// <param name="targetIndex">现位置索引</param>
|
||||
/// <returns></returns>
|
||||
public static List<IToolInfo> SwapDataFun(List<IToolInfo> inputList, int souceIndex, int targetIndex)
|
||||
{
|
||||
IToolInfo temp = inputList[targetIndex];
|
||||
inputList[targetIndex] = inputList[souceIndex];
|
||||
inputList[souceIndex] = temp;
|
||||
return inputList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据工具名获取工具信息
|
||||
/// </summary>
|
||||
/// <param name="jobName">下一版本去掉该参数,流程名</param>
|
||||
/// <param name="toolName">工具名</param>
|
||||
/// <returns></returns>
|
||||
public IToolInfo GetToolInfoByToolName(string jobName, string toolName)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < L_toolList.Count; i++)
|
||||
{
|
||||
if (L_toolList[i].toolName == toolName)
|
||||
{
|
||||
return (IToolInfo)L_toolList[i];
|
||||
}
|
||||
}
|
||||
return new IToolInfo();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("根据工具名获取工具信息出错!原因: " + ex.Message);
|
||||
return new IToolInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
409
VisionEdit/VisionJob.cs~RFfda0ab4.TMP
Normal file
409
VisionEdit/VisionJob.cs~RFfda0ab4.TMP
Normal file
@@ -0,0 +1,409 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using HalconDotNet;
|
||||
using VisionEdit.FormLib;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public class VisionJob : IVisionJob
|
||||
{
|
||||
public TreeView tvwOnWorkJob = new TreeView();
|
||||
FormLog myFormLog = null;
|
||||
|
||||
public VisionJob(TreeView inputTreeView, FormLog inputFormLog, string jobName)
|
||||
{
|
||||
tvwOnWorkJob = inputTreeView;
|
||||
this.myFormLog = inputFormLog;
|
||||
this.JobName = jobName;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 拖动工具节点
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
internal void TvwJobItemDrag(object sender, ItemDragEventArgs e)//左键拖动
|
||||
{
|
||||
try
|
||||
{
|
||||
if (((TreeView)sender).SelectedNode != null)
|
||||
{
|
||||
if (((TreeView)sender).SelectedNode.Level == 1) //输入输出不允许拖动
|
||||
{
|
||||
tvwOnWorkJob.DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
|
||||
else if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
tvwOnWorkJob.DoDragDrop(e.Item, DragDropEffects.Move);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("拖动节点出错,描述: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 节点拖动
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
internal void TvwJob_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode"))
|
||||
{
|
||||
e.Effect = DragDropEffects.Move;
|
||||
}
|
||||
else
|
||||
{
|
||||
e.Effect = DragDropEffects.None;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("节点拖动出错,描述: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 释放被拖动的节点
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
internal void TvwJob_DragDrop(object sender, DragEventArgs e)//拖动
|
||||
{
|
||||
try
|
||||
{
|
||||
//获得拖放中的节点
|
||||
TreeNode moveNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
|
||||
//根据鼠标坐标确定要移动到的目标节点
|
||||
Point pt;
|
||||
TreeNode targeNode; // 目标节点
|
||||
pt = ((TreeView)(sender)).PointToClient(new System.Drawing.Point(e.X, e.Y));
|
||||
targeNode = tvwOnWorkJob.GetNodeAt(pt);
|
||||
//如果目标节点无子节点则添加为同级节点,反之添加到下级节点的未端
|
||||
if (moveNode == targeNode) //若是把自己拖放到自己,不可,返回
|
||||
return;
|
||||
|
||||
if (targeNode == null) //目标节点为null,就是把节点拖到了空白区域,不可,直接返回
|
||||
return;
|
||||
|
||||
if (moveNode.Level == 1 && targeNode.Level == 1 && moveNode.Parent == targeNode.Parent) //都是输入输出节点,内部拖动排序
|
||||
{
|
||||
moveNode.Remove();
|
||||
targeNode.Parent.Nodes.Insert(targeNode.Index, moveNode);
|
||||
return;
|
||||
}
|
||||
|
||||
if (moveNode.Level == 0) // 被拖动的是子节点,也就是工具节点
|
||||
{
|
||||
if (targeNode.Level == 0) // 目标也是工具节点
|
||||
{
|
||||
moveNode.Remove();
|
||||
tvwOnWorkJob.Nodes.Insert(targeNode.Index, moveNode);
|
||||
|
||||
ToolInfo temp = new ToolInfo();
|
||||
for (int i = 0; i < L_toolList.Count; i++)
|
||||
{
|
||||
if (L_toolList[i].toolName == moveNode.Text)
|
||||
{
|
||||
SwapDataFun(L_toolList, i, targeNode.Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 目标是子节点,则移动到该子节点的父节点的下一个节点上
|
||||
moveNode.Remove();
|
||||
tvwOnWorkJob.Nodes.Insert(targeNode.Parent.Index + 1, moveNode);
|
||||
for (int i = 0; i < L_toolList.Count; i++)
|
||||
{
|
||||
if (L_toolList[i].toolName == moveNode.Text)
|
||||
{
|
||||
SwapDataFun(L_toolList, i, targeNode.Index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else //被拖动的是输入输出节点
|
||||
{
|
||||
if (targeNode.Level == 0 && GetToolInfoByToolName(JobName, targeNode.Text).toolType == ToolType.Output)
|
||||
{
|
||||
// 如果目标节点是工具节点,并且工具节点类型为可接收输入的节点,则直接将输出添加,先不考虑该情况
|
||||
//string result = moveNode.Parent.Text + " . -->" + moveNode.Text.Substring(3);
|
||||
//GetToolInfoByToolName(jobName, targeNode.Text).input.Add(new ToolIO("<--" + result, "", DataType.String));
|
||||
//TreeNode node = targeNode.Nodes.Add("", "<--" + result, 26, 26);
|
||||
//node.ForeColor = Color.DarkMagenta;
|
||||
//D_itemAndSource.Add(node, moveNode);
|
||||
//targeNode.Expand();
|
||||
//DrawLine();
|
||||
return;
|
||||
}
|
||||
else if (targeNode.Level == 0)
|
||||
return;
|
||||
|
||||
//连线前首先要判断被拖动节点是否为输出项,目标节点是否为输入项
|
||||
if (moveNode.Text.Substring(0, 3) != "-->" || targeNode.Text.Substring(0, 3) != "<--")
|
||||
{
|
||||
myFormLog.ShowLog("拖动类型不匹配!");
|
||||
return;
|
||||
}
|
||||
|
||||
//连线前要判断被拖动节点和目标节点的数据类型是否一致
|
||||
if ((DataType)moveNode.Tag != (DataType)targeNode.Tag)
|
||||
{
|
||||
myFormLog.ShowLog("被拖动节点和目标节点数据类型不一致,不可关联");
|
||||
return;
|
||||
}
|
||||
|
||||
string input = targeNode.Text;
|
||||
if (input.Contains("《")) //表示已经连接了源
|
||||
input = Regex.Split(input, "《")[0];
|
||||
else //第一次连接源就需要添加到输入输出集合
|
||||
D_itemAndSource.Add(targeNode, moveNode);
|
||||
GetToolInfoByToolName(this.JobName, targeNode.Parent.Text).GetInput(input.Substring(3)).value = "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
|
||||
targeNode.Text = input + "《- " + moveNode.Parent.Text + " . " + moveNode.Text.Substring(3);
|
||||
DrawLine();
|
||||
|
||||
//移除拖放的节点
|
||||
if (moveNode.Level == 0)
|
||||
moveNode.Remove();
|
||||
}
|
||||
//更新当前拖动的节点选择
|
||||
tvwOnWorkJob.SelectedNode = moveNode;
|
||||
//展开目标节点,便于显示拖放效果
|
||||
targeNode.Expand();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("释放节点出错,原因: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private static Graphics graph;
|
||||
/// <summary>
|
||||
/// 绘制输入输出指向线
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
public void DrawLine()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!isDrawing)
|
||||
{
|
||||
isDrawing = true;
|
||||
Thread th = new Thread(() =>
|
||||
{
|
||||
tvwOnWorkJob.MouseWheel += new MouseEventHandler(CancelUpDowm_MouseWheel); //划线的时候不能滚动,否则画好了线,结果已经滚到其它地方了
|
||||
maxLength = 150;
|
||||
colValueAndColor.Clear();
|
||||
startNodeAndColor.Clear();
|
||||
list.Clear();
|
||||
TreeView tree = tvwOnWorkJob;
|
||||
graph = tree.CreateGraphics();
|
||||
tree.CreateGraphics().Dispose();
|
||||
|
||||
foreach (KeyValuePair<TreeNode, TreeNode> item in D_itemAndSource)
|
||||
{
|
||||
CreateLine(tree, item.Key, item.Value);
|
||||
}
|
||||
Application.DoEvents();
|
||||
tvwOnWorkJob.MouseWheel -= new MouseEventHandler(CancelUpDowm_MouseWheel);
|
||||
isDrawing = false;
|
||||
});
|
||||
th.IsBackground = true;
|
||||
th.ApartmentState = ApartmentState.STA; //此处要加一行,否则画线时会报错
|
||||
th.Start();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelUpDowm_MouseWheel(object sender, MouseEventArgs e)
|
||||
{
|
||||
HandledMouseEventArgs h = e as HandledMouseEventArgs;
|
||||
if (h != null)
|
||||
{
|
||||
h.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 画Treeview控件两个节点之间的连线
|
||||
/// </summary>
|
||||
/// <param name="treeview">要画连线的Treeview</param>
|
||||
/// <param name="startNode">结束节点</param>
|
||||
/// <param name="endNode">开始节点</param>
|
||||
private void CreateLine(TreeView treeview, TreeNode endNode, TreeNode startNode)
|
||||
{
|
||||
try
|
||||
{
|
||||
//得到起始与结束节点之间所有节点的最大长度 ,保证画线不穿过节点
|
||||
int startNodeParantIndex = startNode.Parent.Index;
|
||||
int endNodeParantIndex = endNode.Parent.Index;
|
||||
int startNodeIndex = startNode.Index;
|
||||
int endNodeIndex = endNode.Index;
|
||||
int max = 0;
|
||||
|
||||
if (!startNode.Parent.IsExpanded)
|
||||
{
|
||||
max = startNode.Parent.Bounds.X + startNode.Parent.Bounds.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = startNodeIndex; i < startNode.Parent.Nodes.Count - 1; i++)
|
||||
{
|
||||
if (max < treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.Width)
|
||||
max = treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[startNodeParantIndex].Nodes[i].Bounds.Width;
|
||||
}
|
||||
}
|
||||
for (int i = startNodeParantIndex + 1; i < endNodeParantIndex; i++)
|
||||
{
|
||||
if (!treeview.Nodes[i].IsExpanded)
|
||||
{
|
||||
if (max < treeview.Nodes[i].Bounds.X + treeview.Nodes[i].Bounds.Width)
|
||||
max = treeview.Nodes[i].Bounds.X + treeview.Nodes[i].Bounds.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int j = 0; j < treeview.Nodes[i].Nodes.Count; j++)
|
||||
{
|
||||
if (max < treeview.Nodes[i].Nodes[j].Bounds.X + treeview.Nodes[i].Nodes[j].Bounds.Width)
|
||||
max = treeview.Nodes[i].Nodes[j].Bounds.X + treeview.Nodes[i].Nodes[j].Bounds.Width;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!endNode.Parent.IsExpanded)
|
||||
{
|
||||
if (max < endNode.Parent.Bounds.X + endNode.Parent.Bounds.Width)
|
||||
max = endNode.Parent.Bounds.X + endNode.Parent.Bounds.Width;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < endNode.Index; i++)
|
||||
{
|
||||
if (max < treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.Width)
|
||||
max = treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.X + treeview.Nodes[endNodeParantIndex].Nodes[i].Bounds.Width;
|
||||
}
|
||||
}
|
||||
max += 10; //箭头不能连着 节点,
|
||||
|
||||
if (!startNode.Parent.IsExpanded)
|
||||
startNode = startNode.Parent;
|
||||
if (!endNode.Parent.IsExpanded)
|
||||
endNode = endNode.Parent;
|
||||
|
||||
if (endNode.Bounds.X + endNode.Bounds.Width + 20 > max)
|
||||
max = endNode.Bounds.X + endNode.Bounds.Width + 20;
|
||||
if (startNode.Bounds.X + startNode.Bounds.Width + 20 > max)
|
||||
max = startNode.Bounds.X + startNode.Bounds.Width + 20;
|
||||
|
||||
//判断是否可以在当前处划线
|
||||
foreach (KeyValuePair<int, Dictionary<TreeNode, TreeNode>> item in list)
|
||||
{
|
||||
if (Math.Abs(max - item.Key) < 15)
|
||||
{
|
||||
foreach (KeyValuePair<TreeNode, TreeNode> item1 in item.Value)
|
||||
{
|
||||
if (startNode != item1.Value)
|
||||
{
|
||||
if ((item1.Value.Bounds.X < maxLength && item1.Key.Bounds.X < maxLength) || (item1.Value.Bounds.X < maxLength && item1.Key.Bounds.X < maxLength))
|
||||
{
|
||||
max += (15 - Math.Abs(max - item.Key));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Dictionary<TreeNode, TreeNode> temp = new Dictionary<TreeNode, TreeNode>();
|
||||
temp.Add(endNode, startNode);
|
||||
if (!list.ContainsKey(max))
|
||||
list.Add(max, temp);
|
||||
else
|
||||
list[max].Add(endNode, startNode);
|
||||
|
||||
if (!startNodeAndColor.ContainsKey(startNode))
|
||||
startNodeAndColor.Add(startNode, color[startNodeAndColor.Count]);
|
||||
|
||||
Pen pen = new Pen(startNodeAndColor[startNode], 1);
|
||||
Brush brush = new SolidBrush(startNodeAndColor[startNode]);
|
||||
|
||||
graph.DrawLine(pen, startNode.Bounds.X + startNode.Bounds.Width,
|
||||
startNode.Bounds.Y + startNode.Bounds.Height / 2,
|
||||
max,
|
||||
startNode.Bounds.Y + startNode.Bounds.Height / 2);
|
||||
graph.DrawLine(pen, max,
|
||||
startNode.Bounds.Y + startNode.Bounds.Height / 2,
|
||||
max,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2);
|
||||
graph.DrawLine(pen, max,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2,
|
||||
endNode.Bounds.X + endNode.Bounds.Width,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2);
|
||||
graph.DrawString("<", new Font("微软雅黑", 12F), brush, endNode.Bounds.X + endNode.Bounds.Width - 5,
|
||||
endNode.Bounds.Y + endNode.Bounds.Height / 2 - 12);
|
||||
Application.DoEvents();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 交换List中的两个位置的值
|
||||
/// </summary>
|
||||
/// <param name="inputList">要交换的List</param>
|
||||
/// <param name="souceIndex">原位置索引</param>
|
||||
/// <param name="targetIndex">现位置索引</param>
|
||||
/// <returns></returns>
|
||||
public static List<IToolInfo> SwapDataFun(List<IToolInfo> inputList, int souceIndex, int targetIndex)
|
||||
{
|
||||
IToolInfo temp = inputList[targetIndex];
|
||||
inputList[targetIndex] = inputList[souceIndex];
|
||||
inputList[souceIndex] = temp;
|
||||
return inputList;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据工具名获取工具信息
|
||||
/// </summary>
|
||||
/// <param name="jobName">下一版本去掉该参数,流程名</param>
|
||||
/// <param name="toolName">工具名</param>
|
||||
/// <returns></returns>
|
||||
public ToolInfo GetToolInfoByToolName(string jobName, string toolName)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < L_toolList.Count; i++)
|
||||
{
|
||||
if (L_toolList[i].toolName == toolName)
|
||||
{
|
||||
return (ToolInfo)L_toolList[i];
|
||||
}
|
||||
}
|
||||
return new ToolInfo();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
myFormLog.ShowLog("根据工具名获取工具信息出错!原因: " + ex.Message);
|
||||
return new ToolInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
127
VisionEdit/VisionTool/VisionToolFactory.cs
Normal file
127
VisionEdit/VisionTool/VisionToolFactory.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VisionEdit
|
||||
{
|
||||
public class VisionToolFactory
|
||||
{
|
||||
private static Dictionary<ToolType, Type> animalTypeDic = new Dictionary<ToolType, Type>();
|
||||
public static void InitVisionToolTypeDic()
|
||||
{
|
||||
animalTypeDic.Clear();
|
||||
|
||||
//读取所有带有AnimalAttribute的类
|
||||
var classEnumerator = new ClassEnumerator(typeof(VisionToolAttribute), null, typeof(IToolInfo).Assembly);
|
||||
var em = classEnumerator.Results.GetEnumerator();
|
||||
|
||||
while (em.MoveNext())
|
||||
{
|
||||
var classType = em.Current;
|
||||
var atts = classType.GetCustomAttributes(typeof(VisionToolAttribute), true);
|
||||
if (atts.Length > 0)
|
||||
{
|
||||
var att = atts[0] as VisionToolAttribute;
|
||||
if (null != att)
|
||||
{
|
||||
//读取AnimalType
|
||||
animalTypeDic.Add(att.ToolType, classType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static IToolInfo CreateToolVision(ToolType animalType, string toolName)
|
||||
{
|
||||
if (animalTypeDic.ContainsKey(animalType))
|
||||
{
|
||||
return (IToolInfo)Activator.CreateInstance(animalTypeDic[animalType], new object[] { toolName});
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
//自定义Attribute
|
||||
public sealed class VisionToolAttribute : Attribute
|
||||
{
|
||||
public ToolType ToolType { get; private set; }
|
||||
public VisionToolAttribute(ToolType toolType)
|
||||
{
|
||||
ToolType = toolType;
|
||||
}
|
||||
}
|
||||
|
||||
//根据Attribute提取类
|
||||
public class ClassEnumerator
|
||||
{
|
||||
protected List<Type> results = new List<Type>();
|
||||
|
||||
public List<Type> Results
|
||||
{
|
||||
get
|
||||
{
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
||||
private Type AttributeType;
|
||||
private Type InterfaceType;
|
||||
|
||||
public ClassEnumerator(Type InAttributeType, Type InInterfaceType, Assembly InAssembly, bool bIgnoreAbstract = true, bool bInheritAttribute = false, bool bShouldCrossAssembly = false)
|
||||
{
|
||||
AttributeType = InAttributeType;
|
||||
InterfaceType = InInterfaceType;
|
||||
|
||||
try
|
||||
{
|
||||
if (bShouldCrossAssembly)
|
||||
{
|
||||
Assembly[] Assemblys = AppDomain.CurrentDomain.GetAssemblies();
|
||||
if (Assemblys != null)
|
||||
{
|
||||
for (int i = 0, len = Assemblys.Length; i < len; i++)
|
||||
{
|
||||
CheckInAssembly(Assemblys[i], bIgnoreAbstract, bInheritAttribute);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckInAssembly(InAssembly, bIgnoreAbstract, bInheritAttribute);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.WriteLine("Error in enumerate classes: " + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckInAssembly(Assembly InAssembly, bool bInIgnoreAbstract, bool bInInheritAttribute)
|
||||
{
|
||||
Type[] types = InAssembly.GetTypes();
|
||||
if (null == types)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0, len = types.Length; i < len; i++)
|
||||
{
|
||||
var type = types[i];
|
||||
if (InterfaceType == null || InterfaceType.IsAssignableFrom(type))
|
||||
{
|
||||
if (!bInIgnoreAbstract || (bInIgnoreAbstract && !type.IsAbstract))
|
||||
{
|
||||
if (type.GetCustomAttributes(AttributeType, bInInheritAttribute).Length > 0)
|
||||
{
|
||||
results.Add(type);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
39
VisionEdit/VisionTool/VisionToolList.cs
Normal file
39
VisionEdit/VisionTool/VisionToolList.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using HalconDotNet;
|
||||
using VisionEdit.Interface;
|
||||
using VisionEdit.ToolLib;
|
||||
|
||||
namespace VisionEdit.VisionTool
|
||||
{
|
||||
[VisionToolAttribute(ToolType.HalconToolInterface)]
|
||||
public class HalconToolInterface : IToolInfo
|
||||
{
|
||||
// 必添加输出项
|
||||
ToolIO outputImage = new ToolIO("OutputImage", null, DataType.Image);
|
||||
public HalconToolInterface(string toolName)
|
||||
{
|
||||
enable = true;
|
||||
toolType = ToolType.HalconToolInterface;
|
||||
this.toolName = toolName;
|
||||
tool = new HalconTool();
|
||||
toolInput = new List<ToolIO>();
|
||||
toolOutput = new List<ToolIO>() { outputImage };
|
||||
}
|
||||
}
|
||||
[VisionToolAttribute(ToolType.FindLine)]
|
||||
public class FindLineToolInterface : IToolInfo
|
||||
{
|
||||
|
||||
}
|
||||
[VisionToolAttribute(ToolType.BlobAnalyse)]
|
||||
public class BlobAnalyseToolInterface : IToolInfo
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,20 +2,20 @@ F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.exe.config
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.exe
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\VisionEdit.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\DevComponents.DotNetBar2.dll
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.dll
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.exe
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.dll
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\DevComponents.DotNetBar2.xml
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.xml
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csprojResolveAssemblyReference.cache
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormImageWindow.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormJobManage.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormLog.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormToolBox.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.Properties.Resources.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csproj.GenerateResource.Cache
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.exe
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.csprojResolveAssemblyReference.cache
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormMain.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormJobManage.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormToolBox.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormImageWindow.resources
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.dll
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\WeifenLuo.WinFormsUI.Docking.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.exe
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.dll
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\HalconWindowTest.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEdit\bin\Debug\halcondotnet.xml
|
||||
F:\VSCode\VisionEditTest\VisionEdit\obj\Debug\VisionEdit.FormLib.FormLog.resources
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
</configuration>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,13 +0,0 @@
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\bin\Debug\VisionEditTest.exe.config
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.Properties.Resources.resources
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.csproj.GenerateResource.Cache
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\bin\Debug\VisionEditTest.exe
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\bin\Debug\VisionEditTest.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\bin\Debug\DevComponents.DotNetBar2.dll
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\bin\Debug\halcondotnet.dll
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\bin\Debug\DevComponents.DotNetBar2.xml
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.exe
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.pdb
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.TestFrmIn.resources
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.TestForm.resources
|
||||
F:\VSCode\VisionEditTest\VisionEditTest\obj\Debug\VisionEditTest.csprojResolveAssemblyReference.cache
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user