Selaa lähdekoodia

first commit Realase Version 1.0

Hansi7 10 vuotta sitten
säilyke
2f38ee1b0c
73 muutettua tiedostoa jossa 7342 lisäystä ja 0 poistoa
  1. 95 0
      ASYC/ASYC.csproj
  2. 97 0
      ASYC/Form1.Designer.cs
  3. 41 0
      ASYC/Form1.cs
  4. 120 0
      ASYC/Form1.resx
  5. 21 0
      ASYC/Program.cs
  6. 36 0
      ASYC/Properties/AssemblyInfo.cs
  7. 71 0
      ASYC/Properties/Resources.Designer.cs
  8. 117 0
      ASYC/Properties/Resources.resx
  9. 30 0
      ASYC/Properties/Settings.Designer.cs
  10. 7 0
      ASYC/Properties/Settings.settings
  11. BIN
      ASYC/bin/Debug/ASYC.vshost.exe
  12. 11 0
      ASYC/bin/Debug/ASYC.vshost.exe.manifest
  13. 13 0
      ASYC/obj/Debug/ASYC.csproj.FileListAbsolute.txt
  14. BIN
      ASYC/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  15. BIN
      ASYC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  16. 66 0
      AVsorter.sln
  17. BIN
      AVsorter.v11.suo
  18. 159 0
      Arzon/AVEntertainments.cs
  19. 283 0
      Arzon/Arzon.cs
  20. 67 0
      Arzon/Arzon.csproj
  21. BIN
      Arzon/HtmlAgilityPack.dll
  22. 55 0
      Arzon/MywebClient.cs
  23. 36 0
      Arzon/Properties/AssemblyInfo.cs
  24. BIN
      Entity/DB/AVDB.accdb
  25. 195 0
      Entity/DB/AVDB.cs
  26. 129 0
      Entity/DB/Helper.cs
  27. 81 0
      Entity/Entity.csproj
  28. 22 0
      Entity/EnumQStatus.cs
  29. 253 0
      Entity/FileProcessor.cs
  30. 11 0
      Entity/IGetable.cs
  31. 108 0
      Entity/Movie.cs
  32. 23 0
      Entity/MovieBasic.cs
  33. 36 0
      Entity/Properties/AssemblyInfo.cs
  34. 63 0
      Entity/Properties/Resources.Designer.cs
  35. 120 0
      Entity/Properties/Resources.resx
  36. 269 0
      Entity/SearchItem.cs
  37. 58 0
      Entity/Tools.cs
  38. BIN
      Entity/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  39. BIN
      Entity/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  40. 27 0
      Entity/obj/Debug/Entity.csproj.FileListAbsolute.txt
  41. BIN
      Entity/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
  42. BIN
      PicSo/1414496318_339862.ico
  43. 184 0
      PicSo/BasicContainer.Designer.cs
  44. 171 0
      PicSo/BasicContainer.cs
  45. 120 0
      PicSo/BasicContainer.resx
  46. 528 0
      PicSo/Form1.Designer.cs
  47. 419 0
      PicSo/Form1.cs
  48. 1864 0
      PicSo/Form1.resx
  49. 74 0
      PicSo/InputBox.Designer.cs
  50. 35 0
      PicSo/InputBox.cs
  51. 120 0
      PicSo/InputBox.resx
  52. 36 0
      PicSo/ListViewColumnSorter.cs
  53. 322 0
      PicSo/MovieContainer.Designer.cs
  54. 144 0
      PicSo/MovieContainer.cs
  55. 120 0
      PicSo/MovieContainer.resx
  56. 134 0
      PicSo/PicSo.csproj
  57. BIN
      PicSo/PicSo.v11.suo
  58. 21 0
      PicSo/Program.cs
  59. 36 0
      PicSo/Properties/AssemblyInfo.cs
  60. 63 0
      PicSo/Properties/Resources.Designer.cs
  61. 117 0
      PicSo/Properties/Resources.resx
  62. 26 0
      PicSo/Properties/Settings.Designer.cs
  63. 7 0
      PicSo/Properties/Settings.settings
  64. 3 0
      PicSo/app.config
  65. BIN
      PicSo/bin/Debug/PicSo.vshost.exe
  66. 3 0
      PicSo/bin/Debug/PicSo.vshost.exe.config
  67. 11 0
      PicSo/bin/Debug/PicSo.vshost.exe.manifest
  68. BIN
      PicSo/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
  69. BIN
      PicSo/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  70. 64 0
      PicSo/obj/x86/Debug/PicSo.csproj.FileListAbsolute.txt
  71. BIN
      PicSo/obj/x86/Debug/TempPE/Properties.Resources.Designer.cs.dll
  72. 0 0
      read
  73. 0 0
      readme.md

+ 95 - 0
ASYC/ASYC.csproj

@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ASYC</RootNamespace>
+    <AssemblyName>ASYC</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Arzon\Arzon.csproj">
+      <Project>{9262f4c4-2d81-41ab-a444-57d3a21cea9b}</Project>
+      <Name>Arzon</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Entity\Entity.csproj">
+      <Project>{21d25a8a-680f-4c0a-815b-ae394905a64a}</Project>
+      <Name>Entity</Name>
+    </ProjectReference>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 97 - 0
ASYC/Form1.Designer.cs

@@ -0,0 +1,97 @@
+namespace ASYC
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.textBox2 = new System.Windows.Forms.TextBox();
+            this.button1 = new System.Windows.Forms.Button();
+            this.button2 = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(12, 53);
+            this.textBox1.Multiline = true;
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(871, 196);
+            this.textBox1.TabIndex = 0;
+            // 
+            // textBox2
+            // 
+            this.textBox2.Location = new System.Drawing.Point(12, 26);
+            this.textBox2.Name = "textBox2";
+            this.textBox2.Size = new System.Drawing.Size(618, 21);
+            this.textBox2.TabIndex = 1;
+            this.textBox2.Text = "http://";
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(636, 24);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(75, 23);
+            this.button1.TabIndex = 2;
+            this.button1.Text = "button1";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(717, 24);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(75, 23);
+            this.button2.TabIndex = 3;
+            this.button2.Text = "button2";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(889, 261);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.button1);
+            this.Controls.Add(this.textBox2);
+            this.Controls.Add(this.textBox1);
+            this.Name = "Form1";
+            this.Text = "Form1";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.TextBox textBox1;
+        private System.Windows.Forms.TextBox textBox2;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button button2;
+    }
+}
+

+ 41 - 0
ASYC/Form1.cs

@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Windows.Forms;
+
+namespace ASYC
+{
+    public partial class Form1 : Form
+    {
+        public Form1()
+        {
+            InitializeComponent();
+            Form.CheckForIllegalCrossThreadCalls = false;
+        }
+
+        private void button1_Click(object sender, EventArgs e)
+        {
+            Gets.Arzon a = new Gets.Arzon(true);
+            a.InitCompleted += a_InitCompleted;
+            MessageBox.Show("Wait OK ");
+            var ms = a.Query(textBox2.Text);
+            a.GetMovie(ms[0]);
+            MessageBox.Show("Get Movie!");
+        }
+
+        void a_InitCompleted(object sender, EventArgs e)
+        {
+            MessageBox.Show("init OK!");
+        }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+
+        }
+    }
+}

+ 120 - 0
ASYC/Form1.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>

+ 21 - 0
ASYC/Program.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace ASYC
+{
+    static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
+        }
+    }
+}

+ 36 - 0
ASYC/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("ASYC")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ASYC")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("ec70cc43-66d3-40f7-abca-999977353a6b")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+//      主版本
+//      次版本 
+//      生成号
+//      修订号
+//
+// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 71 - 0
ASYC/Properties/Resources.Designer.cs

@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本: 4.0.30319.34014
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ASYC.Properties
+{
+
+
+    /// <summary>
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   返回此类使用的、缓存的 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ASYC.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   为所有资源查找重写当前线程的 CurrentUICulture 属性,
+        ///   方法是使用此强类型资源类。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
ASYC/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?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.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: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" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 30 - 0
ASYC/Properties/Settings.Designer.cs

@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.34014
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace ASYC.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
ASYC/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

BIN
ASYC/bin/Debug/ASYC.vshost.exe


+ 11 - 0
ASYC/bin/Debug/ASYC.vshost.exe.manifest

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>

+ 13 - 0
ASYC/obj/Debug/ASYC.csproj.FileListAbsolute.txt

@@ -0,0 +1,13 @@
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\ASYC.exe
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\ASYC.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\obj\Debug\ASYC.Properties.Resources.resources
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\obj\Debug\ASYC.csproj.GenerateResource.Cache
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\obj\Debug\ASYC.exe
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\obj\Debug\ASYC.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\obj\Debug\ASYC.csprojResolveAssemblyReference.cache
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\obj\Debug\ASYC.Form1.resources
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\Gets.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\HtmlAgilityPack.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\Gets.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\ASYC\bin\Debug\Entity.pdb

BIN
ASYC/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
ASYC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


+ 66 - 0
AVsorter.sln

@@ -0,0 +1,66 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PicSo", "PicSo\PicSo.csproj", "{1A9F40ED-0402-4145-9140-0C153B989983}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Arzon", "Arzon\Arzon.csproj", "{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Entity", "Entity\Entity.csproj", "{21D25A8A-680F-4C0A-815B-AE394905A64A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASYC", "ASYC\ASYC.csproj", "{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Debug|x86.ActiveCfg = Debug|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Debug|x86.Build.0 = Debug|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Release|Any CPU.ActiveCfg = Release|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Release|Mixed Platforms.Build.0 = Release|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Release|x86.ActiveCfg = Release|x86
+		{1A9F40ED-0402-4145-9140-0C153B989983}.Release|x86.Build.0 = Release|x86
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}.Release|x86.ActiveCfg = Release|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{21D25A8A-680F-4C0A-815B-AE394905A64A}.Release|x86.ActiveCfg = Release|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{4EAD9001-7E4B-4639-A3A4-C5DF4A09A943}.Release|x86.ActiveCfg = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

BIN
AVsorter.v11.suo


+ 159 - 0
Arzon/AVEntertainments.cs

@@ -0,0 +1,159 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.Specialized;
+using HtmlAgilityPack;
+using AVSORTER;
+
+namespace Gets
+{
+    public class AVEntertainments:IGetable
+    {
+        MyWebClient wc;
+        Uri uri;
+        public AVEntertainments()
+        {
+            const string url = "http://www.aventertainments.com/search_Products.aspx?languageID=2";
+            uri = new Uri(url);
+            wc = new MyWebClient();
+            wc.DownloadData(uri);
+        }
+        public List<MovieBasic> Query(string keyword)
+        {
+            Uri u = urlCombine(keyword);
+            HtmlDocument doc = new HtmlDocument();
+            wc.Headers.Set("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-TW; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
+            wc.Headers.Set("Referer", "http://aventertainments.com/Main.aspx?languageID=2");
+            wc.Headers.Set("Content-Type", "application/x-www-form-urlencoded");
+            string htmlString = wc.GetHTML(u);
+            
+
+            doc.LoadHtml(htmlString );
+
+            var listItems = doc.DocumentNode.SelectNodes("//table[@id='ctl00_ContentPlaceHolder1_Rows2Items1_MyList']/tr/td[@valign='top']/table");
+
+            List<MovieBasic> l = new List<MovieBasic>();
+            if (listItems == null)
+            {
+                return l;
+            }
+            foreach (var item in listItems)
+            {
+                var title = item.ChildNodes["tr"].ChildNodes["td"].ChildNodes["h4"].InnerText;
+                //listItems[0].ChildNodes["table"].ChildNodes["tr"].ChildNodes["td"].ChildNodes["h4"].InnerText;
+                title = title.Trim("&nbsp;".ToArray());
+                var img_s = item.ChildNodes["tr"].ChildNodes["td"].ChildNodes["div"].ChildNodes["a"].ChildNodes["img"].Attributes["src"].Value;
+                var actor = item.ChildNodes["tr"].ChildNodes["td"].ChildNodes["a"].InnerText;
+                var maker = item.ChildNodes["tr"].ChildNodes["td"].Elements("a").ElementAt(1).InnerText;
+                var itemURL = item.ChildNodes["tr"].ChildNodes["td"].ChildNodes["h4"].ChildNodes["a"].Attributes["href"].Value;
+                var label = item.ChildNodes["tr"].ChildNodes["td"].InnerText;
+                int st = label.IndexOf("商品番号:") + 5;
+                int ed = label.IndexOf("発売日");
+                label = label.Substring(st, ed - st).Trim().Trim("&nbsp;".ToArray());
+
+
+                var _actorList = new List<string>();
+                _actorList.Add(actor);
+                MovieBasic mb = new MovieBasic()
+                {
+                    Title = title,
+                    Img_s = img_s,
+                    Actor = _actorList,
+                    ItemURL = itemURL,
+                    Label = label,
+                    Maker = maker
+                };
+                l.Add(mb);
+            }
+
+            return l;
+
+
+            //wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
+
+            //wc.Headers.Add(System.Net.HttpRequestHeader.Referer, "https://www.aventertainments.com/login.aspx?languageID=1");
+            //NameValueCollection nvc = new NameValueCollection();
+            //nvc.Add("ctl00$ContentPlaceHolder1$uid","hansi-go@163.com");
+            //nvc.Add("ctl00$ContentPlaceHolder1$passwd", "177991");
+            
+            //wc.UploadData("https://www.aventertainments.com/login.aspx?languageID=1", "POST", nvc);
+            
+
+        }
+
+        private Uri urlCombine(string keyword)
+        {
+            return new Uri("http://www.aventertainments.com/search_Products.aspx?languageID=2&searchby=keyword&keyword=" + keyword);
+        }
+
+        public Movie GetMovie(MovieBasic movieBasic)
+        {
+            //wc.Headers.Set("Referer", "http://www.aventertainments.com/search_Products.aspx?languageID=2&searchby=keyword&keyword=cwp");
+            //wc.Headers.Set("Host", "www.aventertainments.com");
+            //wc.Headers.Set("Content-Type", "application/x-www-form-urlencoded");
+            wc.Headers.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36");
+
+            string html = wc.GetHTML(new Uri(movieBasic.ItemURL));
+            var docc = new HtmlDocument();
+            docc.LoadHtml(html);
+
+            string Title = movieBasic.Title;
+            string label = docc.DocumentNode.SelectNodes("//span[@class='redtitle']")[3].ParentNode.InnerText;
+            string changjia = docc.DocumentNode.SelectNodes("//span[@class='redtitle']")[1].ParentNode.ChildNodes["a"].InnerText;
+            string jiandu = string .Empty;
+            string date = docc.DocumentNode.SelectNodes("//span[@class='redtitle']")[4].ParentNode.InnerText;
+            string minutes = docc.DocumentNode.SelectNodes("//span[@class='redtitle']")[5].ParentNode.InnerText;
+            string f_code = movieBasic.Label;
+            string xilie = docc.DocumentNode.SelectNodes("//span[@class='redtitle']")[2].ParentNode.ChildNodes["a"].InnerText;
+            string intro = docc.DocumentNode.SelectNodes("//div[@id='titlebox']/div[5]/p")[0].InnerText;
+            string coverImage = docc.DocumentNode.SelectNodes("//div[@class='top_sample']")[0].InnerHtml;
+            int st = coverImage.IndexOf("ImageUrl=") + 9;
+            int ed = coverImage.IndexOf(",", st);
+            coverImage = coverImage.Substring(st, ed - st);
+
+
+            //docc.DocumentNode.SelectNodes("//span[@class='redtitle']")[1].ParentNode.ChildNodes["a"].InnerText
+
+
+            System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"\d{1,2}/\d{1,2}/\d{4}");
+            date = r.Match(date).Value;
+
+            //*[@id="titlebox"]/ul[3]/li[5]
+            Movie m = new Movie()
+            {
+                Title = Title,
+                Lable = label,
+                Maker = changjia,
+                ReleaseDate = DateTime.Parse(date),
+                Minutes = minutes,
+                AVCode = f_code,
+                Introduction = intro,
+                Actor = movieBasic.Actor,
+                ItemURL = movieBasic.ItemURL,
+                CoverURL = coverImage,
+                Producer = jiandu,
+                Series = xilie
+            };
+
+            return m;
+        }
+
+        public bool GetCover(Movie mo)
+        {
+            throw new NotImplementedException();
+        }
+
+        public bool IsInitCompleted
+        {
+            get
+            {
+                throw new NotImplementedException();
+            }
+            set
+            {
+                throw new NotImplementedException();
+            }
+        }
+    }
+}

+ 283 - 0
Arzon/Arzon.cs

@@ -0,0 +1,283 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using AVSORTER;
+using System.Text.RegularExpressions;
+using HtmlAgilityPack;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+
+namespace Gets
+{
+    public class Arzon : AVSORTER.IGetable, ICloneable
+    {
+        Uri uri;
+        MyWebClient wc;
+        /// <summary>
+        /// 构造函数
+        /// </summary>
+        /// <param name="IsInit">决定是否初始化Cookie,初始化Cookie需要耗费时间并且需要联网,或者根据需要手动调用CookiesInit()方法</param>
+        public Arzon(bool IsInit)
+        {
+            wc = new MyWebClient();
+            if (IsInit)
+            {
+                CookiesInit();
+            }
+        }
+
+        public void CookiesInit()
+        {
+            const string url = @"http://www.arzon.jp/index.php?action=adult_customer_agecheck&agecheck=1";//&redirect=http%3A%2F%2Fwww.arzon.jp%2F";
+            uri = new Uri(url);
+            wc.DownloadDataCompleted += wc_DownloadDataCompleted;
+            wc.DownloadDataAsync(uri, "init");
+        }
+
+        public event EventHandler InitCompleted;
+
+        void wc_DownloadDataCompleted(object sender, System.Net.DownloadDataCompletedEventArgs e)
+        {
+            if ((e.UserState as string) == "init")
+            {
+                this.IsInitCompleted = true;
+                if (this.InitCompleted!=null)
+                {
+                    this.InitCompleted(this, new EventArgs());
+                }
+
+            }
+        }
+
+        public bool IsInitCompleted { get; set; }
+
+        public List<MovieBasic> Query(string fcode)
+        {
+            Uri u = urlCombine(fcode);
+            HtmlAgilityPack.HtmlDocument doc = new HtmlDocument();
+            doc.LoadHtml(wc.GetHTML(u));
+            //doc.DocumentNode.SelectNodes("//li[@class='saledate']/span")[3].InnerText
+            var listitems = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div[@class='data']/ul[1]/li[2]");
+
+            var htmnode = doc.DocumentNode.SelectSingleNode("//div[@class='autopagerize_page_element']");
+            if (htmnode == null)
+            {
+                //查无此片
+                return new List<MovieBasic>();
+            }
+            string htm = htmnode.InnerHtml;
+            List<MovieBasic> l = new List<MovieBasic>();
+            //<div class="autopagerize_page_element">
+
+            int cou = doc.DocumentNode.SelectNodes("//div[@id='itemd']").Count;
+
+            for (int i = 0; i < cou; i++)
+            {
+
+                string n_title = doc.DocumentNode.SelectNodes("//div[@id='itemd']")[i].ChildNodes["ul"].ChildNodes["li"].ChildNodes["h3"].InnerText;
+                n_title = Tools.RemoveInvalidChars(n_title);
+
+                string n_itemURL = "http://" + u.Host + doc.DocumentNode.SelectNodes("//div[@id='itemd']")[i].ChildNodes["ul"].ChildNodes["li"].ChildNodes["h3"].ChildNodes["a"].Attributes["href"].Value;
+
+                string n_date = doc.DocumentNode.SelectSingleNode("//div[@id='itemd']/ul/li/span[@class='date']").InnerText;
+
+                var datanode = doc.DocumentNode.SelectNodes("//div[@class='data']")[i];
+                HtmlDocument docData = new HtmlDocument();
+                docData.LoadHtml(datanode.InnerHtml);
+                int k = docData.DocumentNode.SelectNodes("//ul[1]/li").Count;
+                string n_actor = string.Empty;
+                List<string> actors = new List<string>();
+                if (k > 1)
+                {
+                    for (int j = k; j > 1; j--)
+                    {
+                        n_actor = docData.DocumentNode.SelectNodes("//ul[1]/li[" + j + "]")[0].InnerText.Trim();
+                        actors.Add(n_actor);
+                    }
+                }
+
+                string n_maker = docData.DocumentNode.SelectSingleNode("//ul[2]/li[2]").InnerText.Trim();
+                string n_company = docData.DocumentNode.SelectSingleNode("//ul[3]/li[2]").InnerText.Trim();
+                var n_ticai_node = docData.DocumentNode.SelectSingleNode("//ul[4]/li[2]");
+                string n_ticai;
+                if (n_ticai_node == null)
+                {
+                    n_ticai = string.Empty;
+                }
+                else
+                {
+                    n_ticai = n_ticai_node.InnerText.Trim();
+                }
+                string s_img = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div/a/img")[i].Attributes["src"].Value;
+
+                MovieBasic mb = new MovieBasic()
+                {
+                    Title = n_title,
+                    ItemURL = n_itemURL,
+                    Img_s = s_img,
+                    Actor = actors,
+                    Maker = n_company,
+                    Label = n_ticai
+                };
+                l.Add(mb);
+            }
+            return l;
+
+
+
+
+
+
+
+            //List<MovieBasic> l = new List<MovieBasic>();
+            //for (int i = 0; i < listitems.Count; i++)
+            //{
+            //    string title = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div/a")[i].Attributes["title"].Value;
+            //    string itemurl = "http://" + uri.Host + doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div/a")[i].Attributes["href"].Value;
+            //    string actor = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div[@class='data']/ul[1]/li[2]")[i].InnerText.Trim();
+            //    string marker = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div[@class='data']/ul[2]/li[2]")[i].InnerText.Trim();
+            //    string label = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div[@class='data']/ul[3]/li[2]")[i].InnerText.Trim();
+            //    string s_img = doc.DocumentNode.SelectNodes("//div[@id='listitem']/table/tr/td/div/a/img")[i].Attributes["src"].Value;
+
+            //    //GetMovie(itemurl, cookies);
+            //    //GetImage(itemurl, cookies);
+            //    //http://www.arzon.jp/itemlist.html?t=&m=all&s=&q=iptd+999
+
+
+            //    MovieBasic mb = new MovieBasic()
+            //    {
+            //        Title = title,
+            //        ItemURL = itemurl,
+            //        Actor = actor,
+            //        Img_s = s_img,
+            //        Label = label,
+            //        Maker = marker
+            //    };
+            //    l.Add(mb);
+            //}
+
+        }
+        public Movie GetMovie(MovieBasic basic)
+        {
+            try
+            {
+                string html = wc.GetHTML(new Uri(basic.ItemURL));
+                var docc = new HtmlDocument();
+                docc.LoadHtml(html);
+                string Title = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/div[@class='detail_title']/h1").InnerText.Trim();
+                Title = Tools.RemoveInvalidChars(Title);
+
+                //var ddd ="[MIDD-983]Baby Entertainment×MOODYZコラボ作品 淫神の女泥棒 哀しき痙攣の追憶 Dear.F 1 恥辱的、屈辱的なイカせの拷問! 反反复复反反复复方法";
+                if (Title.Length>82)
+                {
+                    Title = Title.Substring(0, 81);
+                }
+                
+
+
+                //string Title = basic.Title;
+                string label = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[3]/td/a").InnerText.Trim();
+                string changjia = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[2]/td/a").InnerText.Trim();
+                string jiandu = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[5]/td[2]").InnerText.Trim();
+                string date = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[6]/td[2]").InnerText.Trim();
+                //2008/01/25 (DVD レンタル版)
+                System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"\d{4}/\d{2}/\d{2}");
+                if (r.IsMatch(date))
+                {
+                    date = r.Match(date).Value;
+                }
+                else
+                {
+                    date = "1900/01/01";
+                }
+                DateTime dtime = DateTime.Parse(date);
+                
+                
+                string minutes = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[7]/td[2]").InnerText.Trim();
+                string f_code = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[8]/td[2]").InnerText.Trim();
+                f_code = Tools.Fcode(f_code);
+                string xilie = docc.DocumentNode.SelectSingleNode("//div[@id='detail_new']/table/tr/td/table[@class='item_detail']/tr/td[@class='caption']/table[@class='item']/tr[4]/td[2]").InnerText.Trim();
+                //f_code = Tools.Fcode(f_code);
+                string intro = docc.DocumentNode.SelectSingleNode("//table[@class='item_detail']/tr/td[@class='text']").InnerText.Trim();
+                string coverImg = docc.DocumentNode.SelectSingleNode("//table[@class='item_detail']/tr/td/div/a").Attributes["href"].Value.Trim();
+                Movie m = new Movie()
+                {
+                    Actor = basic.Actor,
+                    Title = Title,
+                    Lable = label,
+                    Maker = changjia,
+                    ReleaseDate = dtime,
+                    Minutes = minutes,
+                    AVCode = f_code,
+                    Introduction = intro,
+                    CoverURL = coverImg,
+                    ItemURL = basic.ItemURL,
+                    Series = xilie,
+                    Producer = jiandu
+                };
+                //Console.WriteLine(string.Format("Actor:{0}\r\nTitle:{1}\r\nLabel:{2}\r\nMaker:{3}\r\nReleaseDate:{4}\r\n番号:{5}\r\n ", m.Actor[0], m.Title, m.Lable, m.Maker, m.ReleaseDate.ToShortDateString(), m.AVCode));
+                return m;
+            }
+            catch (Exception)
+            {
+                throw  new Exception("获取影片信息失败!");
+            }
+        }
+        public bool GetCover(Movie mo)
+        {
+            wc.ReferURL = mo.ItemURL;
+            FileInfo f = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Cover", mo.AVCode + ".jpg"));
+            try
+            {
+                if (!Directory.Exists(Path.GetDirectoryName(f.FullName)))
+                {
+                    Directory.CreateDirectory(Path.GetDirectoryName(f.FullName));
+                }
+                if (!File.Exists(f.FullName))
+                {
+                    wc.DownloadFile(mo.CoverURL, f.FullName);
+                }
+                else
+                {
+                    Console.WriteLine("已有封面 " + mo.Title);
+                }
+            }
+            catch (Exception err)
+            {
+                return false;
+            }
+            mo.CoverFile = f.FullName;
+            return true;
+        }
+        Uri urlCombine(string fcode)
+        {
+            string ur = "http://www.arzon.jp/itemlist.html?t=&m=all&s=&mkt=all&disp=30&sort=-saledate&list=list&q=" + fcode;
+            return new Uri(ur);
+        }
+        public object Clone()
+        {
+            //MemoryStream ms = new MemoryStream();
+
+            //BinaryFormatter bf = new BinaryFormatter();
+            //bf.Serialize(ms, this);
+            //ms.Seek(0, 0);
+            //object value = bf.Deserialize(ms);
+
+            //ms.Close();
+
+            //return value;//this.MemberwiseClone();
+
+
+
+            MemoryStream ms = new MemoryStream();
+            BinaryFormatter bf = new BinaryFormatter();
+            bf.Serialize(ms, this.wc.m_container);
+            ms.Seek(0, 0);
+            object value = bf.Deserialize(ms);
+            Arzon ar = new Arzon(false);
+            ar.wc.m_container = value as System.Net.CookieContainer;
+            return ar;
+        }
+    }
+}

+ 67 - 0
Arzon/Arzon.csproj

@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Gets</RootNamespace>
+    <AssemblyName>Gets</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="HtmlAgilityPack">
+      <HintPath>.\HtmlAgilityPack.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Arzon.cs" />
+    <Compile Include="AVEntertainments.cs" />
+    <Compile Include="MywebClient.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Entity\Entity.csproj">
+      <Project>{21D25A8A-680F-4C0A-815B-AE394905A64A}</Project>
+      <Name>Entity</Name>
+    </ProjectReference>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

BIN
Arzon/HtmlAgilityPack.dll


+ 55 - 0
Arzon/MywebClient.cs

@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Net;
+
+namespace Gets
+{
+    
+    public class MyWebClient : WebClient
+    {
+        public CookieContainer m_container = new CookieContainer();
+
+        string refrer = string.Empty;
+        public string ReferURL
+        {
+            get
+            {
+
+                return this.refrer;
+            }
+            set
+            {
+                this.refrer = value;
+            }
+        }
+
+        protected override WebRequest GetWebRequest(Uri address)
+        {
+            WebRequest webRequest = base.GetWebRequest(address);
+            if (webRequest is HttpWebRequest)
+            {
+                (webRequest as HttpWebRequest).CookieContainer = this.m_container;
+                if (ReferURL != string.Empty)
+                {
+                    (webRequest as HttpWebRequest).Referer = ReferURL;
+                }
+            }
+            return webRequest;
+        }
+
+        public string GetHTML(Uri uri)
+        {
+            try
+            {
+                string kk = Encoding.UTF8.GetString(this.DownloadData(uri));
+                return kk;
+            }
+            catch (Exception e)
+            {
+                throw e;
+            }
+        }
+    }
+}

+ 36 - 0
Arzon/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("Arzon")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Arzon")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("60dfca64-94a2-4e89-b1a4-0319ba228777")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+//      主版本
+//      次版本 
+//      内部版本号
+//      修订号
+//
+// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

BIN
Entity/DB/AVDB.accdb


+ 195 - 0
Entity/DB/AVDB.cs

@@ -0,0 +1,195 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data.OleDb;
+using System.Data;
+
+namespace AVSORTER.DB
+{
+    public class AVDB
+    {
+        Helper h = new Helper(string.Empty);
+        string DestPath;
+        string SubPath;
+
+        public AVDB()
+        {
+            GetDestPath();
+            GetSubPath();
+        }
+        public void AddNewAV(AVSORTER.Movie m, string video, bool censored)
+        {
+            if (isInDB(m))
+            {
+                updateAV(m, video, censored);
+            }
+            else
+            {
+                insertAV(m, video, censored);
+            }
+        }
+        public List<Movie> QueryAV(string fcode)
+        {
+
+            List<Movie> list = new List<Movie>();
+            var dt = h.ExecuteDataTable("select * from movies where FCode like '%" + fcode + "%'");
+            foreach (DataRow item in dt.Rows)
+            {
+                Movie m = new Movie();
+                m.Title = item[1].ToString();
+                m.Actor = item[2].ToString().Split(',').ToList<string>();
+                m.ItemURL = item[3].ToString();
+                m.Maker = item[5].ToString();
+                m.Lable = item[6].ToString();
+                m.Series = item[7].ToString();
+                m.Producer = item[8].ToString();
+                m.ReleaseDate = item.Field<DateTime>(9);
+                m.Minutes = item[10].ToString();
+                m.AVCode = item[11].ToString();
+                m.Introduction = item[12].ToString();
+
+                var a = SubPath.Replace("演员", m.Actor.Count == 0 ? "无名氏" : Tools.ListToString(m.Actor));
+                a = a.Replace("番号", m.AVCode);
+                a = a.Replace("厂商", m.Maker);
+                a = a.Replace("制造商", m.Producer);
+
+                a = a.Replace("标题", m.Title);
+                a = a.Replace("标签", m.Lable);
+                a = System.IO.Path.Combine(DestPath, a, m.AVCode + System.IO.Path.GetExtension(item[4].ToString()));
+                m.CoverFile = a;
+                list.Add(m);
+            }
+            return list;
+
+
+        }
+        public void SetDestPath(string path)
+        {
+            DestPath = path;
+            using (OleDbCommand comm = new OleDbCommand("update settings set destPath = '" + path + "'"))
+            {
+                h.ExecuteScalar(comm);
+            }
+
+        }
+        public string GetDestPath()
+        {
+            using (OleDbCommand comm = new OleDbCommand("select top 1 destPath from settings"))
+            {
+                this.DestPath = (string)h.ExecuteScalar(comm);
+                return DestPath;
+            }
+        }
+        public void SetSubPath(string path)
+        {
+            this.SubPath = path;
+            using (OleDbCommand comm = new OleDbCommand("update settings set SubPath = '" + path + "'"))
+            {
+                h.ExecuteScalar(comm);
+            }
+        }
+        public string GetSubPath()
+        {
+
+            using (OleDbCommand comm = new OleDbCommand("select top 1 SubPath from settings"))
+            {
+                this.SubPath = (string)h.ExecuteScalar(comm);
+                return this.SubPath;
+            }
+        }
+        private void updateAV(Movie m, string videof, bool censored)
+        {
+            using (OleDbCommand comm = new OleDbCommand(@"update movies set Title=title,
+                        actor=@actor,
+                        itemurl=@url,
+                        coverfile=@coverfile,
+                        maker=@maker,
+                        labels=@labels,
+                        series=@series,
+                        producer=@producer,
+                        releasedate=@releasedate,
+                        minuses=@minutes,
+                        intro=@intro,
+                        censored=@c,
+                        videofile = @video
+                        where fcode=@fcode"))
+            {
+                comm.Parameters.Add("@title", OleDbType.VarWChar).Value = m.Title;
+                comm.Parameters.Add("@actor", OleDbType.VarWChar).Value = AVSORTER.Tools.ListToString(m.Actor);
+                comm.Parameters.Add("@url", OleDbType.VarWChar).Value = m.ItemURL;
+
+
+                string cfile;
+                if (string.IsNullOrEmpty(m.CoverFile))
+                {
+                    cfile = "";
+                }
+                else
+                {
+                    cfile = m.CoverFile;
+                    cfile = System.IO.Path.GetFileName(cfile);
+                }
+                comm.Parameters.Add("@coverfile", OleDbType.VarWChar).Value = cfile;
+                comm.Parameters.Add("@maker", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Maker) ? "" : m.Maker;
+                comm.Parameters.Add("@labels", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Lable) ? "" : m.Lable;
+                comm.Parameters.Add("@series", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Series) ? "" : m.Series;
+                comm.Parameters.Add("@producer", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Producer) ? "" : m.Producer;
+                comm.Parameters.Add("@releasedate", OleDbType.Date).Value = m.ReleaseDate;
+                comm.Parameters.Add("@minutes", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Minutes) ? "" : m.Minutes;
+                comm.Parameters.Add("@fcode", OleDbType.VarWChar).Value = m.AVCode;
+                comm.Parameters.Add("@intro", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Introduction) ? "" : m.Introduction;
+                comm.Parameters.Add("@c", OleDbType.Boolean).Value = censored;
+                comm.Parameters.Add("@video", OleDbType.VarWChar).Value = videof;
+
+                h.ExecuteNonQuery(comm);
+            }
+        }
+        private void insertAV(Movie m, string videof, bool censored)
+        {
+            using (OleDbCommand comm = new OleDbCommand(@"insert into
+movies (Title,actor,itemurl,coverfile,maker,labels,series,producer,releasedate,minuses,fcode,intro,censored,videofile )
+values (@title,@actor,@url,@coverfile,@maker,@labels,@series,@producer,@releasedate,@minutes,@fcode,@intro,@c,@video)"))
+            {
+                comm.Parameters.Add("@title", OleDbType.VarWChar).Value = m.Title;
+                comm.Parameters.Add("@actor", OleDbType.VarWChar).Value = AVSORTER.Tools.ListToString(m.Actor);
+                comm.Parameters.Add("@url", OleDbType.VarWChar).Value = m.ItemURL;
+
+                string cfile;
+                if (string.IsNullOrEmpty(m.CoverFile))
+                {
+                    cfile = "";
+                }
+                else
+                {
+                    cfile = m.CoverFile;
+                    cfile = System.IO.Path.GetFileName(cfile);
+                }
+
+                comm.Parameters.Add("@coverfile", OleDbType.VarWChar).Value = cfile;
+                comm.Parameters.Add("@maker", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Maker) ? "" : m.Maker;
+                comm.Parameters.Add("@labels", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Lable) ? "" : m.Lable;
+                comm.Parameters.Add("@series", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Series) ? "" : m.Series;
+                comm.Parameters.Add("@producer", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Producer) ? "" : m.Producer;
+                comm.Parameters.Add("@releasedate", OleDbType.Date).Value = m.ReleaseDate;
+                comm.Parameters.Add("@minutes", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Minutes) ? "" : m.Minutes;
+                comm.Parameters.Add("@fcode", OleDbType.VarWChar).Value = m.AVCode;
+                comm.Parameters.Add("@intro", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Introduction) ? "" : m.Introduction;
+                comm.Parameters.Add("@c", OleDbType.Boolean).Value = censored;
+                comm.Parameters.Add("@video", OleDbType.VarWChar).Value = videof;
+                h.ExecuteNonQuery(comm);
+            }
+
+        }
+        private bool isInDB(AVSORTER.Movie movie)
+        {
+            var obj = h.ExecuteScalar("select count(*) from movies where FCode='" + movie.AVCode + "'");
+            return (int)obj > 0;
+        }
+        private bool isInDB(string fcode)
+        {
+            var obj = h.ExecuteScalar("select count(*) from movies where FCode='" + fcode + "'");
+            return (int)obj > 0;
+        }
+    }
+}

+ 129 - 0
Entity/DB/Helper.cs

@@ -0,0 +1,129 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Data.OleDb;
+using System.Data;
+using System.IO;
+
+namespace AVSORTER.DB
+{
+    public class Helper
+    {
+        string b = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DB","AVDB.accdb");
+        string ConnectString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=";
+        OleDbConnection connection;
+        /// <summary>
+        /// 数据连接帮助类
+        /// </summary>
+        /// <param name="connectionString">为空字符时使用默认的连接字符串</param>
+        public Helper(string connectionString)
+        {
+            ConnectString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + b;
+            if (connectionString== string.Empty)
+            {
+                connection = new OleDbConnection(ConnectString);
+            }
+            else
+            {
+                connection = new OleDbConnection(connectionString);
+            }
+
+            try
+            {
+                connection.Open();
+                connection.Close();
+            }
+            catch (Exception err)
+            {
+                throw err;
+            }
+        }
+
+        public DataTable ExecuteDataTable(OleDbCommand command)
+        {
+            AddConnection(command);
+            OleDbDataAdapter adpt = new OleDbDataAdapter(command);
+            DataTable datatable = new DataTable();
+            adpt.Fill(datatable);
+            return datatable;
+        }
+
+        public DataTable ExecuteDataTable(string selectCommand)
+        {
+            OleDbDataAdapter adpt = new OleDbDataAdapter(selectCommand,this.connection);
+            DataTable datatable = new DataTable();
+            adpt.Fill(datatable);
+            return datatable;
+        }
+        /// <summary>
+        /// in used
+        /// </summary>
+        /// <param name="command"></param>
+        /// <returns></returns>
+        public int ExecuteNonQuery(OleDbCommand command)
+        {
+            AddConnection(command);
+            using (command)
+            {
+                if (command.Connection.State == ConnectionState.Closed)
+                {
+                    command.Connection.Open();
+                }
+                return command.ExecuteNonQuery();
+            }
+        }
+
+        public int ExecuteNonQuery(string nonQueryCommand)
+        {
+            using (OleDbCommand comm = new OleDbCommand(nonQueryCommand))
+            {
+                AddConnection(comm);
+                return comm.ExecuteNonQuery();
+            }
+        }
+
+        public object ExecuteScalar(OleDbCommand command)
+        {
+            AddConnection(command);
+            using (command)
+            {
+                if (command.Connection.State == ConnectionState.Closed)
+                {
+                    command.Connection.Open();
+                }
+                return command.ExecuteScalar();
+            }
+        }
+
+        public object ExecuteScalar(string sqlCommand)
+        {
+            using (OleDbCommand comm = new OleDbCommand(sqlCommand))
+            {
+                AddConnection(comm);
+                if (comm.Connection.State == ConnectionState.Closed)
+                {
+                    comm.Connection.Open();
+                }
+                return comm.ExecuteScalar();
+            }
+        }
+
+        #region 属性
+
+        public ConnectionState State
+        {
+            get { return this.connection.State; }
+        }
+
+        #endregion
+
+        private void AddConnection(OleDbCommand comm)
+        {
+            comm.Connection = this.connection;
+        }
+
+        
+    }
+
+}

+ 81 - 0
Entity/Entity.csproj

@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{21D25A8A-680F-4C0A-815B-AE394905A64A}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>AVSORTER</RootNamespace>
+    <AssemblyName>Entity</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualBasic" />
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DB\AVDB.cs" />
+    <Compile Include="DB\Helper.cs" />
+    <Compile Include="EnumQStatus.cs" />
+    <Compile Include="FileProcessor.cs" />
+    <Compile Include="IGetable.cs" />
+    <Compile Include="Movie.cs" />
+    <Compile Include="MovieBasic.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="SearchItem.cs" />
+    <Compile Include="Tools.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="DB\AVDB.accdb">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

+ 22 - 0
Entity/EnumQStatus.cs

@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AVSORTER
+{
+    public enum QStatus
+    {
+        未开始,//未开始
+        查询中,//查询列表
+        查询完成一个结果,//列表完成
+        查询完成无匹配,
+        多个结果请选择一个,
+        获取信息中,//获取详细中
+        获取信息完成,//获取详细完毕
+        下载封面中,//获取封面
+        封面下载完成,//获取封面完毕
+        准备好移动文件,//完成
+        出错//出错
+    }
+}

+ 253 - 0
Entity/FileProcessor.cs

@@ -0,0 +1,253 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Text.RegularExpressions;
+
+namespace AVSORTER
+{
+    public class FileProcessor
+    {
+        #region ctor
+        public static FileProcessor GetInstance()
+        {
+            if (f == null)
+            {
+                f = new FileProcessor();
+            }
+            else
+            {
+                //nothing to do here
+            }
+            return f;
+        }
+        private static FileProcessor f;
+        //public FileProcessor(string startPath)
+        //{
+        //    this.list = Directory.GetFileSystemEntries(startPath, "*.*", SearchOption.AllDirectories).ToList<string>();
+        //    less(this.list);
+        //}
+
+
+        public FileProcessor()
+        {
+            this.DestPath = db.GetDestPath();
+            this.SubPath = db.GetSubPath();
+        }
+
+        #endregion
+
+        #region 属性字段
+
+        DB.AVDB db = new DB.AVDB();
+
+        StringBuilder _sblog = new StringBuilder();
+        public List<string> Files
+        {
+            get
+            {
+                return this.list;
+            }
+        }
+        List<string> list = new List<string>();
+                /// <summary>
+        /// 目标文件夹
+        /// </summary>
+        public string DestPath { get; set; }
+        /// <summary>
+        /// 自动显示文件移动日志
+        /// </summary>
+        public bool ShowLog { get; set; }
+        /// <summary>
+        /// 目标文件夹的自定义子文件夹
+        /// </summary>
+        public string SubPath { get; set; }
+        /// <summary>
+        /// 文件扩展名过滤
+        /// </summary>
+        public string Pattern 
+        {
+            get {
+
+                return this._pattern;
+            }
+            set
+            {
+                this._pattern = value;
+            }
+        }
+        string _pattern = @"\.mp4|\.mov|\.avi|\.wmv|\.iso|\.rm|\.rmvb|\.mkv";
+        #endregion
+
+        void less(List<string> l)
+        {
+            l.RemoveAll(j => !Regex.IsMatch(Path.GetExtension(j),Pattern, RegexOptions.IgnoreCase));
+        }
+        string _getFilePathName(Movie movie,string sourceFile)
+        {
+            if (SubPath!=null)
+            {
+                var a = SubPath.Replace("演员", movie.Actor.Count==0?"无名氏":Tools.ListToString(movie.Actor));
+                a = a.Replace("番号", movie.AVCode);
+                a = a.Replace("厂商", movie.Maker);
+                a = a.Replace("制造商", movie.Producer);
+
+                a = a.Replace("标题", movie.Title);
+                a = a.Replace("标签", movie.Lable);
+                return Path.Combine(DestPath, a, movie.AVCode + Path.GetExtension(sourceFile));
+            }
+            else
+            {
+                return Path.Combine(DestPath, movie.AVCode, Path.GetFileName(movie.AVCode));
+            }
+
+        }
+
+        public void MakeMove(Movie m, string sourceFile)
+        {
+            string dest = _getFilePathName(m, sourceFile);
+
+            
+            try
+            {
+                MoveFile(sourceFile, dest);
+                _sblog.AppendLine("复制" + sourceFile + "\r\n    至 " + dest);
+                if (m.CoverFile != null)
+                {
+                    CopyFile(m.CoverFile, Path.Combine(Path.GetDirectoryName(dest), Path.GetFileName(m.CoverFile)));
+                }
+                var xiangduiPath = dest.Substring(this.DestPath.Length + 1);
+                db.AddNewAV(m, xiangduiPath, true);
+            }
+            catch (System.Data.OleDb.OleDbException err)
+            {
+                _sblog.AppendLine("===ERROR=== 数据库写入错误:" + err.Message + " 处理:" + sourceFile);
+            }
+            catch (Exception err)
+            {
+                _sblog.AppendLine("===ERROR===" + "文件" + sourceFile + "复制到" + dest + "未成功!");
+            }
+             
+            //Microsoft.VisualBasic.FileIO.FileSystem.MoveFile(sourceFile, dest, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
+            //Microsoft.VisualBasic.FileIO.FileSystem.CopyFile(m.CoverFile, Path.Combine(Path.GetDirectoryName(dest),Path.GetFileName(m.CoverFile)), Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
+        }
+        public void MakeDataBase(Movie m, string sourceFile)
+        {
+            string dest = _getFilePathName(m, sourceFile);
+
+
+            try
+            {
+                //MoveFile(sourceFile, dest);
+                //_sblog.AppendLine("复制" + sourceFile + "\r\n    至 " + dest);
+                //if (m.CoverFile != null)
+                //{
+                //    CopyFile(m.CoverFile, Path.Combine(Path.GetDirectoryName(dest), Path.GetFileName(m.CoverFile)));
+                //}
+                m.CoverFile = m.AVCode + ".jpg";
+                var xiangduiPath = dest.Substring(this.DestPath.Length + 1);
+                db.AddNewAV(m, xiangduiPath, true);
+            }
+            catch (System.Data.OleDb.OleDbException err)
+            {
+                _sblog.AppendLine("===ERROR=== 数据库写入错误:" + err.Message + " 处理:" + sourceFile);
+            }
+            catch (Exception err)
+            {
+                _sblog.AppendLine("===ERROR===" + "文件" + sourceFile + "复制到" + dest + "未成功!");
+            }
+
+            //Microsoft.VisualBasic.FileIO.FileSystem.MoveFile(sourceFile, dest, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
+            //Microsoft.VisualBasic.FileIO.FileSystem.CopyFile(m.CoverFile, Path.Combine(Path.GetDirectoryName(dest),Path.GetFileName(m.CoverFile)), Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
+        }
+
+
+
+        /// <summary>
+        /// 添加文件列表
+        /// </summary>
+        /// <param name="startDirectory"></param>
+        public void AddDirectory(string startDirectory)
+        {
+            //是文件
+            if (File.Exists(startDirectory))
+	        {
+                List<string> l = new List<string>();
+                l.Add(startDirectory);
+                less(l);
+                this.list.AddRange(l);
+                this.list = this.list.Distinct<string>().ToList<string>();
+	        }
+            else//是目录
+            {
+                var l = Directory.GetFileSystemEntries(startDirectory, "*.*", SearchOption.AllDirectories).ToList<string>();
+                less(l);
+                this.list.AddRange(l);
+                this.list =  this.list.Distinct<string>().ToList<string>();
+            }
+        }
+        /// <summary>
+        /// 写日志
+        /// </summary>
+        public void WriteLog()
+        {
+            string log = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt");
+            File.WriteAllText(log, _sblog.ToString(), Encoding.Default);
+            if (ShowLog)
+	        {
+		        System.Diagnostics.Process.Start(log);
+	        }
+        }
+
+        void CopyFile(string sourceFile,string destFile)
+        {
+            //char[] invalidFileChars = Path.GetInvalidFileNameChars();
+
+
+            //foreach (char cr in invalidFileChars)
+            //{
+            //    destFile = destFile.Replace(cr.ToString(), "");
+            //}
+
+            if (!Directory.Exists(Path.GetDirectoryName(destFile)))
+            {
+                Directory.CreateDirectory(Path.GetDirectoryName(destFile));
+            }
+            int c = 0;
+            while (Microsoft.VisualBasic.FileIO.FileSystem.FileExists(destFile))
+            {
+                destFile = Path.Combine(Path.GetDirectoryName(destFile), Path.GetFileNameWithoutExtension(destFile) + "_" + (++c).ToString() + Path.GetExtension(destFile));
+            }
+            Microsoft.VisualBasic.FileIO.FileSystem.CopyFile(sourceFile, destFile,  Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
+        }
+
+        void MoveFile(string sourceFile, string destFile)
+        {
+            //char[] invalidFileChars = Path.GetInvalidFileNameChars();
+            //foreach (char cr in invalidFileChars)
+            //{
+            //    destFile = destFile.Replace(cr.ToString(), "");
+            //}
+
+            if (!Directory.Exists(Path.GetDirectoryName(destFile)))
+            {
+                try
+                {
+                    Directory.CreateDirectory(Path.GetDirectoryName(destFile));
+                }
+                catch (Exception)
+                {
+                    throw;
+                }
+                
+            }
+            int c = 0;
+            while (Microsoft.VisualBasic.FileIO.FileSystem.FileExists(destFile))
+            {
+                destFile = Path.Combine(Path.GetDirectoryName(destFile), Path.GetFileNameWithoutExtension(destFile) + "_" + (++c).ToString() + Path.GetExtension(destFile));
+            }
+            Microsoft.VisualBasic.FileIO.FileSystem.MoveFile(sourceFile, destFile, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
+        }
+    }
+}

+ 11 - 0
Entity/IGetable.cs

@@ -0,0 +1,11 @@
+using System;
+namespace AVSORTER
+{
+    public interface IGetable
+    {
+        bool IsInitCompleted { get; set; }
+        bool GetCover(Movie mo);
+        Movie GetMovie(MovieBasic basic);
+        System.Collections.Generic.List<MovieBasic> Query(string fcode);
+    }
+}

+ 108 - 0
Entity/Movie.cs

@@ -0,0 +1,108 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AVSORTER
+{
+    public class Movie
+    {
+        /// <summary>
+        /// 演员
+        /// </summary>
+        public List<string> Actor { get; set; }
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string Title 
+        { 
+            get
+            {
+                return this._title;
+            }
+            set
+            {
+                if (value.Length>200)
+                {
+                    this._title = value.Substring(0, 200);
+                }
+                else
+                {
+                    this._title = value;
+                }
+            }
+        }
+        string _title;
+        /// <summary>
+        /// 封面
+        /// </summary>
+        public string CoverURL { get; set; }
+        /// <summary>
+        /// 封面图片文件 
+        /// </summary>
+        public string CoverFile { get; set; }
+        /// <summary>
+        /// 公司
+        /// </summary>
+        public string Maker { get; set; }
+        /// <summary>
+        /// 标签
+        /// </summary>
+        public string Lable { get; set; }
+        /// <summary>
+        /// 系列
+        /// </summary>
+        public string Series { get; set; }
+        /// <summary>
+        /// 制造商
+        /// </summary>
+        public string Producer { get; set; }
+        /// <summary>
+        /// 日期
+        /// </summary>
+        public DateTime ReleaseDate { get; set; }
+        /// <summary>
+        /// 片长度
+        /// </summary>
+        public string Minutes { get; set; }
+        /// <summary>
+        /// 番号
+        /// </summary>
+        public string AVCode { get; set; }
+        /// <summary>
+        /// 介绍
+        /// </summary>
+        public string Introduction { get; set; }
+        public string ItemURL { get; set; }
+        
+        public bool Censored { get; set; }
+        public string VidesFile { get; set; }
+
+//        public override string ToString()
+//        {
+//            return string.Format(@"Actor:{0}
+//Title:{1}
+//CoverURL:{2}
+//CoverFile:{3}
+//Maker:{4}
+//Label:{5}
+//Series:{6}
+//Producer:{7}
+//ReleaseDate:{8}
+//Minutes:{9}
+//Introduction:{10}
+//ItemURL:{11}
+//CODE:{12}", Tools.ListToString(Actor), Title, CoverURL, CoverFile, Maker, Lable,Series,Producer, ReleaseDate.ToShortDateString(), Minutes, Introduction, ItemURL,AVCode);
+            
+            
+
+
+//        }
+
+
+        public override string ToString()
+        {
+            return this.AVCode +"\t"+ this.Title;
+        }
+    }
+}

+ 23 - 0
Entity/MovieBasic.cs

@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace AVSORTER
+{
+    public class MovieBasic
+    {
+        public string Title { get; set; }
+        public string ItemURL { get; set; }
+        public string Img_s { get; set; }
+        public string Img_s_file { get; set; }
+        public List<string> Actor { get; set; }
+        public string Label { get; set; }
+        public string Maker { get; set; }
+        public override string ToString()
+        {
+            return string.Format("Title:{0}\r\nActor:{1}\r\nURL:{2}\r\nLabel:{3}\r\nMaker:{4}\r\nImg_s:{5}", Title, Actor, ItemURL, Label, Maker,Img_s);
+        }
+    }
+    
+}

+ 36 - 0
Entity/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("Entity")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Entity")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("0051b0a5-fb0a-4e94-bf2e-b9340754f0cd")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+//      主版本
+//      次版本 
+//      内部版本号
+//      修订号
+//
+// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 63 - 0
Entity/Properties/Resources.Designer.cs

@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.34014
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace AVSORTER.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   返回此类使用的缓存的 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AVSORTER.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   使用此强类型资源类,为所有资源查找
+        ///   重写当前线程的 CurrentUICulture 属性。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 120 - 0
Entity/Properties/Resources.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>

+ 269 - 0
Entity/SearchItem.cs

@@ -0,0 +1,269 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+
+namespace AVSORTER
+{
+    public class SearchItem
+    {
+        #region 构造函数 public FileItem(string codeString,IGetable getor)
+
+        public SearchItem(string codeString,IGetable getor)
+        {
+            this._queryString = codeString;
+            this.Getor = getor;
+        }
+        #endregion
+
+        #region 属性 查询字符串public string SeedString
+
+        private string _queryString;
+        /// <summary>
+        /// 查询的字符串
+        /// </summary>
+        public string SeedString
+        {
+            get { return _queryString; }
+        }
+        #endregion
+
+        #region 属性 影片信息 public Movie MovieDetail
+        private Movie _mv;
+
+        public Movie MovieDetail
+        {
+            get { return _mv; }
+        }
+        #endregion
+        
+        /// <summary>
+        /// 结果列表
+        /// </summary>
+        public List<MovieBasic> MovieBasicList { get; set; }
+
+
+        private QStatus _status = QStatus.未开始;
+
+        public QStatus Status
+        {
+            get { return _status; }
+            set { _status = value; }
+        }
+        public object Tag { get; set; }
+
+        /// <summary>
+        /// 设定选择结果
+        /// </summary>
+        /// <param name="index"></param>
+        public void Select(int index)
+        {
+            this.chooseIndex = index;
+
+            _startGetMovie();
+        }
+        public bool IsSelected
+        {
+            get
+            {
+                if (this.chooseIndex==-1)
+                {
+                    return false;
+                }
+                else
+                {
+                    return true;
+                }
+            }
+        }
+        /// <summary>
+        /// 设定选择结果
+        /// </summary>
+        /// <param name="basic"></param>
+        public void Select(MovieBasic basic)
+        {
+            this.chooseIndex = MovieBasicList.IndexOf(basic);
+            _startGetMovie();
+        }
+
+        public MovieBasic SelectedMovieBasic
+        {
+            get
+            {
+                if (this.IsSelected)
+                {
+                    return this.MovieBasicList[chooseIndex];
+                }
+                else
+                {
+                    return null;
+                }
+            }
+        }
+
+        private void _startGetMovie()
+        {
+            try
+            {
+                if (this.chooseIndex != -1)
+                {
+                    Func<MovieBasic, Movie> fuc = new Func<MovieBasic, Movie>(Getor.GetMovie);
+                    fuc.BeginInvoke(this.MovieBasicList[this.chooseIndex], _getMovieCallback, fuc);
+                    RaiseStatusChangeEvent(QStatus.查询完成一个结果, QStatus.获取信息中, "");
+                }
+                else
+                {
+                    this._status = QStatus.出错;
+                    throw new Exception("还没有选定影片");
+                }
+            }
+            catch (Exception ee)
+            {
+                
+                throw ee;
+            }
+        }
+        private void _getMovieCallback(IAsyncResult res)
+        {
+
+
+            try
+            {
+                this._mv = (res.AsyncState as Func<MovieBasic, Movie>).EndInvoke(res);
+                this._status = QStatus.获取信息完成;
+                if (IsDownloadCover)
+                {
+
+                    RaiseStatusChangeEvent(QStatus.获取信息中, QStatus.获取信息完成, "已经获取影片信息!");
+                    this._status = QStatus.下载封面中;
+                    RaiseStatusChangeEvent(QStatus.获取信息完成, QStatus.下载封面中, "已经获取影片信息!");
+                    _startGetCover();
+                }
+                else
+                {
+                    this._status = QStatus.准备好移动文件;
+                    RaiseStatusChangeEvent(QStatus.获取信息中, QStatus.准备好移动文件, "已经获取影片信息,不要求获取封面!");
+                }
+            }
+            catch (Exception)
+            {
+                RaiseStatusChangeEvent(QStatus.获取信息中, QStatus.出错, "获取影片信息时出错!");
+            }
+            
+        }
+
+        private void _startGetCover()
+        {
+            if (IsDownloadCover)
+            {
+                Func<Movie, bool> fuc = new Func<Movie, bool>(Getor.GetCover);
+                fuc.BeginInvoke(this._mv, _getCoverCallBack, fuc);
+            }
+        }
+        private void _getCoverCallBack(IAsyncResult res)
+        {
+            try
+            {
+                var ress = (res.AsyncState as Func<Movie, bool>).EndInvoke(res);
+
+                this._status = QStatus.准备好移动文件;
+                RaiseStatusChangeEvent(QStatus.下载封面中, QStatus.准备好移动文件, "封面下载完毕");
+            }
+            catch (Exception)
+            {
+                RaiseStatusChangeEvent(QStatus.下载封面中, QStatus.出错, "下载封面出错");
+            }
+
+        }
+
+        virtual protected void RaiseStatusChangeEvent(QStatus b,QStatus aft,string msg)
+        {
+            this._status = aft;
+            if (OnStatusChange!=null)
+            {
+                OnStatusChange(this,new StatusChangeEventArgs(b,aft,msg));
+            }
+        }
+        public event StatusChangeEvent OnStatusChange;
+
+        private int chooseIndex = -1;
+
+        public IGetable Getor
+        {
+            get;
+            set;
+        }
+
+        public void StartQuery()
+        {
+            if (this.Getor!=null)
+            {
+                
+                //this.MovieBasicList = Getor.Query(SeedString);
+                Func<string, List<MovieBasic>> fuc = new Func<string, List<MovieBasic>>(Getor.Query);
+                fuc.BeginInvoke(SeedString, queryFinishCallBack, fuc);
+                RaiseStatusChangeEvent(QStatus.未开始, QStatus.查询中, "");
+            }
+            else
+            {
+                RaiseStatusChangeEvent(QStatus.查询中, QStatus.出错, "查询影片出错");
+            }
+        }
+        private void queryFinishCallBack(IAsyncResult obj)
+        {
+            try
+            {
+
+                this.MovieBasicList = (obj.AsyncState as Func<string, List<MovieBasic>>).EndInvoke(obj);
+                if (this.MovieBasicList.Count > 1)
+                {
+                    RaiseStatusChangeEvent(QStatus.查询中, QStatus.多个结果请选择一个, "");
+                }
+                else if (this.MovieBasicList.Count == 1)
+                {
+                    RaiseStatusChangeEvent(QStatus.查询中, QStatus.查询完成一个结果, "");
+                    if (this.IsAutoSelect)
+                    {
+                        RaiseStatusChangeEvent(QStatus.查询完成一个结果, QStatus.获取信息中, "");
+                        Select(0);
+                    }
+                }
+                else
+                {
+                    RaiseStatusChangeEvent(QStatus.查询中, QStatus.查询完成无匹配, "");
+                }
+            }
+            catch (Exception)
+            {
+                RaiseStatusChangeEvent(QStatus.查询中, QStatus.出错, "查询出错");
+                this.MovieBasicList = null;
+                this.chooseIndex = -1;
+            }
+
+        }
+
+        public class StatusChangeEventArgs : EventArgs
+        {
+            public QStatus Before { get; set; }
+            public QStatus After { get; set; }
+            public string Message { get; set; }
+            public StatusChangeEventArgs(QStatus _before, QStatus _after,string _msg)
+            {
+                this.Before = _before;
+                this.After = _after;
+                this.Message = _msg;
+            }
+        }
+        public delegate void StatusChangeEvent(object sender, StatusChangeEventArgs e);
+        /// <summary>
+        /// 是否自动下载封面
+        /// </summary>
+        public bool IsDownloadCover { get; set; }
+        /// <summary>
+        /// 当查询结果只有一个时候,是否自动下载详细信息。
+        /// </summary>
+        public bool IsAutoSelect { get; set; }
+    }
+
+}

+ 58 - 0
Entity/Tools.cs

@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace AVSORTER
+{
+    public class Tools
+    {
+        public static string Fcode(string code)
+        {
+            Regex r1 = new Regex(@"(\d{0,1}[a-zA-Z]{2,5})[- _]{0,1}(\d{2,4})");
+
+            if (r1.Match(code).Value=="")
+	        {
+                return code;
+	        } 
+            var c = r1.Match(code).Groups[1].Value;
+            var n = r1.Match(code).Groups[2].Value;
+            
+            return (c + "-" + n).ToUpper();
+        }
+
+        public static string ListToString(IEnumerable<string> list)
+        {
+            if (list.Count()==0)
+            {
+                return string.Empty;
+            }
+            StringBuilder sb = new StringBuilder();
+            foreach (string item in list)
+            {
+                sb.Append(item);
+                sb.Append(",");
+            }
+            sb.Remove(sb.Length - 1, 1);
+            return sb.ToString();
+        }
+
+        public static string RemoveInvalidChars(string Title)
+        {
+            var ichr = Path.GetInvalidPathChars();
+            foreach (var item in ichr)
+            {
+                Title = Title.Replace(item, '_');
+            }
+            ichr = Path.GetInvalidFileNameChars();
+            foreach (var item in ichr)
+            {
+                Title = Title.Replace(item, '_');
+            }
+            return Title;
+        }
+
+    }
+}

BIN
Entity/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
Entity/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


+ 27 - 0
Entity/obj/Debug/Entity.csproj.FileListAbsolute.txt

@@ -0,0 +1,27 @@
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\Entity\bin\Debug\Entity.dll
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\Entity\bin\Debug\Entity.pdb
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\Entity\obj\Debug\PICSOUL.Properties.Resources.resources
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\Entity\obj\Debug\Entity.csproj.GenerateResource.Cache
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\Entity\obj\Debug\Entity.dll
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\Entity\obj\Debug\Entity.pdb
+C:\Users\ShenJian281\Documents\Visual Studio 2010\Projects\PICSOUL\Entity\obj\Debug\Entity.csprojResolveAssemblyReference.cache
+C:\Users\su\Desktop\PICSOUL\Entity\bin\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL\Entity\bin\Debug\Entity.pdb
+C:\Users\su\Desktop\PICSOUL\Entity\obj\Debug\Entity.csprojResolveAssemblyReference.cache
+C:\Users\su\Desktop\PICSOUL\Entity\obj\Debug\PICSOUL.Properties.Resources.resources
+C:\Users\su\Desktop\PICSOUL\Entity\obj\Debug\Entity.csproj.GenerateResource.Cache
+C:\Users\su\Desktop\PICSOUL\Entity\obj\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL\Entity\obj\Debug\Entity.pdb
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\Entity\bin\Debug\Entity.dll
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\Entity\bin\Debug\Entity.pdb
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\PICSOUL.Properties.Resources.resources
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.csproj.GenerateResource.Cache
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.dll
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\bin\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\bin\Debug\Entity.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.csproj.GenerateResource.Cache
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\Entity.csprojResolveAssemblyReference.cache
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\Entity\obj\Debug\AVSORTER.Properties.Resources.resources

BIN
Entity/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll


BIN
PicSo/1414496318_339862.ico


+ 184 - 0
PicSo/BasicContainer.Designer.cs

@@ -0,0 +1,184 @@
+namespace AVSORTER
+{
+    partial class BasicContainer
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            this.txt_title = new System.Windows.Forms.TextBox();
+            this.txt_Maker = new System.Windows.Forms.TextBox();
+            this.txt_actor = new System.Windows.Forms.TextBox();
+            this.txt_URL = new System.Windows.Forms.TextBox();
+            this.txt_labl = new System.Windows.Forms.TextBox();
+            this.btn_ShowDetail = new System.Windows.Forms.Button();
+            this.cb_ShowPic = new System.Windows.Forms.CheckBox();
+            this.btn_pre = new System.Windows.Forms.Button();
+            this.btn_next = new System.Windows.Forms.Button();
+            this.progressBar1 = new System.Windows.Forms.ProgressBar();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // pictureBox1
+            // 
+            this.pictureBox1.Location = new System.Drawing.Point(3, 3);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(125, 173);
+            this.pictureBox1.TabIndex = 0;
+            this.pictureBox1.TabStop = false;
+            // 
+            // txt_title
+            // 
+            this.txt_title.Enabled = false;
+            this.txt_title.Location = new System.Drawing.Point(131, 3);
+            this.txt_title.Name = "txt_title";
+            this.txt_title.Size = new System.Drawing.Size(273, 21);
+            this.txt_title.TabIndex = 1;
+            this.txt_title.Text = "title";
+            this.txt_title.TextChanged += new System.EventHandler(this.txt_title_TextChanged);
+            // 
+            // txt_Maker
+            // 
+            this.txt_Maker.Enabled = false;
+            this.txt_Maker.Location = new System.Drawing.Point(131, 57);
+            this.txt_Maker.Name = "txt_Maker";
+            this.txt_Maker.Size = new System.Drawing.Size(273, 21);
+            this.txt_Maker.TabIndex = 2;
+            this.txt_Maker.Text = "Maker";
+            // 
+            // txt_actor
+            // 
+            this.txt_actor.Enabled = false;
+            this.txt_actor.Location = new System.Drawing.Point(131, 84);
+            this.txt_actor.Name = "txt_actor";
+            this.txt_actor.Size = new System.Drawing.Size(273, 21);
+            this.txt_actor.TabIndex = 3;
+            this.txt_actor.Text = "演员";
+            // 
+            // txt_URL
+            // 
+            this.txt_URL.Enabled = false;
+            this.txt_URL.Location = new System.Drawing.Point(131, 30);
+            this.txt_URL.Name = "txt_URL";
+            this.txt_URL.Size = new System.Drawing.Size(273, 21);
+            this.txt_URL.TabIndex = 4;
+            this.txt_URL.Text = "URL";
+            // 
+            // txt_labl
+            // 
+            this.txt_labl.Enabled = false;
+            this.txt_labl.Location = new System.Drawing.Point(131, 111);
+            this.txt_labl.Name = "txt_labl";
+            this.txt_labl.Size = new System.Drawing.Size(273, 21);
+            this.txt_labl.TabIndex = 5;
+            this.txt_labl.Text = "Label";
+            // 
+            // btn_ShowDetail
+            // 
+            this.btn_ShowDetail.Location = new System.Drawing.Point(234, 138);
+            this.btn_ShowDetail.Name = "btn_ShowDetail";
+            this.btn_ShowDetail.Size = new System.Drawing.Size(56, 23);
+            this.btn_ShowDetail.TabIndex = 6;
+            this.btn_ShowDetail.Text = "详细";
+            this.btn_ShowDetail.UseVisualStyleBackColor = true;
+            this.btn_ShowDetail.Click += new System.EventHandler(this.btn_ShowDetail_Click);
+            // 
+            // cb_ShowPic
+            // 
+            this.cb_ShowPic.AutoSize = true;
+            this.cb_ShowPic.Location = new System.Drawing.Point(134, 138);
+            this.cb_ShowPic.Name = "cb_ShowPic";
+            this.cb_ShowPic.Size = new System.Drawing.Size(72, 16);
+            this.cb_ShowPic.TabIndex = 7;
+            this.cb_ShowPic.Text = "显示图片";
+            this.cb_ShowPic.UseVisualStyleBackColor = true;
+            // 
+            // btn_pre
+            // 
+            this.btn_pre.Location = new System.Drawing.Point(296, 138);
+            this.btn_pre.Name = "btn_pre";
+            this.btn_pre.Size = new System.Drawing.Size(51, 23);
+            this.btn_pre.TabIndex = 22;
+            this.btn_pre.Text = "上一个";
+            this.btn_pre.UseVisualStyleBackColor = true;
+            this.btn_pre.Click += new System.EventHandler(this.btn_pre_Click);
+            // 
+            // btn_next
+            // 
+            this.btn_next.Location = new System.Drawing.Point(353, 138);
+            this.btn_next.Name = "btn_next";
+            this.btn_next.Size = new System.Drawing.Size(51, 23);
+            this.btn_next.TabIndex = 21;
+            this.btn_next.Text = "下一个";
+            this.btn_next.UseVisualStyleBackColor = true;
+            this.btn_next.Click += new System.EventHandler(this.btn_next_Click);
+            // 
+            // progressBar1
+            // 
+            this.progressBar1.Location = new System.Drawing.Point(16, 82);
+            this.progressBar1.Name = "progressBar1";
+            this.progressBar1.Size = new System.Drawing.Size(100, 23);
+            this.progressBar1.TabIndex = 23;
+            // 
+            // BasicContainer
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.Controls.Add(this.pictureBox1);
+            this.Controls.Add(this.progressBar1);
+            this.Controls.Add(this.btn_pre);
+            this.Controls.Add(this.btn_next);
+            this.Controls.Add(this.cb_ShowPic);
+            this.Controls.Add(this.btn_ShowDetail);
+            this.Controls.Add(this.txt_labl);
+            this.Controls.Add(this.txt_URL);
+            this.Controls.Add(this.txt_actor);
+            this.Controls.Add(this.txt_Maker);
+            this.Controls.Add(this.txt_title);
+            this.Name = "BasicContainer";
+            this.Size = new System.Drawing.Size(409, 180);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.PictureBox pictureBox1;
+        private System.Windows.Forms.TextBox txt_title;
+        private System.Windows.Forms.TextBox txt_Maker;
+        private System.Windows.Forms.TextBox txt_actor;
+        private System.Windows.Forms.TextBox txt_URL;
+        private System.Windows.Forms.TextBox txt_labl;
+        private System.Windows.Forms.Button btn_ShowDetail;
+        private System.Windows.Forms.CheckBox cb_ShowPic;
+        private System.Windows.Forms.Button btn_pre;
+        private System.Windows.Forms.Button btn_next;
+        private System.Windows.Forms.ProgressBar progressBar1;
+    }
+}

+ 171 - 0
PicSo/BasicContainer.cs

@@ -0,0 +1,171 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.IO;
+using System.Diagnostics;
+
+namespace AVSORTER
+{
+    public partial class BasicContainer : UserControl
+    {
+        public BasicContainer()
+        {
+            InitializeComponent();
+            this.pictureBox1.Visible = false;
+        }
+        
+        MovieBasic movie;
+
+        public bool IsShowPic { get; set; }
+
+        public MovieBasic MovieB
+        {
+            get
+            {
+                return movie;
+            }
+            set 
+            {
+                this.movie = value;
+                if (this.movie!=null)
+                {
+                    RefreshUI();
+                }
+      
+            } 
+        }
+        private List<MovieBasic> _listmovieBasic;
+        public List<MovieBasic> ListMovieBasic 
+        {
+            get
+            {
+                return _listmovieBasic;
+            }
+            set
+            {
+                if (value!=null && value.Count>0)
+                {
+                    _listmovieBasic = value;
+                    this.btn_next.Visible = true;
+                    this.btn_pre.Visible = true;
+                }
+            }
+        }
+
+        int index = -1;
+
+        private void RefreshUI()
+        {
+            
+            this.txt_actor.Text = Tools.ListToString(this.movie.Actor);
+            IsShowPic = this.cb_ShowPic.Checked;
+            this.txt_labl.Text = movie.Label;
+            this.txt_title.Text = movie.Title;
+            this.txt_URL.Text = movie.ItemURL;
+            this.txt_Maker.Text = movie.Maker;
+            if (IsShowPic && string.IsNullOrEmpty(MovieB.Img_s_file))
+            {
+                this.pictureBox1.Visible = false;
+                Gets.MyWebClient wc = new Gets.MyWebClient();
+                wc.ReferURL = this.movie.ItemURL;
+                string fi = this.movie.Title + ".jpg";
+                fi = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"SmallImage",Path.ChangeExtension(fi, "jpg"));
+                try
+                {
+                    if (!Directory.Exists(Path.GetDirectoryName(fi)))
+                    {
+                        Directory.CreateDirectory(Path.GetDirectoryName(fi));
+                    }
+                    //wc.DownloadFile(movie.Img_s, fi);
+                    wc.DownloadFileCompleted += wc_DownloadFileCompleted;
+                    wc.DownloadProgressChanged += wc_DownloadProgressChanged;
+                    wc.DownloadFileAsync(new Uri(movie.Img_s), fi,fi);
+                    
+                }
+                catch (Exception s)
+                {
+                    throw new Exception("下载缩略图失败!");
+                }
+            }
+            else if(IsShowPic)
+            {
+                this.pictureBox1.Image = Image.FromFile(MovieB.Img_s_file);
+            }
+        }
+
+        void wc_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
+        {
+            // e.ProgressPercentage
+            this.progressBar1.Value = e.ProgressPercentage;
+        }
+
+        void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
+        {
+            try
+            {
+                if (this.MovieB.Title == Path.GetFileNameWithoutExtension(e.UserState as string))
+                {
+                    this.MovieB.Img_s_file = e.UserState as string;
+                    this.pictureBox1.Image = Image.FromFile(e.UserState as string);
+                    this.pictureBox1.Visible = true;
+                }
+            }
+            catch
+            {
+                
+            }
+        }
+
+        private void btn_ShowDetail_Click(object sender, EventArgs e)
+        {
+            Process.Start(this.MovieB.ItemURL);
+        }
+
+        private void txt_title_TextChanged(object sender, EventArgs e)
+        {
+
+        }
+
+        private void btn_pre_Click(object sender, EventArgs e)
+        {
+            if (this.ListMovieBasic.Count>1)
+            {
+                this.index = this.ListMovieBasic.IndexOf(MovieB);
+                if (this.index>0)
+                {
+                    this.MovieB = this.ListMovieBasic[--index];
+                }
+            }
+            else
+            {
+                this.btn_pre.Visible = false;
+            }
+        }
+
+        private void btn_next_Click(object sender, EventArgs e)
+        {
+            if (this.ListMovieBasic.Count > 1)
+            {
+                this.index = this.ListMovieBasic.IndexOf(MovieB);
+                if (this.index < this.ListMovieBasic.Count - 1)
+                {
+                    this.MovieB = this.ListMovieBasic[++index];
+                }
+            }
+            else
+            {
+                this.btn_next.Visible = false;
+            }
+        }
+
+        private void btn_select_Click(object sender, EventArgs e)
+        {
+
+        }
+    }
+}

+ 120 - 0
PicSo/BasicContainer.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>

+ 528 - 0
PicSo/Form1.Designer.cs

@@ -0,0 +1,528 @@
+namespace PicSo
+{
+    partial class Form1
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
+            this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+            this.menu_BigCover = new System.Windows.Forms.ToolStripMenuItem();
+            this.menu_BrowerFile = new System.Windows.Forms.ToolStripMenuItem();
+            this.menu_ChangeFcode = new System.Windows.Forms.ToolStripMenuItem();
+            this.menu_remove = new System.Windows.Forms.ToolStripMenuItem();
+            this.lbl_YouMaStatus = new System.Windows.Forms.Label();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.btn_rebuild = new System.Windows.Forms.Button();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.btn_AddNewEmptyItem = new System.Windows.Forms.Button();
+            this.txt_EmptyItemKeyWord = new System.Windows.Forms.TextBox();
+            this.listView1 = new System.Windows.Forms.ListView();
+            this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.btn_removeItem = new System.Windows.Forms.Button();
+            this.btn_brower = new System.Windows.Forms.Button();
+            this.cb_AutoSelect = new System.Windows.Forms.CheckBox();
+            this.btn_Clear = new System.Windows.Forms.Button();
+            this.cb_isCoverDownload = new System.Windows.Forms.CheckBox();
+            this.btn_GO = new System.Windows.Forms.Button();
+            this.btn_select = new System.Windows.Forms.Button();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.btn_MoveFile = new System.Windows.Forms.Button();
+            this.cb_IsShowlog = new System.Windows.Forms.CheckBox();
+            this.txt_Dest = new System.Windows.Forms.TextBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txt_sub = new System.Windows.Forms.TextBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.tabPage2 = new System.Windows.Forms.TabPage();
+            this.listBox1 = new System.Windows.Forms.ListBox();
+            this.cb_AutoCorrect = new System.Windows.Forms.CheckBox();
+            this.btn_LocalSearch = new System.Windows.Forms.Button();
+            this.txt_LocalSearchKeyWord = new System.Windows.Forms.TextBox();
+            this.bc = new AVSORTER.BasicContainer();
+            this.movieContainer1 = new PicSo.MovieContainer();
+            this.contextMenuStrip1.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            this.groupBox1.SuspendLayout();
+            this.tabControl1.SuspendLayout();
+            this.tabPage2.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // contextMenuStrip1
+            // 
+            this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.menu_BigCover,
+            this.menu_BrowerFile,
+            this.menu_ChangeFcode,
+            this.menu_remove});
+            this.contextMenuStrip1.Name = "contextMenuStrip1";
+            this.contextMenuStrip1.Size = new System.Drawing.Size(185, 92);
+            // 
+            // menu_BigCover
+            // 
+            this.menu_BigCover.Font = new System.Drawing.Font("Microsoft YaHei UI", 9F, System.Drawing.FontStyle.Bold);
+            this.menu_BigCover.Name = "menu_BigCover";
+            this.menu_BigCover.Size = new System.Drawing.Size(184, 22);
+            this.menu_BigCover.Text = "查看大图";
+            this.menu_BigCover.Click += new System.EventHandler(this.menu_BigCover_Click);
+            // 
+            // menu_BrowerFile
+            // 
+            this.menu_BrowerFile.Name = "menu_BrowerFile";
+            this.menu_BrowerFile.Size = new System.Drawing.Size(184, 22);
+            this.menu_BrowerFile.Text = "查看文件位置";
+            this.menu_BrowerFile.Click += new System.EventHandler(this.menu_BrowerFile_Click);
+            // 
+            // menu_ChangeFcode
+            // 
+            this.menu_ChangeFcode.Name = "menu_ChangeFcode";
+            this.menu_ChangeFcode.Size = new System.Drawing.Size(184, 22);
+            this.menu_ChangeFcode.Text = "更改此项目的关键字";
+            this.menu_ChangeFcode.Click += new System.EventHandler(this.menu_ChangeFcode_Click);
+            // 
+            // menu_remove
+            // 
+            this.menu_remove.Name = "menu_remove";
+            this.menu_remove.Size = new System.Drawing.Size(184, 22);
+            this.menu_remove.Text = "移除项目";
+            this.menu_remove.Click += new System.EventHandler(this.menu_remove_Click);
+            // 
+            // lbl_YouMaStatus
+            // 
+            this.lbl_YouMaStatus.AutoSize = true;
+            this.lbl_YouMaStatus.BackColor = System.Drawing.Color.Red;
+            this.lbl_YouMaStatus.Location = new System.Drawing.Point(14, 607);
+            this.lbl_YouMaStatus.Name = "lbl_YouMaStatus";
+            this.lbl_YouMaStatus.Size = new System.Drawing.Size(77, 12);
+            this.lbl_YouMaStatus.TabIndex = 26;
+            this.lbl_YouMaStatus.Text = "骑兵组件状态";
+            // 
+            // tabPage1
+            // 
+            this.tabPage1.Controls.Add(this.btn_rebuild);
+            this.tabPage1.Controls.Add(this.groupBox2);
+            this.tabPage1.Controls.Add(this.btn_select);
+            this.tabPage1.Controls.Add(this.groupBox1);
+            this.tabPage1.Controls.Add(this.bc);
+            this.tabPage1.Location = new System.Drawing.Point(4, 22);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(965, 557);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "批量文件处理";
+            this.tabPage1.UseVisualStyleBackColor = true;
+            // 
+            // btn_rebuild
+            // 
+            this.btn_rebuild.Location = new System.Drawing.Point(681, 460);
+            this.btn_rebuild.Name = "btn_rebuild";
+            this.btn_rebuild.Size = new System.Drawing.Size(119, 60);
+            this.btn_rebuild.TabIndex = 20;
+            this.btn_rebuild.Text = "重建数据库\r\n\r\n不移动文件";
+            this.btn_rebuild.UseVisualStyleBackColor = true;
+            this.btn_rebuild.Click += new System.EventHandler(this.btn_rebuild_Click);
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.btn_AddNewEmptyItem);
+            this.groupBox2.Controls.Add(this.txt_EmptyItemKeyWord);
+            this.groupBox2.Controls.Add(this.listView1);
+            this.groupBox2.Controls.Add(this.btn_removeItem);
+            this.groupBox2.Controls.Add(this.btn_brower);
+            this.groupBox2.Controls.Add(this.cb_AutoSelect);
+            this.groupBox2.Controls.Add(this.btn_Clear);
+            this.groupBox2.Controls.Add(this.cb_isCoverDownload);
+            this.groupBox2.Controls.Add(this.btn_GO);
+            this.groupBox2.Location = new System.Drawing.Point(6, 6);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(800, 324);
+            this.groupBox2.TabIndex = 25;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "文件列表处理";
+            // 
+            // btn_AddNewEmptyItem
+            // 
+            this.btn_AddNewEmptyItem.Location = new System.Drawing.Point(139, 47);
+            this.btn_AddNewEmptyItem.Name = "btn_AddNewEmptyItem";
+            this.btn_AddNewEmptyItem.Size = new System.Drawing.Size(127, 23);
+            this.btn_AddNewEmptyItem.TabIndex = 19;
+            this.btn_AddNewEmptyItem.Text = "Add New Item";
+            this.btn_AddNewEmptyItem.UseVisualStyleBackColor = true;
+            this.btn_AddNewEmptyItem.Click += new System.EventHandler(this.btn_AddNewEmptyItem_Click);
+            // 
+            // txt_EmptyItemKeyWord
+            // 
+            this.txt_EmptyItemKeyWord.Location = new System.Drawing.Point(6, 49);
+            this.txt_EmptyItemKeyWord.Name = "txt_EmptyItemKeyWord";
+            this.txt_EmptyItemKeyWord.Size = new System.Drawing.Size(127, 21);
+            this.txt_EmptyItemKeyWord.TabIndex = 18;
+            // 
+            // listView1
+            // 
+            this.listView1.AllowDrop = true;
+            this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.columnHeader1,
+            this.columnHeader2,
+            this.columnHeader3});
+            this.listView1.ContextMenuStrip = this.contextMenuStrip1;
+            this.listView1.FullRowSelect = true;
+            this.listView1.Location = new System.Drawing.Point(6, 79);
+            this.listView1.Name = "listView1";
+            this.listView1.Size = new System.Drawing.Size(788, 238);
+            this.listView1.TabIndex = 6;
+            this.listView1.UseCompatibleStateImageBehavior = false;
+            this.listView1.View = System.Windows.Forms.View.Details;
+            this.listView1.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listView1_ColumnClick);
+            this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
+            this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
+            this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
+            this.listView1.DoubleClick += new System.EventHandler(this.listView1_DoubleClick);
+            // 
+            // columnHeader1
+            // 
+            this.columnHeader1.Text = "文件名";
+            this.columnHeader1.Width = 445;
+            // 
+            // columnHeader2
+            // 
+            this.columnHeader2.Text = "番号";
+            this.columnHeader2.Width = 104;
+            // 
+            // columnHeader3
+            // 
+            this.columnHeader3.Text = "状态";
+            this.columnHeader3.Width = 158;
+            // 
+            // btn_removeItem
+            // 
+            this.btn_removeItem.Location = new System.Drawing.Point(139, 20);
+            this.btn_removeItem.Name = "btn_removeItem";
+            this.btn_removeItem.Size = new System.Drawing.Size(127, 23);
+            this.btn_removeItem.TabIndex = 4;
+            this.btn_removeItem.Text = "删除选择项目";
+            this.btn_removeItem.UseVisualStyleBackColor = true;
+            this.btn_removeItem.Click += new System.EventHandler(this.btn_removeItem_Click);
+            // 
+            // btn_brower
+            // 
+            this.btn_brower.Location = new System.Drawing.Point(6, 20);
+            this.btn_brower.Name = "btn_brower";
+            this.btn_brower.Size = new System.Drawing.Size(127, 23);
+            this.btn_brower.TabIndex = 3;
+            this.btn_brower.Text = "浏览文件夹...";
+            this.btn_brower.UseVisualStyleBackColor = true;
+            this.btn_brower.Click += new System.EventHandler(this.btn_brower_Click);
+            // 
+            // cb_AutoSelect
+            // 
+            this.cb_AutoSelect.AutoSize = true;
+            this.cb_AutoSelect.Checked = true;
+            this.cb_AutoSelect.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cb_AutoSelect.Location = new System.Drawing.Point(406, 24);
+            this.cb_AutoSelect.Name = "cb_AutoSelect";
+            this.cb_AutoSelect.Size = new System.Drawing.Size(120, 16);
+            this.cb_AutoSelect.TabIndex = 17;
+            this.cb_AutoSelect.Text = "自动对应唯一结果";
+            this.cb_AutoSelect.UseVisualStyleBackColor = true;
+            // 
+            // btn_Clear
+            // 
+            this.btn_Clear.Location = new System.Drawing.Point(272, 20);
+            this.btn_Clear.Name = "btn_Clear";
+            this.btn_Clear.Size = new System.Drawing.Size(128, 50);
+            this.btn_Clear.TabIndex = 10;
+            this.btn_Clear.Text = "清除";
+            this.btn_Clear.UseVisualStyleBackColor = true;
+            this.btn_Clear.Click += new System.EventHandler(this.btn_Clear_Click);
+            // 
+            // cb_isCoverDownload
+            // 
+            this.cb_isCoverDownload.AutoSize = true;
+            this.cb_isCoverDownload.Checked = true;
+            this.cb_isCoverDownload.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cb_isCoverDownload.Location = new System.Drawing.Point(406, 41);
+            this.cb_isCoverDownload.Name = "cb_isCoverDownload";
+            this.cb_isCoverDownload.Size = new System.Drawing.Size(72, 16);
+            this.cb_isCoverDownload.TabIndex = 16;
+            this.cb_isCoverDownload.Text = "下载封面";
+            this.cb_isCoverDownload.UseVisualStyleBackColor = true;
+            // 
+            // btn_GO
+            // 
+            this.btn_GO.Location = new System.Drawing.Point(532, 20);
+            this.btn_GO.Name = "btn_GO";
+            this.btn_GO.Size = new System.Drawing.Size(110, 50);
+            this.btn_GO.TabIndex = 15;
+            this.btn_GO.Text = "Go!";
+            this.btn_GO.UseVisualStyleBackColor = true;
+            this.btn_GO.Click += new System.EventHandler(this.btn_GO_Click);
+            // 
+            // btn_select
+            // 
+            this.btn_select.Location = new System.Drawing.Point(423, 341);
+            this.btn_select.Name = "btn_select";
+            this.btn_select.Size = new System.Drawing.Size(159, 63);
+            this.btn_select.TabIndex = 24;
+            this.btn_select.Text = "设置对应关系至选定的项目";
+            this.btn_select.UseVisualStyleBackColor = true;
+            this.btn_select.Click += new System.EventHandler(this.btn_select_Click);
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.btn_MoveFile);
+            this.groupBox1.Controls.Add(this.cb_IsShowlog);
+            this.groupBox1.Controls.Add(this.txt_Dest);
+            this.groupBox1.Controls.Add(this.label2);
+            this.groupBox1.Controls.Add(this.txt_sub);
+            this.groupBox1.Controls.Add(this.label1);
+            this.groupBox1.Location = new System.Drawing.Point(423, 410);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(252, 111);
+            this.groupBox1.TabIndex = 14;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "文件移动设置";
+            this.groupBox1.Enter += new System.EventHandler(this.groupBox1_Enter);
+            // 
+            // btn_MoveFile
+            // 
+            this.btn_MoveFile.Location = new System.Drawing.Point(137, 78);
+            this.btn_MoveFile.Name = "btn_MoveFile";
+            this.btn_MoveFile.Size = new System.Drawing.Size(99, 23);
+            this.btn_MoveFile.TabIndex = 25;
+            this.btn_MoveFile.Text = "移动文件";
+            this.btn_MoveFile.UseVisualStyleBackColor = true;
+            this.btn_MoveFile.Click += new System.EventHandler(this.btn_MoveFile_Click);
+            // 
+            // cb_IsShowlog
+            // 
+            this.cb_IsShowlog.AutoSize = true;
+            this.cb_IsShowlog.Checked = true;
+            this.cb_IsShowlog.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cb_IsShowlog.Location = new System.Drawing.Point(23, 78);
+            this.cb_IsShowlog.Name = "cb_IsShowlog";
+            this.cb_IsShowlog.Size = new System.Drawing.Size(108, 16);
+            this.cb_IsShowlog.TabIndex = 18;
+            this.cb_IsShowlog.Text = "完成后显示日志";
+            this.cb_IsShowlog.UseVisualStyleBackColor = true;
+            this.cb_IsShowlog.CheckedChanged += new System.EventHandler(this.UIParamChange);
+            // 
+            // txt_Dest
+            // 
+            this.txt_Dest.Location = new System.Drawing.Point(75, 20);
+            this.txt_Dest.Name = "txt_Dest";
+            this.txt_Dest.Size = new System.Drawing.Size(161, 21);
+            this.txt_Dest.TabIndex = 9;
+            this.txt_Dest.Leave += new System.EventHandler(this.UIParamChange);
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(16, 50);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(53, 12);
+            this.label2.TabIndex = 13;
+            this.label2.Text = "分类路径";
+            // 
+            // txt_sub
+            // 
+            this.txt_sub.Location = new System.Drawing.Point(75, 47);
+            this.txt_sub.Name = "txt_sub";
+            this.txt_sub.Size = new System.Drawing.Size(161, 21);
+            this.txt_sub.TabIndex = 8;
+            this.txt_sub.Text = "演员\\[番号]标题";
+            this.txt_sub.TextChanged += new System.EventHandler(this.textBox2_TextChanged);
+            this.txt_sub.Leave += new System.EventHandler(this.UIParamChange);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(16, 23);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(53, 12);
+            this.label1.TabIndex = 12;
+            this.label1.Text = "目标路径";
+            // 
+            // tabControl1
+            // 
+            this.tabControl1.Controls.Add(this.tabPage1);
+            this.tabControl1.Controls.Add(this.tabPage2);
+            this.tabControl1.Location = new System.Drawing.Point(12, 12);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(973, 583);
+            this.tabControl1.TabIndex = 26;
+            // 
+            // tabPage2
+            // 
+            this.tabPage2.Controls.Add(this.listBox1);
+            this.tabPage2.Controls.Add(this.cb_AutoCorrect);
+            this.tabPage2.Controls.Add(this.movieContainer1);
+            this.tabPage2.Controls.Add(this.btn_LocalSearch);
+            this.tabPage2.Controls.Add(this.txt_LocalSearchKeyWord);
+            this.tabPage2.Location = new System.Drawing.Point(4, 22);
+            this.tabPage2.Name = "tabPage2";
+            this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage2.Size = new System.Drawing.Size(965, 557);
+            this.tabPage2.TabIndex = 1;
+            this.tabPage2.Text = "本地查询";
+            this.tabPage2.UseVisualStyleBackColor = true;
+            // 
+            // listBox1
+            // 
+            this.listBox1.FormattingEnabled = true;
+            this.listBox1.ItemHeight = 12;
+            this.listBox1.Location = new System.Drawing.Point(6, 33);
+            this.listBox1.Name = "listBox1";
+            this.listBox1.Size = new System.Drawing.Size(913, 136);
+            this.listBox1.TabIndex = 4;
+            this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
+            // 
+            // cb_AutoCorrect
+            // 
+            this.cb_AutoCorrect.AutoSize = true;
+            this.cb_AutoCorrect.Checked = true;
+            this.cb_AutoCorrect.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.cb_AutoCorrect.Location = new System.Drawing.Point(231, 8);
+            this.cb_AutoCorrect.Name = "cb_AutoCorrect";
+            this.cb_AutoCorrect.Size = new System.Drawing.Size(72, 16);
+            this.cb_AutoCorrect.TabIndex = 3;
+            this.cb_AutoCorrect.Text = "自动改正";
+            this.cb_AutoCorrect.UseVisualStyleBackColor = true;
+            // 
+            // btn_LocalSearch
+            // 
+            this.btn_LocalSearch.Location = new System.Drawing.Point(309, 4);
+            this.btn_LocalSearch.Name = "btn_LocalSearch";
+            this.btn_LocalSearch.Size = new System.Drawing.Size(123, 23);
+            this.btn_LocalSearch.TabIndex = 1;
+            this.btn_LocalSearch.Text = "搜索";
+            this.btn_LocalSearch.UseVisualStyleBackColor = true;
+            this.btn_LocalSearch.Click += new System.EventHandler(this.btn_LocalSearch_Click);
+            // 
+            // txt_LocalSearchKeyWord
+            // 
+            this.txt_LocalSearchKeyWord.Location = new System.Drawing.Point(6, 6);
+            this.txt_LocalSearchKeyWord.Name = "txt_LocalSearchKeyWord";
+            this.txt_LocalSearchKeyWord.Size = new System.Drawing.Size(219, 21);
+            this.txt_LocalSearchKeyWord.TabIndex = 0;
+            this.txt_LocalSearchKeyWord.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txt_LocalSearchKeyWord_KeyPress);
+            // 
+            // bc
+            // 
+            this.bc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.bc.IsShowPic = false;
+            this.bc.ListMovieBasic = null;
+            this.bc.Location = new System.Drawing.Point(6, 341);
+            this.bc.MovieB = null;
+            this.bc.Name = "bc";
+            this.bc.Size = new System.Drawing.Size(411, 180);
+            this.bc.TabIndex = 7;
+            this.bc.Load += new System.EventHandler(this.bc_Load);
+            // 
+            // movieContainer1
+            // 
+            this.movieContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.movieContainer1.Location = new System.Drawing.Point(6, 176);
+            this.movieContainer1.Movie = null;
+            this.movieContainer1.MovieList = null;
+            this.movieContainer1.Name = "movieContainer1";
+            this.movieContainer1.Size = new System.Drawing.Size(913, 375);
+            this.movieContainer1.TabIndex = 2;
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(997, 635);
+            this.Controls.Add(this.lbl_YouMaStatus);
+            this.Controls.Add(this.tabControl1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "Form1";
+            this.Text = "AVSorter";
+            this.Load += new System.EventHandler(this.Form1_Load);
+            this.contextMenuStrip1.ResumeLayout(false);
+            this.tabPage1.ResumeLayout(false);
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.tabControl1.ResumeLayout(false);
+            this.tabPage2.ResumeLayout(false);
+            this.tabPage2.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
+        private System.Windows.Forms.ToolStripMenuItem menu_BrowerFile;
+        private System.Windows.Forms.ToolStripMenuItem menu_ChangeFcode;
+        private System.Windows.Forms.ToolStripMenuItem menu_remove;
+        private System.Windows.Forms.Label lbl_YouMaStatus;
+        private System.Windows.Forms.ToolStripMenuItem menu_BigCover;
+        private System.Windows.Forms.TabPage tabPage1;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.ListView listView1;
+        private System.Windows.Forms.ColumnHeader columnHeader1;
+        private System.Windows.Forms.ColumnHeader columnHeader2;
+        private System.Windows.Forms.ColumnHeader columnHeader3;
+        private System.Windows.Forms.Button btn_removeItem;
+        private System.Windows.Forms.Button btn_brower;
+        private System.Windows.Forms.CheckBox cb_AutoSelect;
+        private System.Windows.Forms.Button btn_Clear;
+        private System.Windows.Forms.CheckBox cb_isCoverDownload;
+        private System.Windows.Forms.Button btn_GO;
+        private System.Windows.Forms.Button btn_select;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.Button btn_MoveFile;
+        private System.Windows.Forms.CheckBox cb_IsShowlog;
+        private System.Windows.Forms.TextBox txt_Dest;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txt_sub;
+        private System.Windows.Forms.Label label1;
+        private AVSORTER.BasicContainer bc;
+        private System.Windows.Forms.TabControl tabControl1;
+        private System.Windows.Forms.Button btn_AddNewEmptyItem;
+        private System.Windows.Forms.TextBox txt_EmptyItemKeyWord;
+        private System.Windows.Forms.TabPage tabPage2;
+        private System.Windows.Forms.Button btn_LocalSearch;
+        private System.Windows.Forms.TextBox txt_LocalSearchKeyWord;
+        private MovieContainer movieContainer1;
+        private System.Windows.Forms.CheckBox cb_AutoCorrect;
+        private System.Windows.Forms.Button btn_rebuild;
+        private System.Windows.Forms.ListBox listBox1;
+    }
+}
+

+ 419 - 0
PicSo/Form1.cs

@@ -0,0 +1,419 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.IO;
+using System.Threading;
+
+namespace PicSo
+{
+    public partial class Form1 : Form
+    {
+        public Form1()
+        {
+            InitializeComponent();
+            ListView.CheckForIllegalCrossThreadCalls = false;
+        }
+
+        private void Form1_Load(object sender, EventArgs e)
+        {
+            arzon = new Gets.Arzon(false);
+            arzon.InitCompleted += arzon_InitCompleted;
+            arzon.CookiesInit();
+
+            var f = AVSORTER.FileProcessor.GetInstance();
+            this.txt_Dest.Text = f.DestPath;
+            this.txt_sub.Text = f.SubPath;
+        }
+
+        void arzon_InitCompleted(object sender, EventArgs e)
+        {
+            lbl_YouMaStatus.BackColor = Color.Green;
+        }
+
+        Gets.Arzon arzon;
+
+
+        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
+        {
+
+        }
+
+
+        bool lastSort;
+        private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
+        {
+            try
+            {
+                this.listView1.ListViewItemSorter = new ListViewColumnSorter(e.Column, !lastSort);
+                lastSort = !lastSort;
+            }
+            catch (Exception)
+            {
+
+            }
+        }
+
+        //void Go()
+        //{
+        //    try
+        //    {
+        //        for (int i = 0; i < this.listView1.Items.Count; i++)
+        //        {
+        //            this.listView1.Items[i].SubItems.Add("查询品番...");
+        //            var mbs = arzon.Query(this.listView1.Items[i].SubItems[1].Text);
+        //            if (mbs.Count == 1)
+        //            {
+        //                this.bc.MovieB = mbs[0];
+        //                this.listView1.Items[i].SubItems[2].Text = "下载封面...";
+        //                var mv = arzon.GetMovie(this.bc.MovieB);
+        //                arzon.GetCover(mv);
+        //                this.listView1.Items[i].SubItems[2].Text = "完成";
+
+        //                f.MakeMove(mv, listView1.Items[i].Text);
+
+        //            }
+        //            else
+        //            {
+        //                this.listView1.Items[i].SubItems[2].Text = "未找到";
+        //            }
+        //        }
+        //    }
+        //    finally
+        //    {
+        //        f.WriteLog();
+        //    }
+
+        //}
+
+
+        private void textBox2_TextChanged(object sender, EventArgs e)
+        {
+
+        }
+
+        private void btn_Clear_Click(object sender, EventArgs e)
+        {
+            this.listView1.Items.Clear();
+            this.listView1.ListViewItemSorter = null;
+            AVSORTER.FileProcessor.GetInstance().Files.Clear();
+        }
+
+        private void btn_removeItem_Click(object sender, EventArgs e)
+        {
+            while (this.listView1.SelectedItems.Count > 0)
+            {
+                this.listView1.Items.Remove(this.listView1.SelectedItems[0]);
+            }
+        }
+
+        private void btn_brower_Click(object sender, EventArgs e)
+        {
+            FolderBrowserDialog fbd = new FolderBrowserDialog();
+            if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+            {
+                var f = AVSORTER.FileProcessor.GetInstance();
+                f.AddDirectory(fbd.SelectedPath);
+                List<ListViewItem> li = new List<ListViewItem>();
+                for (int i = 0; i < f.Files.Count; i++)
+                {
+                    li.Add(new ListViewItem(f.Files[i]));
+                }
+                this.listView1.Items.AddRange(li.ToArray());
+            }
+            for (int i = 0; i < this.listView1.Items.Count; i++)
+            {
+                this.listView1.Items[i].SubItems.Add(AVSORTER.Tools.Fcode(Path.GetFileNameWithoutExtension(this.listView1.Items[i].Text)));
+                this.listView1.Items[i].SubItems.Add("");
+            }
+        }
+        void initFileProcessor()
+        {
+            var f = AVSORTER.FileProcessor.GetInstance();
+            if (f != null)
+            {
+                f.DestPath = txt_Dest.Text;
+                f.SubPath = txt_sub.Text;
+                f.ShowLog = cb_IsShowlog.Checked;
+                new AVSORTER.DB.AVDB().SetDestPath(f.DestPath);
+                new AVSORTER.DB.AVDB().SetSubPath(f.SubPath);
+            }
+        }
+
+        private void btn_GO_Click(object sender, EventArgs e)
+        {
+            foreach (ListViewItem item in listView1.Items)
+            {
+                var fi = new AVSORTER.SearchItem(item.SubItems[1].Text, arzon.Clone() as AVSORTER.IGetable);
+
+                item.Tag = fi;
+                fi.OnStatusChange += fi_OnStatusChange;
+                fi.Tag = item;
+                fi.IsAutoSelect = cb_AutoSelect.Checked;
+                fi.IsDownloadCover = cb_isCoverDownload.Checked;
+                fi.StartQuery();
+            }
+        }
+
+        void fi_OnStatusChange(object sender, AVSORTER.SearchItem.StatusChangeEventArgs e)
+        {
+            ((sender as AVSORTER.SearchItem).Tag as ListViewItem).SubItems[2].Text = e.After.ToString();
+
+
+
+        }
+
+        private void UIParamChange(object sender, EventArgs e)
+        {
+
+        }
+
+        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (listView1.SelectedItems.Count == 1)
+            {
+                if (listView1.SelectedItems[0].Tag != null)
+                {
+                    var si = (listView1.SelectedItems[0].Tag as AVSORTER.SearchItem);
+
+                    this.bc.ListMovieBasic = si.MovieBasicList;
+                    if (si.IsSelected)
+                    {
+                        this.bc.MovieB = si.SelectedMovieBasic;
+                    }
+                    else if (si.MovieBasicList != null && si.MovieBasicList.Count != 0)
+                    {
+                        this.bc.MovieB = si.MovieBasicList[0];
+                    }
+                }
+
+            }
+        }
+
+        private void btn_select_Click(object sender, EventArgs e)
+        {
+            if (listView1.SelectedItems.Count == 1)
+            {
+                if (listView1.SelectedItems[0].Tag != null)
+                {
+                    (listView1.SelectedItems[0].Tag as AVSORTER.SearchItem).Select(this.bc.MovieB);
+                }
+
+            }
+        }
+
+        private void btn_MoveFile_Click(object sender, EventArgs e)
+        {
+            this.btn_MoveFile.Enabled = false;
+            initFileProcessor();
+            foreach (ListViewItem item in listView1.Items)
+            {
+                if ((item.Tag as AVSORTER.SearchItem).IsSelected == true)
+                {
+                    if (item.Text!="No File")
+                    {
+                        AVSORTER.FileProcessor.GetInstance().MakeMove((item.Tag as AVSORTER.SearchItem).MovieDetail, item.Text);
+                        item.SubItems[2].Text = "移动成功!";
+                    }
+                    else
+                    {
+                        item.SubItems[2].Text = "未移动";
+                    }
+                    
+
+                    
+                }
+                else
+                {
+                    item.SubItems[2].Text = "未指定对应影片信息";
+                }
+
+            }
+            AVSORTER.FileProcessor.GetInstance().WriteLog();
+            this.btn_MoveFile.Enabled = true;
+        }
+
+        private void menu_BrowerFile_Click(object sender, EventArgs e)
+        {
+            if (listView1.SelectedItems.Count > 0)
+            {
+                System.Diagnostics.Process.Start("Explorer.exe", "/select, " + listView1.SelectedItems[0].Text);
+            }
+        }
+
+        private void menu_ChangeFcode_Click(object sender, EventArgs e)
+        {
+            var inp = new InputBox();
+            if (inp.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+            {
+                listView1.SelectedItems[0].SubItems[1].Text = inp.InputText;
+            }
+        }
+
+        private void menu_remove_Click(object sender, EventArgs e)
+        {
+            while (this.listView1.SelectedItems.Count > 0)
+            {
+                this.listView1.Items.Remove(this.listView1.SelectedItems[0]);
+            }
+        }
+
+        private void listView1_DragDrop(object sender, DragEventArgs e)
+        {
+            if (e.Data.GetDataPresent(DataFormats.FileDrop) && e.Effect == DragDropEffects.Link)
+            {
+                var dd = e.Data.GetData(DataFormats.FileDrop);
+
+
+                var f = AVSORTER.FileProcessor.GetInstance();
+                this.txt_Dest.Text = f.DestPath;
+                this.txt_sub.Text = f.SubPath;
+                var arr = dd as string[];
+                foreach (var item in arr)
+                {
+                    f.AddDirectory(item);
+                }
+                List<ListViewItem> li = new List<ListViewItem>();
+                for (int i = 0; i < f.Files.Count; i++)
+                {
+                    var lsvi = new ListViewItem(f.Files[i]);
+                    lsvi.SubItems.Add(AVSORTER.Tools.Fcode(Path.GetFileNameWithoutExtension(f.Files[i])));
+                    lsvi.SubItems.Add("");
+                    li.Add(lsvi);
+                }
+                this.listView1.Items.Clear();
+                this.listView1.Items.AddRange(li.ToArray());
+            }
+        }
+
+        private void listView1_DragEnter(object sender, DragEventArgs e)
+        {
+            e.Effect = DragDropEffects.Link;
+        }
+
+        private void bc_Load(object sender, EventArgs e)
+        {
+
+        }
+
+        private void groupBox1_Enter(object sender, EventArgs e)
+        {
+
+        }
+
+        private void menu_BigCover_Click(object sender, EventArgs e)
+        {
+            if (this.listView1.SelectedItems.Count > 0)
+            {
+                var d = (listView1.SelectedItems[0].Tag as AVSORTER.SearchItem).MovieDetail;
+                if (d != null)
+                {
+                    System.Diagnostics.Process.Start(d.CoverFile);
+                }
+            }
+        }
+
+        private void btn_AddNewEmptyItem_Click(object sender, EventArgs e)
+        {
+
+            var li = new ListViewItem("No File");
+            li.SubItems.Add(AVSORTER.Tools.Fcode(this.txt_EmptyItemKeyWord.Text));
+            li.SubItems.Add("");
+
+            this.listView1.Items.Add(li);
+
+        }
+
+        private void listView1_DoubleClick(object sender, EventArgs e)
+        {
+            if (this.listView1.SelectedItems.Count > 0)
+            {
+                var d = (listView1.SelectedItems[0].Tag as AVSORTER.SearchItem);
+                if (d.MovieDetail != null &&  !string.IsNullOrEmpty(d.MovieDetail.CoverFile))
+                {
+                    System.Diagnostics.Process.Start(d.MovieDetail.CoverFile);
+                }
+            }
+        }
+
+
+        private void btn_rebuild_Click(object sender, EventArgs e)
+        {
+            this.btn_MoveFile.Enabled = false;
+            initFileProcessor();
+            foreach (ListViewItem item in listView1.Items)
+            {
+                if ((item.Tag as AVSORTER.SearchItem).IsSelected == true)
+                {
+                    if (item.Text != "No File")
+                    {
+                        AVSORTER.FileProcessor.GetInstance().MakeDataBase((item.Tag as AVSORTER.SearchItem).MovieDetail, item.Text);
+                        item.SubItems[2].Text = "成功!";
+                    }
+                    else
+                    {
+                        item.SubItems[2].Text = "未动";
+                    }
+
+
+
+                }
+                else
+                {
+                    item.SubItems[2].Text = "未指定对应影片信息";
+                }
+
+            }
+            AVSORTER.FileProcessor.GetInstance().WriteLog();
+            this.btn_MoveFile.Enabled = true;
+        }
+
+
+        #region Page2
+
+        private void btn_LocalSearch_Click(object sender, EventArgs e)
+        {
+            string fc = txt_LocalSearchKeyWord.Text;
+            if (cb_AutoCorrect.Checked)
+            {
+                fc = AVSORTER.Tools.Fcode(txt_LocalSearchKeyWord.Text);
+                txt_LocalSearchKeyWord.Text = fc;
+            }
+            var db = new AVSORTER.DB.AVDB();
+            var l = db.QueryAV(fc);
+            this.movieContainer1.MovieList = l;
+
+
+            this.listBox1.DataSource = l;
+            //this.listBox1.DisplayMember = string.Format("{0}:{1}", "AVCode", "Title");
+
+            if (l.Count > 0)
+            {
+                this.movieContainer1.Movie = l[0];
+            }
+        }
+        private void txt_LocalSearchKeyWord_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar==13)
+            {
+                btn_LocalSearch_Click(sender, e);
+            }
+        }
+        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (this.listBox1.SelectedItems.Count>0)
+            {
+                this.movieContainer1.Movie = (this.listBox1.SelectedItem as AVSORTER.Movie);
+            }
+        }
+        #endregion
+
+
+
+
+    }
+}

+ 1864 - 0
PicSo/Form1.resx

@@ -0,0 +1,1864 @@
+<?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>
+  <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>58</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAYAEBAAAAEAIABoBAAAZgAAAAAAAAABACAAvRAAAM4EAAAwMAAAAQAgAKglAACLFQAAICAAAAEA
+        IACoEAAAMzsAAICAAAABACAAKAgBANtLAABAQAAAAQAgAChCAAADVAEAKAAAABAAAAAgAAAAAQAgAAAA
+        AAAABAAAEwsAABMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwlsCQoKjQkJ
+        CYwICgp0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAAA
+        AAAAAAAACQsJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkL
+        CZwAAAAAAAAAAAgKCpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKMAgK
+        CpYKCgozAAAAAAAAAAAIDAg9CAoKkwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKeQoK
+        CmQAAAAGAAAAAAAAAAAAAAAAAAAAAAoKCkwHCwtBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgkL
+        CYoKCgpHCQsJiwgKCpYJCwmICQsJiAgKCpMJCwmgCAgIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAJCQmMCQsJiAwMDBQJCQm+CQsJiAkLCYgICwqxCgoKMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAACQkJjAkLCYkMDAwUCQkJvgkLCYgJCwmICAsKsQoKCjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAgMCD0ICwhYDAwMFAgLCLMICgp0CAoKdAkJCaQKCgowAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDBQICwi1CAoKeAgKCngJCgqmCgoKMAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCwsWCAsItQgKCngICgp4CQoKpgoKCjIAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJcQoKCkcJCQk0CQkJNAgNCDoJCwmDAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCYkAAAAAAAAAAAAAAAAAAAAACQsJigAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwhZCQkJNwAAAAAAAAAACAgIHwgK
+        CnUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgLCJoAAAAIAAAAAggK
+        CpYREREPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgeCAsKlwgL
+        CJkLCwsuAAAAAAAAAAAAAAAAAAAAAAAAAAD+HwAA/t8AAPzfAAD4xwAA8ecAAOAHAADwDwAA8A8AAPAP
+        AAD8DwAA/A8AAPwPAAD97wAA/M8AAPwPAAD+HwAAiVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABr
+        rFhUAAAC9FBMVEUAAAAAAAAICAgKCggJCQkKCwkKCgkKCwkKCwkJCQkJCwkLCwcAAAALCwsKCggKCgkK
+        CwcJCwkICAgODg4JCwkKCwkKCwkKCggJCQkAAAAJDAkICQgKCggAAAALCwsKCwcICQgJCQkJCQkKCwkK
+        CwkAFQAKCgkJCQkMDAwICQgKCwkMDAYJCQkICwcKCwkKCgkKCwgKCggKCwkJCQkKCgoLCwcKCwkKCggJ
+        CQkKCgkICwgJCQkAAAAJCwkICQcKCwkKCgoJDAkJCQkICAgKCwcJCwkKCgoKCwkKCggKCgcKCwkLCwcI
+        CQcIDAgKCgoICwgKCgoJCQkLCwcJCQkKCgkPDw8AAAAKCwcICQcMDAYICwcJCwkJCQkICwgAAAAJCwkK
+        CgkAAAAKCggJCQkKCgkKCgcICwgKCgkNDQ0KCwcHDgcICwgGDQYKCgoKCwkKCwcJDAkLCwsJCwkJCwkK
+        CgkKCgkAAAAKCggJCQkHDgcMDAYJCwkKCgcKCwcKCwgJCQkKCwkLCwsJCQkICwgICQcKCgcJCQkKCggJ
+        CQkTEwAKCggKCgoKCggICwcLCwcLCwsKCggICwgJCwkICwgHBwcKCgoIDAgJCwkJCwkKCwcKCgoLCwsK
+        CgcJCQkJCwkLCwgICQcKCgcKCgkKCgkKCgoJCwkJCQkIDAgHBwcKCwcAAAAICwgJCwkJCwkJDAkKCggK
+        CggICwgJCwkKCgkKCwgKCwgJCwkHBwcKCgoKCgkJCQkKCwcICQgREREICQcICwgICwgKCggJCwkICwgJ
+        CQkAAAAKCwkSEgAJCQkIDAgJCQkMDAwJCwkJCwkICwgKCggKCgoICwgKCgkICwcJDAkJCwkNDQYJCQkJ
+        CQkIDQgLCwgKCggKCggKCgcICAgKCgoKCgcGDQYKCwcKCgoKCggKCggKCgcJCQkJCwkKCwgKCwkICQcI
+        CQgJCQkKCgoKCgoIDAgLCwgJCQkJCwkLCwgJDAkKCggICwcKCgcICQcKCgkKCwn7YuLDAAAA+3RSTlMA
+        ATl8ut3z9t+/g0EDFnrc5IUeEoj0+ZUaAmrwewUrx9Q4Z/f7DKm7FdHeKjbn/MKYlPjxR0X1dWjaWE8I
+        a+39ZFS+H65sS/p0Yf5C6D8wVjHWQxvBEAmv7ynPuaW1B5/DBHe9qI9X2xPKJLQlGOHIaSyBcMCnBn01
+        IyiiYsmyTsYtHHLrYFF5pA1fL5DmRBdetorQIRk7oJ7jSS5G2Jxz7I7EqjJujDwi5QuagG1TeHaboaaX
+        sYkgM41Ny9IP6re4f3GzNAriDvI9UBSHb5l+ZVnFzVKCJ6O8OlqWkqwdSq0mzGaTkas3hrDg7tPVSEw+
+        XNeLW1VdzmPp2WPa/ekAAAAJcEhZcwAACxMAAAsTAQCanBgAAAwGSURBVHja7Z15YBXFHcdfIAfkACQH
+        PkMIkFMKISZcgZCEQEkIQVDJKzQQSCGFAilqIyXBgIRgQSGARSTFC1GwXCJHqTUCFSzKlVbRVhERbGsb
+        8eh97D8t+H6z+47k7ezM7u/t2/n89/bN/Pb7+759u7OzszM2m/8Q1KlzcEhoWJeu4RGR2FoQiOrWXSL0
+        uKUnth6DiY6JlVyI63UrtiYDsd8WL3kQ1jsBW5dR9EmUvNK3H7YyY+ifJLVDcjc7tjj9SUmVOiAtHVuf
+        3vS8XeqQAd/AVqgvAwe5pJsxOPOOtCyXTdlDsDXqydBhylx7DI++sTFlRI7LiWAktkr9GKX8sWN758L2
+        yNF5ii/yC7B16sWYZEWahWOVX6WPUx4E38RWqg/jixTHeXGQ27cTwuRvSyZga9WDiYrLf+kkz+/vHKD4
+        F0zGVsufKaFyfneN9VYiXdFALLobWy9v7ukhZze1zHsZx7fkMtOmYyvmS8q35dzKHe2VipyhaBFFYWvm
+        iuIkP7Oi/WL2WXK52ZXYojnyHTmvORUdFbTPlUtWYavmx8QMklViSsdFE2bKDnwXWzcvokpJTvPm+yrs
+        +B4pHLoAWzknFpKU8hb5Ll39fVJ8cWCcBu6V23+T1JS/T24x3I+tnQeL5DvAH6irMVm+XQ6ATrKgGpLO
+        A2rrVJEqfZdg62emgCSTk6K2TuViUumH2PpZqZ5GTgBL1deqJaeBrDrsDBhZRn7L3jTVHiTV0rAzYGNg
+        CSRST/f8bzlxYAV2Dkw8RO5vV9JVbMgmpw4znwdHkt8xnLbqbaTqKuwstBNJuntDKmjrBtVD3UbVVw+/
+        YzX5FR+mr9yPnD5+hJ2HVipDyD2wlupryB3EWuxMNPIIZFDyqJbqDUlmPwTIY8BUbfXXQf315rwQNIH+
+        fI0dnBvIbdRG7Fw0sQnkr9Ea4TGI8GPsXLSwmZzFKdtAMo/HQYgt2NloIJxDa/4JiLEVOxt6IptB/E+0
+        B9kGMWLNdyV8ErQ/FcQQpRCimO9x6dMg/RmWKORmYhN2PrRUPgv9IEyPuHLj4W6yjCUMAkM5/XTkQNqI
+        nREl2zn9eYdAHNU9qn5CX6fuDJ+PgjomAfoUG1nOpcZzK/xwz7FG2gGRnsfOiQrybKMza6QJEOkF7Jyo
+        2Amyd7FGehEizcDOiYrBTtVZ1F1hHvzUGWoedk5UwOW7nj0UGTi0GzspCqpB9B72WHsh1hTsrCiYBKL3
+        scfaD7HMNGCE9AaOZ481BWK9hJ0VBQdANIfR/2UQazt2VhSQqyCPF0BgiLGZroMvgwE8BvnAOxYzsbOi
+        4KBTcxyPYDCIOhg7KwoOOTUn8QgGz5e6YmdFATzVyuIRrIszmKbna0gchnNALnssG9wQH8HOioKfgQEc
+        Xgi2w/MFzc9XEHgGDOjEHuuoGdsBY0D0avZYpH/dTB0CPwfRr7DHIkfTL7CzosAB4+NfZY91BAwYyx7L
+        OFqgT/Q11kh2eKfyGHZOVJC28EbWSGSUwULsnKggZ8HjrJG2cuxaMJDX4C3ZjFq2QNFk1DBjIKM5Aboz
+        2eL8EuLcjp0RJeSxbtZRljDR5LXy17EzoiSXKD/JEmYPRIkz3dwa94N0aYz2ILvIOCMO3csGE01mSorX
+        /PZbFHnhmPVcioF8CLQsPaWNOZJ5DwCb7Y1fSdyYZrozwA0e5mfAaOxctHGQPfOvKTfX4AjC6RD23G/Q
+        aNqJ5vq8ySP/orew89DOGR4GmPQEcJOzPAy4EzsLYQAHAw6OoaYqoAwopq87UhggDBAGCAOEAcKAADHg
+        3AJqzgeUAZZvCQoDhAHCAGGAMEAYYGEDdhRQcyGgDLB8U1gYIAwQBggDhAFWNqD1LDW/DigDLN8SFAYI
+        A4QBwgBhgDAg8Ayo3v9STPjot9qd8pMYcLKYmjV+b4D9N287JWZfaGcsMzEgEJvCK99RHKZxe73OnR7I
+        BlwMc/mjSsffsJYBZzIkN457OQYC14C6WMmDdy1kQNDbnvlLye9Zx4AVXi/Yv7WOAb/zakCcx7yfgWrA
+        /HwQN/X9JdHnyfzPH7RrAAt+aAAZBb/4ZhuQrKV1ySoG9AZtTTc/JsBLkh7zvASqAR86pSUnfP052Pm5
+        xSoGwKKIMKfBZednj0kfA9UAeCMQ5osEA7pbxAAywd3TFjVgF0g7b1EDyGVvomoDCmOoOeK/BlwCafBG
+        r28DAqslONuprBQ2WM0AmN6NLB5iMQM+AmVkdjOLGXAFlJGlAyxmAFlI/JRFDYAO+3yHRQ2ANdRyyBZr
+        GVAJ/R8fUxiQFE/NMH81oA8I20thAAv+ZgA5NPdb1IBbQNhVixoASyKH2S1qAEz0fE3eZCkD1sL8ZrMs
+        akAn0KVYENpSBnwCuobSGJCYSU2anxrwe9BVTWNAALUEa5yyGhXbLGUAPAUqtKgBZBm5Pyg2/tFCBpAF
+        EAsUG5c5t4W6rywWgAYUg6xPFRv/BBtbA98AmCSxJEWx8SJoLRnuOvVhABoAgwNDlBtT5CFzD41SLisS
+        gAZkO1X92WVrpqLhltzcRiDzqn7WRk0j1F3f1jbg+vGYpkiNkrkSDarOuWxu8DJqjjuDOvvB+tu1oKa/
+        6/ZPWDJTb8F+bao5shK0uI+HOsySmHrWYf8PpoOSjW5f2C+w5KWeNXYtsvnRAELOe3y1L8sQB85pUM2R
+        ChghuM7zu7pyIwwomUivmifNTh1el37b8sAwpuRU8TnuaQCWzoj1vqCw4+4Dh2fM5U7qc0WyAwzrFXAg
+        HGR8Yex+N1wiBuCutzMUZCwzes/9Yc9hPNbx1EwFtPnCzhq963HgwHvssRiAzg9vL4joC1nRHney9S9B
+        RugGg/f8Bey5CdWASLgQSoesaYC8/p/R1yN/MSCF3KhnT7ekAbZ95BDo0mBJAxI+Jw6EGLn+kd8YYOtH
+        3pmS8q5Y0QC5G/z/zHrcggZE1igcGFZlkAV+ZIDtbI7yBjWr10dWM8BWu97lHj1uz2aLGWBb4LaUWvIT
+        V9mDdsx42FcEdvI3aXjH1QEp/1AfffdYAHs6xR6LB46tbg5IJZd1fYo1C/Zj9F1Yu6zwXFFw+VLd9ub4
+        zLkPP1qC2tFtmocFJ7botLNVsIdx2GkrOd3tWQ8LCnU5STXEQ/wJ7MF4sru41MOC2U9y301uIgSPPY2d
+        sjuOF3p4WLCY87U6JZiE7oWdrxcqRrR5WFDOs7Pgq6dI3KSe2Nl6JeHB7u4OJD/mYI97g92rZyvChmOn
+        2h6Rf/mruwXdv+IQN/1ctjJm3wr2kHphn9zi3jj82xLGmAkHQl0ihhrbC0dL0Bn39vE1ti6jbdddwxUN
+        wU7RJ1cSXSVnr2AI1t9tyEHcKOz01NA01UV0SavWVZMj73A7nI7tws5NrQXXXHTP0HYiqEx1y395taY4
+        GNgLXBrINVrabvbLrum/Oh47KyqidriIj6aP4HL8h778KX0EZP4er0igZT5t9XsVtcPeLaOt7g9sVp4J
+        rlH+C07FyXVrjmKnopEKZZfRYKozYa6iVRmDPDKQhdflR0jSQZqKMfJVdAR2EkxcTJIdGK6+2iJ5TJi5
+        87fZIuSmfHI/1bU+JpWQx4Vy4H3ZgS5qR7vfB2/nSnNM/P8HIuR/QZXKKvBajhRv6PgDvfgH+T0z1D02
+        KCOW7cPWzgcyAac0U1X5EVA8B3VEJD+CThIHVD02KYfSftb/rZ30Y5CSmvG1u6ERmJerorQ5+CcYEJvi
+        u3AEFD6MLZsfQf+CpCb7Lkxm6jJ4PLqufABJfei7LNxBZPjBS3LcWALNoXrfZbvCNQBbNFc2ObNq9l0U
+        pioLxtbMlV7OrLJ8F4VHTJexNXNlJ5wEfBeFx4xzsTULA4QBwgBhgDBAGCAMEAYIA4QBwgBhgDBAGCAM
+        EAYIA4QBwgBhgGbIoB/f00DBg0TD5+nRlc5ggM/R42Tu8u1q4pqGRyCtVT4KRt8FJf+NrZkrj0JaeXUd
+        lpskv5Zu1uGR3rH/B/IKS31lZ3tcULxyMhtbMmfcx/775EtsxZypy6DL/wS2YO5kUuVfeg+2Xu6snUeR
+        /5sDseXqwNVBqvMfpN9L+JjUXleZ/0K/mSGBMxWt2SrSrzfXy0F0rF2d+t8OpiFPak5r3aavgv8BOdyn
+        pEjkyesAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTQtMTAtMDFUMDc6NTA6NDItMDU6MDATocD+AAAAJXRF
+        WHRkYXRlOm1vZGlmeQAyMDE0LTEwLTAxVDA3OjUwOjQyLTA1OjAwYvx4QgAAAABJRU5ErkJggigAAAAw
+        AAAAYAAAAAEAIAAAAAAAACQAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAACAcKCqsJCwr7CQsK/wkLCv8JCwr/CQsK/wkLCvsJCQm6CAgIHQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQsJcQkLCv8ICwqxCQsJnAkLCZwJCwmcCQsJnAkKCqYJCwr6CQoKwgAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsImwkLCv8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CwmiCQsK/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJnAkLCv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCwmcCQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJnAkLCv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwmcCQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQsJnAkLCv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwmcCQsK/wAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQkJowkLCvsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwiZCQsK/wAAAAMA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCwsWBwkI7gkKCsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        Cgp4CQsK/wkJCTYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATEw0JCgrFCQsK/gcLC0EAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAHBwciCQsK+wkJCbwAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg0NJwgJCNEJCwr/CQsJcQAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJgwkLCv8ICwqyBw4HIwAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCRoHCgqPCQsK+AkLCvcH
+        CgphAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkKCo0JCwr+CQsK/QkLCYUA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgfCAsKlwkLCvgJ
+        Cwr/CQkJugYMDCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL
+        CwsuCAsItwkLCv8ICwhYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQgKCpUJ
+        Cwr7CQsK/wgLCLUJCQk4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAACQcJCO0ICwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAADCQkJuwkLCv8ICwqxCgoKMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLCNAHCwrLAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQloCQsK/wkLCYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLCNAHCwrMAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwjQCQoK3AAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLFgcJCOgJ
+        CgrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQJCwr9CAsImQAAAAAAAAAACQkJGggLCLMJ
+        Cwr5CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv4JDAlVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMJCwr6CQsJoAAAAAAA
+        AAAACQoKwgkLCvsJCgqpCQsJnAgLCrAJCwr/CQoKwwkLCZwJCwmcCQsJnAkLCZwJCwmcCQsJnAkLCZwJ
+        CwmcCQsJnAkLCv8JCQnXCAoKkwgMCD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CQnVBwsKywAAAAAAAAAACQsK/gkLCZ4AAAAAAAAAAAkJCTQJCwr/CgoKZAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCgqoCQsK9QAAAAIAAAAACQsK/wgLCpgAAAAAAAAAAAkJCTQJCwr/CQsK4AcLCswH
+        CwrMBwsKzAcLCswHCwrMBwsKzAcLCswHCwrMBwsKzAkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgp8CQsK/wYNBiUAAAAACQsK/wgLCpgAAAAAAAAAAAkJCTQJ
+        Cwr/CQsK4ggLCNAICwjQCAsI0AgLCNAICwjQCAsI0AgLCNAICwjQCAsI0AkLCv8ICwqYAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQlPCQsK/wkJCVEAAAAACQsK/wgLCpgA
+        AAAAAAAAAAkJCTQJCwr/CgoKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCv8I
+        CwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDgcjCQsK/wgKCn4A
+        AAAACQsK/wgLCpgAAAAAAAAAAAkJCTQJCwr/CQoKwAgLCpgICwqYCAsKmAgLCpgICwqYCAsKmAgLCpgI
+        CwqYCAsKmAkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAABCQsK9wgLCLUJCQkcCQsK/wcKCo8AAAAAAAAAAAkJCTQJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQsJngkLCv8JCwr/CQsK/QgMCDwAAAAAAAAAAAkJCTQJCwr/CgoKZAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgkLCXAICgqWBwsLQgAAAAAAAAAAAAAAAAkJCTQJ
+        Cwr/CQsJoAoKCmQKCgpkCgoKZAoKCmQKCgpkCgoKZAoKCmQKCgpkCgoKZAkLCv8ICwqYAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCTQJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8I
+        CwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCTQJCwr/CQsJgwkJCTQJCQk0CQkJNAkJCTQJCQk0CQkJNAkJCTQJ
+        CQk0CQkJNAkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCTQJCwr/CQsJgQoKCjAKCgowCgoKMAoKCjAK
+        CgowCgoKMAoKCjAKCgowCgoKMAkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCTQJCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCTQJ
+        Cwr/CQkJowkJCWgJCQloCQkJaAkJCWgJCQloCQkJaAkJCWgJCQloCQkJaAkLCv8ICwqYAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCTQJCwr/CgoKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCv8I
+        CwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCVAJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8ICwizAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwcLCuMHCQjrCQsJnAkLCZwJCwmcCQsJnAkLCZwJ
+        CwmcCQsJnAkLCZwJCwmcCQsJnAkKCsUJCwr/CQkJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJaAkLCv8ICwtcAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEg4HCQjsBwsKyQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsKrwkLCvQA
+        AAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwqXCQsK/g8PDxAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAABwsIzQgJCNEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CwlvCQsK/wsLCy0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABwsKyQkJCdUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICwtzCQsK/wYMDCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQoKpwkLCvcAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwibCQsK/AAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJawkLCv8HCwtDAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwrgBwsKyQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKGQkLCvsJ
+        CgqmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLC0MJCwr/CAoKdAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkKCqgJCwr7Bg0GJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkKCsAJ
+        Cwr0Dg4OEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAYMDCkJCwr7CAsIuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAsIWQkLCv8JCwmDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwmHCQsK/wkLCW4AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAHBwchBwkI7gkKCtwAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBwsKyQkLCvsJ
+        CQlOAAAAAAAAAAAAAAAAAAAAAAwMDBUJCQnWCQsK+AkJCTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACgoKGQkKCtwJCwr6CgoKZgAAAAAAAAAABgwMKgkJCdgJCwr9CAsIVwAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCRsHCwjPCQsK/wcLCskJCgqqCQsK+QkLCvUJDAlTAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAoKfQcLCuMJCwr1BwoKqwYNBiUA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAD///wA//8AAP///AD//wAA///8fP//AAD///z8//8AAP///Pz//wAA///8/P//AAD/
+        //z8f/8AAP//+Px//wAA///w/D//AAD//+H+H/8AAP//g/4P/wAA//4H/4f/AAD/+B//x/8AAP/wf//n
+        /wAA//H//+f/AAD/8f//x/8AAP/jAAAH/wAA/+MAAA//AAD/8zH/P/8AAP/xMAA//wAA//EwAD//AAD/
+        8TH/P/8AAP/xMAA//wAA//AwAD//AAD/+DH/P/8AAP/4cAA//wAA///wAD//AAD///AAP/8AAP//8AA/
+        /wAA///wAD//AAD///AAP/8AAP//8f8//wAA///wAD//AAD//+AAH/8AAP//4/8f/wAA///j/4//AAD/
+        /+f/j/8AAP//5/+P/wAA///j/4//AAD//+P/n/8AAP//4/8f/wAA///x/x//AAD///H+P/8AAP//+Pw/
+        /wAA///4eH//AAD///ww//8AAP///gH//wAA////A///AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAT
+        CwAAEwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQsJnQkLCv0JCwr/CQsK/wkLCv4ICwi0AAAABwAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAABEREQ8JCwr/CAgIHgwMDBQMDAwUCgoKGAgJCNMKCgpLAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMFAkLCv8AAAAAAAAAAAAAAAAAAAAACQkJvAkMCVQA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwUCQsK/wAAAAAAAAAAAAAAAAAAAAAJ
+        CQm8CQwJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNBiUJCwr2AAAAAAAAAAAA
+        AAAAAAAAAAgLCLcICwtcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCAsItwgLCpcA
+        AAAAAAAAAAAAAAAAAAAACAoKeggLCLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABw4HJAkKCsIJ
+        CQm/AAAACgAAAAAAAAAAAAAAAAAAAAAAAAALCAkI0gcLCq4GDAwpAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg0NJwkLCaEJ
+        CgrzCQsJhQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREREPCQsJigcJCO8GDQYmAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgLCpgJ
+        CQnyCQoKjQoKChgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJnQgKCn4A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CwmCCQoKxQwMDBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CQmMCQsJiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcJCOoKCgowAAAAAAsLCxYJCQlRCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJ
+        DAlUCQwJVAkLCsYICwhyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAADCQsK/hEREQ8ICAgeBwkI6wkKCsIJCgrFCQsK+gkJCbwJCQm8CQkJvAkJCbwJ
+        CQm8CQkJvAcJCOkJCQnWBwoKjwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCgrcCQkJOAgLCFcJCQm7AAAAAAcOByQHCQjvCgoKMAoKCjAK
+        CgowCgoKMAoKCjAKCgowCQkJuwoKCmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLCq8KCgpmCAsIWAgLCLgAAAAABw4HJAkLCv0J
+        CwrgCQsK4AkLCuAJCwrgCQsK4AkLCuAJCwr1CgoKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJgggKCpMICwhYCAsIuAAAAAAH
+        DgckBwkI7Q8PDxAPDw8QDw8PEA8PDxAPDw8QDw8PEAgLCrEKCgpkAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwhWCQoKxAoKCmQI
+        CwizAAAAAAcOByQJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/woKCmQAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PDxEJ
+        CgrZCQsK+ggLCFcAAAAABw4HJAcJCOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCgqsCgoKZAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAIAAAAJAAAAAAAAAAAHDgckCQsK/gcJCOwHCQjsBwkI7AcJCOwHCQjsBwkI7AkLCvkK
+        CgpkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOByQHCQjuBw4HJAcOByQHDgckBw4HJAcOByQH
+        DgckCAsItwoKCmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABw4HJAkLCvsHCwrMBwsKzAcLCswH
+        CwrMBwsKzAcLCswHCQjuCgoKZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDgckCQkJ8QoKCkgK
+        CgpICgoKSAoKCkgKCgpICgoKSAkKCsMKCgpkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCi8J
+        Cwr5CQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoBwsK4wkLCW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAsIswkKCqcJCQloCQkJaAkJCWgJCQloCQkJaAkJCWgJCwmBBwkI6AAAAAsAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAwMDBQJCwr5ERERDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCwrKCQwJUwAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACgoKMgkLCuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCaAJ
+        CwlxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgfCQoK8wAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAsItggKCl4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwriCAwIOwAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAkJCQnyBw4HIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCYEJCgqqAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQsJbAkKCsIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PEQcJCOoH
+        CwtCAAAAAAAAAAAAAAAAAAAAAAoKChgHCQjrCAwIPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQwJVAcLCOcHBwciAAAAAAAAAAAAAAAJCQoKwwgKCpQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACAoKdwcLCuUKCgpICwsLLQkLCsYICwizAAAABQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsIVgkKCtsHCQjvCQsJgQAAAAQAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/+A////AP///zz///88////PP///jz///w8P//
+        wfh//wf+f/8f/n//IAB//gAAf/8IAf//CAH//wgB//8IAf//Cfn//5gB///4Af//+AH///gB///4Af//
+        +AD///H8///z/P//8fz///n4///5+f//+PH///xj///+A////wf/KAAAAIAAAAAAAQAAAQAgAAAAAAAA
+        AAEAEwsAABMLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHIQgLCpcJCwrgCQsK/AkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv0HCwjnCQoKqgcLC0MAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCkwJ
+        Cwr0CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wcKCqsAFQAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDAwpCQsK9gkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkKCsIA
+        AAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLCq8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wgKCn8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMNCQsK+wkLCv8JCwr/CQsK/wkKCsQJCQlPCgoKSAoKCkgK
+        CgpICgoKSAoKCkgKCgpICgoKSAoKCkgKCgpICgoKSAoKCkgKCgpICgoKSwkLCYcJCwr3CQsK/wkLCv8J
+        Cwr/CAkI8AAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCTgJ
+        Cwr/CQsK/wkLCv8JCwr/Bg0GJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAoKCkoJCwr/CQsK/wkLCv8JCwr/CAwIPAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKRwkLCv8JCwr/CQsK/wkLCv8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCfIJ
+        Cwr/CQsK/wkLCv8JDAlSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK
+        CgpICQsK/wkLCv8JCwr/CQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAkI8AkLCv8JCwr/CQsK/wkMCVQAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCkgJCwr/CQsK/wkLCv8JCwr/AAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        CQjwCQsK/wkLCv8JCwr/CQwJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACgoKSAkLCv8JCwr/CQsK/wkLCv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJCPAJCwr/CQsK/wkLCv8JDAlUAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wkLCv8JCwr/CQsK/wAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAkI8AkLCv8JCwr/CQsK/wkMCVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAoKCkgJCwr/CQsK/wkLCv8JCwr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICQjwCQsK/wkLCv8JCwr/CQwJVAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKSAkLCv8JCwr/CQsK/wkLCv8A
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgJCPAJCwr/CQsK/wkLCv8JDAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAKCgpICQsK/wkLCv8JCwr/CQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAkI8AkLCv8JCwr/CQsK/wkMCVQA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCkgJCwr/CQsK/wkLCv8J
+        Cwr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICQjwCQsK/wkLCv8JCwr/CQwJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACgoKSAkLCv8JCwr/CQsK/wkLCv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgJCPAJCwr/CQsK/wkLCv8J
+        DAlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wkLCv8J
+        Cwr/CQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACAkI8AkLCv8JCwr/CQsK/wkMCVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkMCVUJCwr/CQsK/wkLCv8JCwr2AAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCQjrCQsK/wkLCv8J
+        Cwr/CAsIWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKlgkLCv8J
+        Cwr/CQsK/wkJCdYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCdcJCwr/CQsK/wkLCv8ICgp3AAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAoKChgJCwr0CQsK/wkLCv8JCwr/CAoKlQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsKrgkLCv8J
+        Cwr/CQsK/wgLCLYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKrQkLCv8J
+        Cwr/CQsK/wkLCv8JCQk2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwlwCQsK/wkLCv8JCwr/CQsK+goKChgAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgLC3MJCwr/CQsK/wkLCv8JCwr/CAsIuAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICB8J
+        Cwr+CQsK/wkLCv8JCwr/CAoKkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwtbCQsK/QkLCv8J
+        Cwr/CQsK/wkLCvcGDQ0nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLCLUJCwr/CQsK/wkLCv8JCwr7CQkJNQAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABwoKYgkLCvwJCwr/CQsK/wkLCv8JCwr/CQwJagAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQkJNwkLCv8JCwr/CQsK/wkLCv8JCwrgCgoKGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQkLCYIJCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wgLCJoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJnQkLCv8JCwr/CQsK/wkLCv8J
+        CQnXBwcHIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAsLCxYICwi2CQsK/wkLCv8JCwr/CQsK/wkLCv8HCgqtAAAAAwAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAEhIOCQoK2gkLCv8JCwr/CQsK/wkLCv8HCQjvCgoKZAAAAAMAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwhXBwkI6QkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQoKpwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDAwoBwkI7AkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK4ggKCn8PDw8RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        DAg/CQoKwQkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCYoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgovBwsI5wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wcJCOsJ
+        CQlOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCwtFCQoKwgkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkKCvMI
+        CwtaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CQkcCQoKwgkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv0HCgphAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpMBwsKyAkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCwrHBg0GJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBwoKYgkLCt8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCvwIDAg/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAEJDAlSBwsIzgkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCQjvCQsJbQAAAAIA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAwoKCkoHCwrHCQsK/wkLCv8JCwr/CQsK/wkLCt0AAAAGAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIICwhZCAkI1AkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCQnxCQsJhQ8PDxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMJ
+        CQmkCQsK/wkLCv8JCwr/CQsK/wcKCmMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAII
+        CgpdCQoK2QkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCQjuCAoKfw8PDxAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcJCgraCQsK/wkLCv8JCwr/CQoKwQAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDAwpBwsKywkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8H
+        CQjrCAoKeQATEw0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCWcJCwr/CQsK/wkLCv8JCwr5AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKSAkKCvMJ
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCwjnCAsLcwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLLAkLCv8JCwr/CQsK/wkLCv8J
+        CQkbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAcLC0QJCwr5CQsK/wkLCv8JCwr/CQsK/wkLCv8HCwrjCQsJbAAAAAgA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAHDgckCQsK/wkLCv8JCwr/CQsK/wcHByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBwciCAkI8AkLCv8J
+        Cwr/CQsK/wkLCv8HCwjnCQkJZwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOByQJCwr/CQsK/wkLCv8J
+        Cwr/BwcHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAQkKCsMJCwr/CQsK/wkLCv8JCwr/CQkJuw4ODhIAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABw4HJAkLCv8JCwr/CQsK/wkLCv8HBwcgAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwtaCQsK/wkLCv8J
+        Cwr/CQsK/wkJCb4AAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDgckCQsK/wkLCv8J
+        Cwr/CQsK/wcHByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAQkJCdYJCwr/CQsK/wkLCv8HCQjpDAwMFAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAcOByQJCwr/CQsK/wkLCv8JCwr/BwcHIAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAg+CQsK/wkLCv8J
+        Cwr/CQsK/wcKCmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg0NJwkLCv8J
+        Cwr/CQsK/wkLCv8ICAgeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgKCpIJCwr/CQsK/wkLCv8HCwrkAAAABAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwmECQsK/wkLCv8JCwr/CQsK/AAAAAkAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsI0AkLCv8J
+        Cwr/CQsK/wcKCo8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgsLCy4J
+        CQlOCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJ
+        DAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJ
+        DAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQICwtbCQoKqQkLCv8J
+        Cwr/CQsK/wkLCv8JCgrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJCwr5CQsK/wkLCv8JCwr/CQwJUgAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAACQgKCnwHCwjnCQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wcLC0UAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NEwkLCv8J
+        Cwr/CQsK/wkLCv8KCgowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNDScJCgrZCQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwmKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCwsWCQsK/wkLCv8JCwr/CQsK/wsLCy0AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAKCgoZBwsI5gkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr5CAoKeAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJ
+        Cwr9CQsK/wkLCv8JCwr/CgoKSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcKCqsJCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCvcICQjwCAkI8AgJCPAICQjwCAkI8AkLCvgJCwr/CQsK/wkLCv8JCwr7CAkI8AgJCPAI
+        CQjwCAkI8AgJCPAICQjwCAkI8AgJCPAICQjwCAkI8AgJCPAICQjwCAkI8AgJCPAICQjwCAkI8AgJCPAI
+        CQjwCAkI8AgJCPAICQjwCAkI8AgJCPAICQjwCAkI8AkLCvoJCwr/CQsK/wkLCv8JCwr5CAkI8AcJCOwI
+        CwjQCQkJjAcHByIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCt4JCwr/CQsK/wkLCv8ICgp3AAAAAAAAAAAA
+        AAAAAAAAAAAAAAAKCgoZCQsK/gkLCv8JCwr/CQsK/wkLCt0HCgpGAAAAAgAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQkJjAkLCv8JCwr/CQsK/wgLCLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAABwoKrAkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAsKsQkLCv8JCwr/CQsK/wkJCaQAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCkwJCwr/CQsK/wkLCv8J
+        Cwr8BwcHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CAsIuAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCgqsCQsK/wkLCv8JCwr/CAsKmAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwmECQsK/wkLCv8JCwr/CAkI0QAAAAAA
+        AAAAAAAAAAAAAAAAAAAACAsIVwkLCv8JCwr/CQsK/wcJCOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8ICwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcKCqwJCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgLCFcJCwr/CQsK/wkLCv8JCwr5AAAABAAAAAAAAAAAAAAAAAAAAAAICwhYCQsK/wkLCv8J
+        Cwr/BwkI7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wgLCLgA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKrAkLCv8JCwr/CQsK/wgLCpgA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgwMKQkLCv8JCwr/CQsK/wkLCv8L
+        CwssAAAAAAAAAAAAAAAAAAAAAAgLCFgJCwr/CQsK/wkLCv8HCQjsAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CQkJ8QcLCswHCwrMBwsKzAcLCswHCwrMBwsKzAcLCswH
+        CwrMBwsKzAcLCswHCwrMBwsKzAcLCswHCwrMBwsKzAcLCswHCwrMBwsKzAcLCswHCwrMBwsKzAcLCswH
+        CwrMBwsKzAcLCswHCQjuCQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAECQsK+AkLCv8JCwr/CQsK/wgLCFkAAAAAAAAAAAAAAAAAAAAACAsIWAkLCv8J
+        Cwr/CQsK/wcJCOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8I
+        CwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCwjPCQsK/wkLCv8J
+        Cwr/CQsJhgAAAAAAAAAAAAAAAAAAAAAICwhYCQsK/wkLCv8JCwr/BwkI7AAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkLCaIJCwr/CQsK/wkLCv8ICwizAAAAAAAAAAAAAAAAAAAAAAgLCFgJ
+        Cwr/CQsK/wkLCv8HCQjsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKdQkLCv8J
+        Cwr/CQsK/wkLCuAAAAAAAAAAAAAAAAAAAAAACAsIWAkLCv8JCwr/CQsK/wcJCOwAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8JCgrZCAoKeAgKCngICgp4CAoKeAgKCngI
+        Cgp4CAoKeAgKCngICgp4CAoKeAgKCngICgp4CAoKeAgKCngICgp4CAoKeAgKCngICgp4CAoKeAgKCngI
+        Cgp4CAoKeAgKCngICgp4CAoKeAgJCNMJCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wkLCv8JCwr/CQsK/wASEg4AAAAAAAAAAAAAAAAI
+        CwhYCQsK/wkLCv8JCwr/BwkI7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8J
+        Cwr/CQsK/wgLCLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKrAkLCv8J
+        Cwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCRsJ
+        Cwr/CQsK/wkLCv8JCwr/CA0IOgAAAAAAAAAAAAAAAAgLCFgJCwr/CQsK/wkLCv8HCQjsAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CAsIuAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCgqsCQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcJCO0JCwr/CQsK/wkLCv8JCQloAAAAAAAAAAAA
+        AAAACAsIWAkLCv8JCwr/CQsK/wcJCOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJ
+        Cwr/CQsK/wkLCv8ICwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcKCqwJ
+        Cwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQoKwAkLCv8JCwr/CQsK/wgKCpUAAAAAAAAAAAAAAAAICwhYCQsK/wkLCv8JCwr/BwkI7AAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wcLCssHCwtEBwsLRAcLC0QH
+        CwtEBwsLRAcLC0QHCwtEBwsLRAcLC0QHCwtEBwsLRAcLC0QHCwtEBwsLRAcLC0QHCwtEBwsLRAcLC0QH
+        CwtEBwsLRAcLC0QHCwtEBwsLRAcLC0QHCwtECQoKwgkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgqTCQsK/wkLCv8JCwr/CQoKwgAAAAAA
+        AAAAAAAAAAgLCFgJCwr/CQsK/wkLCv8HCQjsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CQmMCQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAoKCmYJCwr/CQsK/wkLCv8HCQjsAAAAAAAAAAAAAAAACAsIWAkLCv8JCwr/CQsK/wcJCOsA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsLRAkLCv8JCwr/CQsK/wkLCv4P
+        Dw8RAAAAAAAAAAAJCwltCQsK/wkLCv8JCwr/CQsK4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQkJjAkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQkaCQsK/wkLCv8JCwr/CQsK/wkLCaIREREPBwcHIAkKCtkJCwr/CQsK/wkLCv8J
+        CQm6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CAsKmAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCgrFCQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkMCWkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8ICwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcKCqwJCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgMCD4JCwr9CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        CwreAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wgLCLgA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKrAkLCv8JCwr/CQsK/wgLCpgA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCWsJ
+        Cwr+CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/BwkI7goKCjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CAsIuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAHCgqsCQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLC0MHCwrKCQsK/wkLCv8JCwr/CQsK/QcLCq8H
+        BwchAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8I
+        Cwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcKCqwJCwr/CQsK/wkLCv8I
+        CwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICAgeBwsLQggMCD0ODg4SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wcJCOsICwi4CAsIuAgLCLgICwi4CAsIuAgLCLgI
+        Cwi4CAsIuAgLCLgICwi4CAsIuAgLCLgICwi4CAsIuAgLCLgICwi4CAsIuAgLCLgICwi4CAsIuAgLCLgI
+        Cwi4CAsIuAgLCLgICwi4BwkI6AkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CQsK3wkJCYwJCQmMCQkJjAkJCYwJ
+        CQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJ
+        CQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJCgrZCQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJ
+        Cwr/CQsK/wkLCv8ICwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcKCqwJ
+        Cwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wgLCLgAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKrAkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
+        CQmMCQsK/wkLCv8JCwr/CAsIuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH
+        CgqsCQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8JCgrFCgoKMAoKCjAK
+        CgowCgoKMAoKCjAKCgowCgoKMAoKCjAKCgowCgoKMAoKCjAKCgowCgoKMAoKCjAKCgowCgoKMAoKCjAK
+        CgowCgoKMAoKCjAKCgowCgoKMAoKCjAKCgowCgoKMAkJCbsJCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQkJjAkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CAsKmAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wgLCpgA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8JCwr/CQkJvQwMDBQMDAwUDAwMFAwMDBQMDAwUDAwMFAwMDBQM
+        DAwUDAwMFAwMDBQMDAwUDAwMFAwMDBQMDAwUDAwMFAwMDBQMDAwUDAwMFAwMDBQMDAwUDAwMFAwMDBQM
+        DAwUDAwMFAwMDBQICwqyCQsK/wkLCv8JCwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8I
+        Cwi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcKCqwJCwr/CQsK/wkLCv8I
+        CwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQkJjAkLCv8JCwr/CQsK/wgLCLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABwoKrAkLCv8JCwr/CQsK/wgLCpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmMCQsK/wkLCv8J
+        Cwr/CAsIuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCgqsCQsK/wkLCv8J
+        Cwr/CAsKmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCYwJCwr/CQsK/wkLCv8HCwjnCQoKqAkKCqgJCgqoCQoKqAkKCqgJ
+        CgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJ
+        CgqoCQoKqAkKCqgJCgqoCQoKqAcLCuMJCwr/CQsK/wkLCv8ICwqYAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsImwkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkKCqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAoKCkcJCwr8CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/gkJCVAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwVBwkI6QkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/BwkI7QkJCRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkLCZ0JCwr/CQsK/wkLCv8JCwr/CQoKwwkLCZwJCwmcCQsJnAkLCZwJ
+        CwmcCQsJnAkLCZwJCwmcCQsJnAkLCZwJCwmcCQsJnAkLCZwJCwmcCQsJnAkLCZwJCwmcCQsJnAkLCZwJ
+        CwmcCQsJnAkLCZwJCwmcCQsJnAkLCZwJCwmcCQsJnAkJCb4JCwr/CQsK/wkLCv8JCwr/CQoKpgAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDQYmCQsK/QkLCv8J
+        Cwr/CQsK/wgJCNEAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAABgcLCsoJCwr/CQsK/wkLCv8JCwr+CwsLLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgKCpQJCwr/CQsK/wkLCv8JCwr+CQkJNQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLLQkLCvwJCwr/CQsK/wkLCv8J
+        CwmeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBwkI7gkLCv8J
+        Cwr/CQsK/wcLCq4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQkJpAkLCv8JCwr/CQsK/wkKCvMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgMCD0JCwr/CQsK/wkLCv8JCwr/BwsLRQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAg8CQsK/wkLCv8J
+        Cwr/CQsK/wcKCkYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKdwkLCv8J
+        Cwr/CQsK/wkJCfEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHCQjqCQsK/wkLCv8JCwr/CQsJgAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQmjCQsK/wkLCv8JCwr/CQkJugAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLCrIJ
+        Cwr/CQsK/wkLCv8HCgqsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkKCsAJ
+        Cwr/CQsK/wkLCv8ICgqTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQsJiwkLCv8JCwr/CQsK/wcLCssAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsI0AkLCv8JCwr/CQsK/wgKCn8AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        Cgp2CQsK/wkLCv8JCwr/CQoK2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        CQjTCQsK/wkLCv8JCwr/CAoKewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCXEJCwr/CQsK/wkLCv8JCgrcAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLCssJCwr/CQsK/wkLCv8JCwmFAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAoKegkLCv8JCwr/CQsK/wgJCNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAsItgkLCv8JCwr/CQsK/wkLCZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgqSCQsK/wkLCv8JCwr/CQkJvwAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwqXCQsK/wkLCv8JCwr/CQoKwAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgLCLcJCwr/CQsK/wkLCv8JCwmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkLCW4JCwr/CQsK/wkLCv8HCQjvAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsI5wkLCv8JCwr/CQsK/wgKCncA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA0IOgkLCv8JCwr/CQsK/wkLCv8L
+        CwssAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcOByMJCwr/CQsK/wkLCv8JCwr/BwsLQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAHCQsK9QkLCv8JCwr/CQsK/wgLCHIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQwJagkLCv8JCwr/CQsK/wkLCvkA
+        AAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwi1CQsK/wkLCv8J
+        Cwr/CQoKxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQm7CQsK/wkLCv8JCwr/CQkJvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAoKCmUJCwr/CQsK/wkLCv8JCwr+BwcHIQAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJGgkLCvwJCwr/CQsK/wkLCv8J
+        CwlvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NEwkLCvkJ
+        Cwr/CQsK/wkLCv8JCwmIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICgp9CQsK/wkLCv8JCwr/CQsK/AkJCRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQoKqgkLCv8JCwr/CQsK/wcJCO4AAAAKAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcJCOgJCwr/CQsK/wkLCv8I
+        Cwi1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        DAg/CQsK/wkLCv8JCwr/CQsK/wkLCXEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAJCQloCQsK/wkLCv8JCwr/CQsK/woKCkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCwjNCQsK/wkLCv8JCwr/BwkI6QAAAAsA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcLCuMJCwr/CQsK/wkLCv8J
+        CQnXAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkMCVIJCwr/CQsK/wkLCv8JCwr/CQsJggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICgp5CQsK/wkLCv8JCwr/CQsK/wgLC1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQcLCM4JCwr/CQsK/wkLCv8J
+        Cwr2BwcHIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJHAkKCvMJCwr/CQsK/wkLCv8J
+        CQnWAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABwsLQgkLCv8JCwr/CQsK/wkLCv8JCQm7AAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICwqyCQsK/wkLCv8JCwr/CQsK/woKCkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKrQkLCv8J
+        Cwr/CQsK/wkLCv8JDAlqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKYAkLCv8JCwr/CQsK/wkLCv8I
+        Cwi2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkaCQkJ8QkLCv8JCwr/CQsK/wkLCvYLCwssAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAYNBiYJCQnyCQsK/wkLCv8JCwr/CQsK9AcHByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH
+        CgpjCQsK/wkLCv8JCwr/CQsK/wkKCtoREREPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCAkI0wkLCv8JCwr/CQsK/wkLCv8J
+        CwltAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCwqvCQsK/wkLCv8JCwr/CQsK/wkJCboA
+        AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAggLCrIJCwr/CQsK/wkLCv8JCwr/CAsIuAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAA8PDxEJCwreCQsK/wkLCv8JCwr/CQsK/wkJCaMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwiaCQsK/wkLCv8JCwr/CQsK/wcLCuMM
+        DAwVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCjAJCwr0CQsK/wkLCv8J
+        Cwr/CQsK/wkLCZwAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAABCAoKkwkLCv8JCwr/CQsK/wkLCv8JCwr3CQkJOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCU4JCwr9CQsK/wkLCv8JCwr/CQsK/wkKCqgAAAAHAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQkLCaEJCwr/CQsK/wkLCv8JCwr/CQsK/ggLCFcA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcKCmMJ
+        Cwr+CQsK/wkLCv8JCwr/CQsK/wcLCsgJCQkcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKChgJ
+        CgrCCQsK/wkLCv8JCwr/CQsK/wkLCv8JCwltAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCWoJCwr+CQsK/wkLCv8JCwr/CQsK/wcJCO8H
+        CgpjAAAAAQAAAAAAAAAAAAAAAAAAAAEICwtbBwkI6wkLCv8JCwr/CQsK/wkLCv8JCwr/CAoKdAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgKCl0JCwr6CQsK/wkLCv8JCwr/CQsK/wkLCv8JCQnVCAoKdAoKCksJCwlwCAsI0AkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/AoKCmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLC0AHCQjrCQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wcJCO4KCgpHAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAkJCRoJCQm7CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCgrBCAgIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        CwtcCQsK3wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCwrjBwoKYgAAAAEAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCAsIVwcLCq4HCwjmCQsK+gcJCOgI
+        CwqxCAsLXAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////AAAP/////////////////gA
+        AA/////////////////wAAAH////////////////8AAAB////////////////+AAAAP/////////////
+        ///gf/8D////////////////4P//g////////////////+D//4P////////////////g//+D////////
+        ////////4P//g////////////////+D//4P////////////////g//+D////////////////4P//g///
+        /////////////+D//4P////////////////g//+D////////////////4P//g////////////////+D/
+        /4P////////////////g//+D////////////////4P//g////////////////8D//4P/////////////
+        ///A//+B////////////////gf//gf///////////////wH//8D///////////////4D///Af///////
+        ///////4B///4D//////////////8Af//+AP/////////////+AP///wA/////////////+AH///+AH/
+        ///////////+AH////wA////////////+AD////+AH///////////8AB/////4A///////////8AB///
+        ///gP//////////8AB//////8D//////////+AB///////gf//////////AB///////4H//////////g
+        B///////+B//////////wB////////gf/////////4B////////4H/////////+A////////+B//////
+        ////Af////////gf/////////wP////////4H/////////8D////////+B//////////B/4AAAAAAAA/
+        /////////gf4AAAAAAAAP/////////4H8AAAAAAAAH/////////+B+AAAAAAAAD//////////gfgAAAA
+        AAAB//////////8HwD4P///4P///////////B8D+D///+D///////////wfB/g////g///////////8D
+        wf4P///4P///////////A8H+AAAAAD///////////wPB/gAAAAA///////////+Dwf4AAAAAP///////
+        ////g8H+AAAAAD///////////4PB/gAAAAA///////////+Bwf4P///4P///////////gcH+D///+D//
+        /////////8HB/g////g////////////Bwf4AAAAAP///////////wcH+AAAAAD///////////8HB/gAA
+        AAA////////////Awf4AAAAAP///////////wAH+AAAAAD///////////+AB/g////g////////////g
+        Af4P///4P///////////8AP+D///+D////////////gH/g////g////////////+H/4AAAAAP///////
+        ///////+AAAAAD///////////////gAAAAA///////////////4AAAAAP//////////////+AAAAAD//
+        /////////////g////g///////////////4P///4P//////////////+D///+D///////////////gAA
+        AAA///////////////4AAAAAP//////////////+AAAAAD///////////////gAAAAA/////////////
+        //4AAAAAP//////////////+AAAAAD///////////////g////g///////////////4P///4P///////
+        ///////+D///+D///////////////gAAAAA///////////////4AAAAAP//////////////8AAAAAB//
+        ////////////+AAAAAAP//////////////gAAAAAD//////////////wH////Af/////////////8D//
+        //4H/////////////+B/////A//////////////gf////wP/////////////4H////8D////////////
+        /+D/////g//////////////g/////4P/////////////4P////+D/////////////+D/////g///////
+        ///////g/////4P/////////////4P////+D/////////////+D/////g//////////////gf////4P/
+        ////////////4H////8D/////////////+B/////A//////////////wf////wf/////////////8D//
+        //4H//////////////A////+B//////////////4H////A//////////////+B////wP////////////
+        //wP///4D//////////////8D///+B///////////////Af///Af//////////////4H///wP///////
+        ////////A///4H///////////////wH//8B///////////////+A//+A////////////////wH//AP//
+        /////////////8A//wH////////////////gH/wD////////////////8A/4B/////////////////gH
+        8A/////////////////8AcAf/////////////////gAAP/////////////////8AAH//////////////
+        ////gAD//////////////////+AB///////////////////wB////////ygAAABAAAAAgAAAAAEAIAAA
+        AAAAAEAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4SBwoKqwkLCvYJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr4CQkJugsLCywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsItAkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCQjvCAgIHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw8PEQkLCv4J
+        Cwr/CQkJTQcOByQHDgckBw4HJAcOByQHDgckBw4HJAkJCTUICQjRCQsK/wkLCYoAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcOByMJCwr/CQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKeAkLCv8J
+        CgqnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHDgckCQsK/wkLCv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgKCngJCwr/CQoKqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABw4HJAkLCv8JCwr/AAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgp4CQsK/wkKCqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcOByQJ
+        Cwr/CQsK/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKeAkLCv8JCgqoAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAHDgckCQsK/wkLCv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgKCngJ
+        Cwr/CQoKqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg0NJwkLCv8JCwr9AAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAICgp3CQsK/wkKCqkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCWgJCwr/CQoK2gAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwoKYwkLCv8HCwrIAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICB0H
+        CQjrCQsK/wgKCnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNBiUJCwr/CQsK/gYNDScA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAoKChgJCQnWCQsK/wkKCtkAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQkJvAkLCv8JCgrCAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAoKCjMJCwrgCQsK/wcJCOwGDAwpAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAsLCywJCwr3CQsK/wgLCLcKCgoZAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERERDwkLCYYJCwr6CQsK/wcLCuMLCwssAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQwJUwkLCvoJCwr/CQsK+AkLCZ4O
+        Dg4SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODg4SCQsJgggJCPAJCwr/CQsK/wgLCLgL
+        CwsWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        DQg6CAkI1AkLCv8JCwr/CQkJ1REREQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDBUJCwmICQoK8wkLCv8J
+        Cwr/CQoK3AgLC1oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEKCgpIBwkI6gkLCv8ICgqQAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgkLCYkJ
+        Cwr1CQsK/wkLCv8JCQnXCAoKXQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkMCVQJCwr/BwkI7QAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAADw8PEQcLCswJCwr/CQsK/wgJCNMICwhXAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL
+        CwsWCQsK/wkLCv8AEhIOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgLCLYJCwr/BwkI7ggLCFcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAADAwMFAkLCv8JCwr/Dw8PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCU0JCwr/CQsK+QkJCTUAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDBQJCwr/CQsK/w8PDxAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwi2CQsK/wgKCpIA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCwstCQsK/wkLCv8A
+        AAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAABCQsK9AkLCv8JCQk3AAAAAAAAAAAAAAAAAAAAAggLCFgJCwmdCQoKqAkKCqgJCgqoCQoKqAkKCqgJ
+        CgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJCgqoCQoKqAkKCqgJ
+        CgqpBwkI6QkLCv8JCgrCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAABMTDQkLCv8JCwr/CwsLFwAAAAAAAAAAAAAABggLCLgJCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwrdBw4HIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJCwr4CQsK/woKCjAAAAAAAAAAAAkLCXAJ
+        Cwr/CQsK9wgKCpAICgp4CAoKeAkLCZ4JCwr/BwkI7AgKCngICgp4CAoKeAgKCngICgp4CAoKeAgKCngI
+        Cgp4CAoKeAgKCngICgp4CAoKeAkKCqYJCwr/BwsK5AgKCncICwhYAAAACAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsIzwkLCv8I
+        CgpdAAAAAAAAAAAJCgqpCQsK/wkLCYAAAAAAAAAAAAAAAAAKCgpICQsK/wkKCtwAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwhYCQsK/wcLCswAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkLCaIJCwr/CQsJigAAAAAAAAAABwoKrAkLCv8ICgp0AAAAAAAAAAAAAAAACgoKSAkLCv8H
+        CQjqCgoKZAoKCmQKCgpkCgoKZAoKCmQKCgpkCgoKZAoKCmQKCgpkCgoKZAoKCmQKCgpkCAsImQkLCv8H
+        CwrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICgp1CQsK/wgLCLcAAAAAAAAAAAcKCqwJCwr/CAoKdAAAAAAA
+        AAAAAAAAAAoKCkgJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/BwsKzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKSAkLCv8HCwrkAAAAAAAAAAAH
+        CgqsCQsK/wgKCnQAAAAAAAAAAAAAAAAKCgpICQsK/wkLCvYJCQm8CQkJvAkJCbwJCQm8CQkJvAkJCbwJ
+        CQm8CQkJvAkJCbwJCQm8CQkJvAkJCbwICQjTCQsK/wcLCswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJCRsJ
+        Cwr/CQsK/w8PDxEAAAAABwoKrAkLCv8ICgp0AAAAAAAAAAAAAAAACgoKSAkLCv8JCgrcAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAsIWAkLCv8HCwrMAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABwkI7gkLCv8IDAg/AAAAAAcKCqwJCwr/CAoKdAAAAAAAAAAAAAAAAAoKCkgJ
+        Cwr/CQsK4AcHByAHBwcgBwcHIAcHByAHBwcgBwcHIAcHByAHBwcgBwcHIAcHByAHBwcgBwcHIAkLCW0J
+        Cwr/BwsKzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkKCsEJCwr/CQsJawAAAAAHCgqsCQsK/wgLC3MA
+        AAAAAAAAAAAAAAAKCgpICQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wcLCswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICwiaCQsK/wcKCqsA
+        AAALCAkI0gkLCv8KCgpkAAAAAAAAAAAAAAAACgoKSAkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCwrMAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAABwsLQwkLCv8JCwr/CQsK/wkLCv8JCwr3CQkJGwAAAAAAAAAAAAAAAAoKCkgJCwr/CQoK3AAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLCFgJCwr/BwsKzAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwltCQoK8wkLCv8HCQjrCQkJUAAAAAAAAAAAAAAAAAAAAAAK
+        CgpICQsK/wkKCtwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI
+        CwhYCQsK/wcLCswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHBwcgAAAABAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACgoKSAkLCv8JCwr6CQoK3AkKCtwJCgrcCQoK3AkKCtwJCgrcCQoK3AkKCtwJ
+        CgrcCQoK3AkKCtwJCgrcBwkI6AkLCv8HCwrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCkgJCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/BwsKzAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wcLCOYK
+        CgpICgoKSAoKCkgKCgpICgoKSAoKCkgKCgpICgoKSAoKCkgKCgpICgoKSAoKCkgJCwmHCQsK/wcLCswA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACgoKSAkLCv8JCgrcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACAsIWAkLCv8HCwrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAoKCkgJCwr/CQkJ8QgLCpgICwqYCAsKmAgLCpgICwqYCAsKmAgLCpgI
+        CwqYCAsKmAgLCpgICwqYCAsKmAkJCbsJCwr/BwsKzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wcLCswAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKSAkLCv8H
+        CQjvCQkJjAkJCYwJCQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJCQmMCQkJjAkJCYwJCQmMCAsIswkLCv8H
+        CwrMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAoKCkgJCwr/CQoK3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgLCFgJCwr/BwsKzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wcLCOcJDAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQJ
+        DAlUCQwJVAkMCVQJDAlUCQwJVAkMCVQHCgqPCQsK/wcLCswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKeQkLCv8JCwr/CQsK/wkLCv8J
+        Cwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8JCwr/CQsK/wkLCv8HCQjpDQ0NEwAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLLQkLCvoJ
+        Cwr/CQoK2QgLCNAICwjQCAsI0AgLCNAICwjQCAsI0AgLCNAICwjQCAsI0AgLCNAICwjQCAsI0AgLCNAI
+        CQjwCQsK/wkKCqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcLCq8JCwr/CQoKwQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAABwsLQgkLCv8JCwr/CgoKMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAA8PDxEJCwr7CQsK/wgMCDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQm7CQsK/wcKCo4AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCgpICQsK/wcJCOkAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQwJaQkLCv8H
+        CwrIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKZAkLCv8J
+        CgrDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcLC0IJCwr/BwsI5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAkJCWgJCwr/CQkJvgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAg8CQsK/wcJCOkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJDAlUCQsK/wgJCNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQwJUwkLCv8JCQnVAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgwMKgkLCv8JCwr6AAAACgAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkLCYMJ
+        Cwr/BwoKrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIH
+        CQjrCQsK/woKCkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAHCwrKCQsK/wkLCW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAACQsJnQkLCv8JCgqpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDQYmCQsK/wkLCv4ICAgfAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNCDoJCwr/CQsK+wgICB0AAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAoKlgkLCv8JCQm9AAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsKyAkLCv8I
+        CwibAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHIQkLCvkJ
+        Cwr/CgoKSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAcLC0UJCwr/CQsK/QkJCTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAgLCrEJCwr/CQsKxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwsKrwkLCv8JCQnWAAAACgAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAgKCl8JCwr/CQsK/AoKCjMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKChkHCQjsCQsK/wkKCqYA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCjAJCwr1CQsK/wkLCYcAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACgoKSAkLCv0JCwr/CQoKjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNBiUHCwjmCQsK/wkKCsMA
+        AAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCwltCQsK/wkLCv8ICwibAAAABgAAAAAAAAAAAAAAAAkJCTcH
+        CwjnCQsK/wkKCtoMDAwVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgLCHIJCwr+CQsK/wgJCNIJ
+        CQlPCwsLLAkLCYkJCwr6CQsK/wkJCdgJCQkcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAACQwJUwcJCO8JCwr/CQsK/wkLCv8JCwr/CQsK/wgLCLMPDw8RAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCwsXCAoKkAcLCuUJCwr5CQoKxAkMCVMAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////AA////////8AB////////gAH///////+P8f////
+        ///4/x////////j/H///////+P8f///////4/x////////j/H///////+P8f///////w/w///////+D/
+        h///////wf+D//////8D/8D//////Af/4H/////wH//wf////8A///x/////gP///D////+D///8P///
+        /w////w/////H////D////4cAAAAf////hgAAAB////+GAAAAP////8Y4//H/////xjgAAf/////GOAA
+        B/////8Y4AAH/////wjj/8f/////iOAAB/////+I4AAH/////4DgAAf/////gOP/x//////B4//H////
+        /+PgAAf//////+AAB///////4AAH///////j/8f//////+AAB///////4AAH///////gAAf//////+P/
+        x///////4AAH///////gAAP//////8AAA///////w//h//////+H//H//////4//8f//////j//x////
+        //+P//H//////4//8f//////h//x//////+H//H//////8f/4f//////w//j///////j/8P//////+H/
+        x///////8P+H///////w/w////////h+D////////Bwf///////+AD////////8Af////////4H///8=
+</value>
+  </data>
+</root>

+ 74 - 0
PicSo/InputBox.Designer.cs

@@ -0,0 +1,74 @@
+namespace PicSo
+{
+    partial class InputBox
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.btn_OK = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(12, 12);
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(368, 21);
+            this.textBox1.TabIndex = 0;
+            this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
+            // 
+            // btn_OK
+            // 
+            this.btn_OK.Location = new System.Drawing.Point(386, 10);
+            this.btn_OK.Name = "btn_OK";
+            this.btn_OK.Size = new System.Drawing.Size(75, 23);
+            this.btn_OK.TabIndex = 1;
+            this.btn_OK.Text = "OK";
+            this.btn_OK.UseVisualStyleBackColor = true;
+            this.btn_OK.Click += new System.EventHandler(this.btn_OK_Click);
+            // 
+            // InputBox
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(473, 45);
+            this.Controls.Add(this.btn_OK);
+            this.Controls.Add(this.textBox1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
+            this.Name = "InputBox";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "输入";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.TextBox textBox1;
+        private System.Windows.Forms.Button btn_OK;
+    }
+}

+ 35 - 0
PicSo/InputBox.cs

@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace PicSo
+{
+    public partial class InputBox : Form
+    {
+        public InputBox()
+        {
+            InitializeComponent();
+        }
+
+        public string InputText { get; set; }
+        private void btn_OK_Click(object sender, EventArgs e)
+        {
+            this.InputText = this.textBox1.Text;
+            this.DialogResult = System.Windows.Forms.DialogResult.OK;
+        }
+
+        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar==13)
+            {
+                this.InputText = this.textBox1.Text;
+                this.DialogResult = System.Windows.Forms.DialogResult.OK;
+            }
+        }
+    }
+}

+ 120 - 0
PicSo/InputBox.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>

+ 36 - 0
PicSo/ListViewColumnSorter.cs

@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections;
+
+namespace PicSo
+{
+    public class ListViewColumnSorter:IComparer
+    {
+        public int ColumnIndex { get; set; }
+        bool isAsc = true;
+        public ListViewColumnSorter()
+        {
+            this.ColumnIndex = 0;
+        }
+        public ListViewColumnSorter(int columnIndex,bool Asc)
+        {
+            this.ColumnIndex = columnIndex;
+            this.isAsc = Asc;
+        }
+
+        public int Compare(object x, object y)
+        {
+            var k = (x as System.Windows.Forms.ListViewItem).SubItems[ColumnIndex].Text.CompareTo((y as System.Windows.Forms.ListViewItem).SubItems[ColumnIndex].Text);
+            if (isAsc)
+            {
+                return k;
+            }
+            else
+            {
+                return -k;
+            }
+        }
+    }
+}

+ 322 - 0
PicSo/MovieContainer.Designer.cs

@@ -0,0 +1,322 @@
+namespace PicSo
+{
+    partial class MovieContainer
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            this.txt_Actor = new System.Windows.Forms.TextBox();
+            this.txt_Title = new System.Windows.Forms.TextBox();
+            this.txt_CoverFile = new System.Windows.Forms.TextBox();
+            this.txt_Maker = new System.Windows.Forms.TextBox();
+            this.txt_Lable = new System.Windows.Forms.TextBox();
+            this.txt_Series = new System.Windows.Forms.TextBox();
+            this.txt_Producer = new System.Windows.Forms.TextBox();
+            this.txt_ReleaseDate = new System.Windows.Forms.TextBox();
+            this.txt_Minutes = new System.Windows.Forms.TextBox();
+            this.txt_Code = new System.Windows.Forms.TextBox();
+            this.txt_ItemURL = new System.Windows.Forms.TextBox();
+            this.txt_intro = new System.Windows.Forms.TextBox();
+            this.btn_pre = new System.Windows.Forms.Button();
+            this.btn_next = new System.Windows.Forms.Button();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label6 = new System.Windows.Forms.Label();
+            this.btn_openWithBrower = new System.Windows.Forms.Button();
+            this.btn_find = new System.Windows.Forms.Button();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // pictureBox1
+            // 
+            this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.pictureBox1.Location = new System.Drawing.Point(3, 3);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(580, 335);
+            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+            this.pictureBox1.TabIndex = 1;
+            this.pictureBox1.TabStop = false;
+            this.pictureBox1.DoubleClick += new System.EventHandler(this.pictureBox1_DoubleClick);
+            // 
+            // txt_Actor
+            // 
+            this.txt_Actor.Location = new System.Drawing.Point(589, 35);
+            this.txt_Actor.Multiline = true;
+            this.txt_Actor.Name = "txt_Actor";
+            this.txt_Actor.Size = new System.Drawing.Size(315, 39);
+            this.txt_Actor.TabIndex = 2;
+            this.txt_Actor.Text = "Actor";
+            // 
+            // txt_Title
+            // 
+            this.txt_Title.Location = new System.Drawing.Point(589, 8);
+            this.txt_Title.Name = "txt_Title";
+            this.txt_Title.Size = new System.Drawing.Size(315, 21);
+            this.txt_Title.TabIndex = 3;
+            this.txt_Title.Text = "Title";
+            // 
+            // txt_CoverFile
+            // 
+            this.txt_CoverFile.Location = new System.Drawing.Point(3, 344);
+            this.txt_CoverFile.Name = "txt_CoverFile";
+            this.txt_CoverFile.Size = new System.Drawing.Size(580, 21);
+            this.txt_CoverFile.TabIndex = 2;
+            this.txt_CoverFile.Text = "CoverFile";
+            // 
+            // txt_Maker
+            // 
+            this.txt_Maker.Location = new System.Drawing.Point(626, 108);
+            this.txt_Maker.Name = "txt_Maker";
+            this.txt_Maker.Size = new System.Drawing.Size(114, 21);
+            this.txt_Maker.TabIndex = 3;
+            this.txt_Maker.Text = "Maker";
+            // 
+            // txt_Lable
+            // 
+            this.txt_Lable.Location = new System.Drawing.Point(790, 108);
+            this.txt_Lable.Name = "txt_Lable";
+            this.txt_Lable.Size = new System.Drawing.Size(114, 21);
+            this.txt_Lable.TabIndex = 2;
+            this.txt_Lable.Text = "Lable";
+            // 
+            // txt_Series
+            // 
+            this.txt_Series.Location = new System.Drawing.Point(626, 135);
+            this.txt_Series.Name = "txt_Series";
+            this.txt_Series.Size = new System.Drawing.Size(114, 21);
+            this.txt_Series.TabIndex = 3;
+            this.txt_Series.Text = "Series";
+            // 
+            // txt_Producer
+            // 
+            this.txt_Producer.Location = new System.Drawing.Point(790, 135);
+            this.txt_Producer.Name = "txt_Producer";
+            this.txt_Producer.Size = new System.Drawing.Size(114, 21);
+            this.txt_Producer.TabIndex = 2;
+            this.txt_Producer.Text = "txt_Producer";
+            // 
+            // txt_ReleaseDate
+            // 
+            this.txt_ReleaseDate.Location = new System.Drawing.Point(626, 162);
+            this.txt_ReleaseDate.Name = "txt_ReleaseDate";
+            this.txt_ReleaseDate.Size = new System.Drawing.Size(114, 21);
+            this.txt_ReleaseDate.TabIndex = 3;
+            this.txt_ReleaseDate.Text = "ReleaseDate";
+            // 
+            // txt_Minutes
+            // 
+            this.txt_Minutes.Location = new System.Drawing.Point(790, 162);
+            this.txt_Minutes.Name = "txt_Minutes";
+            this.txt_Minutes.Size = new System.Drawing.Size(114, 21);
+            this.txt_Minutes.TabIndex = 2;
+            this.txt_Minutes.Text = "Minutes";
+            // 
+            // txt_Code
+            // 
+            this.txt_Code.Location = new System.Drawing.Point(589, 80);
+            this.txt_Code.Name = "txt_Code";
+            this.txt_Code.Size = new System.Drawing.Size(114, 21);
+            this.txt_Code.TabIndex = 3;
+            this.txt_Code.Text = "txt_Code";
+            // 
+            // txt_ItemURL
+            // 
+            this.txt_ItemURL.Location = new System.Drawing.Point(589, 189);
+            this.txt_ItemURL.Name = "txt_ItemURL";
+            this.txt_ItemURL.Size = new System.Drawing.Size(272, 21);
+            this.txt_ItemURL.TabIndex = 2;
+            this.txt_ItemURL.Text = "txt_ItemURL";
+            // 
+            // txt_intro
+            // 
+            this.txt_intro.Location = new System.Drawing.Point(589, 216);
+            this.txt_intro.Multiline = true;
+            this.txt_intro.Name = "txt_intro";
+            this.txt_intro.Size = new System.Drawing.Size(315, 122);
+            this.txt_intro.TabIndex = 3;
+            this.txt_intro.Text = "introduction";
+            // 
+            // btn_pre
+            // 
+            this.btn_pre.Location = new System.Drawing.Point(748, 342);
+            this.btn_pre.Name = "btn_pre";
+            this.btn_pre.Size = new System.Drawing.Size(75, 23);
+            this.btn_pre.TabIndex = 4;
+            this.btn_pre.Text = "<<Pre";
+            this.btn_pre.UseVisualStyleBackColor = true;
+            this.btn_pre.Click += new System.EventHandler(this.btn_pre_Click);
+            // 
+            // btn_next
+            // 
+            this.btn_next.Location = new System.Drawing.Point(829, 342);
+            this.btn_next.Name = "btn_next";
+            this.btn_next.Size = new System.Drawing.Size(75, 23);
+            this.btn_next.TabIndex = 5;
+            this.btn_next.Text = "Next>>";
+            this.btn_next.UseVisualStyleBackColor = true;
+            this.btn_next.Click += new System.EventHandler(this.btn_next_Click);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(589, 111);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(35, 12);
+            this.label1.TabIndex = 6;
+            this.label1.Text = "Maker";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(589, 138);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(41, 12);
+            this.label2.TabIndex = 7;
+            this.label2.Text = "Series";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(589, 165);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(29, 12);
+            this.label3.TabIndex = 8;
+            this.label3.Text = "Date";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(746, 111);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(35, 12);
+            this.label4.TabIndex = 9;
+            this.label4.Text = "Label";
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(746, 138);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(35, 12);
+            this.label5.TabIndex = 10;
+            this.label5.Text = "Produ";
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(746, 165);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(29, 12);
+            this.label6.TabIndex = 11;
+            this.label6.Text = "Time";
+            // 
+            // btn_openWithBrower
+            // 
+            this.btn_openWithBrower.Location = new System.Drawing.Point(867, 187);
+            this.btn_openWithBrower.Name = "btn_openWithBrower";
+            this.btn_openWithBrower.Size = new System.Drawing.Size(37, 23);
+            this.btn_openWithBrower.TabIndex = 12;
+            this.btn_openWithBrower.Text = "Go";
+            this.btn_openWithBrower.UseVisualStyleBackColor = true;
+            this.btn_openWithBrower.Click += new System.EventHandler(this.btn_openWithBrower_Click);
+            // 
+            // btn_find
+            // 
+            this.btn_find.Location = new System.Drawing.Point(589, 342);
+            this.btn_find.Name = "btn_find";
+            this.btn_find.Size = new System.Drawing.Size(75, 23);
+            this.btn_find.TabIndex = 13;
+            this.btn_find.Text = "Find It";
+            this.btn_find.UseVisualStyleBackColor = true;
+            this.btn_find.Click += new System.EventHandler(this.btn_find_Click);
+            // 
+            // MovieContainer
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.Controls.Add(this.btn_find);
+            this.Controls.Add(this.btn_openWithBrower);
+            this.Controls.Add(this.label6);
+            this.Controls.Add(this.label5);
+            this.Controls.Add(this.label4);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.btn_next);
+            this.Controls.Add(this.btn_pre);
+            this.Controls.Add(this.txt_intro);
+            this.Controls.Add(this.txt_ItemURL);
+            this.Controls.Add(this.txt_Series);
+            this.Controls.Add(this.txt_Code);
+            this.Controls.Add(this.txt_Lable);
+            this.Controls.Add(this.txt_Minutes);
+            this.Controls.Add(this.txt_Maker);
+            this.Controls.Add(this.txt_ReleaseDate);
+            this.Controls.Add(this.txt_CoverFile);
+            this.Controls.Add(this.txt_Producer);
+            this.Controls.Add(this.txt_Title);
+            this.Controls.Add(this.txt_Actor);
+            this.Controls.Add(this.pictureBox1);
+            this.Name = "MovieContainer";
+            this.Size = new System.Drawing.Size(907, 371);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.PictureBox pictureBox1;
+        private System.Windows.Forms.TextBox txt_Actor;
+        private System.Windows.Forms.TextBox txt_Title;
+        private System.Windows.Forms.TextBox txt_CoverFile;
+        private System.Windows.Forms.TextBox txt_Maker;
+        private System.Windows.Forms.TextBox txt_Lable;
+        private System.Windows.Forms.TextBox txt_Series;
+        private System.Windows.Forms.TextBox txt_Producer;
+        private System.Windows.Forms.TextBox txt_ReleaseDate;
+        private System.Windows.Forms.TextBox txt_Minutes;
+        private System.Windows.Forms.TextBox txt_Code;
+        private System.Windows.Forms.TextBox txt_ItemURL;
+        private System.Windows.Forms.TextBox txt_intro;
+        private System.Windows.Forms.Button btn_pre;
+        private System.Windows.Forms.Button btn_next;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.Button btn_openWithBrower;
+        private System.Windows.Forms.Button btn_find;
+    }
+}

+ 144 - 0
PicSo/MovieContainer.cs

@@ -0,0 +1,144 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace PicSo
+{
+    public partial class MovieContainer : UserControl
+    {
+        public MovieContainer()
+        {
+            InitializeComponent();
+        }
+
+        private AVSORTER.Movie _movie;
+
+        public AVSORTER.Movie Movie
+        {
+            get { return _movie; }
+            set
+            {
+                if (value!=null)
+                {
+                    _movie = value;
+                    if (value.Actor!=null)
+                    {
+                        txt_Actor.Text = AVSORTER.Tools.ListToString(value.Actor);
+                    }
+                    if (value.AVCode!=null)
+                    {
+                        txt_Code.Text = value.AVCode;
+                    }
+                    if (value.CoverFile!=null)
+                    {
+                        txt_CoverFile.Text = value.CoverFile;
+                        if (System.IO.File.Exists(value.CoverFile))
+                        {
+                            this.pictureBox1.Image = Image.FromFile(value.CoverFile);
+                        }
+                    }
+                    if (value.Introduction!=null)
+                    {
+                        txt_intro.Text = value.Introduction;
+                    }
+                    if (value.ItemURL!=null)
+                    {
+                        txt_ItemURL.Text = value.ItemURL;
+                    }
+                    if (value.Lable!=null)
+                    {
+                        txt_Lable.Text = value.Lable;
+                    }
+                    if (value.Maker!=null)
+                    {
+                        txt_Maker.Text = value.Maker;
+                    }
+                    if (value.Minutes!=null)
+                    {
+                        txt_Minutes.Text = value.Minutes;
+                    }
+                    if (value.Producer!=null)
+                    {
+                        txt_Producer.Text = value.Producer;
+                    }
+                    if (value.ReleaseDate!=null)
+                    {
+                        txt_ReleaseDate.Text = value.ReleaseDate.ToString("yyyy年MM月dd日");
+                    }
+                    if (value.Series!=null)
+                    {
+                        txt_Series.Text = value.Series;
+                    }
+                    if (value.Title!=null)
+                    {
+                        txt_Title.Text = value.Title;
+                    }
+                }
+                
+            }
+        }
+
+        private List<AVSORTER.Movie> _list;
+
+        public List<AVSORTER.Movie> MovieList
+        {
+            get { return _list; }
+            set { _list = value; }
+        }
+
+        void showNext()
+        {
+            int i = _list.IndexOf(this.Movie);
+            if (i < this.MovieList.Count-1)
+            {
+                this.Movie = this.MovieList[++i];
+            }
+        }
+        void showPre()
+        {
+            int i = _list.IndexOf(this.Movie);
+            if (i > 0)
+            {
+                this.Movie = this.MovieList[--i];
+            }
+        }
+
+
+        private void pictureBox1_DoubleClick(object sender, EventArgs e)
+        {
+            
+            if (this.Movie!=null &&  this.Movie.CoverFile != null && System.IO.File.Exists(this.Movie.CoverFile))
+            {
+                System.Diagnostics.Process.Start(this.Movie.CoverFile);
+            }
+        }
+
+        private void btn_pre_Click(object sender, EventArgs e)
+        {
+            showPre();
+        }
+
+        private void btn_next_Click(object sender, EventArgs e)
+        {
+            showNext();
+        }
+
+        private void btn_openWithBrower_Click(object sender, EventArgs e)
+        {
+            System.Diagnostics.Process.Start(this.txt_ItemURL.Text);
+        }
+
+        private void btn_find_Click(object sender, EventArgs e)
+        {
+            System.Diagnostics.Process.Start("explorer", System.IO.Path.GetDirectoryName(this.Movie.CoverFile));
+        }
+
+
+
+    }
+}

+ 120 - 0
PicSo/MovieContainer.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=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>

+ 134 - 0
PicSo/PicSo.csproj

@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{1A9F40ED-0402-4145-9140-0C153B989983}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PicSo</RootNamespace>
+    <AssemblyName>PicSo</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>1414496318_339862.ico</ApplicationIcon>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="BasicContainer.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="BasicContainer.Designer.cs">
+      <DependentUpon>BasicContainer.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="InputBox.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="InputBox.Designer.cs">
+      <DependentUpon>InputBox.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ListViewColumnSorter.cs" />
+    <Compile Include="MovieContainer.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="MovieContainer.Designer.cs">
+      <DependentUpon>MovieContainer.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="BasicContainer.resx">
+      <DependentUpon>BasicContainer.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Form1.resx">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="InputBox.resx">
+      <DependentUpon>InputBox.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MovieContainer.resx">
+      <DependentUpon>MovieContainer.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="app.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Arzon\Arzon.csproj">
+      <Project>{9262F4C4-2D81-41AB-A444-57D3A21CEA9B}</Project>
+      <Name>Arzon</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\Entity\Entity.csproj">
+      <Project>{21D25A8A-680F-4C0A-815B-AE394905A64A}</Project>
+      <Name>Entity</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="1414496318_339862.ico" />
+  </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.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

BIN
PicSo/PicSo.v11.suo


+ 21 - 0
PicSo/Program.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace PicSo
+{
+    static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Form1());
+        }
+    }
+}

+ 36 - 0
PicSo/Properties/AssemblyInfo.cs

@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("PicSo")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PicSo")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("d4025d8f-e395-4e69-8262-8914affc24c0")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+//      主版本
+//      次版本 
+//      内部版本号
+//      修订号
+//
+// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 63 - 0
PicSo/Properties/Resources.Designer.cs

@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.18444
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace PicSo.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   返回此类使用的缓存的 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PicSo.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   使用此强类型资源类,为所有资源查找
+        ///   重写当前线程的 CurrentUICulture 属性。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}

+ 117 - 0
PicSo/Properties/Resources.resx

@@ -0,0 +1,117 @@
+<?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.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: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" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </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" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 26 - 0
PicSo/Properties/Settings.Designer.cs

@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.18444
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace PicSo.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
PicSo/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

+ 3 - 0
PicSo/app.config

@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

BIN
PicSo/bin/Debug/PicSo.vshost.exe


+ 3 - 0
PicSo/bin/Debug/PicSo.vshost.exe.config

@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

+ 11 - 0
PicSo/bin/Debug/PicSo.vshost.exe.manifest

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>

BIN
PicSo/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
PicSo/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache


+ 64 - 0
PicSo/obj/x86/Debug/PicSo.csproj.FileListAbsolute.txt

@@ -0,0 +1,64 @@
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\PicSo.exe
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\PicSo.pdb
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\Arzon.dll
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\Entity.dll
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\HtmlAgilityPack.dll
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\Arzon.pdb
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\bin\Debug\Entity.pdb
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PicSo.csprojResolveAssemblyReference.cache
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PICSOUL.BasicContainer.resources
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PicSo.Form1.resources
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PicSo.Properties.Resources.resources
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PicSo.csproj.GenerateResource.Cache
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PicSo.exe
+C:\Users\ShenJian281\documents\visual studio 2010\Projects\PICSOUL\PicSo\obj\x86\Debug\PicSo.pdb
+C:\Users\ShenJian281\Documents\Visual Studio 2010\Projects\PICSOUL\PicSo\bin\Debug\PicSo.exe.config
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\PicSo.exe.config
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.exe
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.pdb
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\PicSo.exe
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\PicSo.pdb
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\Arzon.dll
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\HtmlAgilityPack.dll
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\Arzon.pdb
+C:\Users\su\Desktop\PICSOUL\PicSo\bin\Debug\Entity.pdb
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.csprojResolveAssemblyReference.cache
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PICSOUL.BasicContainer.resources
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.Form1.resources
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.Properties.Resources.resources
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.csproj.GenerateResource.Cache
+C:\Users\su\Desktop\PICSOUL\PicSo\obj\x86\Debug\PicSo.InputBox.resources
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\PicSo.exe.config
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.exe
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.pdb
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\PicSo.exe
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\PicSo.pdb
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Entity.dll
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\HtmlAgilityPack.dll
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Entity.pdb
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.csprojResolveAssemblyReference.cache
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PICSOUL.BasicContainer.resources
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.Form1.resources
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.InputBox.resources
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.Properties.Resources.resources
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.csproj.GenerateResource.Cache
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Gets.dll
+C:\Users\ShenJian281\Desktop\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Gets.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\PicSo.exe.config
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.exe
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\PicSo.exe
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\PicSo.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Entity.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Gets.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\HtmlAgilityPack.dll
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Gets.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\bin\Debug\Entity.pdb
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.csprojResolveAssemblyReference.cache
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.Form1.resources
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.InputBox.resources
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.Properties.Resources.resources
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.csproj.GenerateResource.Cache
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\AVSORTER.BasicContainer.resources
+C:\Users\su\Desktop\PICSOUL2014年8月20日\PICSOUL2014年8月20日\PICSOUL\PicSo\obj\x86\Debug\PicSo.MovieContainer.resources

BIN
PicSo/obj/x86/Debug/TempPE/Properties.Resources.Designer.cs.dll


+ 0 - 0
read


+ 0 - 0
readme.md