소스 검색

初步完成三华接口对接

JeffWang 3 년 전
부모
커밋
2b3267a0d8

+ 132 - 0
FactoryTool_CShare/Business/SanhuaMethod.cs

@@ -0,0 +1,132 @@
+using Newtonsoft.Json.Linq;
+using SufeiUtil;
+using SXLibrary;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HttpHelper = SufeiUtil.HttpHelper;
+
+namespace MOKA_Factory_Tools
+{
+    internal class SanhuaMethod
+    {
+        public static SanhuaMESLoginInfo sanhuaLoginInfo = new SanhuaMESLoginInfo();
+
+        public static bool CheckLogin(string url)
+        {
+            HttpHelper http = new HttpHelper();
+            HttpItem item = new HttpItem() {URL = url, Encoding = Encoding.UTF8,Method = "post", PostEncoding = Encoding.UTF8, KeepAlive = false};
+            item.ContentType = "application/json;charset=utf-8";
+            item.Postdata = string.Format("{{\"password\":\"{0}\",\"resourceCode\":\"{1}\",\"staffCode\":\"{2}\"}}", sanhuaLoginInfo.staffCode, sanhuaLoginInfo.password, sanhuaLoginInfo.resourceCode);
+            HttpResult result = http.GetHtml(item);
+            if (result.StatusCode != System.Net.HttpStatusCode.OK)
+            {
+                Log.WriteErrorLog(string.Format("CheckLogin System abnormality, staffCode={0} password={1} resourceCode={2}", sanhuaLoginInfo.staffCode, sanhuaLoginInfo.password, sanhuaLoginInfo.resourceCode));
+                return false;
+            }
+
+            string ParseText = result.Html;
+
+            try
+            {
+                JObject jObject = JObject.Parse(ParseText);
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+
+            return true;
+        }
+
+        public static bool ProductRouteCheck(string url, string productSN)
+        {
+            HttpHelper http = new HttpHelper();
+            HttpItem item = new HttpItem() { URL = url, Encoding = Encoding.UTF8, Method = "post", PostEncoding = Encoding.UTF8, KeepAlive = false };
+            item.ContentType = "application/json;charset=utf-8";
+            item.Postdata = string.Format("{{\"jigEdition\":\"{0}\",\"resourceCode\":\"{1}\",\"staffCode\":\"{2}\",\"productSN\":\"{3}\"}}", 
+                sanhuaLoginInfo.jigEdtion, sanhuaLoginInfo.resourceCode, sanhuaLoginInfo.staffCode, productSN);
+            HttpResult result = http.GetHtml(item);
+            if (result.StatusCode != System.Net.HttpStatusCode.OK)
+            {
+                Log.WriteErrorLog(string.Format("ProductRouteCheck System abnormality, productSN={0}", productSN));
+                return false;
+            }
+
+            string ParseText = result.Html;
+
+            try
+            {
+                JObject jObject = JObject.Parse(ParseText);
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+
+            return true;
+        }
+
+        public static bool UploadIdcData(string url, string productSN, string acasId)
+        {
+            HttpHelper http = new HttpHelper();
+            HttpItem item = new HttpItem() { URL = url, Encoding = Encoding.UTF8, Method = "post", PostEncoding = Encoding.UTF8, KeepAlive = false };
+            item.ContentType = "application/json;charset=utf-8";
+            item.Postdata = string.Format("{{\"jigEdition\":\"{0}\",\"resourceCode\":\"{1}\",\"staffCode\":\"{2}\",\"productSN\":\"{3}\",\"attr\":\"{{\"ACASID\",\"{4}\"}}\"}}",
+                sanhuaLoginInfo.jigEdtion, sanhuaLoginInfo.resourceCode, sanhuaLoginInfo.staffCode, productSN, acasId);
+            HttpResult result = http.GetHtml(item);
+            if (result.StatusCode != System.Net.HttpStatusCode.OK)
+            {
+                Log.WriteErrorLog(string.Format("UploadIdcData System abnormality, productSN={0}, ", productSN));
+                return false;
+            }
+
+            string ParseText = result.Html;
+
+            try
+            {
+                JObject jObject = JObject.Parse(ParseText);
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+
+            return true;
+        }
+
+        public static bool ProductMoveNext(string url, string productSN, string result, string defectCode)
+        {
+            HttpHelper http = new HttpHelper();
+            HttpItem item = new HttpItem() { URL = url, Encoding = Encoding.UTF8, Method = "post", PostEncoding = Encoding.UTF8, KeepAlive = false };
+            item.ContentType = "application/json;charset=utf-8";
+            item.Postdata = string.Format("{{\"jigEdition\":\"{0}\",\"resourceCode\":\"{1}\",\"staffCode\":\"{2}\",\"productSN\":\"{3}\",\"defectCode\":\"{4}\",\"result\":\"{5}\"}}",
+                sanhuaLoginInfo.jigEdtion, sanhuaLoginInfo.resourceCode, sanhuaLoginInfo.staffCode, productSN, defectCode, result);
+            HttpResult hResult = http.GetHtml(item);
+            if (hResult.StatusCode != System.Net.HttpStatusCode.OK)
+            {
+                Log.WriteErrorLog(string.Format("System abnormality, productSN={0} ", productSN));
+                return false;
+            }
+
+            string ParseText = hResult.Html;
+
+            try
+            {
+                JObject jObject = JObject.Parse(ParseText);
+            }
+            catch (Exception)
+            {
+
+                throw;
+            }
+
+            return true;
+        }
+    }
+}

+ 10 - 0
FactoryTool_CShare/MOKA Factory Tools.csproj

@@ -92,6 +92,7 @@
     <Compile Include="BLL\NTFBLL.cs" />
     <Compile Include="Business\CommonMethod.cs" />
     <Compile Include="Business\Countkey.cs" />
+    <Compile Include="Business\SanhuaMethod.cs" />
     <Compile Include="DAL\BaseDAL.cs" />
     <Compile Include="DAL\DAL_AMResult.cs" />
     <Compile Include="DAL\DAL_AMYields.cs" />
@@ -113,6 +114,12 @@
     <Compile Include="Views\CreateDBManually.Designer.cs">
       <DependentUpon>CreateDBManually.cs</DependentUpon>
     </Compile>
+    <Compile Include="Views\SanhuaMES.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Views\SanhuaMES.Designer.cs">
+      <DependentUpon>SanhuaMES.cs</DependentUpon>
+    </Compile>
     <Compile Include="Views\Upgrade.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -175,6 +182,9 @@
     <EmbeddedResource Include="Views\OperationPanel.zh-CN.resx">
       <DependentUpon>OperationPanel.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Views\SanhuaMES.resx">
+      <DependentUpon>SanhuaMES.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Views\Upgrade.resx">
       <DependentUpon>Upgrade.cs</DependentUpon>
     </EmbeddedResource>

+ 9 - 0
FactoryTool_CShare/Models/StructList.cs

@@ -647,4 +647,13 @@ namespace MOKA_Factory_Tools
         public string name { get; set; } = "";
         public string type { get; set; } = "";
     }
+
+    public class SanhuaMESLoginInfo
+    {
+        public string url { get; set; }
+        public string staffCode { get; set; }
+        public string password { get; set; }
+        public string resourceCode { get; set; }
+        public string jigEdtion { get; set; }
+    }
 }

+ 24 - 2
FactoryTool_CShare/Views/Login.cs

@@ -172,6 +172,17 @@ namespace MOKA_Factory_Tools
                 enable = 2;
             }
 
+            #region 三华MES登录数据
+            if ( string.Equals(AccountText.Text,"sanhua", StringComparison.OrdinalIgnoreCase) )
+            {
+                SanhuaMES sanhuaMES = new SanhuaMES();
+                if ( sanhuaMES.ShowDialog() != DialogResult.OK )
+                {
+                    return;
+                }
+            }
+            #endregion
+
             // 保存登录信息;
             CommonMethod.SaveLoginInfo(AccountText.Text, PwdText.Text);
             CommonMethod.FactoryName = loginOutput1.factoryname;
@@ -249,7 +260,7 @@ namespace MOKA_Factory_Tools
                     loginOutput1.factoryname = jObject["FactoryName"] == null ? "" : jObject["FactoryName"].Value<string>();
                     loginOutput1.factorynum=jObject["FactoryNum"] == null ? "" : jObject["FactoryNum"].Value<string>();
                     HttpHelper.Tracert = jObject["Tracert"] == null ? false : jObject["Tracert"].Value<bool>();
-#region G客户NTF功能开启;
+                    #region G客户NTF功能开启;
                     if (jObject["NTF"] != null)
                     {
                         IsNTF = jObject["NTF"].Value<bool>();
@@ -269,7 +280,18 @@ namespace MOKA_Factory_Tools
                             LineText.Text = Line;
                         }
                     }
-#endregion
+                    #endregion
+
+                    #region 加载三华登录数据库;
+                    if (jObject["SanhuaLoginInfo"] != null)
+                    {
+                        SanhuaMethod.sanhuaLoginInfo.url = jObject["SanhuaLoginInfo"]["url"].Value<string>();
+                        SanhuaMethod.sanhuaLoginInfo.staffCode = jObject["SanhuaLoginInfo"]["staffCode"].Value<string>();
+                        SanhuaMethod.sanhuaLoginInfo.password = jObject["SanhuaLoginInfo"]["password"].Value<string>();
+                        SanhuaMethod.sanhuaLoginInfo.resourceCode = jObject["SanhuaLoginInfo"]["resourceCode"].Value<string>();
+                        SanhuaMethod.sanhuaLoginInfo.jigEdtion = jObject["SanhuaLoginInfo"]["jigEdtion"].Value<string>();
+                    }
+                    #endregion
                 }
             }            
             System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName("SCBC Factory Tools");//获取指定的进程名   

+ 369 - 0
FactoryTool_CShare/Views/SanhuaMES.Designer.cs

@@ -0,0 +1,369 @@
+namespace MOKA_Factory_Tools
+{
+    partial class SanhuaMES
+    {
+        /// <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.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SanhuaMES));
+            this.skinLabel1 = new CCWin.SkinControl.SkinLabel();
+            this.Text_MES_URL = new CCWin.SkinControl.SkinTextBox();
+            this.Text_StaffCode = new CCWin.SkinControl.SkinTextBox();
+            this.skinLabel2 = new CCWin.SkinControl.SkinLabel();
+            this.Text_MES_Password = new CCWin.SkinControl.SkinTextBox();
+            this.skinLabel3 = new CCWin.SkinControl.SkinLabel();
+            this.Text_ResuorceCode = new CCWin.SkinControl.SkinTextBox();
+            this.skinLabel4 = new CCWin.SkinControl.SkinLabel();
+            this.Text_JigEdtion = new CCWin.SkinControl.SkinTextBox();
+            this.skinLabel5 = new CCWin.SkinControl.SkinLabel();
+            this.Btn_MES_Login = new CCWin.SkinControl.SkinButton();
+            this.SuspendLayout();
+            // 
+            // skinLabel1
+            // 
+            this.skinLabel1.AutoSize = true;
+            this.skinLabel1.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel1.BorderColor = System.Drawing.Color.White;
+            this.skinLabel1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.skinLabel1.Location = new System.Drawing.Point(31, 54);
+            this.skinLabel1.Name = "skinLabel1";
+            this.skinLabel1.Size = new System.Drawing.Size(75, 17);
+            this.skinLabel1.TabIndex = 0;
+            this.skinLabel1.Text = "API接口地址";
+            // 
+            // Text_MES_URL
+            // 
+            this.Text_MES_URL.BackColor = System.Drawing.Color.Transparent;
+            this.Text_MES_URL.DownBack = null;
+            this.Text_MES_URL.Icon = null;
+            this.Text_MES_URL.IconIsButton = false;
+            this.Text_MES_URL.IconMouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_MES_URL.IsPasswordChat = '\0';
+            this.Text_MES_URL.IsSystemPasswordChar = false;
+            this.Text_MES_URL.Lines = new string[0];
+            this.Text_MES_URL.Location = new System.Drawing.Point(29, 75);
+            this.Text_MES_URL.Margin = new System.Windows.Forms.Padding(0);
+            this.Text_MES_URL.MaxLength = 32767;
+            this.Text_MES_URL.MinimumSize = new System.Drawing.Size(28, 28);
+            this.Text_MES_URL.MouseBack = null;
+            this.Text_MES_URL.MouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_MES_URL.Multiline = false;
+            this.Text_MES_URL.Name = "Text_MES_URL";
+            this.Text_MES_URL.NormlBack = null;
+            this.Text_MES_URL.Padding = new System.Windows.Forms.Padding(5);
+            this.Text_MES_URL.ReadOnly = false;
+            this.Text_MES_URL.ScrollBars = System.Windows.Forms.ScrollBars.None;
+            this.Text_MES_URL.Size = new System.Drawing.Size(292, 28);
+            // 
+            // 
+            // 
+            this.Text_MES_URL.SkinTxt.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.Text_MES_URL.SkinTxt.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.Text_MES_URL.SkinTxt.Font = new System.Drawing.Font("微软雅黑", 9.75F);
+            this.Text_MES_URL.SkinTxt.Location = new System.Drawing.Point(5, 5);
+            this.Text_MES_URL.SkinTxt.Name = "BaseText";
+            this.Text_MES_URL.SkinTxt.Size = new System.Drawing.Size(282, 18);
+            this.Text_MES_URL.SkinTxt.TabIndex = 0;
+            this.Text_MES_URL.SkinTxt.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_MES_URL.SkinTxt.WaterText = "";
+            this.Text_MES_URL.TabIndex = 1;
+            this.Text_MES_URL.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+            this.Text_MES_URL.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_MES_URL.WaterText = "";
+            this.Text_MES_URL.WordWrap = true;
+            // 
+            // Text_StaffCode
+            // 
+            this.Text_StaffCode.BackColor = System.Drawing.Color.Transparent;
+            this.Text_StaffCode.DownBack = null;
+            this.Text_StaffCode.Icon = null;
+            this.Text_StaffCode.IconIsButton = false;
+            this.Text_StaffCode.IconMouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_StaffCode.IsPasswordChat = '\0';
+            this.Text_StaffCode.IsSystemPasswordChar = false;
+            this.Text_StaffCode.Lines = new string[0];
+            this.Text_StaffCode.Location = new System.Drawing.Point(29, 136);
+            this.Text_StaffCode.Margin = new System.Windows.Forms.Padding(0);
+            this.Text_StaffCode.MaxLength = 32767;
+            this.Text_StaffCode.MinimumSize = new System.Drawing.Size(28, 28);
+            this.Text_StaffCode.MouseBack = null;
+            this.Text_StaffCode.MouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_StaffCode.Multiline = false;
+            this.Text_StaffCode.Name = "Text_StaffCode";
+            this.Text_StaffCode.NormlBack = null;
+            this.Text_StaffCode.Padding = new System.Windows.Forms.Padding(5);
+            this.Text_StaffCode.ReadOnly = false;
+            this.Text_StaffCode.ScrollBars = System.Windows.Forms.ScrollBars.None;
+            this.Text_StaffCode.Size = new System.Drawing.Size(292, 28);
+            // 
+            // 
+            // 
+            this.Text_StaffCode.SkinTxt.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.Text_StaffCode.SkinTxt.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.Text_StaffCode.SkinTxt.Font = new System.Drawing.Font("微软雅黑", 9.75F);
+            this.Text_StaffCode.SkinTxt.Location = new System.Drawing.Point(5, 5);
+            this.Text_StaffCode.SkinTxt.Name = "BaseText";
+            this.Text_StaffCode.SkinTxt.Size = new System.Drawing.Size(282, 18);
+            this.Text_StaffCode.SkinTxt.TabIndex = 0;
+            this.Text_StaffCode.SkinTxt.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_StaffCode.SkinTxt.WaterText = "";
+            this.Text_StaffCode.TabIndex = 3;
+            this.Text_StaffCode.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+            this.Text_StaffCode.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_StaffCode.WaterText = "";
+            this.Text_StaffCode.WordWrap = true;
+            // 
+            // skinLabel2
+            // 
+            this.skinLabel2.AutoSize = true;
+            this.skinLabel2.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel2.BorderColor = System.Drawing.Color.White;
+            this.skinLabel2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.skinLabel2.Location = new System.Drawing.Point(31, 115);
+            this.skinLabel2.Name = "skinLabel2";
+            this.skinLabel2.Size = new System.Drawing.Size(32, 17);
+            this.skinLabel2.TabIndex = 2;
+            this.skinLabel2.Text = "账号";
+            // 
+            // Text_MES_Password
+            // 
+            this.Text_MES_Password.BackColor = System.Drawing.Color.Transparent;
+            this.Text_MES_Password.DownBack = null;
+            this.Text_MES_Password.Icon = null;
+            this.Text_MES_Password.IconIsButton = false;
+            this.Text_MES_Password.IconMouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_MES_Password.IsPasswordChat = '\0';
+            this.Text_MES_Password.IsSystemPasswordChar = false;
+            this.Text_MES_Password.Lines = new string[0];
+            this.Text_MES_Password.Location = new System.Drawing.Point(29, 197);
+            this.Text_MES_Password.Margin = new System.Windows.Forms.Padding(0);
+            this.Text_MES_Password.MaxLength = 32767;
+            this.Text_MES_Password.MinimumSize = new System.Drawing.Size(28, 28);
+            this.Text_MES_Password.MouseBack = null;
+            this.Text_MES_Password.MouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_MES_Password.Multiline = false;
+            this.Text_MES_Password.Name = "Text_MES_Password";
+            this.Text_MES_Password.NormlBack = null;
+            this.Text_MES_Password.Padding = new System.Windows.Forms.Padding(5);
+            this.Text_MES_Password.ReadOnly = false;
+            this.Text_MES_Password.ScrollBars = System.Windows.Forms.ScrollBars.None;
+            this.Text_MES_Password.Size = new System.Drawing.Size(292, 28);
+            // 
+            // 
+            // 
+            this.Text_MES_Password.SkinTxt.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.Text_MES_Password.SkinTxt.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.Text_MES_Password.SkinTxt.Font = new System.Drawing.Font("微软雅黑", 9.75F);
+            this.Text_MES_Password.SkinTxt.Location = new System.Drawing.Point(5, 5);
+            this.Text_MES_Password.SkinTxt.Name = "BaseText";
+            this.Text_MES_Password.SkinTxt.Size = new System.Drawing.Size(282, 18);
+            this.Text_MES_Password.SkinTxt.TabIndex = 0;
+            this.Text_MES_Password.SkinTxt.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_MES_Password.SkinTxt.WaterText = "";
+            this.Text_MES_Password.TabIndex = 5;
+            this.Text_MES_Password.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+            this.Text_MES_Password.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_MES_Password.WaterText = "";
+            this.Text_MES_Password.WordWrap = true;
+            // 
+            // skinLabel3
+            // 
+            this.skinLabel3.AutoSize = true;
+            this.skinLabel3.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel3.BorderColor = System.Drawing.Color.White;
+            this.skinLabel3.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.skinLabel3.Location = new System.Drawing.Point(31, 176);
+            this.skinLabel3.Name = "skinLabel3";
+            this.skinLabel3.Size = new System.Drawing.Size(32, 17);
+            this.skinLabel3.TabIndex = 4;
+            this.skinLabel3.Text = "密码";
+            // 
+            // Text_ResuorceCode
+            // 
+            this.Text_ResuorceCode.BackColor = System.Drawing.Color.Transparent;
+            this.Text_ResuorceCode.DownBack = null;
+            this.Text_ResuorceCode.Icon = null;
+            this.Text_ResuorceCode.IconIsButton = false;
+            this.Text_ResuorceCode.IconMouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_ResuorceCode.IsPasswordChat = '\0';
+            this.Text_ResuorceCode.IsSystemPasswordChar = false;
+            this.Text_ResuorceCode.Lines = new string[0];
+            this.Text_ResuorceCode.Location = new System.Drawing.Point(29, 258);
+            this.Text_ResuorceCode.Margin = new System.Windows.Forms.Padding(0);
+            this.Text_ResuorceCode.MaxLength = 32767;
+            this.Text_ResuorceCode.MinimumSize = new System.Drawing.Size(28, 28);
+            this.Text_ResuorceCode.MouseBack = null;
+            this.Text_ResuorceCode.MouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_ResuorceCode.Multiline = false;
+            this.Text_ResuorceCode.Name = "Text_ResuorceCode";
+            this.Text_ResuorceCode.NormlBack = null;
+            this.Text_ResuorceCode.Padding = new System.Windows.Forms.Padding(5);
+            this.Text_ResuorceCode.ReadOnly = false;
+            this.Text_ResuorceCode.ScrollBars = System.Windows.Forms.ScrollBars.None;
+            this.Text_ResuorceCode.Size = new System.Drawing.Size(292, 28);
+            // 
+            // 
+            // 
+            this.Text_ResuorceCode.SkinTxt.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.Text_ResuorceCode.SkinTxt.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.Text_ResuorceCode.SkinTxt.Font = new System.Drawing.Font("微软雅黑", 9.75F);
+            this.Text_ResuorceCode.SkinTxt.Location = new System.Drawing.Point(5, 5);
+            this.Text_ResuorceCode.SkinTxt.Name = "BaseText";
+            this.Text_ResuorceCode.SkinTxt.Size = new System.Drawing.Size(282, 18);
+            this.Text_ResuorceCode.SkinTxt.TabIndex = 0;
+            this.Text_ResuorceCode.SkinTxt.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_ResuorceCode.SkinTxt.WaterText = "";
+            this.Text_ResuorceCode.TabIndex = 7;
+            this.Text_ResuorceCode.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+            this.Text_ResuorceCode.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_ResuorceCode.WaterText = "";
+            this.Text_ResuorceCode.WordWrap = true;
+            // 
+            // skinLabel4
+            // 
+            this.skinLabel4.AutoSize = true;
+            this.skinLabel4.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel4.BorderColor = System.Drawing.Color.White;
+            this.skinLabel4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.skinLabel4.Location = new System.Drawing.Point(31, 237);
+            this.skinLabel4.Name = "skinLabel4";
+            this.skinLabel4.Size = new System.Drawing.Size(56, 17);
+            this.skinLabel4.TabIndex = 6;
+            this.skinLabel4.Text = "岗位资源";
+            // 
+            // Text_JigEdtion
+            // 
+            this.Text_JigEdtion.BackColor = System.Drawing.Color.Transparent;
+            this.Text_JigEdtion.DownBack = null;
+            this.Text_JigEdtion.Icon = null;
+            this.Text_JigEdtion.IconIsButton = false;
+            this.Text_JigEdtion.IconMouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_JigEdtion.IsPasswordChat = '\0';
+            this.Text_JigEdtion.IsSystemPasswordChar = false;
+            this.Text_JigEdtion.Lines = new string[0];
+            this.Text_JigEdtion.Location = new System.Drawing.Point(29, 319);
+            this.Text_JigEdtion.Margin = new System.Windows.Forms.Padding(0);
+            this.Text_JigEdtion.MaxLength = 32767;
+            this.Text_JigEdtion.MinimumSize = new System.Drawing.Size(28, 28);
+            this.Text_JigEdtion.MouseBack = null;
+            this.Text_JigEdtion.MouseState = CCWin.SkinClass.ControlState.Normal;
+            this.Text_JigEdtion.Multiline = false;
+            this.Text_JigEdtion.Name = "Text_JigEdtion";
+            this.Text_JigEdtion.NormlBack = null;
+            this.Text_JigEdtion.Padding = new System.Windows.Forms.Padding(5);
+            this.Text_JigEdtion.ReadOnly = false;
+            this.Text_JigEdtion.ScrollBars = System.Windows.Forms.ScrollBars.None;
+            this.Text_JigEdtion.Size = new System.Drawing.Size(292, 28);
+            // 
+            // 
+            // 
+            this.Text_JigEdtion.SkinTxt.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.Text_JigEdtion.SkinTxt.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.Text_JigEdtion.SkinTxt.Font = new System.Drawing.Font("微软雅黑", 9.75F);
+            this.Text_JigEdtion.SkinTxt.Location = new System.Drawing.Point(5, 5);
+            this.Text_JigEdtion.SkinTxt.Name = "BaseText";
+            this.Text_JigEdtion.SkinTxt.Size = new System.Drawing.Size(282, 18);
+            this.Text_JigEdtion.SkinTxt.TabIndex = 0;
+            this.Text_JigEdtion.SkinTxt.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_JigEdtion.SkinTxt.WaterText = "";
+            this.Text_JigEdtion.TabIndex = 9;
+            this.Text_JigEdtion.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
+            this.Text_JigEdtion.WaterColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(127)))), ((int)(((byte)(127)))));
+            this.Text_JigEdtion.WaterText = "";
+            this.Text_JigEdtion.WordWrap = true;
+            // 
+            // skinLabel5
+            // 
+            this.skinLabel5.AutoSize = true;
+            this.skinLabel5.BackColor = System.Drawing.Color.Transparent;
+            this.skinLabel5.BorderColor = System.Drawing.Color.White;
+            this.skinLabel5.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.skinLabel5.Location = new System.Drawing.Point(31, 298);
+            this.skinLabel5.Name = "skinLabel5";
+            this.skinLabel5.Size = new System.Drawing.Size(56, 17);
+            this.skinLabel5.TabIndex = 8;
+            this.skinLabel5.Text = "治具编码";
+            // 
+            // Btn_MES_Login
+            // 
+            this.Btn_MES_Login.BackColor = System.Drawing.Color.Transparent;
+            this.Btn_MES_Login.ControlState = CCWin.SkinClass.ControlState.Normal;
+            this.Btn_MES_Login.DownBack = null;
+            this.Btn_MES_Login.Location = new System.Drawing.Point(131, 367);
+            this.Btn_MES_Login.MouseBack = null;
+            this.Btn_MES_Login.Name = "Btn_MES_Login";
+            this.Btn_MES_Login.NormlBack = null;
+            this.Btn_MES_Login.Size = new System.Drawing.Size(88, 33);
+            this.Btn_MES_Login.TabIndex = 10;
+            this.Btn_MES_Login.Text = "登录";
+            this.Btn_MES_Login.UseVisualStyleBackColor = false;
+            this.Btn_MES_Login.Click += new System.EventHandler(this.Btn_MES_Login_Click);
+            // 
+            // SanhuaMES
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.CaptionBackColorBottom = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
+            this.CaptionBackColorTop = System.Drawing.Color.RoyalBlue;
+            this.ClientSize = new System.Drawing.Size(351, 421);
+            this.Controls.Add(this.Btn_MES_Login);
+            this.Controls.Add(this.Text_JigEdtion);
+            this.Controls.Add(this.skinLabel5);
+            this.Controls.Add(this.Text_ResuorceCode);
+            this.Controls.Add(this.skinLabel4);
+            this.Controls.Add(this.Text_MES_Password);
+            this.Controls.Add(this.skinLabel3);
+            this.Controls.Add(this.Text_StaffCode);
+            this.Controls.Add(this.skinLabel2);
+            this.Controls.Add(this.Text_MES_URL);
+            this.Controls.Add(this.skinLabel1);
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "SanhuaMES";
+            this.Text = "MES登录检查";
+            this.Load += new System.EventHandler(this.SanhuaMES_Load);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private CCWin.SkinControl.SkinLabel skinLabel1;
+        private CCWin.SkinControl.SkinTextBox Text_MES_URL;
+        private CCWin.SkinControl.SkinTextBox Text_StaffCode;
+        private CCWin.SkinControl.SkinLabel skinLabel2;
+        private CCWin.SkinControl.SkinTextBox Text_MES_Password;
+        private CCWin.SkinControl.SkinLabel skinLabel3;
+        private CCWin.SkinControl.SkinTextBox Text_ResuorceCode;
+        private CCWin.SkinControl.SkinLabel skinLabel4;
+        private CCWin.SkinControl.SkinTextBox Text_JigEdtion;
+        private CCWin.SkinControl.SkinLabel skinLabel5;
+        private CCWin.SkinControl.SkinButton Btn_MES_Login;
+    }
+}

+ 80 - 0
FactoryTool_CShare/Views/SanhuaMES.cs

@@ -0,0 +1,80 @@
+using CCWin;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace MOKA_Factory_Tools
+{
+    public partial class SanhuaMES : Skin_Color
+    {
+        public SanhuaMES()
+        {
+            InitializeComponent();
+        }
+
+        private void SanhuaMES_Load(object sender, EventArgs e)
+        {
+            Text_MES_URL.Text = SanhuaMethod.sanhuaLoginInfo.url;
+            Text_StaffCode.Text = SanhuaMethod.sanhuaLoginInfo.staffCode;
+            Text_ResuorceCode.Text = SanhuaMethod.sanhuaLoginInfo.resourceCode;
+            Text_MES_Password.Text = SanhuaMethod.sanhuaLoginInfo.password;
+            Text_JigEdtion.Text = SanhuaMethod.sanhuaLoginInfo.jigEdtion;
+        }
+
+        private void Btn_MES_Login_Click(object sender, EventArgs e)
+        {
+            SanhuaMethod.sanhuaLoginInfo.url = Text_MES_URL.Text;
+            SanhuaMethod.sanhuaLoginInfo.staffCode = Text_StaffCode.Text;
+            SanhuaMethod.sanhuaLoginInfo.resourceCode = Text_ResuorceCode.Text;
+            SanhuaMethod.sanhuaLoginInfo.password = Text_MES_Password.Text;
+            SanhuaMethod.sanhuaLoginInfo.jigEdtion = Text_JigEdtion.Text;
+
+            SaveLoginInfo();
+        }
+
+        private void SaveLoginInfo()
+        {
+            JObject jObject;
+            using (StreamReader file = File.OpenText(LocalPath.localpath + "\\Config.json"))
+            {
+                using (JsonTextReader reader = new JsonTextReader(file))
+                {
+                    jObject = (JObject)JToken.ReadFrom(reader);
+                    reader.Close();
+                    if (jObject["SanhuaLoginInfo"] == null)
+                    {
+                        JObject item = new JObject();
+                        item.Add("url", SanhuaMethod.sanhuaLoginInfo.url);
+                        item.Add("staffCode", SanhuaMethod.sanhuaLoginInfo.staffCode);
+                        item.Add("resourceCode", SanhuaMethod.sanhuaLoginInfo.resourceCode);
+                        item.Add("password", SanhuaMethod.sanhuaLoginInfo.password);
+                        item.Add("jigEdtion", SanhuaMethod.sanhuaLoginInfo.jigEdtion);
+
+                        jObject.Add("SanhuaLoginInfo", item);
+                    }
+                    else
+                    {
+                        jObject["SanhuaLoginInfo"]["url"] = SanhuaMethod.sanhuaLoginInfo.url;
+                        jObject["SanhuaLoginInfo"]["staffCode"] = SanhuaMethod.sanhuaLoginInfo.staffCode;
+                        jObject["SanhuaLoginInfo"]["resourceCode"] = SanhuaMethod.sanhuaLoginInfo.resourceCode;
+                        jObject["SanhuaLoginInfo"]["password"] = SanhuaMethod.sanhuaLoginInfo.password;
+                        jObject["SanhuaLoginInfo"]["jigEdtion"] = SanhuaMethod.sanhuaLoginInfo.jigEdtion;
+                    }
+                }
+            }
+            using (StreamWriter writer = new StreamWriter(LocalPath.localpath + "\\Config.json"))
+            {
+                writer.Write(jObject.ToString());
+            }
+        }
+    }
+}

+ 546 - 0
FactoryTool_CShare/Views/SanhuaMES.resx

@@ -0,0 +1,546 @@
+<?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>
+  <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>
+        AAABAAkAMDAQAAEABABoBgAAlgAAACAgEAABAAQA6AIAAP4GAAAQEBAAAQAEACgBAADmCQAAMDAAAAEA
+        CACoDgAADgsAACAgAAABAAgAqAgAALYZAAAQEAAAAQAIAGgFAABeIgAAMDAAAAEAIACoJQAAxicAACAg
+        AAABACAAqBAAAG5NAAAQEAAAAQAgAGgEAAAWXgAAKAAAADAAAABgAAAAAQAEAAAAAACABAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8A
+        AAD/AP8A//8AAP///wD/////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ///////////////////////////////////////////////////////////////////////////4//+P
+        //j///j///j///j//////////////////////////////////////////4//////////////////////
+        ////////////////////////////////////////////////////////////////////+I//j/iI/4iI
+        iI/4iP/4iIiIiI+Ij///9Gj4j/do92xkbGj3Z/+EZvhGxn9kf///9k+GZ/bIjGZ2dkaHxohsf/9sZ4jG
+        j///hk9sRodIZn///3yHbGxn//+GT4Zn////9GxnfGxofI///2aMZkZP///0Z4xo////9mR492RohGiI
+        h8aISIRnj//4xmR/////9GyP/2xohsRkxmX3x/jGaP//ZMb/////93j///d4/3dnd4/4aP+Hx4//h3f/
+        /////////////////4////////////////////////////////////////////////////////iI+I//
+        /////4j/iP////////////////hs+GT/////+GaPZo////////////////hm+Gz//////0z/TP//////
+        //////////jG+Gb4Z49nj2aPZo////////////////hk+Mb4bPhs+Mb/Ro////////////////jG+GT/
+        R/9k/2T4bP/////4//////////hk+GX/j//4+GT/Ro//////////////j/hm/3j//////4iPbP//////
+        //////////jH////////////do///4//////////////////////////////////////////////////
+        //////////////////////////////////////////////////////+P////////////////////////
+        ////////////////////////j////////////////////////////////////4////////////////j/
+        //j///j/////////////////////+P/////////////////////////////4///////////////4////
+        /4////////j///////////////////////////////////////////////////////////+P////////
+        //////////////////////////////////j/////////////j/////////////////////j///j/////
+        //////////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAA
+        AAABAAQAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICA
+        gADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AP//////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////////////////////////////////////////////////////+P
+        //+P+Pj/+P/4+Pj/j///aIiIb2RkZ4aPdohsaGf//0hsd8ho+IyMZsj/dojI//9saGxoT/+GhkZ//4x2
+        f///Ro+GT2RmxvSIxv/3xo///4j/+I+IiIj4j4h/+Ij///////////j////////////////4iIj///+I
+        +I//////////+MiE////hPZv//////////hohvd/aIb3z///////////SOT2f0iM9n//////////+GiG
+        ///4hvfP//////////jPj//////3b///////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////+P////////////////////////////////////////////////////////////////
+        ///4////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABAAQAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AP//
+        ///////////////////////////////////////////////////3eHZ2d29Ib/SMdoyMj3aP///4/4+P
+        +P//+If/+Ij/////Z4hnjv////94j/iI////////////////////////////////////////////////
+        ////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACgAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAAlEoOAJ1K
+        DwCaTA8AlUcSAJRGFgCZRhEAnEYRAJlGFACSShMAlkkSAJJIFQCVSBUAmEgRAJ1JEQCZTBIAmUgUAJ1I
+        FwCaTBYAk0caAJVGGACXSxgAlUwZAJZKHQCTTx4AmU4bAJ1NGQCbTRwAlFEeAKBKEQCWTSUAnE0hAJJS
+        IgCVUCAAnVAhAJpTJwCbVScAnVQlAJ1TKACaVSkAnVUpAJhYKQCeWSkAn1wqAJlZLgCeWy4Am100AKBe
+        MACdYDYAoWAuAKVkOQCnaj8AqWk+AKhpQQCub0YArXBEAKd1TwCqdksAqXZOAKh5TwCueU4Ao3ZSAKZ0
+        UACldFUAqXdSAKt1VQCneFIAq3pSAKp+UwCpe1cAr3xUAKV5WQCvf1wAsnpWALF8VgCzf1oArXtiAK6A
+        XQCvgWEAr4pqALKFYAC0imcAs4xlALKKaQC1imgAs49tALaPbgC4imgAvo9uALiQbAC1kHEAupJ0AL+U
+        dQC8lnkAwZRyAMWUcwDDmnsAwp2BAMShgQDBoIUAxqWOAMunjwDMp48Ax6qNAMupjwDBp5EAyKiSAMyr
+        kwDIrZYAyLCXAMyxmgDPspwAy7WdAM+4owDTt6EA0r2jANC7pwDQvKQA0r2rANS+rADSwa0A3ca2ANrG
+        uQDexbkA38a8ANnIuwDeybkA3865ANnLvwDfybwA3828AOHHtgDgyboA2s3CANvQwwDe0cMA39TBANrR
+        xQDc0cQA3dXJAODNwgDg0cIA4tbKAOTTzADk18wA6NfOAOXaygDh2c4A5tnMAOPdzwDk3s4A4tnQAOXa
+        0gDl3dEA5d/VAOnd1gDo3tgA5uDSAOji1ADn49kA5uTaAOXi3ADq49kA6uffAO3n3gDv698A7efgAOrp
+        4gDu6eEA6ejlAO7s5QDv7+oA8OnhAPHu5QDv8OMA7vHpAO3y7ADy8eYA9PDnAPHx6gD08ekA9fTqAPDx
+        7ADx9O4A9fXuAPPz8QDz9fAA9vbyAPb39QD49vQA8/jxAPX48QD1+vYA+fn1APj89gD2+vgA9v36APb+
+        /AD5+voA/Pr4APr8+gD8/PoA+/v8APr9/AD9/f0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////////////////////+8//+8//+8///D//+8//+8//+8//+8//+8
+        //+8//+8//+8//+8//+8////////////////////////w///////////////////////////////////
+        //////////////+8///D///D////////w///w//////D///D///D///D///D///D///D//////+8////
+        /8P//8P//8P/w//D///D///D/8P//8P//8P//8P//8P//8P//8P//8P///////+8///////D////////
+        w//////////D///////D///////D///////D///////////////D////////w///////w//////////D
+        ///////D///////D//////////+8///D/8P//8P/w//D///D/8P//8P/w//D/8P//8P/w///w//D/8P/
+        /8P/w//////////////D////////w///////w//////////D///////D///////D//////////////+8
+        ///////D////////w//////D///D///////D///////D///////D//////+8/////8P/w///w//D/8P/
+        /8P/w///w///w//D/8P//8P/w///w//D/8P//8P///////+8///////D////w///w//////D///D////
+        ///D///////D///////D///////////////D////////////////////////////////////////////
+        //////////+8enq8w//D/8OHe5v/waR6eoN6g6z/wZB7m//B/5B6epuMg3qDg3rBkXp6wf////+qBA2k
+        /5iMvP8+EGfBXQgIDQ0IEBBs/1IEWMH/cBoQN6xwCAQICEi8LQhQ/8P///+rCQOqgh8JXsBBCGZ4EAQr
+        NDQ0KAkQmFMIJH5wGhA5q/+8KAgQNJBwAxCO//////+rCQmEKBAQCGQ7CWZZBEPA/8H/tTIQbFMQEBAQ
+        EDu1/8P/bA0QnsEuCEj/w/////+rCBAkEDFQEBAkCGZSCWD////Bw1AEbFIQFxAQKrLAw///tSgQV3II
+        EJDD//////+rCQEBJJHBQwkICGZjECFmcXFzYwkEdlIIWVsJEDen/8PD/2oECSsQQ/////////+vBAka
+        jP/BtTcEBGasLQEBCRAQAxA0vFMIX/9wGh0qiMP//6soCBAIh/////////+1Pj52w////6dMQ3b/oFs5
+        Qzo6PWG1/2k+bf//jEE6R5P///9wOjpT/8P//8D////Dw///////w//D/8H//////8P////D/////8H/
+        ///Dw//////Dw//D/////////////8P/w//////D/8H/w//D///B/8P//8P//////8P/w//D/////8P/
+        /8D////////////////D/8O1jp7DvI6ew///////////tY6YwMCYnqv////D///////////////////D
+        //////99FyH/jAkJ/8P////////DqgkJoLUTCY7////////D//////////+8/////8P//8OCEBfBhwkQ
+        /8D/wP/Aw//AqggQoLIEEJH/wP//w////8P//7z////////D/////8OCEBzBixAJ/55DQ7WqQ0mypw0D
+        oLIXA5HB///////////////////////////D//96EBzBhxAJ/44QE7WhCBOnpQ0NoLIEA5H///////+8
+        ///D//////+8///D/8P//8CEEBzDhwkJ/5AQLrWpLQilpQgIoLUTA5LB///B////////w///////////
+        ///D//9+ARzAhxAJ/6qHw//DwIy1rBAIpKwaA5L///////+8///D//////////+8/////8B7EBzBmFWC
+        /////////8P//3pSo7IECJLB//////////////////+8/////8P//8OEJVPBw///wP///8P//////8H/
+        /7VOGpH//8H//7z//7z//7z////////D//////+rtf///8P////////////D///D/8P/tbX/////////
+        ///////////////////D////////////w///wP/////////////////D///D///D///D//////+8//+8
+        ////w////8P//8P///////+8///D/8P////D////////w///w///w//////////////D///D////////
+        ////vP/////////D///////D///D///D///D///////////D////////////w///vP////////+8////
+        ///D//////////////////////+8////w//D/8P/w//D///////D/8P/w////8P/w///w//D/8P/w//D
+        /8P/w//////////D///////D////w///w//////D///D///////D///////D///////D////////////
+        ///D////////////////w//////////D///////D///////D//////////+8///B/8P//8P/w//D/8P/
+        w//D///D/8P/w///w//D/8P//8P/w///w//D/8P////////////D////////w///////w//////D///D
+        ///////D///////D///////////////D///////D////////w//////D///////////D///////D////
+        ///D//////+8////w//D/8P//8P/w//D///D/8P//8P/w//D/8P//8P/w///w//D/8P//8P////////D
+        ///////D////////w//////D///////////D///////D///////D///////////////D////////w///
+        ////w//////D///D///////D///////D//////////+8///B/8P//8P/w//D///D/8P//8P/w///w///
+        w//D/8P//8P/w///w//D/8P/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAIAAAA
+        AAAABAAAAAAAAAAAAAAAAQAAAAEAAAAAAACXRxEAmUcSAJlHFQCWSBEAlUkUAJZMFgCYSBIAmEkVAJxL
+        FwCZTBYAmUsYAJlNGQCWUBsAl1AeAJlQGQCbTyAAnVEhAJ5WJwCfWiYAn1ooAJ5dLgCeXTEAolYoAKdj
+        OgCpaj4Ar28/ALBuPgCma0EAqGpBAK1tQACrbUUArG9EAK5xRACvckgArndTAK94UQCve1QAsXtWALF8
+        VQCxf1gAsoBaALaHZQCziGcAu5Z1AL+cfgDAl3YAwJh7AMGhhADCookAxKKJAMaligDGpYwAx6iLAMao
+        jwDJqIwAx6yTAMuqkQDMq5IAyKyVAM+ymwDOtJ8A0bObANK0mwDTs5wA1LOcANK0nADWtp8AyrSgAMy3
+        ogDRuaEA0LulANC9qwDTuq0A2MGuANfCsgDWxbIA18O1ANfEtADdw7AA2sO2AN3MvwDe0sUA3tTFAOHU
+        xgDg08kA4tfLAObXywDi2MsA59jJAObazgDl3M0A6dnOAOfZ0ADo2dAA6d7VAOXg0wDh4NUA5uPaAOvh
+        2QDp5NoA6OLcAOzn3gDu5eAA6erhAO3q4gDt6+YA7ezmAO/r6wDu7eoA8OnlAPHu6QD07+wA8vHrAPTx
+        7QDz9O0A9PbvAPP08QD09fEA9fjyAPb49gD5+fYA+fr4APz7+wD6/foA/P36APr9/AD+/v4AAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wB/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f11vf39/al1/f15aXGN/eF1vf3leXW5cXFxyY11/f391BEJnMWoxDHIcBwcH
+        ByRqBzp1KQdCWgICEGARKH9/f3UHNxgHHy0HRwQ9V1oxB0gEBx8HR39+JgRUMAJXf39/dQQMDzEHDwxC
+        BGN/f1QERQcWByJ4fn9UBC4RJH9/f391BARQf0cHDGMNDxMTBBRgA0M3ByFqf38jBARUf39/f38xTX9/
+        f0gxf18xMTE2anUxXX9RMT14f10xOn9/f39/f39+f39/f39/f39/f39/f39/f39/fn9/f39+f39/f39/
+        f39/f35qOmJVNn5/f39/f1o2dU1Ff39/f39/f39/f39/f39/f1oHTTEEf35+f35+PQdqJCF+f39/f39/
+        f39/f39/f39/XQdNMQd/KyxqHEpCB2ooG39/f39/f39/f39/f39/f39aB0w1BH8ZK20NQkIHbiYbeX9/
+        f39/f39/f39/f39/f1oHTDEVf2J/f3JqTwxqJht/f39/f39/f39/f39/f39/WhdUcXl/f39/f39/cngt
+        IX5/f39/f39/f39/f39/f394eX9/f39/f39/f39/f39yf39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/
+        f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABAAgAAAAAAAAB
+        AAAAAAAAAAAAAAABAAAAAQAAAAAAAJZLFQCeVSQAo14vAKZmOQCpbEEAq3BGAK10SQCtdk4As3xTALJ7
+        VQC2flcAtYFcALeHYwC7iWUAuYppALuMagC6jmwAvI1tAL+QbwC+kXAAwJV2AMGbfgDGoYQAx6aNAMmk
+        iwDJp40AyamPAMyskQDNrZUAz7SeANW2nQDTuqYA17ynANW+qwDTvawA2b+sAN3JtwDayLgA4NDCAODS
+        xQDk2M4A5trRAOrg1wDq49oA7OXeAO7n4ADv6+UA8+vmAPTr5gDy7OYA8u3pAPXv7AD08OsA9fHtAPbz
+        8AD39PEA9/b0APj18gD3+fYA+fn3APv6+QD8/PsA+/38AP7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA////AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA
+        QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBANkA8ODowOjhANjQwNjRAPAkSGBQFEwUSFAcsAhsJQDwB
+        HQQSBx0GDwwOOxkDKEBAKUA0LCsnLCw4Ki84J0BAQEBANBsWQEBAFyYlQEBAQEBAQDANByEhEQkeH0BA
+        QEBAQEAwEiE4QDgkIR5AQEBAQEBAQEA/QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA
+        QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAAAABgAAAAAQAgAAAA
+        AACAJQAAAAAAAAAAAAAAAAAAAAAAAP7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//v7+/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+/v7+/v/+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//v7+//7+/v7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+/v7+
+        /v/+/v7//v7+/v7+/v/+/v7//v7+/v7+/v/+/v7//v7+/v7+/v/+/v7//v7+/v7+/v/+/v7//v7+/v7+
+        /v/+/v7//f39/v7+/v/+/v7/9vn3/t3Gu//bx7j/+Pb0/vr9/f/9/f3//fz9/vr9+//6/f3/3dXJ/tvE
+        uf/q49n//f37//v9/P7t597/38m5/9zGtv7ex7f/3se3/9/JvP7w7eX//P37/vz8+//i2dD/28W7/und
+        1v/9/vz//f38/vv8/P/n2s7/3sW5/tzGt//o3tj/5NPM/t/GuP/exrj/4ce2/t/Ht//fybj/+Pr5/ubb
+        0//cxbb/2se6/vv8+//+/v7//f39/v7+/v7+/v7+7+/q/phJEf6ZSRD+7+ni/vr6+/7l39X+2s3C/vX6
+        9/76/Pv+qXdS/ptKEv7Hqo3++/z4/ryWef6ZRxX+mUgS/ppJE/6YSBL+mUkT/ppJFP6eThn+yK6W/vr8
+        +/6zjGX+mEoQ/sGUcv75/Pj++Pn7/tG9pP6ZThv+mksS/q5vRv7v7ef+zbGa/pxGEv6SShP+mUcU/phI
+        FP6ugF3+8/jx/qBeMP6aSBP+soRh/vr7+/79/f3+/f39/v7+/v/+/v7/8fHr/pNJFf+aTA//7+nj/uDR
+        wv+cTSH/l0oR/r+Udf/3+/f/q3VU/ptGE//LqI//0sGt/5hIEf6WRhX/nlsu/6dqP/6paT7/qmk//5pV
+        KP6VSxP/m0oU/uXa0v+0imn/l0cT/ptVJ//cyrj/z7ij/pxMGf+YTRL/qnZL/u3y7P/4/fr/9ffz/plZ
+        Lv+cSBH/mkwW/qhpQf/k18z/y7Wd/plIEf+YShb/4trN/vv9+v/9/f3//f39/v7+/v/+/v7/7vHr/phI
+        Fv+TShP/3828/p1TKP+cSBP/m0gU/ppHFv/GpY7/qHlP/pZIEv/Lp4//uJBs/5RHEv6relL/9fjx//z8
+        /f79/vr//P35//X06v6lZDn/l0gT/smslv+0imn/mkkS/plIE/+bShX/mkwT/ppKFv+ueU7/8PTt/vv+
+        +v/6/v3//P39/syrk/+ZRxD/lksT/uji1P/5+fT/nWA2/ptHEv+vf1z/+f37/vz+/f/9/f3//v7+/v7+
+        /v7+/v7+7vHr/phIFv6YSRL+nVUl/pZJE/6hYC7+soZg/phKEf6YSBb+nVEg/pdJE/7Lp4/+t4to/pVJ
+        Ev7Dmnv+/P38/vv++/77/vz++/78/vb9+v6zf1r+lkgU/siokv6zi2n+m0kU/pZKHf6ZSRT+mkkT/p1U
+        Jf7z7+b+9/75/vn+/f76/v3+/f39/vb07/6aVir+mUgT/riKaP7Tt6H+mUYU/pdJF/7i1sr++v39/v7+
+        /f7+/v7+/f39/v7+/v/+/v7/7/Ho/pVIFP+VSg//lUsQ/ppTJ//n2cz/9/fz/qp+U/+VShL/mUYU/plH
+        E//Mp4//waCF/5lJEf6SUiL/y6qP/9C7p/7QvKT/0r2j/8Shgf6UTBn/lEcT/tK9q/+0i2f/mkcV/r6P
+        bv+1kHH/lEoV/p1LE/+tcET/6uff/vn8+//2/vz//P3+/vv9+//JqJL/lkYV/pdLGP+fXCr/mEgR/q98
+        VP/7/Pv//f79/v7+/v/+/v7//f39/v7+/v/+/v7/7/Lo/pVHFv+USQ//l0wa/uDNwv/6/P3/+/36/vX0
+        7f+pa0P/lUcQ/pdHE//Mp4//7+zk/5hYKf6VSw3/mEsS/5lKE/6ZSRP/mEkS/5hIEf6XSRD/qGhA/vb3
+        9f+yiWr/mEgU/sWUc//7+/j/z7Kc/ptMHP+gShH/n1kp/t/Uwf/3/Pv//P78/v7+/f/w8O3/nVUp/phH
+        Ef+YSBH/mEUU/tnSxf/+/f7//v7+/v7+/v/+/v7//f39/v39/f7+/v7+8/Tv/qV0Vf6ldVH+1b+t/vj9
+        /P7+/vz+/P7+/vv8/f7r6uP+rXti/qd4Uv7Uvaz++fz7/u3n4P66knT+q3dO/qh2T/6ndU/+p3VP/qN2
+        Uv7CnYH+8PHt/vv9/P7Bp5H+pXVV/siwl/79/fz+/Pz8/t7Rw/6rdVb+p3VQ/qV5Wf7g2s/+/fz+/v3+
+        /P78/Pv+zLKb/qV0Uf6ndFD+s49t/vz8+f79/v3+/v7+/v39/f79/f3+/f39/v7+/v/+/v7/+f39/vj9
+        /P/7/fv//Pz8/v39/f/9/f3//f39/v3+/v/7/f3/+fz8/vz9+f/8/fr//P79//z+/v77/f3/+/78//v+
+        /P78/fz//Pz8//z8+/79/fv//P79/v7+/v/8/Pv//Pz6/v39+//+//z//v7+/v39/f/7/fz/+f38/vn9
+        /P/7/fv//v79/v7+/v/+/v7/+/z8/vr8+//6/Pv/+/z5/v3+/P/9/v3//v7+/v7+/v/+/v7//f39/v39
+        /f79/f3+/f78/v3+/f78/v7++/79/vv+/f79/v3+/f39/v79/f79/v3++/79/vv++/77/vr+/P79/vz+
+        /v78/v3++/77/vv++/79/vz+/f78/vz+/P77/v3++/79/vz+/f78/v3+/P79/v3+/P79/vv+/v7+/v39
+        /f78/v3++v78/vn+/P77/v3+/f79/v39/f79/f3+/f79/vz+/f78/v3+/P79/v3+/f79/v3+/f39/v39
+        /f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/vv9/P/7/fv/9fPq/uTe
+        z//m4NL/+Pv6//Pz8v7m3dD/5t/Q//j+/P78/v3//v7+//39/f7+/v7//f39/v7+/v/+/v7//v38/vj5
+        9f/l3s3/5t7T/vj49P/2+vj/5N3R/uPdz//09+//+v79/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v3+
+        /P/7/fv/2ci7/pdIFv+WTSX//Pr4/9zQxP6VSBf/kkgW//z++v78/vz//v7+//39/f7+/v7//v7+/v7+
+        /v/+/v7/+/78/u7r4P+TSBX/k0kW/ufj3P/08On/k0ca/pdJE//k2sv/+v77/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/P76/fv+38m7/plKFP6VUCD++/v3/trRxf6ZSRP+l0oT/vv++/75/Pr++vz7/vr9
+        /f79/P3++/37/vr8/P77+/z++v36/u7q4v6bRhL+mkgR/ubj3P708Of+lEgW/p9LEP7n2sz++/77/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v39/f/6/fv/4Mm7/plJFP+VUR//+fv2/9vRxf6ZSRL/lkoS//3+
+        +/7n49n/snpW/6l7V/729u7/6ejl/rB8Vf+zfFf/7/Dj/vDq4f+cRxH/mEkQ/uXk2//y8ef/lEcX/p5K
+        Ef/n28v//f78/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f/6/fv/4Mm6/plJFP+VUR//+fv2/9vR
+        xf6ZSRL/lUoT//3+/P7k2Mz/l0kU/5VFGP7y8un/5ODc/plHFf+XRxj/7Org/vDq4f+bRxH/mEgR/uXk
+        2//z8ef/lEcX/p5KEP/n28r//f78/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v3+/f75/fv+38m5/phJ
+        Ev6UUR7++Pz3/tvQw/6YSBP+kUgU/v39/P7o187+mkkT/ptdNP7y9O/+6ejl/p5ZKv6WRRj+7+vf/vDp
+        4f6aSRL+mEgT/ufk2v718Of+lUcY/p1LD/7m28n+/P78/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v3+
+        /f/5/fv/38m5/phKEv+UUR7/+Pz2/9vRw/6ZSRT/lEgV//79/P7t7Ob/3NLE//j9+P77/f3/+/76/vT7
+        9f/Zy7//8/Pw/vHp4v+aSRL/mEcS/ufk2v/18Oj/lUcY/p1KD//m28n//P78/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v3++//5/fv/3si5/p1IF/+TTx7/+fr3/+HZz/62j27/3865//z+/P78/fz//P39//3+
+        /f79/f7//f79/v39/f/8/fz//P78/vz8+P/Zx7j/tIln/uno4v/z8eX/lEcX/p1JEP/l2cr//P78/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v3++/74/fv+38a8/p5QIv6vimr++vz1/vn9/P76/fv++/39/vz+
+        /P7+/v3+/v7+/v39/f79/f3+/f39/v39/f7+/v7+/v79/v39/f77/fz++/36/vv8/f729vD+r4Fh/ptP
+        Hf7m2sv++v78/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/vz+/P/9/fv/8PLs/vT27v/5/Pz//f37//39
+        /f78/f3//P3+//v+/f79/v3//v7+//39/f7+/v7//f39/v7+/v/+/v7//f3+/v79/v/9/f3/+/79/v7+
+        /P/5/f3/+/v8/vLz7f/z9fD//P39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+/v7+
+        /v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39
+        /f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//v7+//39/f7+/v7//v7+//39/f7+/v7//v7+//39
+        /f7+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+
+        /v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v7+/v/+/v7//f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39
+        /f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/v39/f79/f3+/f39/gAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA
+        AAD+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7/+vz7/+jZ0v/z7un//P39//39/f/7/f3/7uvm/+fZ0P/8/fz/+/v5/+re
+        1P/n2c7/6NnO/+vg2P/8/fr/+Pn4/+fY0f/07+z//f39//r59//o2ND/59nQ//Dp5f/p2c//6tnO/+rZ
+        zv/08e3/6+Lb/+fZ0P/9/f3//v7+//7+/v/09PH/l0oQ/9G1nP/u5eD/xKGI/+3t5//Fo4v/m0wZ//P0
+        7f+ma0H/mUcT/5lIE/+YSBP/mUkV/694Uf/p6uH/mUgU/8uqkf/19vL/soBa/5lMFv/Rs5v/4tjL/5pH
+        FP+ZRxP/m08g/+Xg0/+dUSD/sX9Y//v8+//+/v7//v7+//T18f+YSBX/yaiM/6djOv+ZSRP/q21F/7+c
+        fv+ZSxf/0rqj/5ZIEf/OtJ//5tfL/+fYyf/HqIv/mUgT/9C9q/+XSBL/mUsW/6lqPv+aTRf/0buh//j+
+        /P/7/f3/sXtW/5VLFP/i1Mb/waGE/5lHE//i18v//f78//7+/v/+/v7/9PXw/5dIFP+ZTxn/mVAZ/8em
+        jP+XTRb/m0wa/5lLGf/Pspv/lUkS/+3n3v/5/vv/+v77/+LWxv+WSBT/zLei/5lIFP+eXTH/mEkU/69y
+        SP/1+PL/+P78//z9/f/h1Mf/mEcV/8CXdv+dUiL/r3tU//v9/P/+/v7//v7+//7+/v/09u//lUgT/5RL
+        Ff/aw7b/+v36/9G4of+XSBL/mksY/+nk2v+WUBv/mU8a/59aKP+fWib/lkwX/55WJ//h4NX/mUcW/9a2
+        n//JqI3/nEsX/6xvRP/t6uL/+/38//z9/P+ud1P/l0cR/5dHEv/e0sX//v7+//7+/v/+/v7//v7+//j5
+        9//Coov/18Oz//v9/P/9/v7/+v39/9O6rf/FpYz/+vz7/+jf1//Hpov/w6OI/8OiiP/GqI//7Off//b2
+        8f/Coov/5tvO//39/f/dzL//xKKJ/8q0oP/8+/v//P78/+fb0f/CoYn/ya2U//z9+//+/v7//v7+//7+
+        /v/+/v7//f79//v+/f/8/v3//P7+//7+/v/+/v7/+/79//r++//8/vz//P7+//v+/P/7/vz//P79//v9
+        /f/8/v3//P79//v9/f/9/vv//v79//39/f/6/v3/+f79//3+/f/+/v7//P39//v9/f/7/f3//f79//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//v9/f/v7eT/zKuS/+ji3P/g08n/x6yT//r+
+        /P/+/v7//v7+//7+/v/+/v7//f79/+Xczf/IrJb/9fTx/9fCsf/Qu6X/+v78//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//P39/+jb0P+ZShL/18O1/8aj
+        iv+YSRP/+/36//r9/P/8/f3//P38//v9/P/7/fz/07Sc/5pHEv/t6+f/sH1V/69vP//6/vv//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/f3/6NvQ/5hK
+        Ev/XxLT/xaSJ/5dKEv/7/fz/todl/7uWdf/u7er/qGpB/9jBrv/StJv/m0gR/+zs5/+xfFX/sG8///z+
+        /P/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//39
+        /f/n28//mEkS/9fGsv/Fo4n/lEkT//39/f+tbUD/s4hn/+/r6/+XUB7/1LOc/9OznP+aSBP/7uzm/7J8
+        Vf+xbz3/+v77//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//f39/+bbz/+YSRP/1cWz/8Sjif+eXS7//vz8/+bj2v/7/fr/+/77//P08f/t6+P/3cOw/5hN
+        G//u7Ob/sXxW/7FuPv/6/vv//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/9/fz/5tnP/6JWKP/e1MX/8O/q//r79//8/vz//v7+//7+/v/+/v7//v7+//7+
+        /f/9/fz/8vHr//b49v/AmHv/rnFE//n9+//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//39/f/4+PX/+fr2//z9/P/9/f3//f3+//z+/f/+/v7//v7+//7+
+        /v/+/v7//v3+//79/v/8/v3//f78//r8/f/09fH//P38//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAA
+        AAAAAAAA/v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//39/f/18e3//f39//n59//39PL/+PXy//Pr5v/49vP/9vPx//v6
+        +f/38/D/9e/s//Tr5v/28e3/8+3p//39/f/5+ff/s3xT/7yNbf/Hpo3/vpFw/6lsQf+/kG//qmxB/7qO
+        bP/AlXb/rnVK/+rh1/+eVST/yamP/7J7Vf/9/f3/+fr3/5ZLFf/NrZX/pmY5/7uLav+sdEn/zKyR/6tw
+        Rv+4iWj/tYFc/7uJZf/3+fb/yaSL/6NeL//h0sX//v7+//z8/P/k2M7//P39//Ht6f/u5+D/6uDX/+DQ
+        wv/q49r/7OXe//f18f/m2tH/7+vl//f18v/g0sb//f79//7+/v/+/v7//v7+//7+/v/08Ov/yaeN/8Gb
+        fv/7/fz//f39//z9/f/GoYT/2si4/93Jt//+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/8uzm/7eH
+        Y/+tdk7/17yn/9O9rP+7jGr/tn5X/8+0nv/Wtp3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//Ls
+        5v+7jm3/07qm//f39P/8/fz/9/b0/9m/rP/Vvqv/1Lae//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/8/Pv//Pz7//39/f/9/v3//v7+//79/v/9/f3//f39//v7+v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA=
+</value>
+  </data>
+</root>