diff --git a/Crypter/Crypter.csproj b/Crypter/Crypter.csproj index e9bbd8b..a0a4e13 100644 --- a/Crypter/Crypter.csproj +++ b/Crypter/Crypter.csproj @@ -59,6 +59,9 @@ False True + + ..\packages\FCTB.2.16.24\lib\FastColoredTextBox.dll + @@ -78,6 +81,12 @@ Form1.cs + + Form + + + FormCompiler.cs + Form @@ -99,6 +108,10 @@ FormAbout.cs + + FormCompiler.cs + Designer + FormDoc.cs diff --git a/Crypter/Form1.Designer.cs b/Crypter/Form1.Designer.cs index bdc9cef..860f7cb 100644 --- a/Crypter/Form1.Designer.cs +++ b/Crypter/Form1.Designer.cs @@ -70,6 +70,7 @@ this.button18 = new System.Windows.Forms.Button(); this.button17 = new System.Windows.Forms.Button(); this.button19 = new System.Windows.Forms.Button(); + this.打开编译器ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.groupBox1.SuspendLayout(); @@ -247,6 +248,7 @@ // this.文件ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.打开文件ToolStripMenuItem, + this.打开编译器ToolStripMenuItem, this.退出ToolStripMenuItem}); this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem"; this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21); @@ -255,14 +257,14 @@ // 打开文件ToolStripMenuItem // this.打开文件ToolStripMenuItem.Name = "打开文件ToolStripMenuItem"; - this.打开文件ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.打开文件ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.打开文件ToolStripMenuItem.Text = "打开文件"; this.打开文件ToolStripMenuItem.Click += new System.EventHandler(this.打开文件ToolStripMenuItem_Click); // // 退出ToolStripMenuItem // this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem"; - this.退出ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.退出ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.退出ToolStripMenuItem.Text = "退出"; this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click); // @@ -278,14 +280,14 @@ // 文档ToolStripMenuItem // this.文档ToolStripMenuItem.Name = "文档ToolStripMenuItem"; - this.文档ToolStripMenuItem.Size = new System.Drawing.Size(100, 22); + this.文档ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.文档ToolStripMenuItem.Text = "文档"; this.文档ToolStripMenuItem.Click += new System.EventHandler(this.文档ToolStripMenuItem_Click); // // 关于ToolStripMenuItem // this.关于ToolStripMenuItem.Name = "关于ToolStripMenuItem"; - this.关于ToolStripMenuItem.Size = new System.Drawing.Size(100, 22); + this.关于ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); this.关于ToolStripMenuItem.Text = "关于"; this.关于ToolStripMenuItem.Click += new System.EventHandler(this.关于ToolStripMenuItem_Click); // @@ -448,6 +450,13 @@ this.button19.UseVisualStyleBackColor = true; this.button19.Click += new System.EventHandler(this.button19_Click); // + // 打开编译器ToolStripMenuItem + // + this.打开编译器ToolStripMenuItem.Name = "打开编译器ToolStripMenuItem"; + this.打开编译器ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.打开编译器ToolStripMenuItem.Text = "打开编译器"; + this.打开编译器ToolStripMenuItem.Click += new System.EventHandler(this.打开编译器ToolStripMenuItem_Click); + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); @@ -540,6 +549,7 @@ private System.Windows.Forms.Button button18; private System.Windows.Forms.Button button17; private System.Windows.Forms.Button button19; + private System.Windows.Forms.ToolStripMenuItem 打开编译器ToolStripMenuItem; } } diff --git a/Crypter/Form1.cs b/Crypter/Form1.cs index 03eb390..2c3c663 100644 --- a/Crypter/Form1.cs +++ b/Crypter/Form1.cs @@ -14,6 +14,7 @@ using System.Drawing; using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Collections.Generic; +using Compiler; namespace CrypterExample { @@ -650,5 +651,13 @@ namespace CrypterExample } + + private void 打开编译器ToolStripMenuItem_Click(object sender, EventArgs e) + { + using (FormCompiler formCompiler = new FormCompiler()) + { + formCompiler.ShowDialog(); + } + } } } diff --git a/Crypter/FormCompiler.Designer.cs b/Crypter/FormCompiler.Designer.cs new file mode 100644 index 0000000..266da95 --- /dev/null +++ b/Crypter/FormCompiler.Designer.cs @@ -0,0 +1,365 @@ +namespace Compiler +{ + partial class FormCompiler + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormCompiler)); + this.panel2 = new System.Windows.Forms.Panel(); + this.txtBox = new FastColoredTextBoxNS.FastColoredTextBox(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.runToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.wordWraoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.comboFrame = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.comboType = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.listBoxReferences = new System.Windows.Forms.ListBox(); + this.menuReferences = new System.Windows.Forms.ContextMenuStrip(this.components); + this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.label1 = new System.Windows.Forms.Label(); + this.comboLang = new System.Windows.Forms.ComboBox(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.txtBox)).BeginInit(); + this.menuStrip1.SuspendLayout(); + this.panel1.SuspendLayout(); + this.menuReferences.SuspendLayout(); + this.SuspendLayout(); + // + // panel2 + // + this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel2.Controls.Add(this.txtBox); + this.panel2.Location = new System.Drawing.Point(8, 22); + this.panel2.Margin = new System.Windows.Forms.Padding(2); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(579, 319); + this.panel2.TabIndex = 1; + // + // txtBox + // + this.txtBox.AutoCompleteBracketsList = new char[] { + '(', + ')', + '{', + '}', + '[', + ']', + '\"', + '\"', + '\'', + '\''}; + this.txtBox.AutoIndentCharsPatterns = "\r\n^\\s*[\\w\\.]+(\\s\\w+)?\\s*(?=)\\s*(?[^;]+);\r\n^\\s*(case|default)\\s*[^:]" + + "*(?:)\\s*(?[^;]+);\r\n"; + this.txtBox.AutoScrollMinSize = new System.Drawing.Size(27, 14); + this.txtBox.BackBrush = null; + this.txtBox.BracketsHighlightStrategy = FastColoredTextBoxNS.BracketsHighlightStrategy.Strategy2; + this.txtBox.CharHeight = 14; + this.txtBox.CharWidth = 8; + this.txtBox.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180))))); + this.txtBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtBox.Font = new System.Drawing.Font("Courier New", 9.75F); + this.txtBox.IsReplaceMode = false; + this.txtBox.Language = FastColoredTextBoxNS.Language.CSharp; + this.txtBox.LeftBracket = '('; + this.txtBox.LeftBracket2 = '{'; + this.txtBox.Location = new System.Drawing.Point(0, 0); + this.txtBox.Margin = new System.Windows.Forms.Padding(2); + this.txtBox.Name = "txtBox"; + this.txtBox.Paddings = new System.Windows.Forms.Padding(0); + this.txtBox.RightBracket = ')'; + this.txtBox.RightBracket2 = '}'; + this.txtBox.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255))))); + this.txtBox.Size = new System.Drawing.Size(579, 319); + this.txtBox.TabIndex = 3; + this.txtBox.Zoom = 100; + // + // menuStrip1 + // + this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.optionsToolStripMenuItem, + this.editToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 1, 0, 1); + this.menuStrip1.Size = new System.Drawing.Size(741, 24); + this.menuStrip1.TabIndex = 2; + this.menuStrip1.Text = "menuStrip1"; + // + // optionsToolStripMenuItem + // + this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.runToolStripMenuItem}); + this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; + this.optionsToolStripMenuItem.Size = new System.Drawing.Size(66, 22); + this.optionsToolStripMenuItem.Text = "Options"; + // + // runToolStripMenuItem + // + this.runToolStripMenuItem.Name = "runToolStripMenuItem"; + this.runToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5; + this.runToolStripMenuItem.Size = new System.Drawing.Size(145, 22); + this.runToolStripMenuItem.Text = "Compile"; + this.runToolStripMenuItem.Click += new System.EventHandler(this.RunToolStripMenuItem_Click); + // + // editToolStripMenuItem + // + this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.wordWraoToolStripMenuItem}); + this.editToolStripMenuItem.Name = "editToolStripMenuItem"; + this.editToolStripMenuItem.Size = new System.Drawing.Size(42, 22); + this.editToolStripMenuItem.Text = "Edit"; + // + // wordWraoToolStripMenuItem + // + this.wordWraoToolStripMenuItem.Name = "wordWraoToolStripMenuItem"; + this.wordWraoToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.wordWraoToolStripMenuItem.Text = "Word Wrap"; + this.wordWraoToolStripMenuItem.Click += new System.EventHandler(this.WordWraoToolStripMenuItem_Click); + // + // panel1 + // + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.comboFrame); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.comboType); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.listBoxReferences); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.comboLang); + this.panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.panel1.Location = new System.Drawing.Point(591, 24); + this.panel1.Margin = new System.Windows.Forms.Padding(2); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(150, 324); + this.panel1.TabIndex = 3; + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(3, 136); + this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(59, 12); + this.label4.TabIndex = 7; + this.label4.Text = "Framework"; + // + // comboFrame + // + this.comboFrame.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboFrame.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboFrame.FormattingEnabled = true; + this.comboFrame.Items.AddRange(new object[] { + "v2.0", + "v4.0"}); + this.comboFrame.Location = new System.Drawing.Point(5, 157); + this.comboFrame.Margin = new System.Windows.Forms.Padding(2); + this.comboFrame.Name = "comboFrame"; + this.comboFrame.Size = new System.Drawing.Size(138, 20); + this.comboFrame.TabIndex = 6; + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(3, 77); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(35, 12); + this.label3.TabIndex = 5; + this.label3.Text = "Type:"; + // + // comboType + // + this.comboType.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboType.FormattingEnabled = true; + this.comboType.Items.AddRange(new object[] { + "winexe", + "library"}); + this.comboType.Location = new System.Drawing.Point(5, 98); + this.comboType.Margin = new System.Windows.Forms.Padding(2); + this.comboType.Name = "comboType"; + this.comboType.Size = new System.Drawing.Size(138, 20); + this.comboType.TabIndex = 4; + // + // label2 + // + this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(3, 201); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(71, 12); + this.label2.TabIndex = 3; + this.label2.Text = "References:"; + // + // listBoxReferences + // + this.listBoxReferences.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.listBoxReferences.ContextMenuStrip = this.menuReferences; + this.listBoxReferences.FormattingEnabled = true; + this.listBoxReferences.ItemHeight = 12; + this.listBoxReferences.Items.AddRange(new object[] { + "System.dll", + "System.Windows.Forms.dll", + "Microsoft.VisualBasic.dll", + "System.Management.dll", + "System.Drawing.dll"}); + this.listBoxReferences.Location = new System.Drawing.Point(5, 223); + this.listBoxReferences.Margin = new System.Windows.Forms.Padding(2); + this.listBoxReferences.Name = "listBoxReferences"; + this.listBoxReferences.Size = new System.Drawing.Size(138, 88); + this.listBoxReferences.TabIndex = 2; + // + // menuReferences + // + this.menuReferences.ImageScalingSize = new System.Drawing.Size(24, 24); + this.menuReferences.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.addToolStripMenuItem, + this.removeToolStripMenuItem}); + this.menuReferences.Name = "menuReferences"; + this.menuReferences.ShowImageMargin = false; + this.menuReferences.Size = new System.Drawing.Size(99, 48); + // + // addToolStripMenuItem + // + this.addToolStripMenuItem.Name = "addToolStripMenuItem"; + this.addToolStripMenuItem.Size = new System.Drawing.Size(98, 22); + this.addToolStripMenuItem.Text = "Add"; + this.addToolStripMenuItem.Click += new System.EventHandler(this.AddToolStripMenuItem_Click); + // + // removeToolStripMenuItem + // + this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; + this.removeToolStripMenuItem.Size = new System.Drawing.Size(98, 22); + this.removeToolStripMenuItem.Text = "Remove"; + this.removeToolStripMenuItem.Click += new System.EventHandler(this.RemoveToolStripMenuItem_Click); + // + // label1 + // + this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 7); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(59, 12); + this.label1.TabIndex = 1; + this.label1.Text = "Language:"; + // + // comboLang + // + this.comboLang.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.comboLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboLang.FormattingEnabled = true; + this.comboLang.Items.AddRange(new object[] { + "C#", + "VB.NET"}); + this.comboLang.Location = new System.Drawing.Point(5, 28); + this.comboLang.Margin = new System.Windows.Forms.Padding(2); + this.comboLang.Name = "comboLang"; + this.comboLang.Size = new System.Drawing.Size(138, 20); + this.comboLang.TabIndex = 0; + this.comboLang.SelectedIndexChanged += new System.EventHandler(this.ComboLang_SelectedIndexChanged); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(741, 348); + this.Controls.Add(this.panel1); + this.Controls.Add(this.menuStrip1); + this.Controls.Add(this.panel2); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.menuStrip1; + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Compiler"; + this.Load += new System.EventHandler(this.Form1_Load); + this.panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.txtBox)).EndInit(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.menuReferences.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem runToolStripMenuItem; + private FastColoredTextBoxNS.FastColoredTextBox txtBox; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ListBox listBoxReferences; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox comboLang; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox comboType; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox comboFrame; + private System.Windows.Forms.ContextMenuStrip menuReferences; + private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem wordWraoToolStripMenuItem; + } +} + diff --git a/Crypter/FormCompiler.cs b/Crypter/FormCompiler.cs new file mode 100644 index 0000000..130f24d --- /dev/null +++ b/Crypter/FormCompiler.cs @@ -0,0 +1,216 @@ +using FastColoredTextBoxNS; +using Microsoft.CSharp; +using Microsoft.VisualBasic; +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace Compiler +{ + public partial class FormCompiler : Form + { + public FormCompiler() + { + InitializeComponent(); + comboLang.SelectedIndex = 0; + comboType.SelectedIndex = 0; + comboFrame.SelectedIndex = 0; + } + + private void Form1_Load(object sender, EventArgs e) + { + + } + + private void RunToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (listBoxReferences.Items.Count == 0) + { + MessageBox.Show("No references!", "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return; + } + + if (string.IsNullOrWhiteSpace(txtBox.Text)) + { + MessageBox.Show("Empty code!", "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return; + } + + using (SaveFileDialog saveFile = new SaveFileDialog()) + { + if (comboType.SelectedIndex == 0) + saveFile.Filter = "Executable (*.exe)|*.exe"; + else + saveFile.Filter = "Library (*.dll)|*.dll"; + + if (saveFile.ShowDialog() == DialogResult.OK) + { + switch (comboLang.Text) + { + case "C#": + { + Compiler(new CSharpCodeProvider(new Dictionary() { { "CompilerVersion", comboFrame.Text } }), + txtBox.Text, GetReference(), + saveFile.FileName); + break; + } + + case "VB.NET": + { + Compiler(new VBCodeProvider(new Dictionary() { { "CompilerVersion", comboFrame.Text } }), + txtBox.Text, GetReference(), + saveFile.FileName); + break; + } + } + } + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return; + } + finally + { + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + } + } + + private string[] GetReference() + { + List reference = new List(); + foreach (string r in listBoxReferences.Items) + { + reference.Add(r); + } + return reference.ToArray(); + } + + private void Compiler(CodeDomProvider codeDomProvider, string source, string[] referencedAssemblies, string output) + { + try + { + var compilerOptions = $"/target:{comboType.Text} /platform:anycpu /optimize+"; + + var compilerParameters = new CompilerParameters(referencedAssemblies) + { + GenerateExecutable = true, + GenerateInMemory = false, + CompilerOptions = compilerOptions, + TreatWarningsAsErrors = false, + IncludeDebugInformation = false, + OutputAssembly = output, + }; + var compilerResults = codeDomProvider.CompileAssemblyFromSource(compilerParameters, source); + + if (compilerResults.Errors.Count > 0) + { + foreach (CompilerError compilerError in compilerResults.Errors) + { + throw new Exception(string.Format("{0}\nLine: {1}", compilerError.ErrorText, compilerError.Line)); + } + } + else + { + MessageBox.Show("Done!", "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + + private void AddToolStripMenuItem_Click(object sender, EventArgs e) + { + string reference = Interaction.InputBox("Add Reference", "References", ""); + if (string.IsNullOrEmpty(reference)) + return; + else + { + foreach (string item in listBoxReferences.Items) + { + if (item == reference) + { + return; + } + } + listBoxReferences.Items.Add(reference); + } + } + + private void RemoveToolStripMenuItem_Click(object sender, EventArgs e) + { + if (listBoxReferences.SelectedItems.Count == 1) + { + listBoxReferences.Items.Remove(listBoxReferences.SelectedItem); + } + } + + private void ComboLang_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboLang.SelectedIndex == 0) + { + txtBox.Language = Language.CSharp; + txtBox.Text = txtBox.Text = @"// c# + +using System; +using System.Windows.Forms; + +namespace Compiler +{ + public class Program + { + public static void Main() + { + try + { + MessageBox.Show(""Hello World""); + } + catch { } + } + } +}"; + } + else + { + txtBox.Language = Language.VB; + txtBox.Text = @"' VB + +Imports System +Imports System.Windows.Forms + + Public Class Program + Public Shared Sub Main() + Try + MessageBox.Show(""Hello World"") + Catch + End Try + End Sub + End Class + +"; + } + } + + private void WordWraoToolStripMenuItem_Click(object sender, EventArgs e) + { + if (txtBox.WordWrap) + { + txtBox.WordWrap = false; + wordWraoToolStripMenuItem.Checked = false; + } + else + { + txtBox.WordWrap = true; + wordWraoToolStripMenuItem.Checked = true; + } + } + } +} diff --git a/Crypter/FormCompiler.resx b/Crypter/FormCompiler.resx new file mode 100644 index 0000000..6f812d4 --- /dev/null +++ b/Crypter/FormCompiler.resx @@ -0,0 +1,1260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 17, 17 + + + 214, 17 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABABMLAAATCwAAAAAAAAAA + AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8Auev2ALnr9gC56/YAuev2ALnr + 9gC56/YAuev2ALnr9gC56/YAv/H8AJnK1ghbipgcZ5SgpWiUoJ8xYG6ON2VyHBdHVSIuX2kAQ3mBAAco + MQAXNj8AK05YACA/TAAkRFMAHD5NAFB8iQBxpLAAbJ6qAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbp+rAFp5 + gwAyW2gAKlNgABxDUQAYQk8AJFZgACNVXwAjVV8AI1VfACNVXwAeUFoAUH+IADNXYgAlSFQADi87ABgw + PgAuRlQACC88AA8/TgAJOEoSHFBin1+KmNg/ZXjYPWBx2mCBkdpOc4LBSHWDMNb//wDA8/sAvvH5AL7x + +QC+8fkAvvH5AL7x+QC+8fkAvvH5AL7x+QC+8fkAvvH5AL7x+QC+8fkAvvH5AL7x+QD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wCEs8AAhLPAAISzwACEs8AAhLPAAISzwACEs8AAhLPAAISzwACIuMQAXoyah3uf + qrzc9/v70u7z/2WJlduFrrbfaZeg7CJUX4Q9dH0JBicwABc2PwArTlgAID9MACREUwAcPk0AUHyJAHGk + sABsnqoAbJ6qAGyeqgBsnqoAbJ6qAGyeqgBun6sAWnmDADJbaAAqU2AAHENRABhCTwAkVmAAI1VfACNV + XwAjVV8AI1VfAB5QWgBQf4gAM1diACVIVAAOLzsAGDA+AC9GVAAEKzgAADBALU14hM2Ns7+65Pz//6a6 + yP+qvMP/8P7//9jr9ddqkZzeVX+LOLfq8gDH+v8AxPf/AMT3/wDE9/8AxPf/AMT3/wDE9/8AxPf/AMT3 + /wDE9/8AxPf/AMT3/wDE9/8AxPf/AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ACxYZQAsWGUALFhlACxY + ZQAsWGUALFhlACxYZQAsWGUALFhlAC5caCZKb3zyrsPI/+Ty9v/V4+j/2Ont/9ry9P/V9PX/tNfa/1qE + jKIAISoUFDM8ACtOWAAgP0wAJERTABw+TQBQfIkAcaSwAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbJ6qAG6f + qwBaeYMAMltoACpTYAAcQ1EAGEJPACRWYAAjVV8AI1VfACNVXwAjVV8AHlBaAFB/iAAzV2IAJUhUAA4v + OwAZMT8AKEBOAA82Q058oauC1O3z/+Tz+v/e6PL/wcvV/8rU3P/q9Pn/3+30/7fS1v8bQU7ykMHLQqfZ + 4gCj1d8Ao9XfAKPV3wCj1d8Ao9XfAKPV3wCj1d8Ao9XfAKPV3wCj1d8Ao9XfAKPV3wCj1d8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AN2l1ADdpdQA3aXUAN2l1ADdpdQA3aXUAN2l1ADdpdQA1Z3QASniErczq + 7v/T4uX/5uns/+/w8f/n6+z/2+fn/9vr7P/j8vP/5/b434KcodEVN0BIJEhSACA/TAAkRFMAHD5NAFB8 + iQBxpLAAbJ6qAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbp+rAFp5gwAyW2gAKlNgABxDUQAYQk8AJFZgACNV + XwAjVV8AI1VfACNVXwAeUFoAUH+IADNXYgAlSFQADy87AA8oNgA3Tl0sq8LM1ePx+f/l6vH/7u31/+vq + 8f/u8fX/6PH0/9ro6//b6+//0+nt/8Tk6/83Y3HQJVJgAClWZAApVmQAKVZkAClWZAApVmQAKVZkAClW + ZAApVmQAKVZkAClWZAApVmQAKVZkAClWZAD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wA/doQAP3aEAD92 + hAA/doQAP3aEAD92hAA/doQAP3aEADdwfkN/r7n11O7y/+Ts7//s6ev/7+zt/+np6//r8vP/2+jq/+Lr + 7f/f5+n/8P///562vMEwUlwYGjlGBSREUwAcPk0AUHyJAHGksABsnqoAbJ6qAGyeqgBsnqoAbJ6qAGye + qgBun6sAWnmDADJbaAAqU2AAHENRABhCTwAkVmAAI1VfACNVXwAjVV8AI1VfAB5QWgBQf4gAM1diACZI + VAAIKjYHITlITLnFz+Dt8/z/4eXs/+/v9f/n5u3/7ezy/+ru8//i7O//3ezu/9zs8P/Z6ez/3vP2/ypR + XMgAJjMABS05AAUtOQAFLTkABS05AAUtOQAFLTkABS05AAUtOQAFLTkABS05AAUtOQAFLTkABS05AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AEF6jABBeowAQXqMAEJ6jABBeowAQHmKAEB5igBAeYoAOXOFNn6u + vOzQ6u//5Ozu//Lv8P/y7e7/7e7w/+bu8v/g7vX/4O3x/+Tu7//a6On/6/n9/7vQ17xLZ3M8Gz1MAx0/ + TgBQfIkAcaSwAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbJ6qAG6fqwBaeYMAMltoACpTYAAcQ1EAGEJPACRW + YAAjVV8AI1VfACNVXwAjVV8AHlBaAFB/iAA0WGMAIUVRAREyPzehtb7W7vb8/+Hq8P/l7PL/5u3z/+Xs + 8v/j6vD/5Ozy/+Xt8//j7fL/4+zx/97o6P/e8vH/NV1n0GKVngBjlZ4AY5WeAGOVngBjlZ4AY5WeAGOV + ngBjlZ4AY5WeAGOVngBjlZ4AY5WeAGOVngBjlZ4A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ATImbAEyJ + mwBMiZsATImaAE+LnQBWkqQAVZCiAFmVpwBWlKcBdae2R8/r8fXc6On/6+zs//Du7//q7vD/5O7y/9/u + 9P/f7PH/5O/w/9zp6//Y5uv/5PT6/83j6cA5WmgYETBBAE98iABxpLAAbJ6qAGyeqgBsnqoAbJ6qAGye + qgBsnqoAbp+rAFp5gwAyW2gAKlNgABxDUQAYQk8AJFZgACNVXwAjVV8AI1VfACNVXwAeUFoAUH+IAC5S + XQAWOUUAXXuFYuP1+uzf5+7/4uvx/+Tt8//l7fP/4+vx/+Lq8P/k7PL/5e3z/+Pr8f/h6u//4O3s/8zm + 5fBaipKkx///AMT//wDE//8Aw///AMb//wDJ//8Ayf//AMn//wDJ//8Ayf//AMn//wDJ//8Ayf//AMn/ + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAnaHgAJ2h4ACdoeAAkZXQAOHeGAE6LmgBPkqAANW9/ACpg + cQApXGuu0fP2/9rs7f/k6+v/6u7u/+jv8P/i7/P/3+/0/+Tw9f/j7u//4+/z/9zp7//U5Ov/4fX4/6O/ + xbUEIDA+SnaEAHWotABsnqoAbJ6qAG6grABvoa0Ab6GtAG2grABuoKwAWnmDADJbaAAqU2AAHENRABhC + TwAkV2EAI1VfACNVXwAjVV8AI1VfAB5QWgBRgIkACi45AFN0fWLe9/r62+zx/+Hp7//j6/H/5e3z/+Xt + 8//k7PL/5Ozy/+Xt8//l7fP/4+vx/97p7v/l9vf/iamt5WqephHB/v8Au/f+ALn1/AC8+f8Apd3mAJLF + zwCUydMAlMnTAJTJ0wCUydMAlMnTAJTJ0wCUydMAlMnTAP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AClp + eQApaXkAKWl5ACZmdgA7eogAQ4GNAEePmgAscXwAMWdyADRodXikzdGd2fDx/97q6v/m7e3/5u7x/+Hv + 8//h8PX/5PH1/97p7P/d6e7/5vP4/+Dv9f/U6fD/2/T7/4KirLwaQU8SXo6aAnCfqgBunqkAZZaiAF+Q + nQBgkZ4AaZejAG6PmQBadX8AMlxpACpTYAAcQ1EAF0BNACNVXwAjVl8AIlVfACJVXgAhVF4AHlFbA0Fw + eQY+Ymuqy+ft/9jt8v/Y5uv/5e3z/+Xt8//l7fP/5Ozy/+Pr8f/l7fP/5e3z/+Ts8v/h6vD/4Ovx/9rx + 9N1chY20OGZyJU18hQBHdH8AaJupAH2zwAB2o7AAbpqnAG+bqABvm6gAb5uoAG+bqABvm6gAb5uoAG+b + qABvm6gA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AKWl5AClpeQApaXkAJmZ2ADt6iABEgo8AR46aADZ+ + iQA6eYMAOW55AFR+hvDb9vj/3O3t/+Hu7v/j7/H/4fDz/+Hw9f/h7/P/6PP3/+Pv8//d6u//3+3y/9nq + 7//Z7fL/1/H24ENnczwdQk0AfKGpAHugpwBGb30AIlFhACdUZABacXwAcISNAFp2gAAyXGkAKlNgAB1F + UwAROUcAFj5LACZWYQAnVmEAKVhjAC9daAApV2IACjNANajJz/3f9vn/2unv/9/s8f/l7vP/5u70/+bu + 9P/k7PL/4+vx/+bu9P/m7vT/5Ozy/+Hq8P/k8PX/s8/U8BlBTjccRVIAGkJOAE19iwBsobIAa56tAHOg + rQB0oa4AdKGuAHShrgB0oa4AdKGuAHShrgB0oa4AdKGuAHShrgD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wApaXkAKWl5AClpeQAmZnYAO3qIAEKAjQFGjJhYOH6Jzzl4gtFJfojLOmNs+qS+wf/j9vb/4u/w/9zq + 7P/e7u//2+rv/+Hw9P/m8fX/5+/z/+Ls8f/h7fL/3Orv/9rr8P/X7vX/uNXb6jVYYnJlipMBZoqTAEBp + dwAmVWUAKldnAFtzfgBwhY4AWnaAADJcaQAqU2AAHUVTABI6SAAQNEMAKFRgACtXYwAtWWUAPGZxACNM + WApQc31/2/X6+tDj6P/l8vb/4evw/+Ps8f/k7PL/5e3z/+bu9P/j7PL/6fD3/+Xt8//l7fP/4uvx/+Tw + 9f+PrrdjPWh0AGqXoQA4Ym0AX5KjAG6ktABuobAAdKGuAHShrgB0oa4AdKGuAHShrgB0oa4AdKGuAHSh + rgB0oa4AdKGuAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////ACdndwAnZ3cAJ2d3ACRkdAE5eYgRSYWRKEJ9 + iP87dH7/NWpz/zRgav89X2j/WXR7/+Dw8v/W5Ob/3uvs/+Lv8P/f7e//5fH0/+Xv8//m7vL/5e7y/+Pt + 8v/f7PD/3Orw/9Xo7v/h+P3/hqOq2g8vOxAfQU4AJ1NiACtZaQAqV2cAW3N+AHCFjgBadoAAMlxpACpT + YAAdRVMAEjpIABE1RAAoVGAAKFZiADhjbwA9ZG8AKU9bIaXDysTZ7vL/4e/0/+Hr8P/h6u//4+vx/+Ts + 8v/l7fP/5u70/+Xu9P/q8ff/5Ozy/+Xt9P/f5u3/5fD1/3GNmBhkj5oAfq63AERvegBekqIAcqm5AXGl + tAB1oq8AdKGuAHimswB2pLEAdqOwAHajsAB2o7AAdqOwAHajsAB2o7AA////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AM3GBADNxgQAzcYEAMnKBADNvfhY9b3y5HUVQ/ld7hP+BqLD/Z4eQ/563vv9OW2T/t8PI/+r1 + 9//i7u//5PDx/+Ht7v/j7vD/5e/0/+bu8v/l7vL/5O3x/+Xu8v/f6e//5PH2/9bo7f/N5OfYRGJsLB1E + UgArW2sBKlhoACZUZABacn0AcIWOAFp2gAAyXGkAKlNgAB1FUwASOkgAETVEAClUYAAoV2MBQ296BUNk + cQJXdoFP6v///9fm7P/o8vb/4+rv/+Xs8f/j6/H/5Ozy/+Xt8//m7vT/5+/1/+jw9v/k7PL/5Ozy/9zj + 6v/n8vj/LkNQPUBibgCbv8cAT3aAACFOXABfkKAAYpCeAHKfrAN5qLUBYYyZAGqVogBsl6QAa5ekAGuX + pABrl6QAa5ekAGuXpAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBjm6gAY5uoAGObqABmnqsAT4OROnWc + pv+QsLb/1/Dz/9Xq7//e8PX/3u3y/9nm7P+AjJT/7vb6/93n6//i6+3/5e/w/+Tv8v/l7/T/5u3z/+fu + 8v/l7PD/7PL1/+Tq7//m7/T/2ujq/+f5+f+XsreUFD1MESVTYwEqV2cASGx5AGJ4ggBvhI0AWnaAADJc + aQAqU2AAHUVTABI6SAASNkQAJ0pZABU+TAA0W2gATGx5ALrP18Lc7PD/4e3y/+Do7P/s8fT/6e/0/+Lq + 8P/k7PL/5e3z/+bu9P/n7/X/5u70/+Xt8//i6vD/4Ojv/9Xg5/86SVSldYyWAJKxuh19oakrXoCIAAMf + KiYjPEkFP11qADdSXgAFJzEANlpkAEJncwBAZXEAQGVxAEBlcQBAZXEAQGVxAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AGKToQBik6EAYpOhAGCRoAZolaMrvdzjttnu8v/c6ev/4ezw/+Lr7//c5ev/4Obt/5Wd + qP/W3uT/6fDz/+Xr7v/f6en/5O/y/+Xv9P/m7fP/5+7y/+br8P/n7fH/6O7y/9/p6v/j8fH/2+vr/9Tr + 7fo2XGk1FTtKACxTYwBog40AaX6HAG+EjQBZdoAALlpnACVPXAAVPk0ABzE/AQIoNwYnSVcAK01bDyVF + U2xqhpGM3/H3/Nvp7v/h6+//5Oru/+rv8f/k6/D/5Ozy/+Xt8//l7fP/5u70/+bu9P/j6/H/6PD2/9zk + 6//q8vj/v8rR+lljbYzk9vnVyOLn5sbj5urt///WaoGJ6puutdt+jpiLEx4qjRA0PQY0WWQARGl1AEJn + cwBCZ3MAQmdzAEJncwBCZ3MA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AQG+CAEBvggBAb4IAPGt+Dk17 + jmK11+PA4vT8/9nj5v/l7e//4uvu/+rx9P/j7O7/q7S7/6u2u//s9Pb/6/P0/+Pt7v/p8/X/5e/z/+Xt + 8v/p8fX/5+/z/+Dp7f/m7vL/5e/x/+Dr7v/V4uX/5fX4/6fAyOZSbnqPa4iTXHCJkgBkeoMAaoCJAFt1 + fwBFZnFLSGp0h1BxfJdZeYOpZ4ONtJeutojS5euIlq22/rTGzP/m8/j/7fn9/+jw9f/l7fD/4Ojs/+Lr + 8P/c5ez/3OXt/+jw9v/o8Pb/3ubs/+Hp7//l7/P/4Ont/+31+f+1v8f/sba//+Lp7//Y7O3/1Ozr/9z1 + 8v+80ND/ydfY//H7+/+XqbDrVnB4iz9jb2hCZ3MAQmdzAEJncwBCZ3MAQmdzAEJncwD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wA/coYAP3KGAD9yhgBAcoYAOGh+LJfC1PXc8/z/3ejq/+Dr7P/f6er/2eXm/+z2 + 9/+7x8r/pbK1/+bx8v/l8PH/4uzu/+fw8//i7PD/6PH1/+Ps8P/e6Oz/6vP2/+Dq7v/h6/D/7PX5/+z2 + +v/j7vL/usXI/5Geo/+ir7P/jJqh1mx8gtZicnjVX2511GFudflqd37/e4qQ/4GOlf+BjpX/eoeP/3uI + j/9QXGb/Ym52/4eTnP+fq7L/vcfM/83V2P/f6u3/7fb8//H4///j6/T/2+Pq/+Lq8P/j6/D/7PT3/9/q + 6//i7e7/5O7w/6Otsv+/vsb/6eru/93r6//Y8O3/z+fk/+H17//e6+j/4enr/8PQ0//K3OHxTG982DJY + ZgA3XGoAN1xqADdcagA3XGoAN1xqAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAEzSQABM0kAATNJAAEz + SQAAKkAnVYKW0tLt9//b5+n/4uzt/+r09f/p8vT/097g/6Wxtf+Mmp//4Orr/+bv8f/i7O7/4evu/+Xv + 8//i6u//5u/z/+v0+P/k7PH/7PL0/9Xe5P+otLv/h5Ka/36Lk/92hIn/doOI/5Oeo/+tub3/v8vO/9nk + 5v/m8PH/6fPz/+r09f/o8vP/5vDy/+fw9P/i6+//4Ojt/+Lr7//V3+T/vsnP/6Crsf+BjZT/eoaP/4aT + m/+Ik5z/oqu2/9/n8P/v9/3/4Oju/+Do7v/g6u7/6PL0/9rl5v/t9/j/lZ6k/8vO0//u7/H/3Onq/+H0 + 8f/Y6+n/2ero/93q6f/i7/L/4/n8/6nI0OM+aXlrPWl4AD9regA/a3oAP2t6AD9regA/a3oA////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AADVHAAA1RwAANUcAADlLAAA5Sw0SRlnDnbW///f////P2dv/oK2x/42a + n/+hrrL/rrq+/4iVmv/e6Or/5vDx/+Pu7//h6+7/5u/z/+vz9//h6+7/xtDU/6GttP99iI//fIiQ/5Wh + qf+8xsv/y9TX/93o6v/y+/z/8Pr6/+fy8v/l7/D/3+rr/9vm6P/f6er/4Ovr/97q6v/g6uz/2+Xp/93n + 7P/k7fD/4+zw/+Ps8P/n8PT/6/T4//L7/v/q8/f/zdfc/7nDy/+Yoq//b3mE/4KMl/+7xMr/4env/+zz + 9v/f6er/3+rr/+/4+f+Tn6P/aHR7/32Kjv+Vp6n/vM3O/+j19P/o8vP/1eLm/9Hm7v/S9vy7WIaSpQk5 + Sh8UR1YAFEZWABRGVgAURlYAFEZWABRGVgD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAYYnMAGGJzABll + dgAISVkAADZHLBVLXYkqP0z5dYKH/4GNk/+2wcX/5/Hy/+Pu7//t9/j/n6yw/9ni5P/Y4+T/5e/w/+73 + +f/V3uT/o660/3+Mk/+AjJT/prG3/9Tf5P/q8/b/7vX5/+Ps8f/h6+//4uvu/9vk5//b5un/6PL0/+Dq + 7P/j7O7/5/Hz/+Pt8P/i7O7/4uzu/+Tu8f/i6/D/5O3x/+bv8//c5er/5e7z/+fw9P/f6e3/3ufr/+Lr + 7//k7fH/3+jv/+nx+f/q8vb/t8DH/4KMlf9yf4n/n6Wr/+Hq7P/j7vD/7/j4/5SgpP/O3N3/3u7t/7TG + x/9wgIT/k56i/9jh5f/0////0+3zu2iaqI4AMkQ4CDxMAAg7TAAIO0wACDtMAAg7TAAIO0wACDtMAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////ADKPoAAyj6AANZKjABtsewALPk8AT4COAExueohHVV3/aHV7/5yp + rf/BzM//1eDi//f///+irrL/1eDh/+v19f/a4+X/maas/4aSmv+bpq3/0Njc/+Tt8v/w+fz/4+3w/97p + 7f/g6u7/5O3x/+Xv8//i6+//5Ozx/+fw9f/j6/D/5Ozx/+jx9f/g6u7/4+zx/+Tt8v/m7/T/4+zw/+fw + 9P/j7fH/3+nt/+Ps8P/h6+//5O7y/+Tu8v/k7fH/5O3x/+Tt8f/m7/X/4ury/97m8P/r8/n/6/P5/9DZ + 3f+RnqT/YG51/52qrf/i7e7/l6Wp/8bX1//l9vX/5fT0/9rl5v96g4n/OkVQ/01caP9+nqxxJ1tuHAU9 + TgARSVgAEUhXABFIVwARSFcAEUhXABFIVwARSFcA////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AL4maAC+J + mgAxjJ0WE2NzdEl3hQBLfotTdpKc+PX9/v/d5+j/rbm9/4iWm/+EkZb/n6mt/46boP/d5+n/p7O3/36L + j/+xub3/5O3x/+nx9f/i7PD/4eru/+Pt8v/j7PD/5O3x/+Xu8v/k7fH/4uzw/+Pr8f/j6/H/5e3z/+bu + 9P/m7vT/5e3z/9/o7//o7/X/5Ozy/+bu9P/l7vP/6PH1/+Xu8v/m7/P/5/D0/+bw9P/l7/P/5u/z/+bv + 8//m7/P/5u/z/+fv9v/k7PX/4Ory/+Dq8P/h6e//4erw/+/3+v/a5Ob/iZSZ/257gP9canD/vM/P/5Sn + qf96jJD/dYWJ/42Wm/+WmqD/U2Bt/0Vjc24oWWgAKGl2ADB5hQAvd4MAL3eDAC93gwAvd4MAL3eDAC93 + gwD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAriJkAK4iZAC6LnAsXano+Byo6rRM8TPqhvsb/u8jL/9vk + 5v/u+fr/+f///9Lc3/+3wsX/RFNZ/zdBR/9IU1r/qre6/93l6P/f6O3/5O7y/93n6//h6u7/4uvv/+Tt + 8f/l7vL/5e7y/+Xu8v/k7fH/4+vx/+Ts8v/l7fP/5e3z/+bu9P/l7fL/5e3x/9rj6P/l7PL/4env/+bu + 8//i7PD/5O3x/+bv8//m7/P/5/D0/+bv8//m7/P/5u/z/+bv8//m7/P/5e70/+Ts9P/l7fX/5e3z/+Hp + 8P/c5Ov/ydLY/7bBxf+lsrb/UWBn/yMtNP84Qkj/lKep/8DP0f/X4eL/5ezt/+3y9P/S3ub/RGFu5iVV + YTA7eoUWLHWBDS51gQAudYEALnWBAC51gQAudYEALnWBAP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AEmT + ogBJk6IASZSjAEOJlwAfT19PZIqV/4qiq/+Mm6D/gY6U/46an/+RnqL/vcnM/+Ls7v9VY2n/qLO3/9Ld + 3/+ap6v/kp+m/56qsv/X4eX/6fL1/+vz9//f6O3/5e7y/+bv8//m7/P/5u/z/+Tt8f/l7fP/5e30/+Xt + 9P/l7fT/5e30/+Do8P/g6O//6/P4/+Xt8v/l7fP/3+ju/+Xu8v/o8fX/5e7y/+Ls8P/j7fH/5u/z/+bv + 8//m7/P/5u/z/+bv8//l7vT/5Oz0/+bu9v/n7/X/5u70/8jR2f97h4//jZmd/5KfpP/G0dP/4Ors/7TB + xP92hYr/scLE/+Px8f/z+fn/1+Dh/7TBxf9adHz/FzlF4Td3goEocn4eK3N/ACtzfwArc38AK3N/ACtz + fwArc38A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AKF5tAChebQAoX24AHVJhCER2g9XN7PP/4PH4/+Hs + 7v/c5ub/usbJ/7nEyP+Nm6D/NEJI/0pXXv+grbL/vcnL/9bh4v/W4OT/zdfd/+Pt8P/i6+//6PH1/+Xu + 8v/l7vL/5u/z/+bv8//m7/P/5e7y/+bu9f/l7fX/5e31/+Xt9f/l7fX/3ubv/+Ts8P/e5u7/1+Dn/+Ts + 9P/i6/L/3OXq/+bv8//n8PP/5e7y/+jx9f/n8PT/5u/z/+bv8//m7/P/5u/z/+bu9f/l7fX/5u72/+bu + 9P/i6vD/3ubt/97o7P/3////8vz8/+Lt7f/O2Nv/ydHU/5ynrP8vQUj/VWls/3SDhv97h4r/mKWp/7/T + 1f9tjJH/XJGWbKHb3wCRys8AksvQAJLL0ACSy9AAksvQAJLL0AD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAsdIQALHSEAC96igAANEUEQGdz+Of8///f7PL/5vDy/+Ls7v/y/P3/3+rs/4WTmf+5xMf/5O7v/7/M + z/+bpqv/oayy/5unrv/V3+T/3ujt/+Tt8f/f6O3/4+3x/+bv8//m7/P/5/D0/+bv8//l7vP/5u72/+bu + 9v/l7fX/5Oz0/+Xt9P/f5/D/p7K7/7a/x/90gI3/jpik/5Gbpv/h6u7/5/H1/+Xu8//h6u//5e7y/+bv + 8//m7/P/5u/z/+bv8//m7/P/6PD4/+fv9//k7PT/5e3z/+Ps8f/i6vD/5O7y/5unrP+HlJr/i5mg/5Ke + pf+KkJr/lqCm/667vv9dcHP/hJaX//r////g7ev/4vTz/8Pe3v9XgIW4ZpmiEGSWnwBkl58AZJefAGSX + nwBkl58AZJefAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AC94iAAveIgAMXyNMhVSYL0wWGT9eo2U/4iS + m/+eq7P/s8DI/8PN0v9ba3X/kZ+m/9Xh5v/H1Nn/1N/k/+Hr8P/g6u//1Nzj/9ng5//n7fP/6O70/+ju + 9P/o7vT/6e/1/+nv9f/o7vT/5+3z/+ft8//l7PT/5e31/+Xt9f/k7PT/4uvy/+ry+v+SnKb/WGNw/8jS + 3P9mcn//pa65/+rv9v/n7vX/6O71/+ft9P/o7vX/6O71/+jt9f/o7vX/6O71/+jt9f/n7fb/5+31/+fs + 9f/l6vP/5Ory/+Lo8P/s8ff/2N7k/8bN1P/Ax9D/zNPZ/9Xf4//U4OH/1+Pk/7zLzP9DVVv/e4uO/6i3 + uv+MnKD/oLS3/zhITv9NeIE3aZqkAGWWnwBllp8AZZafAGWWnwBllp8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AKGl4AChpeAAmZ3YBM3F9obDX3f/j8fP/2N/i/7vIzv+uvML/LjpE/3J/h/+Zpq7/m6qy/52s + tP+isLj/p7W9/6u5wP+yvsX/ztfd/+ju9P/o7/T/5u3z/+rx9v/o7/T/6O/0/+fu8//m7fP/5u3z/+Xs + 9P/l7fX/5e31/+Ts9P/h6vL/4+vz/9ff5f+BjZn/kp2p/4+bpP/r8/j/5Ony/+br9P/n7PX/6O32/+nu + 9//o7fb/6O32/+jt9v/o7fb/6O32/+bs9f/m7PX/5uz1/+Tq8//j6vP/4unw/7vCy/+TnKn/oKm1/5af + rf+Qmqb/l6Wr/5alqf+NnKH/oK+z/52prf9EU1v/qrm8/+Tw8f/l8fL/vsrN/0lmcLhAYWwAQ2JtAENi + bQBDYm0AQ2JtAENibQD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wALP00ACz9NAAk+SwAQRVOtv+Pn/+Lw + 8P/a4uP/7/n8/5+ssv+UoKb/7vr9/+35/P/n8vb/5/L2/+Xw9P/i7vL/4Ozw/97o7f/l7/L/6vP3/+Dr + 7v/g6u7/5vD0/+Tu8v/l7vL/5O7y/+Tu8v/k7vL/5Ozy/+Xt9f/l7fX/5Oz0/+Hq8v/d5u7/7PP5/8TN + 1/96hZL/4enw/+Pq8v/l6/P/5uv0/+fs9f/o7fb/6O32/+fs9f/n7PX/5+z1/+fs9f/n7PX/5u31/+Tt + 9f/k7fX/4uvz/+Dq8v/g6fH/zNbf/8TO1//X4Oj/1d/n/97n7v/h7fD/7Pj4/+f09P/o9fX/9v///7vI + yv9ren//4u3u/9bj5f/t+vr/KkRPzgQeKwALJTIACyUyAAslMgALJTIACyUyAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AAtATgALQE4ACT5MABRJV6vP8fP/4+3u/+ns7v/FzdL/b3yF/+Xv8//i7PD/3+jt/9/p + 7f/g6e7/4uvv/+Ps8P/l7vL/5vH1/+Ds8P/d6e3/4+/z/+fz9//k7/P/4ezx/+Ht8f/i7vL/4u7y/+Lu + 8v/j7PL/5e3z/+Xt8//k7PL/4erw/93m7P/n7/T/4uvx/+/3+//c5Ov/4ejv/+ft8v/n7fP/5+3z/+ft + 8//n7vP/5u3y/+bt8v/m7fL/5u3y/+bt8v/k7fL/4u7z/+Hu8//g7PH/3urv/9/q8P/o9Pn/6/b7/9/q + 8P/l7/T/3+rv/+Dq7v/h7O3/3Ojp/9jj5f/f6ev/6/X2/32Jjv+eqq7/6PP0/+jw8f9adoHKPWZ2AENr + egBDa3oAQ2t6AENregBDa3oA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ACDVAAAg1QAAHMz8ACzdDq6zM + 0f/m7e7/6Ors/3uHjf/U3uD/4+7v/97p7P/c5un/3+rs/+Hs7f/h7O7/5e/x/+bw8f/j7vD/3u3v/9/t + 7//h7/H/3u3v/9zr7P/d7O3/3ezu/9/t7//g7/D/4e7x/+Pr8f/l7fP/5e3z/+Ts8v/f6O//4urx/+Ps + 8v/h6e//2OHn/+Tt8P/j6fD/6O3z/+ft8//n7fP/5+3z/+ft8//m7PL/5uzy/+bs8v/m7PL/5Ozy/+Pu + 8//h7vP/4O3y/97s8f/d6/D/3erv/97s8v/f7fL/4O3y/+Pw9v/d6u//4+3w/+bx8f/q9PX/4Ors/97p + 6v/d6On/3efo/3F/hP/Q293/4Ojq/3aVoM5Zk6UIXpanAF6WpwBelqcAXpanAF6WpwD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wAAIi4AACEtAAEiLgACIy+rXX6F/+Tr7P+tr7L/V2Nq/8bQ0//l7u//4err/+Pr + 7f/m7/D/4uvt/+jw8v/c5ef/4Onr/+Pv8P/h8PD/4fDw/9/t7//i8fL/4/Hy/+Du7//c6+z/3Ors/+Dv + 8P/f7e7/6vL2/+Ts8v/j7PH/5u7z/+Xu8//o8fb/3+ju/+Xu8//l7fP/5Ozy/+Lq8P/n7fP/5+3z/+ft + 8//n7fP/6O7z/+ft8//k6u//5evx/+Xs8f/o7/T/3Ofs/9/s8f/f7PH/3erv/9zq7v/e7PD/2Obr/97r + 7//d6/D/1+Tp/+by9//l7/D/4uvs/+jw8f/f6On/5/Dx/9ni5P++yc3/VGBn/4+an//7////XHmF/UJ2 + iVpHeowAR3qMAEd6jABHeowAR3qMAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AA9IUwAQSVQAC0JNAAc4 + RKtBZGz/i5WZ/1dcYf9EUFf/XWlw/5GaoP/X3uH/5Ovt/97l6P/n7e//3+bo//H3+P/o7/H/0Nnb/7/L + zf+xvsH/rbq9/7TBxP/CztD/1uLj//D7/P/o8/T/2ubn/+Tv8P/d5ur/5/Dz/+Tu8f/m8PP/6fL1/9zl + 6v/s9ff/3ebp/+Tt8f/f6Oz/5+/z/+fu8v/n7vL/5+7y/+fu8v/n7vH/6O/z/+nw8//j6e3/5+3x/9/n + 6v/l7fH/5/H1/+r09//t9/v/7/j7/+75/P/s9vn/5/D0/+Pu8f/i7fD/2uTo/+Do6//l6+3/2N/i/87V + 2f+LlZz/ZnJ5/1hkbP9KVl7/Vl9m/6Gprv8aMTzkT4WVKE+DkwBPg5MAT4OTAE+DkwBPg5MA////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8ASJmlAEygrAAwdoEAACkzsEtvdv9CUFX/AAAF/wwUG/8kLzb/JDA2/15o + bv+xurz/7fT0/+jv7//l6+z/oqqt/4ONkv96hor/gIuP/46Xm/+Pl5v/iJKW/4CLj/+EkJT/kZyg/8XQ + 0f/o8PD/5+/w/97o6f/l8PH/4ezt/+r19f/f6uv/6PLy/97o6f/i7O3/6fT0/93n6f/k7e//5+3v/+bt + 7//m7e//5u3v/+bt7//j6uz/4ejr/+bt7//q8PL/6fDy/+bs7//Fz9L/q7W5/6Stsv+lr7P/pK2y/6Ot + sv+1vsL/3OTm//L5+f/q8PL/6/Hz/8/V2P+cpav/VWFp/0VQWP8nLzf/FRsk/wYPF/8HDRT/Fh0m/xMg + Ks5fmqUAW5SfAFuUnwBblJ8AW5SfAFuUnwD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBGl6MASZyoADZ/ + igAMP0iVL1NZ/Sw8P/8AAwj/AQkP/wAGDf8ACxH/AwwT/0FNVP+GkJX/m6So/3iBhv+dqKv/zdHT/+/1 + 9f/6/v///f////7////+////8/f4/9fd3/+7wcP/eIGG/4WNkv/Iz9H/7fb3/9/p6//l8PD/3Obo/+r0 + 9f/Z4+X/4evs/+z39//Y5Ob/6fT1/9/p6//l6+3/5ezu/+Xs7v/l7O7/5ezu/9/m6f/u9fb/7vT2/7O8 + wP+Gj5X/bHV9/4aOlP+Zoaf/q7K3/7m/xP+9xMf/qrK3/4OLkv9gaG7/dn6F/7a7v/+mrbL/cnyD/z9H + UP8fJS3/BQkP/wAJEf8BBAz/BQ0V/woUHP8CChL/DiIrzEx8hQBId4AASHeAAEh3gABId4AASHeAAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AEeZpQBFmaUAUp6oAGCZoAgRKC7yGysu/x8kJv8NFhz/AwkP/wUP + Ff8CDRP/CRUc/1pla/+fpqn/6/Hx//T6+f/u9fX/8PX1//L09f/x8/T/8fP0//Hz9P/z9fb/8vX1//r7 + /P/v8fL/vsLG/3yDif+UnqP/5/Dy/9zn6P/q8/T/2eTm/+rz9f/e6uv/i5SX/zE5PP+LlJj/3efp/+bs + 7v/k6+3/5Ovt/+Tr7f/k6+3/6u7w/8DIzP9veYD/ho+V/8PLz//y9vj/9PX3//X3+f/y8/b/9/j6//3+ + ///5+vz/8PHz/+/v8f/Hys//eX6E/zdBSv9KVV3/KS83/wAEDP8ACBD/AgsT/wQJEv8xO0T/WWRs/xsi + K/8FDxbMBxEaAAYRGQAGERkABhEZAAYRGQAGERkA////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO4mUAD6O + mgAvbHYAEigvCgALEfo4SEz/VGFn/xghKP8DCQ//AQcO/wgRGf9sdXr/5uzs///////s8fH/7fHy//H1 + 9f/v8fL/+fj5//f39//39/j/+Pj5//T19f/39/j/7u/w//P09P/7+/z/9/n6/5mhpv+Bi5D/6fHx/+Dq + 6//h6+z/6PLz/5ajqP8nMzv/PUdM/1RgZ//DztL/5e/x/+Xs7//k6+3/5Ovt/+309v+qsbX/WmRs/8jO + 0P/6////5+3v//L09v/u7vH/8fH0//j3+v/29fj/7+/y//Pz9f/y8fT/7+/y//Dw8///////3N/i/2Rr + cv80Pkj/MzpC/woQGf8ABg7/AQMK/zI5Qf9hbnb/ISgw/yA7RM0tTlYAK0xUACtMVAArTFQAK0xUACtM + VAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAxaXIAMWpyADBocQAybHQFG0tVwj1RXP8tNj//AgUM/w8V + Hf8bIir/e3+E/+/x8v/z8/T/7/Hy//T09f/09fb/9/b3//b29//19vf/8/T1//b39//p6uv/8/T1//Hx + 8v/09fb/6ers//b29//w8fL//////5Sbnv+epaj/6vPz/9vm6P/d6+z/3evs/+r2+v/w+v7/7fX5/+Hp + 7//g6vD/4ezw/+Tu8v/t9ff/t7/C/3aAh//k5+n/9/n5/+3v8P/z9PX/9fX2/+3u7//v7/D/8fLz//Dx + 8v/29vf/8/P0//X19v/x8vP/7/Dx/+7v8P/19ff/+fn6/4GEif9BR0//VVlh/yYtNP8BBgz/AAMK/zlL + UP8uPkP/XH6CZXaeogBymp4AcpqeAHKangBymp4AcpqeAP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFeT + nABXk5wAV5OcAFyYoQA/dX9cHTQ//wgNFf8PFRz/QEdO/290ef/7+/z/7u/w/+/x8v/z9PX/9vb3//f3 + +P/39vj/9vf3/+bo6f/3+Pj/9vb3//Dx8v/e4OL/4uPl/+fp6//6+/v/5efo//X29//x8vL/9Pb3/2x2 + e//W3d//4+3u/+Lw8f/e7e7/3Ojs/93n6//i6u//5Ovy/+Hr8f/W4uf/5vD0/9Ha3v+CjJL/5uvt/+ns + 7f/09fX/6uvs//r5+f/4+Pj//v7/////////////8/T0//Hy8//s7e7/7e7v//X29//u7/D/8/T0/+/w + 8f/q6uz//v39/4aJjf9CSE//Z210/0NPVv8OFx3/AQ8U/wkeI/+BpagbnMTGAJe+wQCXvsEAl77BAJe+ + wQCXvsEA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AOnV+ADp1fgA6dX4AO3aABTtye80JHin/DhIZ/1df + Zv9aYGf/5ufo/+zt7v/w8fL/9/f4//b29//39/j/9/f4//b29//s7e7//f7+/+fp6/+goqb/U1dd/yw0 + O/8oLjX/S05R/6aoq//29vj/5Obn//Lz9P/09vf/r7e5/5qjp//z/f3/3Orr/+Ty9P/h7fH/4uzw/+Xs + 8f/h6fD/4u3y/97q7v/m8PT/pK61/6ausv/1+Pn/7fDx/+/w8f/z8/T/9fP1/76/wv+Ul5v/g4SH/4uO + kv+0uLv/5ujp//z8/f/v8PH/7O3u//r6+//x8vP/8fLz/+3t7f/u7e3/9fT1/2ltc/9YXmb/aHN5/1Rj + af8aLjT/AAQJ/4OkpyOexskAmcDDAJnAwwCZwMMAmcDDAJnAwwD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAfWWMAH1ljAB9ZYwAdWGILK2Fr9zNLVv9XYWn/XmVt/4mOk//4+fn/8vPz//Hy8//19fb/9/f4//f3 + +P/19fb/8fLz//n6+v/FyMv/NjpA/wAABf8AAAH/AQYO/wQID/8AAAX/CgwQ/4OFi//09fb/8/P0//L0 + 9f/Cycv/lqGl/+v29v/f7e7/4O7w/+Xw9P/m8PT/5Ozx/97m7f/h6/H/4u7y/9/p7v+JlJz/0trd/+rx + 8v/k5+n/8/T1/8HFyP9KTFL/DhEY/wAAB/8AAAL/AAAG/wsNE/8jJiz/lpqf///////09PT/8PDy//P0 + 9f/x8vP/9PX1//j39//29fX/x8fK/0JJUf9ga3H/XGtx/1pvdP8ZJiv/fp+jJZvCxQCWvcAAlr3AAJa9 + wACWvcAAlr3AAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////ABtVXwAbVV8AG1VfABdTXQorYWvyWXJ8/2Vu + dv9FTFT/zM7Q//Hy8//v8PH/8vLz//j4+P/29vf/9fX2//Hz9P/x8vP/3eDh/x0hKP8AAgn/AwcO/wMJ + EP8AAgn/CAwT/wcMEv8MERj/BwgL/7a4u//4+fr/8vT1/9fe3/+VoaX/4Ozt/9/t7v/f7u//5PD0/+jx + 9f/o7/T/6e/2/+Tu8//Z5uv/5e7x/3J8hP/p7/H/6e/w//X4+f++v8L/DxMX/wAAAv8BBQz/AAEI/wED + Cf8AAwr/AAAH/wAEDP8CBQz/mJug//v8/f/t7u//9PX2//f3+P/x8PH/9vX2//Lw8v/n5uj/Ymhu/1hi + aP9VZWr/XXJ2/zJKTv9wlZoqhq6yAISqrwCEqq8AhKqvAISqrwCEqq8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AFE5YABROWAAUTlgAEUxWCiVbZfJbdX//Zm93/05VXP/k5eb/7/Hx/+3u7//29/f/9fb3//P0 + 9f/29vf/7u/w//3+/v9+gof/AAAB/wMGDP8ECA//AQMK/wEEC/8BAwr/AQQL/wMID/8AAQb/QURK/+/w + 8v/t8PH/4ujp/5ikqP/Y4+X/4O7v/+Du8P/h7fH/5e7y/+fu8//k6/L/5/D2/9nl6v/g6u7/bXd///D2 + +P/q8PH/9vn6/09TWf8AAAX/BQkQ/wAABf8AAQj/AAUM/wAHDv8AAwr/AgUM/wACCf8tLzX/6+3u//Hy + 8//39/j/8vLz//X19v/59/j/8/Hy//////+KjZL/N0FI/1ViZ/9SZ2v/OFFV/2iOkjN9pakAeqGlAHqh + pQB6oaUAeqGlAHqhpQD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAWT1oAFk9aABZPWgAWUVsKGEpV9iY6 + RP8sND3/KS41/+Dh4//19vb/9fb2/+/v8f/z9PX/9PX2//j3+P/09fb///7//1NWWv8AAAL/AQUM/wAA + Bv8AAwn/AQUM/wAEC/8DBw//AAEH/wQJEf8FCA//3d7g//X3+P/T3N3/namt/9nl5v/f7u//4e/x/+Lu + 8v/l7vL/5+7z/+Tr8v/h6/H/3Oft/+Lt8P99iZD/6O/x/+jv8f/l6ev/Gx4k/wAABv8DBw7/AAIJ/wAD + Cv8ABQz/AAUM/wAEC/8AAAb/AwYN/xUaIv/Iy87/+fr5//X19v/39/n/9vX2//r3+P/y8fL//Pv7/6yv + s/8FDRT/AAoS/xInLf8TIif/cJKWLYeusgCDqq0Ag6qtAIOqrQCDqq0Ag6qtAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ACxmcAAsZnAALGZwAC9sdgkdSFLgAAAM/wAKE/8KDBP/3t7g//Pz9P/z9PT/8vP1//X2 + 9//5+vr/8vLz//Hy8//s7e//SEtQ/wAABP8DBw3/AQQL/wAAB/8DCA//AAQK/wIHDv8BBAv/AgYM/wUK + Ef/Q0dP/9ff4/8bNzv+bpqr/6fT1/9/u7//h7/H/4u7y/+Xu8v/m7vP/5ezz/+Dq7//e6u7/6fP3/5ei + qv/GztH/7vX2/9vf4f8REhf/AQcO/wEDCv8ABAv/AAUM/wAEC/8ABAv/AAMK/wACCf8DBw//GBsi/9HU + 1v/19vb/8fLy//n6+v/49/j/+vf4//Lw8f/19PX/y83R/w4TGv8AAAb/AA4U/wABBv+DpKcmnMbJAJfA + wwCXwMMAl8DDAJfAwwCXwMMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AYZ+mAGGfpgBhn6YAaKivAEJu + dlUAAAj/AgoS/wEFDP/Iysz/9PT1/+3u7//29vf/9PX2//j5+f/z9PX/8vP0//Hy9P9FR0v/AAAA/wUK + Ef8BBAv/AQUM/wADCv8BBAr/AAIJ/wMIDv8DCA//AgQL/9bX2P/z9vf/usHD/56oq//u+fr/3evt/+Hv + 8f/i7vL/5e7y/+bt8//m7fP/4ezx/9/r7//q9fn/rLe9/56nq//2+/3/4eXn/xsfJf8BBg3/AQMK/wAE + C/8AAwr/AAMK/wADCv8AAwr/AQgP/wAAA/81Nz3/9/j5/+vt7v/29/f/+Pj5//j3+P/69/j/8vDx//b1 + 9v/BxMj/NEBF/yo2PP8NHiP/AAwR/0NbXyNPbXEATWpuAE1qbgBNam4ATWpuAE1qbgD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wAWQEsAFkBLABZASwAXQk0ADTQ/UBosNv84P0j/LjQ8/6uus//5+fr/8vLz//Ly + 8//y8/P/9PT1//j4+f/y8/T//v///4GEiP8AAAL/BQgQ/wAECv8CBg3/AQUL/wADCv8AAgj/AgUM/wMH + Dv8aHiX/5+jp//D09P+jra//x9HS/+bw8f/f7e7/4e/x/+Lu8v/l7vL/5u7z/+bt8//c5+3/4u7y/+Tw + 9P/Hz9X/hY6V/+vw8v/y9fb/TFFX/wAAA/8DBQz/AAEI/wABCP8AAQj/AAEI/wEGDf8DCRD/AAAB/4+S + l//6+/v/7O7v//b3+P/19fb/9vX2//r3+P/z8vP//Pv7/6uusv9UX2X/XGxy/1Vqb/8sRUn/BxogIwQV + GgAEFhsABBYbAAQWGwAEFhsABBYbAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ABg/SQAYP0kAGD9JABc+ + SAAXQEpTQmFq/2h0e/9MVlv/fISG//n6+//z9fX/8/X2//T09f/y8vT/9vX3//Dv8P/09PX/6uvt/yUp + MP8AAAD/AwgP/wABCP8FChH/AQQK/wQKEf8AAgn/AAAA/4WKjv/v8/X/5evt/4iTmP/v+fj/5O7x/9/r + 7f/k7vP/5O7z/+Xu8//n7vT/4urx/9/q7v/k8PT/4ezw/+fw8/91gYf/1tzf//n9/v+orrD/AwgQ/wEE + C/8BAwr/AAAG/wECCf8CCA//AAMK/wAAB/88Qkn/8PHy/+vs7v/19fb/9PT1//T09f/y8vL/+Pf4//Du + 8P//////l5yi/01YYf9aaHD/XnF3/ys9RP8nQkcaRm1xAERqbgBEam4ARGpuAERqbgBEam4A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AtebnALXm5wC15ucAtuXmAKrb3R1CYGjHVmVs/1lmaP9LVlj/7vTz/+Ln + 5//v8vP/8PH0//Pz9v/18/b/9vT1//Xz9P//////q6+z/xkbIP8AAAD/BQkQ/wADCf8AAQf/AAAD/wID + B/9obXL/7O/w/+/29/+uub3/rLi8/+z19v/e5+v/6PH1/+Ts8//m7vT/5u72/+Xt9f/g6fH/5vH1/+Lu + 8v/j7fL/7vf6/52prf+5wsb/6vHx//H29v9rdHj/AAMF/wAAB/8DChD/AwkP/wAAAP8ABg7/VFhf/+rr + 7f/w8fP/8fHz//n5+v/t7u//+/n5//f19f/09PX/8/P2/+/w9f+AhY7/SlZh/15sdP9ebHT/GSYu/zJT + WKODwMMAfrm8AH65vAB+ubwAfrm8AH65vAD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCe2dwAntncAJ7Y + 3ACs4eQAp9faSQwjL/xVYWr/YGtw/z5KT/+vuLn/9fr7/+rt7v/z9vf/9PX2//b39//29/j/+Pb3/+rq + 7P/19vf/yMrN/2Nma/8tMDb/GyMr/zs+RP9aXF3/o6er//j4+f/x8/T/4Ofp/5Shpv/i7O7/4+3u/+Dq + 7f/p8fX/5Ozy/+bu9P/m7vb/5e31/+bu9f/i7vP/3+zw/+Tu8//g6e3/2uTl/295f//0+vv/4+vr//H4 + +P+UnaD/Jy00/wADC/8OExr/T1BT/6aprv/3+Pn/8vPz/+3u7v/09fb/8/P0//b29//7+fr/+Pb3//Hw + 8f/x8fT/2t3g/1dhaf9eanL/WGdu/0dXXf84SE3/OVpg7lGMjzRRio0AUYqNAFGKjQBRio0AUYqNAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AD13gAA9d4AAPXeBADt2gGA5YWvXIzRE/1FaZv9kb3X/TVpg/1tm + a//u9fX/7PLz//L19v/09fb/9/f4//f3+P/49/j/9PT1//Pz9P/29/j/9vf4/+Xm6P/S1Nb/5ujq//T2 + 9//6+/v/5ufo//P19f+ZpKn/ws3P/+v09f/h6+3/5e7y/+Do7v/l7fP/5u70/+bu9v/l7fX/4+zz/+Hu + 8v/j7vL/4uzw/+Pt8P/t9/j/jJWb/6+4u//+////3+bn//T8+//c3+D/xcbI/87R0v/v8fP/+fn6/+zu + 7//y8/T//f39/+3u8P/5+vr/9vb4//Pw8//w7vH/9vX3//X3+P+epan/RFBX/2Jvdf9gb3T/QFFW/z9R + Vf9Nb3L/AC0xgAAwNAAAMDQAADA0AAAwNAAAMDQA////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AABwqAAAc + KgAAGygAACIwsU5vff9caHv/PkNU/19qdP9gbHT/N0NK/5mhpf/4/v7/6u/u//H09f/19vf/9ff4//b2 + +P/4+fr/7e/w/+rs7f/19/j/9Pb3//X3+P/u7/D/6+3u/+Tn6P/4+fn/wcXI/5WfpP/p9PT/3unq/+r0 + 9f/k7fH/5e3y/+Ts8//m7vT/5u72/+Xt9f/h6/L/5fD1/+Pu8//e6e3/5/D0/+Ht7v/R2dz/b3h+/+vw + 8P/r8vL/7vX1/+rt7v/39/j//f3+//X19v/u7/D/8fLz//Lz9P/3+Pj/+vr7/+/w8f/v8PH/9PL2//Dv + 8//09ff/2Nvd/0hSWP9kcXP/Wmpt/1tsb/82SEz/Wmxw/z9iZv8LREh5DkZKAA5GSgAORkoADkZKAA5G + SgD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAYQVIAGEFSABlCUgAON0irTGR4/4eNo/9RVGn/WGFv/2Fs + d/9bZ3D/O0ZO/8rS0//5//3/6e7v/+zw8v/y9fj/9vX5//b2+P/x9fb/9Pb3//T3+P/z9vf/9Pf3//f5 + +v/s8PH/8/X2/9zf4f9+h43/2eHi/+Dq7P/k7u//5O7v/+Xu8v/h6e//5e3z/+bu9P/m7vb/5e31/+Ts + 8//m8vb/4Ozw/+Hs8P/k7vH/4u3u//D3+f+dpqr/fIaK//f8/P/r8vL/7/Lz//b19//w8fL/9vX3//n6 + +v/y8/T/9fb2//X29v/z9PX/9vf3//T19v/r7PD/+Pj6/+3w8v9ocHX/Tltd/2Jxcv9YaGv/Wmxw/yk6 + P/9cb3T/PF5j/Thwc2U5cHMAOXBzADlwcwA5cHMAOXBzAP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ALTe + 6wCz3usAwu76AEJmd6hIXHL/ubzV/3l8lP9ASlz/X2x6/1xodP9OWWH/PElO/8zU0//x+Pb/7PHy/+rt + 8P/w8vf/8vX3//f5+f/y9fb/8PP0//P29//u8fL/7vHy//X4+P/Y293/foWK/9LZ2v/m7vD/4evs/+Lt + 7v/j7e//4+3w/+Tt8v/m7vT/5u70/+bu9v/m7vb/5e71/+Dt8f/k7/P/4ezw/+Hr7v/n8fL/4ejr/+zz + 9P+Zo6b/j5ic//T6+v/r7/D/7/Dx//Hy8//19fb/9fX2//Dx8v/19vb/9fb2//P09f/4+Pn/7/Dx/+/w + 9f/3+fz/dHuA/0hTWf9lcnP/VWVo/2N0eP82R07/coOM/2Z2g/83VV/6TX+DTUl6fwBKen8ASnp/AEp6 + fwBKen8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AxPf6AMn4+gCt3uUlMlRo3HGBmv/Gy+X/rLPL/z5I + X/9aZXb/WGVy/2h2fP9IVVr/OkdK/6+3uP/z+Pj/9vv9/+rv8v/q7vH/8vf3/+3z8//r8vL/8Pb2//D1 + 9f/4/f3/v8fJ/1BZYP92gIX/6/Hx/9/n6f/n8fL/5vDx/9zo6f/j7PD/6PD1/+bu9P/m7vT/5u72/+bu + 9v/l7vX/4e7y/+Tv8//h7PD/3+ns/+Lt7v/k7O7/5u3u/9DY2f8+SVD/h5CV//H29v/29/j/8vLz//Ly + 9P/19fb/+Pj5//Lz8//v8PH/9fX2/+nq6///////4uXp/290fP9DTVX/anZ7/1pna/9gb3P/UmJp/0ZW + Yv+6x9X/j5uy/zZPYv9QfoJrhrW1AH6srQB+rK0AfqytAH6srQD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wDT//8A4P//AIe2u00pRFv/lKW//7/K5//Ezun/VmB5/0dSZv9kcH7/VGJq/2d1ef9baWr/Lz1A/213 + e/+yur3/6O3z//z////2+/v/8vj4/+719f/0+vr/4enp/4eRlv9MWF//XWpv/1lkav+mr7L/7/j5/9nl + 5v/l7/D/5O/w/97n6//l7fL/5e3z/+Xt8//l7fX/5e31/+Tt9P/h7fL/4e7y/+Tu8//j7PD/4ezt/+Do + 6//i6ur/doGG/15qb/8+SlH/cXd8/7/BxP/4+fr/9fb3/+7v8f/y8/T/8fHz//f4+f/19vb/8vP1/7W4 + uv9aYGj/RlFZ/2Vxd/9XZGj/YnF1/1Jiaf9OXmn/eYeZ/8HN4/+0vdv/VGaB/0Jpb7OMubkLi7i5AIq3 + uACKt7gAire4AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AFWIkwBZiZQIRHJ/zEdjef+0x+H/s8Xk/7bE + 4v+pscn/NkFY/1xpef9jcXr/WGhr/19ubv9icXH/S1hd/0FMVP9WXmn/fYaN/5+orP+stbj/nqir/3qF + if9WYWb/SVVc/2Fscv9fa3D/Y25z/2Ftc/+st7z/8Pn6/97o6f/f6uv/7fb5/+Hq7//j6/H/4+vx/+Ts + 9P/k7PT/4+z0/9/s8f/f7PD/5e/z/+Tu8f/g7O3/6O/y/4qUmf9ZZGr/X2px/2Vwdv9OV13/RElR/19k + av+gpKj/1tjZ/97f4f/b3d7/3d7g/8LEx/9qb3X/QUhQ/1ZfaP9hbHT/Xmpw/2Nxc/9RX2X/X252/z5N + Xv+st83/xs7s/7zC6/+GkrP/O1df/2SMkEZ7pakAeaKmAHmipgB5oqYA////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AHU9fABhJWQMNOkv6e5et/7bI5f+swOH/s8Pi/8XM5v9mcYj/Q1Fi/15udv9ca2//W2ts/11r + bP9ib3P/Xmlw/1dhbf9IU13/SVVc/0hVW/9NWWD/VGFo/1lmbP9jbnT/ZHF3/1lmbP9fbHL/VmRq/2h2 + fP/BzND/6PLz/93o6//i7PD/5Ozy/+Pr8f/j6/H/5Oz0/+Ts9P/k7PT/4+7z/9/r7v/g6u7/3efq/9rj + 5f+QmaD/XGdu/1pma/9eaW//ZG91/2Bpb/9kanL/VFtj/0NJUf9ES1L/T1Vc/0xTW/9JUFj/REpS/1th + af9gZ27/X2hw/11nbv9daW7/XGpv/2NyeP9EUl7/d4SX/8HK5f+Nlr3/srjo/6my1v9ab3v/LlJZ1m+c + oQRrmJ0Aa5idAGuYnQD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBViZcAUIOSVy1SZ/yYrcf/tMPk/7C/ + 5v+5yOz/tMPi/6271P84Rl3/VmJz/2Bqdf9jbHP/X2Zs/19lbP9ianH/WGJr/2Rudf9jb3X/aHR6/19q + cP9daW//WGRq/1lla/9gbHL/YGxy/19rcP9caG//X2pz/2p0fv++x87/6O71/9zl6//j6/H/5u7z/+Pu + 8//k7vT/5/H3/+Pr8P/o7/L/4enr/+fv8P/a4uT/iZOY/1diaf9ibXT/YGtx/11pb/9fa3H/XGdt/2Vw + df9jbXP/Ymxy/2Zvdv9ibHP/ZW91/2Fqcf9jbHP/Ymty/19nbv9iamz/Y2xu/1xobv9danP/XGx8/zJB + Wf+CkK7/cX6i/5ijzP+2v+z/usPp/3iJoP89WGb6PWRrbld+hQJSeIAAUniAAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ABU/UwAXQlavSmmB/6m61/+2w+b/vcnv/7PC6f+8z+7/xdXx/3+Lpf83P1P/YWp5/1hg + a/9lanH/XGJp/2lvdv9YYWj/X2pw/0RQV/8oMDb/QUxS/1pmbP9kcHb/YGxy/15pb/9eaW//Y21z/2Js + c/9aY2//WGFt/2dxfP++xs3/5+/0/9/n7v/f6e7/4+7y/+Ds8f/e6u//6vH1/+bt7f/q8PH/0dfZ/4CK + kP9aZWv/YWxy/1NfZf9daW//YWxy/1lkav9lcHb/QU1T/0lVW/9ZZWv/WGNp/1NeZP9HU1n/XWhv/19q + cP9fa3H/Ymxx/19oZ/9nb27/ZW91/1hlc/8/TmX/RVRz/3qJrv+ottv/wMz0/6+75/+7xu7/jJm2/1Bl + ef8wUVz5WoKIHGaNkwBki5EA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ARHeHABlFWa9ffJT/t8fk/7TB + 5P+9yvH/jJvF/2V2m/9hcZT/ZnOR/zdAV/9JUWT/YGh0/2Fpcf9ja3H/VV5l/2lyef8xPEP/BAwS/wAB + B/9OWV//Ym50/z5JT/89SE//Y291/1ZhZ/9aZmz/XWhu/2Bpc/9bZXD/ICk1/0RQWv+rtLv/4uvv/+Tt + 8f/h6u//3unu/+Dr8P/f6ev/6O/w/8bO0P9mcnf/X2px/0xYXv9MWF7/YGtx/1hkav9ZZWv/WGRq/0RP + Vf8FDRP/BQsS/1ZgZv9hbHL/Iy41/wMIDv8YICf/VF9l/11pb/9faG7/Zm5v/2Boav9eaHH/WGN1/0xZ + cf+yv9z/usjr/7TC6f+1wOv/t8Lt/7bB6f+rttT/X3OI/y5MWf9mkZVCeaWoAHahpQD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wBFfYs3NmR27nWQp/+6yOX/ucXq/7G+6P+1xO7/s8Dp/7XC5/+7xub/r7jS/z1G + W/9eZ3b/Xmhy/1djaf9baG3/SlVa/wAHDf8ABw3/Exwj/2Fuc/9baG7/MjtB/wEFCP9ATFL/X2pw/1pm + bP9VYWf/XWhx/zxFUP8AAAn/QUtX/1plcP+Jk5z/3ubr/+bu8f/Y4eb/5fD1/9nj5v+ao6j/XWlv/1xo + bv9fanD/FR4k/w8ZH/9aZmz/VWBm/2Ftcv8yPkT/AgMK/wQOFf8CChH/WmVr/2Nvdf9AS1L/BQ8W/wAB + B/8FChD/P0tR/2Zwdv9kbHL/XGRs/11mdf87SV3/oq3G/8LP7f+vvuH/uMTs/7K+6f+1v+v/tsDp/8DK + 6v9md5D/T2t6/ydNVM5GcncARXF2AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAzQlcyXnD/karC/7vH + 5v+5xOv/t8Tv/7nG9P+tueb/t8Hq/7nD5v/J0e7/i5Su/zVBVf9hbXr/WWVu/1dkaf8fKS3/AAUK/wAG + DP8xOUD/YGxy/1tnbf9FUFb/AAUK/wUMEv8/SlH/WmZs/11obv9eaHD/DRIb/wAEDf8+SFD/Xmly/1Vh + av9qdX3/rbW6/9/q7f+5xsr/ZnR6/1djaf9fa3H/ZG91/1plbP8SGB//AAUL/zM+Rf9bZm3/HyYs/wAD + CP8DCxH/AAMJ/yAoLv9aZ23/WWVr/1pla/8oMzr/AAcN/wYNFP8EChH/RlFY/1pkbv9dZ3P/R1Jk/3B7 + kf+8yeP/rr3d/7rH7P+wvOb/xM/4/7O96P+krNL/qLTY/4WTr/9OZnj/NVhg2GSUlg5ejJAA////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AHU5dUS5VaP+qv9f/vMbn/7W+5/+6xvL/rrvq/7zF8f+1ver/uMHm/7O8 + 3//L0/D/aXWM/0JPYv9hb3z/TVpk/wAID/8FEBf/AggP/0dQVv9daW//W2dt/1JeZP8HEhn/AAcM/wEI + EP83Q0n/VWFn/yQqMv8ABg7/AAEJ/zk+Rv9ga3P/Xmpy/1Ziav9caHD/WGRs/0NQV/9daXD/ZG91/1pm + bP9XY2n/U15k/woSGP8AAwj/BxIY/wkRF/8AAgj/Aw0T/wAHDf8CBgz/T1th/1djaf9XY2n/YW1y/1Fc + Yv8ECA//BA8V/wAHDf8+SE7/Ymt5/1Jcbv9XYnj/vMjf/7jG5P+6yOv/sr/n/8PN9/+dqdP/fIiy/2dy + n/+ptNz/oKvJ/0xhdP9La3P/IEhOdT5obQD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBTjZlZOF1w/6/A + 2v+5wuT/vMPs/7bB8P+oteb/srvp/7a+6f+0vef/rbfe/6m11v+Tn7v/KjZO/0tZbP9gb37/CRYj/wAD + C/8THCP/WmZs/19qcP9fa3H/X2tx/x8mLP8ABgz/AAUL/wACCP8PFx3/AAQM/wQLFP8AAgr/LDE5/19p + cf9dZ2//W2Zu/2Judv8sNT3/Ehoj/15pcf9bZmz/Xmpw/1pmbP9RXGL/BRAW/wALEf8ACA7/AAUL/wAJ + D/8ADBL/AAQK/x8qMf9daG7/XGhu/1pla/9cZmz/Ym1z/xEaIP8DCxL/BgwT/1BaYv9bZXf/KDJL/4WP + qv+ksc//qrja/6u54P+IlsH/bHmm/3qHtf+Yos7/vMTw/7zF8f+lsdH/Vmd9/0libf9SeX6Ijbq9A/// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////ADpwfsJUd4r/tcXe/77E5v+8wuz/qLXk/4ORw/90e6v/foi2/4OP + u/+Ajrn/eIet/4ybvP+4xuD/UF11/0VUaP9OW27/Iiw4/1FcYv9hbHL/VGBm/15pb/9ibXP/PUhO/wQG + DP8HERf/AQcN/wAFC/8ABg3/BQsS/wAEC/8lKjL/XmZu/19ob/9XY2n/YW1z/xUiKP8ACQ//UV1j/1ll + a/9caG7/Xmpw/0xXXf8CDRP/AQsR/wAJD/8ACQ//AAoQ/wAGDP8JExr/UFti/2NudP9bZ23/YWxy/19q + cP9eanD/O0ZM/wABBf85Q0r/Ul9n/0lSaf+fqML/i5i1/32Lrv+Bkbf/eYey/5in0v+0vuv/sbrn/8DF + 8v+8w/H/s7zq/7C63f9odY3/Vmt3/ztdY/0pUFUk////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AJVlo9mGC + lf+3xN3/w8fs/7/D8P+4w/X/tsLw/7vB6v+1v+j/sr3o/7bE7f+8y/P/vM3w/7LD4v+zwdz/S1dx/1Vg + eP9XYm//Y290/11obv9ibXP/XGdt/1RhZ/9eanD/DhQa/wMJDv8BChD/BA4V/wAFDf8CCA//AAUM/xkf + J/9bY2r/YGlv/11mbf9eaW//DhYc/wYKEf9KU1r/WmZs/1lmbP9ibnP/RE9V/wAHDf8BBw3/AAcN/wEM + Ev8ABw3/AAMJ/ys2PP9lcHb/WWRq/19qcP9daG7/WmZr/11pb/9WYGb/QEdL/0ROU/9ETFT/u8LY/7a/ + 3v+9x+j/uMXq/7fE7P+8yfP/tcPu/7fB7f+9xvL/tbzo/7vC8P+2ve7/ucDn/3R/mP9bbHn/NVBW/wUi + KCT///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAeT1/1a4qd/77I4//Aw+j/s7nm/6+77P+2w+//u8Pr/7rE + 7P+3w+3/s8Hr/66/6f+vwer/tMPn/8PR8P94hqT/LTVR/1Bba/9PW2D/VGFn/2Bscv9fanD/XGdt/1xp + b/82P0b/AAAD/wAJDv8EDBL/AQcO/wIHDv8BBw7/EBYe/1pgaP9dZGv/XmZu/0lVW/8IDhT/AwgP/zM8 + Q/9gbHL/VmNp/2Ftc/89Rkz/AAMJ/wEIDv8ABw3/AQoQ/wAFC/8YIin/Ul5k/15pb/9XY2n/X2pw/1tn + bf9fanD/YGtx/11pb/9jb3T/WmVr/0NNV/9xepX/yNHx/6663f+2wur/t8Tt/7G+6v+5xO//tsDr/7e/ + 7P++xPD/vMPx/7rA8//AxO3/goqj/1dmdP8/V13/WX+ENP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AB5O + XPRwjKD/v8bj/7/A5v++w/D/t8b1/7nI8v+/yOz/vcjt/73I8P+1w+3/qrrl/6Oz3P+Flb3/UV+G/257 + nP+3wN3/TFRl/yUtNP9bZmz/WWVr/2Nvdf9ZZmz/XWpw/1BdYv8MFh3/AAMK/wMJD/8DCA//AgcO/wMK + EP8IEBf/WF9m/1pka/9hbHL/OURL/wEKEf8ACA//Higv/2dxd/9YYWj/YWpx/zpARv8ABQv/Ag0T/wAK + D/8ABAr/AwwS/0RRVv9lcnf/VmJo/2NudP9aZGr/Y21z/1tmbP9daW//ZG91/1tobf9hbXP/WWZv/zQ+ + Wf9jbYz/nqnH/73I6/+4xO//vMf0/7fD8f+3wu7/usXw/73G8P/CyfX/vMX2/8PI8v+Mk67/VmJy/05l + bv9Kb3Sn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AHUtX9HOLof/Bxuf/wcHs/7O75/+PpNL/iJ/H/5Cg + wP+ElLb/gpC2/32Ltv9xgKz/aXWi/4GNuf+tuN3/tsPl/6ax0f9FSl7/X19p/2dudP9WY2n/V2pv/1Zs + cf9OY2b/Y3R3/zM+Q/8BAQf/CAoO/wMIC/8BCQ7/AgsQ/wAFCf9LW1//V2ht/19udf8oNjz/AAcO/wAJ + EP8WHCT/ZGpy/11iaf9iaG//KCsz/wAFDP8DDBH/AAkO/wIEB/8zQkb/WW5v/1tqbf9gaW3/Y2tw/2Jp + bv9ja3D/ZGxx/2Jqcf9ga3H/XGpw/1lrcf9abHP/XWhx/ygwQv9zfJT/bXmb/4yYv/+aptb/pLHi/627 + 6P+vveT/nq7Q/42dwv+Jmcf/usHq/5qgvv9fZ33/WGx4/yJDSNT///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAfTVj0cYme/8HG5//Gx/D/tr3q/4idyv95kbn/jp/C/5qoyv+Vo8n/narT/7bB6v+/yPH/u8bs/7fD + 5v+5xOL/Ym+O/0hPY/9xc3v/Ymhu/1xobv9fbnP/UGNo/15vdP9VY2j/Xmht/xgdIv8ABAj/AwgN/wEI + DP8BBgv/AQsP/z9JT/9cZ27/XWlw/yQvNf8ABQz/AAYO/xUaIv9cZW3/XGRr/2FqcP8aHyb/AAQL/wQK + Ef8AAwj/ICUq/1tlav9eam7/VWNn/19qbv9lbnP/ZW1y/2Jpb/9jaW//Y2px/2Brcf9da3H/Wmxx/1ts + c/9hbHL/QEhU/5eesf+ut9T/jJfA/4qXxv+Ajb//eYq2/3yMs/+Gl7j/j6DD/5am0v+5wen/oKXF/2Fq + gP9ecH7/FjU6z////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AB9PWfR2j6T/wMbn/76/6f+9xPH/scTv/7TH + 7/+5xuz/usfs/77L8v+8x/D/tsDn/77H7f+vu9z/aniX/4aTr/84R2H/Xmp4/2FpcP9cZGv/YGlv/2Vv + df9dZ27/YWtx/11mbP9eaG7/SFBW/wABBv8GCRH/Cg8V/wUJEP8DBw7/LzE5/2Zpcf9eYmr/ICUs/wAD + Cv8DBQ7/ExUe/1BeZf9bZ23/WGVq/woRGf8BBg3/CA0U/wkKEf9NTlb/aWhv/2dmbf9aYWj/WGht/11q + b/9eaG7/Ympw/2Vsc/9kanH/Ympx/19rcf9da3H/XGpx/19rcP9bZG//QEle/8XN6P+4w+f/usXv/7fD + 7/+2xO3/s8Lo/7bG5v+5yuv/uMjw/7/J8P+rsND/YmqB/1lsef8bPEHP////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AH1Bb9HSOo//Axuf/wsPt/8HH8/+yw+7/rsHr/7K95/+1wer/uMTt/7rG7v/AyvD/l6LF/1lm + hv+cqsH/Wmd9/0hYa/9YZ3L/X2xx/2RvdP9kaXD/ZWhw/2dpcf9laG//YWdu/1tmbf9dbnT/JTU8/wAB + Cf8ECBH/BQoR/wADCv8hIyz/aWlx/11dZv8bHCT/AQIK/wcIEP8OEBj/Slhd/1tpb/9GU1r/AgsS/wEM + E/8ABAr/MzY9/2xxef9jZW3/Zmdw/1xob/9bb3X/Wm5z/1lqb/9fanD/Y2ty/2Nqcf9ianH/Ympx/2Br + cf9ga3H/ZG91/11ncf9BTV//gIql/8rS8v+0vuX/ssDp/7jF7f+yweb/scHk/7HC6P+uwOz/usXr/7a7 + 2v9faH7/VGZ0/zpdYc7///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAdT1r1d5Oo/8DI6P+7vef/ucDt/7HA + 7P+ywu//sL3r/7S/7P/E0Pj/qrje/299of9mc5L/uMTZ/4+crf81RVb/Wmt4/1hrcv9cbHH/YGxy/2Vq + cf9oaHH/aWdx/2Bhav9dZW7/Wmpz/09ob/89WWD/BRgh/wAGD/8CDhf/AAcQ/xMYIP9eZG3/Wl9o/xQZ + IP8BBAz/CAsT/wgKEv9NVlz/X2xy/zVDSv8ACxH/AA0U/w0fJf9Xb3T/TGNq/ztTW/9JY2v/SWZt/0Vi + af9Vb3b/WW91/1lqcf9caHD/Ympy/2Rqcf9kanH/Y2px/2Fqcf9caG7/Xmpz/1VgcP8nMUf/eYOg/6ex + 1P+7x+3/vcrv/7PB5/+wvuT/scHq/6y+6v+tuOD/wMXj/2hvhv9VZXP/RGZq4////wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AC5ibOdsi5//vMXm/7/B6//AxfL/ucfz/77N+v+vuuv/pbHg/3qHs/9kcpn/kZ68/8XS + 6P+ir8H/NkRU/1lpdP9ZaXD/XHB0/1lrb/9caG//ZGty/2Zpcf9na3T/Ymp0/1xtdv9PaXP/OF1l7VeA + hoouVl/NABki6gwbIusIERn7Ag8Y/z9OV/9JVl3/Ehoh/wADCf8BCA3/BAsS/zg7Q/9cZGv/Iywx/wMK + D/8EDRL/CSUq7S1dYelWi49+Q210RTBWXEA9Ymk9NVti1TlcZf9ScHj/V251/1pqc/9daXH/YWlw/19l + bP9nbHP/YGhu/15pb/9ibHX/XWh1/zpEV/9jbYb/go2r/257nv+Jl77/rbvi/6W02/+zwur/tMby/7bB + 6P/DyOb/Zm2E/1xte/9Ka2//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO3F6yGOEmP++yur/wsXu/7K2 + 4v+ToM3/hZTF/4OQw/9zgLD/navU/7fF5P/AzOT/r7zO/0JQYP9SYGz/XGlw/2FudP9QX2T/W21w/15s + cv9fbHL/Wmdu/1Jhav9UanP/RGRt/yhQWMFolJoRZpCWADllbgABIisDgK6xB2SMkkg+V2C2AAgP/wAO + FP8BBgv/BQwQ/woYHf8eKC//NjM7/zg9RP81RUv/HDY6/ypNULUKLTMOGktQA2mkpwBSf4UAMFVbAD5i + aQA6Y2skKldg0zZbY/9ScHn/U2ly/1Zmbf9ZZWv/Y2xy/2Ztcv9iam//WmVr/1pmbf9gbHb/V2Jx/1Fa + bv/Cyd//s7zY/52py/93ha7/d4ez/3CCsv+ClcT/navS/8jM6v90fJL/V2V0/0hna/////8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wBJgImFWXqO/73J6v+9vun/rrLg/5ik0f+Yp9X/r73s/8HO+P+su+H/ucjk/73L + 3v9LWmz/UF1r/2Fvdv9cZ23/X2pw/2Bscf9ZZmr/Wmlu/1Zqb/9PaG3/TGxz/zpja/ZSgIhYKVNcC2qV + mwBjjZMAOGNsAAAbJACBsLIAj7y/AHqbnzYAAgb/AAwS/wEJDv8EEBX/BxEV/xEUGf8eGh//Gh0j/xQi + J/8IGR3/ETg7YwoxNgAgUVYAZqCjAFB8ggAwVVsAPmJpADhhaQA8bHYXJ1NdxzdcZf9TcXn/VWty/19u + dP9ga3H/X2ht/2Jqb/9nc3n/W2du/1llbv9aZHD/RExd/4SKnf/Fzeb/ucTj/7fE6f+6x/P/orPi/5it + 2v+ot93/xcrn/3yCmP9baXf/SWds/////wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AF2WnVJGaX7/ucbm/77B + 6/++we7/v8j0/7zJ9f+vvev/r73m/7nI6f+uvtn/W2p+/0BPYP9ZZ3L/X2tz/2JudP9faG//XmVr/11m + a/9cbHD/UGxv/z9laf8nWFzMaqGkPXuuswAlT1gAapWbAGONkwAxXGUAFzxDAIe2ugCay88AaouQSwAA + Bf8BEBb/AwoQ/wAIDf8ABgz/AQEI/wsID/8CBQr/AAMI/xMkJ+ZQhocuT4KCADtxdABjnaAAUHyCADBV + WwA+YmkAOGFpADdmbwBdjpcAOGNqXyFDS/9PaG//WGtw/1hlav9lb3P/YWlu/1xnbf9fbHL/XGhv/2Vw + ef9lbnr/Nz9S/56nvv/Fzu3/t8Ln/6y65f+zxPL/tcr1/7HA5f+9wuH/gIWc/1xqeP9MaW7/////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AIFFeVEBlev+0xOT/wcTu/7u96/+0vur/rrzp/7XE7v+2xOr/kqPC/yk3 + Uv89TWH/X258/1tqdP9bZ27/WGJp/11lbf9qbHL/aW5y/1hpbP80VVf/SXh7jUJ4fBFto6YAeKqwACVP + WABqlZsAYIqPAEx3gABsm6MAdKOqAHanrgBTdn1fAAAH/wAMFP8ECBD/BgkP/woMEf8ICA3/CAsP/wYO + E/8BDhL/BQwOuxUkJgAVIyQADxsdAF2PkgBXhIoAMFVbAD5iaQA4YWkAN2ZvAFyNlgA7Zm0AFDhAXj9d + Y/JOY2n/Z3Z6/15qbv9gaW3/W2dt/2Bscv9fanD/YWty/1dfaf9kbHz/O0Rd/6Cqyv+4wuf/vsv0/6e5 + 6/+rv+z/sL7j/8HH5f+MkKb/WWd1/09scP////8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wATSVhRN2N3/6G3 + 0/+4weX/wcbv/77F8f+ntdz/kqPC/3GCn/8kMkz/RE9k/2Rtff9cZHD/YWhx/1xka/9lbXP/W2ds/1pv + df9EYmn/RGlwyixTV2xUhIUARnt/AGyipQB4qrAAJU9YAGmTmgBch40AbJqiAGeWngBkk5oAapuiAEdt + dHUMFyD/ChYe/wACCv8GCQ//Cg0S/wQJDf8GChD/AQgO/wAUGv8BERa/AAoQAAALEAAACQwAGzQ5ADZg + ZwAzWV8AP2NqADhhaQA3Zm8AXI2WADplbAAXOkMAW3+FIy1OVbE3VVz/V251/19zef9gbXP/WGVo/2Rt + cf9haWv/bHJ4/15jbv9UWmv/IyxG/4KMq/+lsNP/u8ry/62/7f+4xe7/w8vq/4+Xrv9XZ3b/UGtx//// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AFqdqRs/dYbXepqw/7vL5/+gqcz/gYiz/5Ofv/+Hmab/R1dm/1Re + bP9maXf/ZGVw/2RlcP9maXL/X2pw/1Rmaf9PaGv/Kldf9iZhbXdflp4QOWFlAFGBggBFen4AbKKlAHiq + sAAkTlYAeqasAF+PlABomJ4AZ5ecAGeXnABrnKEAUX+Fbz1ZYv8/SlL/Iycv/wIHDf8DCQ7/AAgN/wQF + Df8AAAf/AAkS/wMkLb8DJy4AAyYuAAMmLwAAIioAABoiABw/RwA+YmkAOGFpADdmbwBcjZYAOmVsABY5 + QgBbfoQAK05WA0d3gEcqVF/YQGBq/1xwdf9da2z/YWxt/2RrbP9kamv/Y2dr/2tvd/9TWWf/RUxg/5CX + q/+Cjq7/n63c/7rH7f+5wuP/mqW7/1Jkc/9NZm3/////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AOXOAABxO + Xa1xj6P/vMni/7a72v/Hyuz/m6K+/09caf9TX2n/Zm97/1tib/9WYGv/WGZv/1xxeP9BYGf/MFhb+yxX + WaUhVV4wNXB8AFyRmAA4YGQAUYGCAEV6fgBsoqUAeKqwACJLVABZhowAQnN4AEJydwBDcngAQ3J4AENz + eAFBbnTFTWhx/19rc/9aXmf/LDQ7/xwkKP8NGB3/Fxoi/ykxOf83SlP/IkRMvx9CSQAgQkoAIEJKACBC + SgAgQkkAHUBHACpNVAA8ZW0AN2ZvAFyNlgA6ZWwAFjlCAFt+hAApS1MAXo6WADpocwM1XGhwNVJY/09m + af9ecnT/XWxu/2Bsbv9ibHD/WmNq/1pkbf9QWWn/foWW/7S91v9/i7L/fIiv/6GqyP+apLn/VmVz/05l + bf////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wA4ZXEAM2Ftg117jP/I1ej/ur/Y/3+EoP9ETGX/WmRx/15r + df9XY27/YHB6/1Zsdf9JZ3D/K1Vc8h1OVKQnWV04Ml5gACVXYAAzbnkAXJGYADhgZABRgYIARXp+AGyi + pQB5qrEAJFBYABpITwAgT1YAIE5VACBOVQAgTlUAH05UAyZSWe1JY2v/YGly/2BkbP9pbXT/TVhe/0NO + VP9aX2f/XWhv/1lwd/8oS1K/IkVMACNGTQAjRk0AI0ZNACNGTQAjRk0AI0VMADdfZwA3Zm8AXI2WADpl + bAAWOUIAW36EAClLUwBaipIAPWp1ADZcaAAmR089S250pTdXW/9VcHT/VWpu/1Nlav9Zam//WGZu/1xn + c/9BTFv/f4qf/8vT8f+ttNT/trvV/5Kbrv9WZHH/UGVv/////wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIKy + vAB4qLIdP2Nw+oyisP9hcYP/SFhs/1Vod/9ccXn/XXR7/0ZeZ/8+XmX/N11jzClXXpEqW2EdI1dcAChY + XAAyXV8AJVdgADNueQBckZgAOGBkAFGBggBFen4AbKKlAHWmrAAlUVoAIk5WACNPVwAjT1cAI09XACNP + VwAhT1YDJlJZ6k9qc/9jbXX/YWJr/19iaf9cY2n/ZW5z/1xlbP9XZGz/Umlx/xg9RL8QNT0AETY9ABE2 + PQARNj0AETY9ABE2PQAQNDsAGT9HADppcgBcjZYAOmVsABY5QgBbfoQAKUtTAFqKkgA9anUANFpmADVX + XwBbgYcANF5kVilRVtlFaGz/TWxw/09obf9ccnb/U2Vs/1lpcf88Slr/gYmm/8bN5f/Aw9f/kZeo/1xp + dv9SZm//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8APG95ADlsdgYvYGrsQGZx/z5fav9Nb3n/Rmx0/zFa + XvoZQETuPGhtsRY9REpWg4kSN2VsACxdYwAiVlsAKFhcADJdXwAlV2AAM255AFyRmAA4YGQAUYGCAEV6 + fgBto6YAa5yhABxKUQAjUlgAI1FYACNRWAAjUVgAI1FYACVUWgMYQknpMEdQ/0JNVv9eYGn/Z2hw/2Fn + bP9cZmv/WGRq/11rcv9Wb3b/FjpBvw0yOQAPMzoADzM6AA8zOgAPMzoADzM6AA8zOgANMTgAMF5mAF6Q + mQA6ZWwAFjlCAFt+hAApS1MAWoqSAD1qdQA0WmYAM1VdAFp/hQA4YWcAIk1THCFLUVk3X2XSQmNo+1Fv + cf9Vb3L/VWpv/1dqdP9FU2f/fYeb/8nQ3f+BjJn/U2Nu/1hud/3///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAeUlwAHVJcACdcZjUsYmqkGkpQogc1O6ILQESiTImJPwg0OAZCcnYAHENKAFN/hQA2ZGsALF1jACJW + WwAoWFwAMl1fACVXYAAzbnkAXJGYADhgZABRgYIARXp+AGmfogBqnqIAW46TAFyPlABcj5QAXI+UAFyP + lABcj5QAYZecAENobooABA3/BA4V/x4jK/9LTVX/Vlti/1VfZf9NWV//MT9G/xAjLP8AFR2/AAwUAAAN + FQAADRUAAA0VAAANFQAADRUAAA0VAAAIEAALKDEAWIqTADtmbQAWOUIAW36EAClLUwBaipIAPWp1ADRa + ZgAzVV0AWn+FADhhZwAjTVMAKlRaAC1WWwImTlKAJkxQ2Udqa/9BXmD/XXd8/1dsef9IWWj/YXOA/1Zp + dP9TaHL/T2ly2////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////ACNXYQAiVmAAI1ZgAFiVmwAhUlgAAy82AAo+ + QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AJVdgADNueQBckZgAOGBkAFGB + ggBHfIAAYpaZAHWkqABrm58AbJugAGyboABsm6AAbJugAGyboABypKgAT3F3RAAHD/8ACRD/AAAH/wgM + FP8PFRz/Ehsh/wUMEv8AAQj/AAIK/x4tNL5/oaUAeJidAHiYnQB4mJ0AeJidAHiYnQB4mJ0AeJmeAHSS + lwBnlp4AOWVsABY5QgBbfoQAKUtTAFqKkgA9anUANFpmADNVXQBaf4UAOGFnACNNUwApU1kAL1hdACZN + UgAiSU0cKlNVSmKKipYsUFPuPl5m/1Rye/9EYWn/PFlh/09udf87XWXG////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxd + YwAiVlsAKFhcADJdXwAlV2AAM255AFyRmAA4YGQAUoKDAEh+ggAFISgAABIZAAAUGwAAFBwAABQcAAAU + HAAAFBwAABQcAAAVHAAAFBtEABEY/wAOFP8DDBT/BQsT/wAFCv8AAwn/AAUM/wUMFP8ADRf/KDQ7w6rS + 1gCgx8sAoMfLAKDHywCgx8sAoMfLAKDHywCgx8sAoMjMAJvEyAAyXGMAFTlCAFt+hAApS1MAWoqSAD1q + dQA0WmYAM1VdAFp/hQA4YWcAI01TAClTWQAvWF0AJk1SACFITAA5YWMAc52cABxBRQYgR01aFjxDpB5E + S6RReX6iN15koXiepCD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQw + NwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fACVXYAAzbnkAXJGYADhg + ZABSgYIATYKGACRSWQAmWV8AJlhfACZYXwAmWF8AJlhfACZYXwAmWF8AJlheACpeZD0PLDL6AAoQ/wAK + Ef8ABgz/AAkO/wIKD/8CCA//AgcP/wEGEP8SHifzSnB4S0NmbgBEZm4ARGZuAERmbgBEZm4ARGZuAERm + bgBEZm4AR2lxADFUXAAfQ0sAW36DAClLUwBaipIAPWp1ADRaZgAzVV0AWn+FADhhZwAjTVMAKVNZAC9Y + XQAmTVIAIUhMADdfYQBwmpkAH0RIACJITwATOkEAGT5FAHqmqABLdHkAeJ2jAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZk + awAsXWMAIlZbAChYXAAyXV8AJVdgADNueQBckZgAN19kAFB/gQCDvb8Af7m6AH+5ugB/uboAf7m6AH+5 + ugB/uboAf7m6AH+5ugB/uboAicXHATBIS6UAAAX/Aw8V/wIKEP8BCQ7/AAQJ/wIHDf8GCxT/AwcQ/wEN + F/8XMjtmJUlSACNFTgAjRU4AI0VOACNFTgAjRU4AI0VOACNFTgAjRU4AJkhRADJXXwBafIIAKUtTAFqK + kgA9anUANFpmADNVXQBaf4UAOGFnACNNUwApU1kAL1hdACZNUgAhSEwAN19hAHCamQAfREgAIkhPABQ6 + QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AI1dhACJWYAAjV2EAVJCWACBR + VwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxdYwAiVlsAKFhcADJdXwAlV2AAM255AFyR + mAA4YGUATnx/ADxobwAwWmEAMVxiADFcYgAxXGIAMVxiADFcYgAxXGIAMVxiADFcYgA0X2YAGztDlgIJ + Df8ACA7/AAEF/wMNEP8FDxH/AgcM/wUMEv8EChH/AAEI/zFSWbVXhIkKUHuBAFB7gQBQe4EAUHuBAFF7 + gQBPen8AT3l/AFN9gwBRfIEATHV8AFuAhQApS1IAWoqSAD1qdQA0WmYAM1VdAFp/hQA4YWcAI01TAClT + WQAvWF0AJk1SACFITAA3X2EAcJqZAB9ESAAiSE8AFDpBABo/RgB2oaQASXJ3AHidowD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04PABBcHUAHENKAFN/ + hQA2ZGsALF1jACJWWwAoWFwAMl1fACVXYAAzbnkAXJGYADdfZABPeHoAc5uhAGuUmQBslJoAbJSaAGyU + mgBslJoAbJSaAGyUmgBslJoAbJSaAGyUmgBslpwbEyUq8RwyN/8MERX/ERca/wMFB/8FCQ3/BAoO/woV + Gv8gNjz/KUxU/yhNVBAsUVkAK1BYACtRWAArUFgAKk9XADZbYgA0W2EAH0VMACxSWAAoTlUARmxyACdI + UABaipIAPWp1ADRaZgAzVV0AWn+FADhhZwAjTVMAKVNZAC9YXQAmTVIAIUhMADdfYQBwmpkAH0RIACJI + TwAUOkEAGj9GAHahpABJcncAeJ2jAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ACNXYQAiVmAAI1dhAFSQ + lgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AJVdgADNu + eQBckZgAPGZrACZRVgA2YWcANGBlADRgZQA0YGUANGBlADRgZQA0YGUANGBlADRgZQA0YGUANWBlADFd + YgAiSE3iUW5y/0hXW/9FTlL/P0ZK/z1GTP8/Sk//UV9k/1dqcP9HYmr/QWNsf0tudgBMb3cATG93AExv + dwBHaXEAY4WMAGOJjgAjSVAASW90AEdtcwBEaW8AM1hfAF2MlAA8aXQANFpmADNVXQBaf4UAOGFnACNN + UwApU1kAL1hdACZNUgAhSEwAN19hAHCamQAfREgAIkhPABQ6QQAaP0YAdqGkAElydwB4naMA////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxD + SgBTf4UANmRrACxdYwAiVlsAKFhcADJdXwAlV2AAM255AFeLkwBWgoYAa5+hAGeanABnmpwAZ5qcAGea + nABnmpwAZ5qcAGeanABnmpwAZ5qcAGeanABnmpwAbaCiAE9+gVwyU1f/XnV4/11nbP9mbnP/WmZr/2Rw + df9jbnP/WGRr/1docP8sRE7eWHmBIHSYnwBwk5oAcpadAFp8hAAzUlgAYYeMACNJUABGbHIARGpwAERq + cABDaG4AV4CHAERveQA1W2cAM1VdAFp/hQA4YWcAI01TAClTWQAvWF0AJk1SACFITAA3X2EAcJqZAB9E + SAAiSE8AFDpBABo/RgB2oaQASXJ3AHidowD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNX + YQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fACVX + YAAzbnkAWY6WAGGUlABil5cAYpeXAGKXlwBil5cAYpeXAGKXlwBil5cAYpeXAGKXlwBil5cAYpeXAGKX + lwBkmpkAW4+PFyBIS9lMZmr/YG1y/11mbf9XZ2v/WGRq/1tiaf9laXH/ZW11/zNASv9AWWGUcpadAGuO + lQBsjpUAV3mBADJQVgBhh4wAI0lQAEZscgBEanAARGpwAERqcABCZ20AS3J3ACtQWgA0Vl4AWn+FADhh + ZwAjTVMAKVNZAC9YXQAmTVIAIUhMADdfYQBwmpkAH0RIACJITwAUOkEAGj9GAHahpABJcncAeJ2jAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFw + dQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AJVdgADNueQBbkJgAeK2sAG6hoABvoqEAb6KhAG+i + oQBvoqEAb6KhAG+ioQBvoqEAb6KhAG+ioQBvoqEAb6KhAG6ioQB2qqkASHh5ZT5cYfpeb3X/VGNo/1dq + bv9UYGf/bXJ5/1ZXYP9dXWf/GiAq/wUJEv4cPENPEjg7AAQVGQAsSlEAOlhfAGGHjAAjSVAARmxyAERq + cABEanAARGpwAERqcABEam8APmNqAEpudABaf4QAN2BmACNNUwApU1kAL1hdACZNUgAhSEwAN19hAHCa + mQAfREgAIkhPABQ6QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AI1dhACJW + YAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxdYwAiVlsAKFhcADJd + XwAlV2AAM2x5AF6UnACczc0Al8fGAJfHxgCXx8YAl8fGAJfHxgCXx8YAl8fGAJfHxgCXx8YAl8fGAJfH + xgCXx8YAl8fGAJjIxwCYyccAHUBE3ktjaf9Uam//VGlu/1Vkav9AR07/MzI8/x4cJ/8GCBH/AwoR/wwg + JvgOMzdRAA8TACpITwA6WF8AYYeMACNJUABGbHIARGpwAERqcABEanAARGpwAERqcABDaW8ATXN5AExy + eAA+Z20AIUtRAClTWQAvWF0AJk1SACFITAA3X2EAcJqZAB9ESAAiSE8AFDpBABo/RgB2oaQASXJ3AHid + owD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04 + PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fACVXYAA1b3sASXuDAHGgoQBtnJ0AbZydAG2c + nQBtnJ0AbZydAG2cnQBtnJ0AbZydAG2cnQBtnJ0AbZydAG2cnQBtnJ0AbpyeAG2dngAcQERMESMq/yU+ + Rf8THyT/Q1FX/xMaIP8HCBD/AQIJ/wYLEv8DChD/AQ4S/wAXG/8AFBhPK0lQADpYXwBhh4wAI0lQAEZs + cgBEanAARGpwAERqcABEanAARGpwAERqcABDaW8ARGpwADxhaAAqVVsAJU9VAC9YXQAmTVIAIUhMADdf + YQBwmpkAH0RIACJITwAUOkEAGj9GAHahpABJcncAeJ2jAP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ACNX + YQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChY + XAAyXV8AJVdgADZzfwAdSVAAIk1SACFNUgAhTVIAIU1SACFNUgAhTVIAIU1SACFNUgAhTVIAIU1SACFN + UgAhTVIAIU1SACFNUgAhTVIAIU1SAC1cYRMKKC+yAAcO/wAMEv8QGSD/DxUc/wIID/8GDBP/BAoR/wcO + Ff8EDhL/AQgN/wAOEvgnRUybPFxiEWaNkgAiSE8ARmxyAERqcABEanAARGpwAERqcABEanAARGpwAERq + cABEanAARWtxAENqcAA/aG4AK1RaACVMUQAhSEwAN19hAHCamQAfREgAIkhPABQ6QQAaP0YAdqGkAEly + dwB4naMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCN + jQANODwAQXB1ABxDSgBTf4UANmRrACxdYwAiVlsAKFhcADJdXwAjVV4AQ36JAEt4fgBPfH8ATnt/AE57 + fwBOe38ATnt/AE57fwBOe38ATnt/AE57fwBOe38ATnt/AE57fwBOe38ATnt/AE57fwBOe38AUH6CAD5p + bgAgP0W1AwoS/wEKEf8EDxb/AQcO/wIKEP8DChD/AwoP/xAUGP8MEhf/BwwR/wQMEv8dMznSTW90VihP + VgBGbHIARGpwAERqcABEanAARGpwAERqcABEanAARGpwAERqcABEanAARGpwAElvdQAxWF4AKlJWAB5F + SQA3X2EAcJqZAB9ESAAiSE8AFDpBABo/RgB2oaQASXJ3AHidowD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wAjV2EAIlZgACNXYQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJW + WwAoWFwAMl1fAB9RWwBblZ4AmsjJAJTDxQCUw8UAlMPFAJTDxQCUw8UAlMPFAJTDxQCUw8UAlMPFAJTD + xQCUw8UAlMPFAJTDxQCUw8UAlMPFAJTDxQCTw8QAmMnKAJG+wQkqNjy1AQgN/wAKD/8DDxT/BAoR/wIH + Df8ECQ7/DQ8V/wkID/8MCxL/BQwT/wAJE/8DEBj/KEpQlEt0ewRIcXcASHF3AEhxdwBIcXcASHF3AEhx + dwBIcXcASHF3AEhxdwBIcXcASHB2AEt0egBEbXIAN2FmADVfYQBwmpkAH0RIACJITwAUOkEAGj9GAHah + pABJcncAeJ2jAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+ + QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AH1FbAFmTnACSwMIAjby+AI28 + vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28 + vgCNvb0AlMDDAHifohEKKSy5AQsP/wARFv8DCxL/BgcP/wUFDf8IBg//CAYP/woHEP8JDBf/AAcS/wAL + Ff8OHST/L0hNYyxFSwAsRUsALEVLACxFSwAsRUsALEVLACxFSwAsRUsALEVLACxFSwAsRUsALEVLAC1G + TAArQ0cALUpNAHGcmgAfREgAIkhPABQ6QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxd + YwAiVlsAKFhcADJdXwAfUVsAWZOcAJLAwgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28 + vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI29vgCRvL8Ad52gAA44OwgoTlGjCBAU+QgX + Hf8GERr/AAcP/wEKEv8FCxT/AwcP/wYJEv8JERz/AQ0X/wAWH/8ACQ5rAAkPAAAJDwAACQ8AAAkPAAAJ + DwAACQ8AAAkPAAAJDwAACQ8AAAkPAAAJDwAACQ8AAAkPAAEECAAkNDkAcZybAB9ESAAiSE8AFDpBABo/ + RgB2oaQASXJ3AHidowD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQw + NwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fAB9RWwBZk5wAksDCAI28 + vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28 + vgCNvL4Ajb2+AJG8vwB2nJ8ADDM3ADRhZAAeLzMuHC4yqwcYHv8AChD/AAEH/wADCf8ACQ//AAoR/wYP + GP8BDhX/MExSomiVmQ1kj5MAZI+TAGSPkwBkj5MAZI+TAGSPkwBkj5MAZI+TAGSPkwBkj5MAZI+TAGSP + kwBkj5MAZI+TAGeUmABZhIYAIkZKACJITwAUOkEAGj9GAHahpABJcncAeJ2jAP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZk + awAsXWMAIlZbAChYXAAyXV8AH1FbAFmTnACSwMIAjby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28 + vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvb4Akby/AHacnwAMMzcAMV1gAB4x + NAAeMDUAEC80ST9eYVNSb3B3Lk9S1h1ARPQzU1jaPlBWZwEVHFNqlpsBa5ibAGmVmQBplZkAaZWZAGmV + mQBplZkAaZWZAGmVmQBplZkAaZWZAGmVmQBplZkAaZWZAGmVmQBplpoAa5icAFiDhQAiRkoAIkhPABQ6 + QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////+A//////AP////////////gD/////gB////////////wAf////wAP/// + ////////8AD////4AD///////////+AAP///4AA////////////gAB///8AAP///////////4AAf///g + AD////////////AAD///wAA////////////wAAP//gAAP///////////+AAH//8AAH///////////wAA + Af/+AAD///////////wAAAH//gAA9//////////+AAABf/AAAPz//////////gAAAH/+AACT//////// + //wAAAD/kAAAAH/////////8AAAAPAAAAAA//////////gAAAAAAAAAAP/////////4AAAAAAAAAAD// + ///////+AAAAAAAAAAA//////////gAAAAAAAAAAf/////////+AAAAAAAAAAP/////////5AAAAAAAA + AAH/////////+AAAAAAAAAAAP/////////4AAAAAAAAAAD/////////8AAAAAAAAAAB//////////AAA + AAAAAAAAP/////////gAAAAAAAAAAD/////////4AAAAAAAAAAA//////////AAAAAAAAAAAP/////// + //wAAAAAAAAAAD/////////8AAAAAAAAAAAf/////////AAAAAAAAAAAH/////////wAAAAAAAAAAB// + ///////8AAAAAAAAAAA//////////AAAAAAAAAAAP/////////wAAAAAAAAAAD/////////8AAAAAAAA + AAA//////////AAAAAAAAAAAP/////////4AAAAAAAAAAD/////////8AAAAAAAAAAA//////////AAA + AAAAAAAAP/////////wAAAAAAAAAAD/////////8AAAAAAAAAAA//////////AAAAAAAAAAAP/////// + //wAAAAAAAAAAD/////////+AAAAAAAAAAA//////////gAAAAAAAAAAP/////////4AAAAAAAAAAD// + ///////+AAAAAAAAAAA//////////gAAAAAAAAAAH/////////wAAAAAAAAAAB/////////8AAAAAAAA + AAAf/////////AAAAAAAAAAAH/////////wAAAAAAAAAAB/////////4AAAAAAAAAAAf////////+AAA + AAAAAAAAD/////////AAAAAAAAAAAA/////////wAAAAAAAAAAAH////////8AAAAAAAAAAAA/////// + //AAAAAAAAAAAAP////////wAAAAAAAAAAAD////////4AAAAAAAAAAAA////////+AAAAAAAAAAAAH/ + ///////gAAAAAAAAAAAB////////4AAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////gAAAAAAAA + AAAA////////4AAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////gAAAAAAAAAAAA////////4AAA + AAAAAAAAAP///////+AAAAAAAAAAAAD////////gAAAAAAAAAAAA////////4AAAAAAAAAAAAP////// + /+AAAAAAAAAAAAD////////gAAADAAB4AAAA////////4AAAB+AB/AAAAP///////+AAAB/gAf8AAAD/ + ///////gAAA/4AP/gAAA////////4AAA/+AD/8AAAP///////+AAAf/gA//gAAD////////wAAf/wAP/ + +AAA////////8AAf/8AD//4AAP////////AAf//AA///gAD////////wAf//wAP//8AA////////+A// + /+AD///wAP/////////////gA////AD/////////////4AP///+A/////////////+AB//////////// + ///////gAf//////////////////8AD///////////////////AA///////////////////4AP////// + ////////////+AB///////////////////gAf//////////////////8AD///////////////////gAf + //////////////////4AD//////////////////+AAP//////////////////4AB//////////////// + //+AAH//////////////////wAB//////////////////+AAf//////////////////4AH////////// + /////////gD///////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/Crypter/obj/Debug/Compiler.FormCompiler.resources b/Crypter/obj/Debug/Compiler.FormCompiler.resources new file mode 100644 index 0000000..7e465a1 Binary files /dev/null and b/Crypter/obj/Debug/Compiler.FormCompiler.resources differ diff --git a/Crypter/obj/Debug/Crypter.ilmerge b/Crypter/obj/Debug/Crypter.ilmerge index c1df969..1f84e87 100644 --- a/Crypter/obj/Debug/Crypter.ilmerge +++ b/Crypter/obj/Debug/Crypter.ilmerge @@ -1,2 +1,3 @@ Crypter.exe DotNetZip.dll +FastColoredTextBox.dll diff --git a/Crypter/packages.config b/Crypter/packages.config index d59f9d2..13782c2 100644 --- a/Crypter/packages.config +++ b/Crypter/packages.config @@ -1,6 +1,7 @@  + \ No newline at end of file diff --git a/packages/FCTB.2.16.24/.signature.p7s b/packages/FCTB.2.16.24/.signature.p7s new file mode 100644 index 0000000..4c8b749 Binary files /dev/null and b/packages/FCTB.2.16.24/.signature.p7s differ diff --git a/packages/FCTB.2.16.24/FCTB.2.16.24.nupkg b/packages/FCTB.2.16.24/FCTB.2.16.24.nupkg new file mode 100644 index 0000000..56d508d Binary files /dev/null and b/packages/FCTB.2.16.24/FCTB.2.16.24.nupkg differ diff --git a/packages/FCTB.2.16.24/lib/FastColoredTextBox.dll b/packages/FCTB.2.16.24/lib/FastColoredTextBox.dll new file mode 100644 index 0000000..1f426e4 Binary files /dev/null and b/packages/FCTB.2.16.24/lib/FastColoredTextBox.dll differ diff --git a/packages/FCTB.2.16.24/lib/FastColoredTextBox.xml b/packages/FCTB.2.16.24/lib/FastColoredTextBox.xml new file mode 100644 index 0000000..55d36af --- /dev/null +++ b/packages/FCTB.2.16.24/lib/FastColoredTextBox.xml @@ -0,0 +1,3243 @@ + + + + FastColoredTextBox + + + + + Item of autocomplete menu + + + + + Returns text for inserting into Textbox + + + + + Compares fragment text with this item + + + + + Returns text for display into popup menu + + + + + This method is called after item inserted into text + + + + + Title for tooltip. + + Return null for disable tooltip for this item + + + + Tooltip text. + + For display tooltip text, ToolTipTitle must be not null + + + + Menu text. This text is displayed in the drop-down menu. + + + + + Fore color of text of item + + + + + Back color of item + + + + + Item do not appears + + + + + Item appears + + + + + Item appears and will selected + + + + + Autocomplete item for code snippets + + Snippet can contain special char ^ for caret position. + + + + Compares fragment text with this item + + + + + This autocomplete item appears after dot + + + + + This Item does not check correspondence to current text fragment. + SuggestItem is intended for dynamic menus. + + + + + Popup menu for autocomplete + + + + + Regex pattern for serach fragment around caret + + + + + Minimum fragment length for popup + + + + + User selects item + + + + + It fires after item inserting + + + + + Occurs when popup menu is opening + + + + + Allow TAB for select menu item + + + + + Interval of menu appear (ms) + + + + + Sets the max tooltip window size + + + + + Tooltip will perm show and duration will be ignored + + + + + Back color of selected item + + + + + Border color of hovered item + + + + + Shows popup menu immediately + + If True - MinFragmentLength will be ignored + + + + Minimal size of menu + + + + + Image list of menu + + + + + Tooltip duration (ms) + + + + + Tooltip + + + + + Base class for bookmark collection + + + + + Collection of bookmarks + + + + + Removes bookmark by line index + + + + + Returns Bookmark by index. + + + + + Bookmark of FastColoredTextbox + + + + + Name of bookmark + + + + + Line index + + + + + Color of bookmark sign + + + + + Scroll textbox to the bookmark + + + + + Char and style + + + + + Unicode character + + + + + Style bit mask + + Bit 1 in position n means that this char will rendering by FastColoredTextBox.Styles[n] + + + + Shows document map of FCTB + + + + + Scale + + + + + Scrollbar visibility + + + + + Exports colored text as HTML + + At this time only TextStyle renderer is supported. Other styles is not exported. + + + + Use nbsp; instead space + + + + + Use nbsp; instead space in beginning of line + + + + + Use original font + + + + + Use style tag instead style attribute + + + + + Use 'br' tag instead of '\n' + + + + + Includes line numbers + + + + + Exports colored text as RTF + + At this time only TextStyle renderer is supported. Other styles are not exported. + + + + Includes line numbers + + + + + Use original font + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Collection of Hints. + This is temporary buffer for currently displayed hints. + + + + + Clears all displayed hints + + + + + Add and shows the hint + + + + + + Is collection contains the hint? + + + + + Count of hints + + + + + Hint of FastColoredTextbox + + + + + Text of simple hint + + + + + Linked range + + + + + Backcolor + + + + + Second backcolor + + + + + Border color + + + + + Fore color + + + + + Text alignment + + + + + Font + + + + + Occurs when user click on simple hint + + + + + Inner control + + + + + Docking (allows None and Fill only) + + + + + Width of hint (if Dock is None) + + + + + Height of hint + + + + + Host panel + + + + + Tag + + + + + Cursor + + + + + Inlining. If True then hint will moves apart text. + + + + + Scroll textbox to the hint + + + + + Creates Hint + + Linked range + Text for simple hint + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Creates Hint + + Linked range + Text for simple hint + + + + Creates Hint + + Linked range + Inner control + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Creates Hint + + Linked range + Inner control + + + + Returns edited hotkey map + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + This class records, stores and executes the macros. + + + + + Allows to user to record macros + + + + + Returns current recording state. Set to True/False to start/stop recording programmatically. + + + + + FCTB + + + + + Executes recorded macro + + + + + + Adds the char to current macro + + + + + Adds keyboard key to current macro + + + + + Clears last recorded macro + + + + + Returns True if last macro is empty + + + + + Macros as string. + + + + + Dictionary of shortcuts for FCTB + + + + + Actions for shortcuts + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Highlights syntax for given language + + + + + Highlights syntax for given XML description file + + + + + Uses the given to parse a XML description and adds it as syntax descriptor. + The syntax descriptor is used for highlighting when + + Language property of FCTB is set to + DescriptionFile property of FCTB has the same value as the method parameter + + + Name of the description file + XmlDocument to parse + + + + Adds the given as resilient style. A resilient style is additionally available when highlighting is + based on a syntax descriptor that has been derived from a XML description file. In the run of the highlighting routine + the styles used by the FCTB are always dropped and replaced with the (initial) ones from the syntax descriptor. Resilient styles are + added afterwards and can be used anyway. + + Style to add + + + + Highlights C# code + + + + + + Highlights VB code + + + + + + Highlights HTML code + + + + + + Highlights XML code + + + + + + Highlights SQL code + + + + + + Highlights PHP code + + + + + + Highlights JavaScript code + + + + + + Highlights Lua code + + + + + + String style + + + + + Comment style + + + + + Number style + + + + + C# attribute style + + + + + Class name style + + + + + Keyword style + + + + + Style of tags in comments of C# + + + + + HTML attribute value style + + + + + HTML tag brackets style + + + + + HTML tag name style + + + + + HTML Entity style + + + + + XML attribute style + + + + + XML attribute value style + + + + + XML tag brackets style + + + + + XML tag name style + + + + + XML Entity style + + + + + XML CData style + + + + + Variable style + + + + + Specific PHP keyword style + + + + + Specific PHP keyword style + + + + + SQL Statements style + + + + + SQL Functions style + + + + + SQL Types style + + + + + Language + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Fast colored textbox + + + + + Constructor + + + + + AutoComplete brackets + + + + + Colors of some service visual markers + + + + + Contains UniqueId of start lines of folded blocks + + This dictionary remembers folding state of blocks. + It is needed to restore child folding after user collapsed/expanded top-level folding block. + + + + Strategy of search of brackets to highlighting + + + + + Automatically shifts secondary wordwrap lines on the shift amount of the first line + + + + + Indent of secondary wordwrap lines (in chars) + + + + + MacrosManager records, stores and executes the macroses + + + + + Allows drag and drop + + + + + Collection of Hints. + This is temporary buffer for currently displayed hints. + + You can asynchronously add, remove and clear hints. Appropriate hints will be shown or hidden from the screen. + + + + Delay (ms) of ToolTip + + + + + ToolTip component + + + + + Color of bookmarks + + + + + Bookmarks + + + + + Enables virtual spaces + + + + + Strategy of search of end of folding block + + + + + Indicates if tab characters are accepted as input + + + + + Indicates if return characters are accepted as input + + + + + Shows or hides the caret + + + + + Enables caret blinking + + + + + Draw caret when the control is not focused + + + + + Color of border of text area + + + + + Type of border of text area + + + + + Background color for current line + + + + + Background color for highlighting of changed lines + + + + + Fore color (default style color) + + + + + Height of char in pixels (includes LineInterval) + + + + + Interval between lines (in pixels) + + + + + Width of char in pixels + + + + + Spaces count for tab + + + + + Text was changed + + + + + Text version + + This counter is incremented each time changes the text + + + + Read only + + + + + Shows line numbers. + + + + + Shows vertical lines between folding start line and folding end line. + + + + + Rectangle where located text + + + + + Color of line numbers. + + + + + Start value of first line number. + + + + + Background color of indent area + + + + + Background color of padding area + + + + + Color of disabled component + + + + + Color of caret + + + + + Wide caret + + + + + Color of service lines (folding lines, borders of blocks etc.) + + + + + Padings of text area + + + + + --Do not use this property-- + + + + + Color of folding area indicator + + + + + Enables folding indicator (left vertical line between folding bounds) + + + + + Left distance to text beginning + + + + + Left padding in pixels + + + + + This property draws vertical line after defined char position. + Set to 0 for disable drawing of vertical line. + + + + + Styles + + + + + Hotkeys. Do not use this property in your code, use HotkeysMapping property. + + + + + Hotkeys mapping + + + + + Default text style + This style is using when no one other TextStyle is not defined in Char.style + + + + + Style for rendering Selection area + + + + + Style for folded block rendering + + + + + Style for brackets highlighting + + + + + Style for alternative brackets highlighting + + + + + Opening bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Closing bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Alternative opening bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Alternative closing bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Comment line prefix. + + + + + This property specifies which part of the text will be highlighted as you type (by built-in highlighter). + + When a user enters text, a component refreshes highlighting (because the text was changed). + This property specifies exactly which section of the text will be re-highlighted. + This can be useful to highlight multi-line comments, for example. + + + + Is keyboard in replace mode (wide caret) ? + + + + + Allows text rendering several styles same time. + + + + + Allows to record macros. + + + + + Allows AutoIndent. Inserts spaces before new line. + + + + + Does autoindenting in existing lines. It works only if AutoIndent is True. + + + + + Minimal delay(ms) for delayed events (except TextChangedDelayed). + + + + + Minimal delay(ms) for TextChangedDelayed event. + + + + + Language for highlighting by built-in highlighter. + + + + + Syntax Highlighter + + + + + XML file with description of syntax highlighting. + This property works only with Language == Language.Custom. + + + + + Position of left highlighted bracket. + + + + + Position of right highlighted bracket. + + + + + Position of left highlighted alternative bracket. + + + + + Position of right highlighted alternative bracket. + + + + + Start line index of current highlighted folding area. Return -1 if start of area is not found. + + + + + End line index of current highlighted folding area. Return -1 if end of area is not found. + + + + + TextSource + + + + + The source of the text. + Allows to get text from other FastColoredTextBox. + + + + + Returns current visible range of text + + + + + Current selection range + + + + + Background color. + It is used if BackBrush is null. + + + + + Background brush. + If Null then BackColor is used. + + + + + Multiline + + + + + WordWrap. + + + + + WordWrap mode. + + + + + If true then line breaks included into the selection will be selected too. + Then line breaks will be shown as selected blank character. + + + + + Do not change this property + + + + + Count of lines + + + + + Gets or sets char and styleId for given place + This property does not fire OnTextChanged event + + + + + Gets Line + + + + + Text of control + + + + + Text lines + + + + + Gets colored text as HTML + + For more flexibility you can use ExportToHTML class also + + + + Gets colored text as RTF + + For more flexibility you can use ExportToRTF class also + + + + Text of current selection + + + + + Start position of selection + + + + + Length of selected text + + + + + Font + + Use only monospaced font + + + + Font + + Use only monospaced font + + + + Indicates that IME is allowed (for CJK language entering) + + + + + Is undo enabled? + + + + + Is redo enabled? + + + + + Range of all text + + + + + Color of selected area + + + + + Reserved space for line number characters. + If smaller than needed (e. g. line count >= 10 and this value set to 1) this value will have no impact. + If you want to reserve space, e. g. for line numbers >= 10 or >= 100 than you can set this value to 2 or 3 or higher. + + + + + Occurs when mouse is moving over text and tooltip is needed + + + + + Removes all hints + + + + + Add and shows the hint + + Linked range + Inner control + Scrolls textbox to the hint + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Add and shows the hint + + Linked range + Inner control + + + + Add and shows simple text hint + + Linked range + Text of simple hint + Scrolls textbox to the hint + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Add and shows simple text hint + + Linked range + Text of simple hint + + + + Occurs when user click on the hint + + + + + + Occurs when VisibleRange is changed + + + + + Invalidates the entire surface of the control and causes the control to be redrawn. + This method is thread safe and does not require Invoke. + + + + + HintClick event. + It occurs if user click on the hint. + + + + + TextChanged event. + It occurs after insert, delete, clear, undo and redo operations. + + + + + Fake event for correct data binding + + + + + Occurs when user paste text from clipboard + + + + + TextChanging event. + It occurs before insert, delete, clear, undo and redo operations. + + + + + SelectionChanged event. + It occurs after changing of selection. + + + + + VisibleRangeChanged event. + It occurs after changing of visible range. + + + + + TextChangedDelayed event. + It occurs after insert, delete, clear, undo and redo operations. + This event occurs with a delay relative to TextChanged, and fires only once. + + + + + SelectionChangedDelayed event. + It occurs after changing of selection. + This event occurs with a delay relative to SelectionChanged, and fires only once. + + + + + VisibleRangeChangedDelayed event. + It occurs after changing of visible range. + This event occurs with a delay relative to VisibleRangeChanged, and fires only once. + + + + + It occurs when user click on VisualMarker. + + + + + It occurs when visible char is enetering (alphabetic, digit, punctuation, DEL, BACKSPACE) + + Set Handle to True for cancel key + + + + It occurs when visible char is enetered (alphabetic, digit, punctuation, DEL, BACKSPACE) + + + + + It occurs when calculates AutoIndent for new line + + + + + It occurs when line background is painting + + + + + Occurs when line was inserted/added + + + + + Occurs when line was removed + + + + + Occurs when current highlighted folding area is changed. + Current folding area see in StartFoldingLine and EndFoldingLine. + + + + + + Occurs when undo/redo stack is changed + + + + + + Occurs when component was zoomed + + + + + Occurs when user pressed key, that specified as CustomAction + + + + + Occurs when scroolbars are updated + + + + + Occurs when custom wordwrap is needed + + + + + Returns list of styles of given place + + + + + Call this method if the recalc of the position of lines is needed. + + + + + Call this method if the recalc of the position of lines is needed. + + + + + Call this method if the recalc of the position of lines is needed. + + + + + Navigates forward (by Line.LastVisit property) + + + + + Navigates backward (by Line.LastVisit property) + + + + + Navigates to defined line, without Line.LastVisit reseting + + + + + Add new style + + Layer index of this style + + + + Checks if the styles buffer has enough space to add one + more element. If not, an exception is thrown. Otherwise, + the index of a free slot is returned. + + Index of free styles buffer slot + If maximum count of styles is exceeded + + + + Shows find dialog + + + + + Shows find dialog + + + + + Shows replace dialog + + + + + Shows replace dialog + + + + + Gets length of given line + + Line index + Length of line + + + + Get range of line + + Line index + + + + Copy selected text into Clipboard + + + + + Cut selected text into Clipboard + + + + + Paste text from clipboard into selected position + + + + + Select all chars of text + + + + + Move caret to end of text + + + + + Move caret to first position + + + + + Clear text, styles, history, caches + + + + + Clear buffer of styles + + + + + Clear style of all text + + + + + Clears undo and redo stacks + + + + + Insert text into current selected position + + + + + Insert text into current selected position + + + + + + Insert text into current selection position (with predefined style) + + + + + + Insert text into current selection position (with predefined style) + + + + + Insert text into replaceRange and restore previous selection + + + + + Append string to end of the Text + + + + + Append string to end of the Text + + + + + Returns index of the style in Styles + -1 otherwise + + + Index of the style in Styles + + + + Returns StyleIndex mask of given styles + + + StyleIndex mask of given styles + + + + Deletes selected chars + + + + + Deletes current line(s) + + + + + Calculates wordwrap cutoffs + + + + + Scroll control for display defined rectangle + + + + + + Updates scrollbar position after Value changed + + + + + Scroll control for display caret + + + + + Scroll control left + + + + + Scroll control for display selection area + + + + + Scroll control for display given range + + + + + Scroll control for display given range + + + + + Process control keys + + + + + Scrolls to nearest bookmark or to first bookmark + + Current bookmark line index + + + + Scrolls to nearest previous bookmark or to last bookmark + + Current bookmark line index + + + + Bookmarks line + + + + + Unbookmarks current line + + + + + Moves selected lines down + + + + + Moves selected lines up + + + + + Convert selected text to upper case + + + + + Convert selected text to lower case + + + + + Convert selected text to title case + + + + + Convert selected text to sentence case + + + + + Insert/remove comment prefix into selected lines + + + + + Insert/remove comment prefix into selected lines + + + + + Process "real" keys (no control) + + + + + Enables AutoIndentChars mode + + + + + Regex patterns for AutoIndentChars (one regex per line) + + + + + Do AutoIndentChars + + + + + Finds given char after current caret position, moves the caret to found pos. + + + + + + Inserts autoindent's spaces in the line + + + + + Returns needed start space count for the line + + + + + Undo last operation + + + + + Redo + + + + + Draws text to given Graphics + + + Start place of drawing text + Size of drawing + + + + Draw control + + + + + Gets the value for the system control panel mouse wheel scroll settings. + The value returns the number of lines that shall be scolled if the user turns the mouse wheet one step. + + + This methods gets the "WheelScrollLines" value our from the registry key "HKEY_CURRENT_USER\Control Panel\Desktop". + If the value of this option is 0, the screen will not scroll when the mouse wheel is turned. + If the value of this option is -1 or is greater than the number of lines visible in the window, + the screen will scroll up or down by one page. + + + Number of lines to scrol l when the mouse wheel is turned + + + + + Zooming (in percentages) + + + + + Gets nearest line and char position from coordinates + + Point + Line and char position + + + + Gets nearest absolute text position for given point + + Point + Position + + + + Fires TextChanging event + + + + + Fires TextChanged event + + + + + Fires TextChanged event + + + + + Fires TextChanged event + + + + + Call this method before multiple text changing + + + + + Call this method after multiple text changing + + + + + Fires TextChanged event + + + + + Clears folding state for range of text + + + + + Fires SelectionChanged event + + + + + Gets absolute text position from line and char position + + Line and char position + Point of char + + + + Gets line and char position from absolute text position + + + + + Gets absolute char position from char position + + + + + Gets point for given line and char position + + Line and char position + Coordiantes + + + + Get range of text + + Absolute start position + Absolute finish position + Range + + + + Get range of text + + Line and char position + Line and char position + Range + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Get text of given line + + Line index + Text + + + + Exapnds folded block + + Start line + + + + Collapse folding blocks using FoldedBlocks dictionary. + + + + + Expand collapsed block + + + + + Expand collapsed block + + Any line inside collapsed block + + + + Collapses all folding blocks + + + + + Exapnds all folded blocks + + + + + + Collapses folding block + + Start folding line + + + + Start foilding marker for the line + + + + + End foilding marker for the line + + + + + Collapse text block + + + + + Insert TAB into front of seletcted lines. + + + + + Remove TAB from front of seletcted lines. + + + + + Remove TAB in front of the caret ot the selected line. + + + + + Insert autoindents into selected lines + + + + + Insert prefix into front of seletcted lines + + + + + Remove prefix from front of selected lines + This method ignores forward spaces of the line + + + + + Begins AutoUndo block. + All changes of text between BeginAutoUndo() and EndAutoUndo() will be canceled in one operation Undo. + + + + + Ends AutoUndo block. + All changes of text between BeginAutoUndo() and EndAutoUndo() will be canceled in one operation Undo. + + + + + Highlights brackets around caret + + + + + Returns range between brackets (or null if not found) + + + + + Selectes next fragment for given regex. + + + + + Prints range of text + + + + + Prints all text + + + + + Prints all text, without any dialog windows + + + + + Open text file + + + + + Open text file (with automatic encoding detector) + + + + + Open file binding mode + + + + + + + Close file binding mode + + + + + Save text to the file + + + + + + + Set VisibleState of line + + + + + Returns VisibleState of the line + + + + + Shows Goto dialog form + + + + + Occurs when undo/redo stack is changed + + + + + Search lines by regex pattern + + + + + Removes given lines + + + + + Activates the scrolling mode (middle click button). + + MouseEventArgs + + + + Deactivates the scrolling mode (middle click button). + + + + + Restore scrolls + + + + + Inserted line index + + + + + Count of inserted lines + + + + + Removed line index + + + + + Count of removed lines + + + + + UniqueIds of removed lines + + + + + TextChanged event argument + + + + + Constructor + + + + + This range contains changed area of text + + + + + Set to true if you want to cancel text inserting + + + + + Word wrapping by control width + + + + + Word wrapping by preferred line width (PreferredLineWidth) + + + + + Char wrapping by control width + + + + + Char wrapping by preferred line width (PreferredLineWidth) + + + + + Custom wrap (by event WordWrapNeeded) + + + + + Title of page. If you want to print Title on the page, insert code &w in Footer or Header. + + + + + Footer of page. + Here you can use special codes: &w (Window title), &D, &d (Date), &t(), &4 (Time), &p (Current page number), &P (Total number of pages), && (A single ampersand), &b (Right justify text, Center text. If &b occurs once, then anything after the &b is right justified. If &b occurs twice, then anything between the two &b is centered, and anything after the second &b is right justified). + More detailed see here + + + + + Header of page + Here you can use special codes: &w (Window title), &D, &d (Date), &t(), &4 (Time), &p (Current page number), &P (Total number of pages), && (A single ampersand), &b (Right justify text, Center text. If &b occurs once, then anything after the &b is right justified. If &b occurs twice, then anything between the two &b is centered, and anything after the second &b is right justified). + More detailed see here + + + + + Prints line numbers + + + + + Additional spaces count for this line, relative to previous line + + + + + Additional spaces count for next line, relative to previous line + + + + + Absolute indentation of current line. You can change this property if you want to set absolute indentation. + + + + + Type of highlighting + + + + + Highlight only changed range of text. Highest performance. + + + + + Highlight visible range of text. Middle performance. + + + + + Highlight all (visible and invisible) text. Lowest performance. + + + + + Strategy of search of end of folding block + + + + + Strategy of search of brackets to highlighting + + + + + ToolTipNeeded event args + + + + + HintClick event args + + + + + CustomAction event args + + + + + Style index mask (16 styles) + + + + + Insert single char + + This operation includes also insertion of new line and removing char by backspace + + + + Constructor + + Underlaying textbox + Inserting char + + + + Undo operation + + + + + Execute operation + + + + + Merge lines i and i+1 + + + + + Insert text + + + + + Constructor + + Underlaying textbox + Text for inserting + + + + Undo operation + + + + + Execute operation + + + + + Insert text into given ranges + + + + + Constructor + + Underlaying textbox + List of ranges for replace + Text for inserting + + + + Undo operation + + + + + Execute operation + + + + + Clear selected text + + + + + Construstor + + Underlaying textbox + + + + Undo operation + + + + + Execute operation + + + + + Replaces text + + + + + Constructor + + Underlaying textsource + List of ranges for replace + + + + Undo operation + + + + + Execute operation + + + + + Removes lines + + + + + Constructor + + Underlaying textbox + List of ranges for replace + Text for inserting + + + + Undo operation + + + + + Execute operation + + + + + Wrapper for multirange commands + + + + + Remembers current selection and restore it after Undo + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Limited stack + + + + + Max stack length + + + + + Current length of stack + + + + + Constructor + + Maximum length of stack + + + + Pop item + + + + + Peek item + + + + + Push item + + + + + Clear stack + + + + + Line of text + + + + + Text of line was changed + + + + + Time of last visit of caret in this line + + This property can be used for forward/backward navigating + + + + Background brush. + + + + + Unique ID + + + + + Count of needed start spaces for AutoIndent + + + + + Clears style of chars, delete folding markers + + + + + Text of the line + + + + + Clears folding markers + + + + + Count of start spaces + + + + + Chars count + + + + + Visible state + + + + + Positions for wordwrap cutoffs + + + + + Count of wordwrap string count for this line + + + + + Gets index of wordwrap string for given char position + + + + + Line index and char index + + + + + Diapason of text chars + + + + + Constructor + + + + + Return true if no selected text + + + + + Column selection mode + + + + + Constructor + + + + + Constructor + + + + + Constructor. Creates range of the line + + + + + Returns intersection with other range, + empty range returned otherwise + + + + + + + Returns union with other range. + + + + + + + Select all chars of control + + + + + Start line and char position + + + + + Finish line and char position + + + + + Text of range + + This property has not 'set' accessor because undo/redo stack works only with + FastColoredTextBox.Selection range. So, if you want to set text, you need to use FastColoredTextBox.Selection + and FastColoredTextBox.InsertText() mehtod. + + + + + Returns first char after Start place + + + + + Returns first char before Start place + + + + + Returns required char's number before start of the Range + + + + + Returns required char's number after start of the Range + + + + + Clone range + + + + + + Return minimum of end.X and start.X + + + + + Return maximum of end.X and start.X + + + + + Move range right + + This method jump over folded blocks + + + + Move range left + + This method can to go inside folded blocks + + + + Move range left + + This method jump over folded blocks + + + + Move range left + + This method can to go inside folded blocks + + + + Set style for range + + + + + Set style for given regex pattern + + + + + Set style for given regex + + + + + Set style for given regex pattern + + + + + Set style for given regex pattern + + + + + Set style for given regex pattern + + + + + Appends style to chars of range + + + + + Sets folding markers + + Pattern for start folding line + Pattern for finish folding line + + + + Sets folding markers + + Pattern for start folding line + Pattern for finish folding line + + + + Sets folding markers + + Pattern for start and end folding line + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex pattern. + Search is separately in each line. + This method requires less memory than GetRanges(). + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex. + Search is separately in each line. + This method requires less memory than GetRanges(). + + Regex + Enumeration of ranges + + + + Finds ranges for given regex pattern. + Search is separately in each line (order of lines is reversed). + This method requires less memory than GetRanges(). + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex + + Enumeration of ranges + + + + Clear styles of range + + + + + Clear styles of range + + + + + Clear folding markers of all lines of range + + + + + Starts selection position updating + + + + + Ends selection position updating + + + + + Exchanges Start and End if End appears before Start + + + + + Exchanges Start and End + + + + + Expands range from first char of Start line to last char of End line + + + + + Chars of range (exclude \n) + + + + + Get fragment of text around Start place. Returns maximal matched to pattern fragment. + + Allowed chars pattern for fragment + Range of found fragment + + + + Get fragment of text around Start place. Returns maximal matched to given Style. + + Allowed style for fragment + Range of found fragment + + + + Get fragment of text around Start place. Returns maximal mathed to pattern fragment. + + Allowed chars pattern for fragment + Range of found fragment + + + + Range is readonly? + This property return True if any char of the range contains ReadOnlyStyle. + Set this property to True/False to mark chars of the range as Readonly/Writable. + + + + + Is char before range readonly + + + + + + Is char after range readonly + + + + + + Style of chars + + This is base class for all text and design renderers + + + + This style is exported to outer formats (HTML for example) + + + + + Occurs when user click on StyleVisualMarker joined to this style + + + + + Constructor + + + + + Renders given range of text + + Graphics object + Position of the range in absolute control coordinates + Rendering range of text + + + + Occurs when user click on StyleVisualMarker joined to this style + + + + + Shows VisualMarker + Call this method in Draw method, when you need to show VisualMarker for your style + + + + + Returns CSS for export to HTML + + + + + + Returns RTF descriptor for export to RTF + + + + + + Style for chars rendering + This renderer can draws chars, with defined fore and back colors + + + + + Renderer for folded block + + + + + Renderer for selected area + + + + + Marker style + Draws background color for text + + + + + Draws small rectangle for popup menu + + + + + This style draws a wavy line below a given text range. + + Thanks for Yallie + + + + This style is used to mark range of text as ReadOnly block + + You can inherite this style to add visual effects of readonly text + + + + This class contains the source text (chars and styles). + It stores a text lines, the manager of commands, undo/redo stack, styles. + + + + + Styles + + + + + Occurs when line was inserted/added + + + + + Occurs when line was removed + + + + + Occurs when text was changed + + + + + Occurs when recalc is needed + + + + + Occurs when recalc wordwrap is needed + + + + + Occurs before text changing + + + + + Occurs after CurrentTB was changed + + + + + Current focused FastColoredTextBox + + + + + Default text style + This style is using when no one other TextStyle is not defined in Char.style + + + + + Text lines + + + + + Lines count + + + + + These classes are required for correct data binding to Text property of FastColoredTextbox + + + + + This class contains the source text (chars and styles). + It stores a text lines, the manager of commands, undo/redo stack, styles. + + + + + Occurs when need to display line in the textbox + + + + + Occurs when need to save line in the file + + + + + End Of Line characters used for saving + + + + + This text will be displayed in textbox + + + + + This property contains only changed text. + If text of line is not changed, this property contains null. + + + + + This text will be saved in the file + + + +