From bc0e7b42860756e1c806880609e45ce985b4fc57 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Thu, 9 Jun 2022 02:00:09 +0200 Subject: [PATCH] POC build! --- .../Classes/FileTypes/PCKFile.cs | 2 +- .../Classes/FileTypes/PCKProperties.cs | 2 +- .../Classes/IO/PCK/PCKFileReader.cs | 14 +- .../Classes/IO/PCK/PCKFileWriter.cs | 12 +- .../Forms/Additional-Popups/AddPCKPassword.cs | 2 +- .../Additional-Popups/MetaADD.Designer.cs | 1 + .../Forms/Additional-Popups/MetaADD.cs | 18 +- .../Forms/Additional-Popups/MetaADD.resx | 91 +- .../RenamePrompt.Designer.cs} | 54 +- .../Forms/Additional-Popups/RenamePrompt.cs | 29 + .../RenamePrompt.resx} | 60 +- .../Additional-Popups/creatorSpotlight.resx | 127 +- .../Forms/Additional-Popups/meta.Designer.cs | 11 +- .../Forms/Additional-Popups/meta.cs | 30 +- .../Forms/Additional-Popups/meta.ja.resx | 21 +- .../Forms/Additional-Popups/meta.resx | 135 +- .../Forms/Additional-Popups/presetMeta.cs | 2 +- .../Additional-Popups/presetMeta.ja.resx | 12 +- .../Forms/Additional-Popups/presetMeta.resx | 155 +- .../Additional-Popups/programInfo.Designer.cs | 211 +- .../Additional-Popups/rename.Designer.cs | 83 - .../Forms/Additional-Popups/rename.cs | 75 - .../Forms/Additional-Popups/rename.resx | 2436 ----------------- MinecraftUSkinEditor/Forms/Form1.Designer.cs | 51 +- MinecraftUSkinEditor/Forms/Form1.cs | 1139 ++++---- MinecraftUSkinEditor/Forms/Form1.resx | 67 +- .../Skins-And-Textures/AdvancedOptions.cs | 15 +- .../Forms/Skins-And-Textures/EntryEditor.cs | 2 +- .../Forms/Skins-And-Textures/addMeta.cs | 3 +- .../Skins-And-Textures/addnewskin.Designer.cs | 55 +- .../Forms/Skins-And-Textures/addnewskin.cs | 450 +-- .../Forms/Skins-And-Textures/addnewskin.resx | 76 +- .../generateModel.Designer.cs | 18 +- .../Forms/Skins-And-Textures/generateModel.cs | 76 +- .../Skins-And-Textures/generateModel.resx | 11 +- .../Animation/AnimationEditor.Designer.cs | 530 ++-- .../Utilities/Animation/AnimationEditor.cs | 33 +- .../Forms/Utilities/Audio/AudioEditor.cs | 4 +- .../Forms/Utilities/LOCEditor.Designer.cs | 3 + .../Forms/Utilities/LOCEditor.cs | 123 +- .../Forms/Utilities/LOCEditor.resx | 18 +- .../Forms/Utilities/renameLoc.cs | 32 - MinecraftUSkinEditor/PckStudio.csproj | 22 +- 43 files changed, 1669 insertions(+), 4642 deletions(-) rename MinecraftUSkinEditor/Forms/{Utilities/renameLoc.Designer.cs => Additional-Popups/RenamePrompt.Designer.cs} (58%) create mode 100644 MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.cs rename MinecraftUSkinEditor/Forms/{Utilities/renameLoc.resx => Additional-Popups/RenamePrompt.resx} (99%) delete mode 100644 MinecraftUSkinEditor/Forms/Additional-Popups/rename.Designer.cs delete mode 100644 MinecraftUSkinEditor/Forms/Additional-Popups/rename.cs delete mode 100644 MinecraftUSkinEditor/Forms/Additional-Popups/rename.resx delete mode 100644 MinecraftUSkinEditor/Forms/Utilities/renameLoc.cs diff --git a/MinecraftUSkinEditor/Classes/FileTypes/PCKFile.cs b/MinecraftUSkinEditor/Classes/FileTypes/PCKFile.cs index 930e531a..6aae88d8 100644 --- a/MinecraftUSkinEditor/Classes/FileTypes/PCKFile.cs +++ b/MinecraftUSkinEditor/Classes/FileTypes/PCKFile.cs @@ -8,7 +8,7 @@ namespace PckStudio.Classes.FileTypes public class PCKFile { public int type { get; } = -1; - public Dictionary meta_data { get; } = new Dictionary(); + public List meta_data { get; } = new List(); public List file_entries { get; set; } = new List(); public class FileData diff --git a/MinecraftUSkinEditor/Classes/FileTypes/PCKProperties.cs b/MinecraftUSkinEditor/Classes/FileTypes/PCKProperties.cs index fd1b7102..d76af14d 100644 --- a/MinecraftUSkinEditor/Classes/FileTypes/PCKProperties.cs +++ b/MinecraftUSkinEditor/Classes/FileTypes/PCKProperties.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace PckStudio.Classes.FileTypes { - public class PCKProperties : List> // class because `using` is file scoped :| + public class PCKProperties : List> // class because `using` is file scoped :| { } } diff --git a/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs b/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs index 5ceffc6a..838f7699 100644 --- a/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs +++ b/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileReader.cs @@ -34,12 +34,13 @@ namespace PckStudio.Classes.IO { int meta_entry_count = ReadInt(stream); bool has_xml_tag = false; + _file.meta_data.Capacity = meta_entry_count; for (; 0 < meta_entry_count; meta_entry_count--) { int index = ReadInt(stream); string value = ReadString(stream); if (value.Equals("XMLVERSION")) has_xml_tag = true; - _file.meta_data[value] = index; + _file.meta_data.Insert(index, value); ReadInt(stream); // padding ???? } if (has_xml_tag) @@ -64,9 +65,7 @@ namespace PckStudio.Classes.IO for (; 0 < property_count; property_count--) { int index = ReadInt(stream); - if (!_file.meta_data.ContainsValue(index)) // should never happen with valid pck's - throw new Exception("Value not found"); - string key = GetKeyFromValue(_file.meta_data, index); + string key = _file.meta_data[index]; string value = ReadString(stream); file_entry.properties.Add(new ValueTuple(key, value)); ReadInt(stream); // padding ??? @@ -75,13 +74,6 @@ namespace PckStudio.Classes.IO stream.Read(file_entry.data, 0, file_entry.size); } } - private static T1 GetKeyFromValue(Dictionary dict, T2 value) - { - foreach (KeyValuePair pair in dict) - if (EqualityComparer.Default.Equals(pair.Value, value)) - return pair.Key; - return default(T1); // should never return unless dict.ContainsValue(value) returns false - } internal int ReadInt(Stream stream) { diff --git a/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileWriter.cs b/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileWriter.cs index f2f35853..a50c0e5c 100644 --- a/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileWriter.cs +++ b/MinecraftUSkinEditor/Classes/IO/PCK/PCKFileWriter.cs @@ -52,9 +52,9 @@ namespace PckStudio.Classes.IO bool has_xmlverion_tag = false; foreach (var metaEntry in _file.meta_data) { - if (metaEntry.Key == "XMLVERION") has_xmlverion_tag = true; - WriteInt(stream, metaEntry.Value); - WriteString(stream, metaEntry.Key); + if (metaEntry == "XMLVERION") has_xmlverion_tag = true; + WriteInt(stream, _file.meta_data.IndexOf(metaEntry)); + WriteString(stream, metaEntry); WriteInt(stream, 0); } if (has_xmlverion_tag) @@ -76,9 +76,9 @@ namespace PckStudio.Classes.IO WriteInt(stream, entry.properties.Count); foreach (var property in entry.properties) { - if (!_file.meta_data.ContainsKey(property.Item1)) - throw new Exception("invalid meta type" + property.Item1); - WriteInt(stream, _file.meta_data[property.Item1]); + if (!_file.meta_data.Contains(property.Item1)) + throw new Exception("Tag not in Meta: " + property.Item1); + WriteInt(stream, _file.meta_data.IndexOf(property.Item1)); WriteString(stream, property.Item2); WriteInt(stream, 0); } diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/AddPCKPassword.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/AddPCKPassword.cs index 834605dc..e38c745d 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/AddPCKPassword.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/AddPCKPassword.cs @@ -25,7 +25,7 @@ namespace PckStudio.Forms private void buttonUnlocked_Click(object sender, EventArgs e) { - file.properties.Add(new Tuple("LOCK", MD5(textBoxPass.Text))); + file.properties.Add(new ValueTuple("LOCK", MD5(textBoxPass.Text))); Close(); } diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.Designer.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.Designer.cs index bd6642e8..51d33a32 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.Designer.cs @@ -37,6 +37,7 @@ // resources.ApplyResources(this.textBox1, "textBox1"); this.textBox1.Name = "textBox1"; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); // // button1 // diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.cs index dd7f0106..a426066b 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.cs @@ -14,27 +14,29 @@ namespace PckStudio public partial class MetaADD : Form { PCKFile currentPCK; - TreeView treeView1; - public MetaADD(PCKFile currentPCKIn, TreeView treeView1In) + public MetaADD(PCKFile currentPCKIn) { InitializeComponent(); currentPCK = currentPCKIn; - treeView1 = treeView1In; - } private void button1_Click(object sender, EventArgs e) { - if (currentPCK.meta_data.ContainsKey(textBox1.Text)) + if (currentPCK.meta_data.Contains(textBox1.Text)) { - MessageBox.Show("This metatag already exits"); + MessageBox.Show("This meta tag already exits"); return; } - if (!currentPCK.meta_data.ContainsValue(currentPCK.meta_data.Count)) - currentPCK.meta_data.Add(textBox1.Text, currentPCK.meta_data.Count); + currentPCK.meta_data.Add(textBox1.Text); Close(); } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + button1_Click(sender, e); + } } } diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.resx index d90399e0..763fe3e4 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/MetaADD.resx @@ -117,62 +117,61 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 12, 12 + + + 259, 20 + + + + 0 + + + textBox1 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + $this 1 - - - 259, 20 - - - textBox1 - - - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 12, 12 - 102, 36 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 284, 62 - - - - 1 - - - $this - - - Create/Add - 75, 23 - - 0 + + 1 - - 0 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Create/Add button1 - - - CenterParent + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + True + + + 6, 13 + + + 284, 62 @@ -2394,16 +2393,14 @@ vbLH9tge22N7bI/tsT22x/bYHttjC+3/B71iqRn22EDpAAAAAElFTkSuQmCC - - 6, 13 + + + CenterParent MetaADD - - True - - - ja - + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Utilities/renameLoc.Designer.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.Designer.cs similarity index 58% rename from MinecraftUSkinEditor/Forms/Utilities/renameLoc.Designer.cs rename to MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.Designer.cs index 816a8a5f..01f91646 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/renameLoc.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.Designer.cs @@ -1,6 +1,6 @@ namespace PckStudio { - partial class renameLoc + partial class RenamePrompt { /// /// Required designer variable. @@ -28,43 +28,43 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(renameLoc)); - this.label2 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RenamePrompt)); + this.TextLabel = new System.Windows.Forms.Label(); + this.OKButton = new System.Windows.Forms.Button(); + this.InputTextBox = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // - // label2 + // TextLabel // - resources.ApplyResources(this.label2, "label2"); - this.label2.ForeColor = System.Drawing.Color.White; - this.label2.Name = "label2"; + resources.ApplyResources(this.TextLabel, "TextLabel"); + this.TextLabel.ForeColor = System.Drawing.Color.White; + this.TextLabel.Name = "TextLabel"; // - // button1 + // OKButton // - resources.ApplyResources(this.button1, "button1"); - this.button1.ForeColor = System.Drawing.Color.White; - this.button1.Name = "button1"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); + resources.ApplyResources(this.OKButton, "OKButton"); + this.OKButton.ForeColor = System.Drawing.Color.White; + this.OKButton.Name = "OKButton"; + this.OKButton.UseVisualStyleBackColor = true; + this.OKButton.Click += new System.EventHandler(this.OKBtn_Click); // - // textBox1 + // InputTextBox // - resources.ApplyResources(this.textBox1, "textBox1"); - this.textBox1.Name = "textBox1"; + resources.ApplyResources(this.InputTextBox, "InputTextBox"); + this.InputTextBox.Name = "InputTextBox"; // - // renameLoc + // RenamePrompt // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ControlBox = false; - this.Controls.Add(this.textBox1); - this.Controls.Add(this.button1); - this.Controls.Add(this.label2); + this.Controls.Add(this.InputTextBox); + this.Controls.Add(this.OKButton); + this.Controls.Add(this.TextLabel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.MaximizeBox = false; this.MinimizeBox = false; - this.Name = "renameLoc"; + this.Name = "RenamePrompt"; this.Resizable = false; this.ShadowType = MetroFramework.Forms.MetroFormShadowType.DropShadow; this.Style = MetroFramework.MetroColorStyle.Silver; @@ -75,8 +75,8 @@ } #endregion - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.TextBox textBox1; - } + public System.Windows.Forms.Button OKButton; + public System.Windows.Forms.Label TextLabel; + private System.Windows.Forms.TextBox InputTextBox; + } } \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.cs new file mode 100644 index 00000000..e00725cf --- /dev/null +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.cs @@ -0,0 +1,29 @@ +using System; +using System.Windows.Forms; +using MetroFramework.Forms; + +namespace PckStudio +{ + public partial class RenamePrompt : MetroForm + { + public string NewText => InputTextBox.Text; + + public RenamePrompt(TreeNode nodeIn) + { + InitializeComponent(); + InputTextBox.Text = nodeIn.Text; + FormBorderStyle = FormBorderStyle.None; + } + public RenamePrompt(string InitialText) + { + InitializeComponent(); + InputTextBox.Text = InitialText; + FormBorderStyle = FormBorderStyle.None; + } + + private void OKBtn_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + } + } +} diff --git a/MinecraftUSkinEditor/Forms/Utilities/renameLoc.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.resx similarity index 99% rename from MinecraftUSkinEditor/Forms/Utilities/renameLoc.resx rename to MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.resx index 39548b68..5dd737cf 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/renameLoc.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/RenamePrompt.resx @@ -118,81 +118,81 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True - + 19, 41 - + 35, 13 - + 3 - + Name - - label2 + + TextLabel - + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 2 - + Flat - - 96, 78 + + 101, 74 - + 75, 23 - + 4 - + Rename - - button1 + + OKButton - + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 1 - + 60, 38 - + 181, 20 - + 0 - - textBox1 + + InputTextBox - + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 0 @@ -2428,7 +2428,7 @@ CenterParent - renameLoc + RenamePrompt MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/creatorSpotlight.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/creatorSpotlight.resx index c17fe615..5c82dc76 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/creatorSpotlight.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/creatorSpotlight.resx @@ -117,13 +117,56 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 20, 20 - - - Flat + + Fill + + + + 781, 542 + + + System.Windows.Forms.WebBrowser, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 98, 29 + + + Segoe UI Semibold, 8.25pt, style=Bold, Italic + + + + 1 + + + creatorSpotlight + + + WHAT THE CREATOR HAS BEEN UP TO + + + webBrowser1 + + + MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 6, 13 + + + 670, 499 + + + Open in Browser + + + 0 + + + 20, 60 @@ -2271,80 +2314,34 @@ 4T+//T/gqS4Dy6cgIMJt116T70oWKFCgQIHx8v8BnhFXNQQBmowAAAAASUVORK5CYII= - - webBrowser1 - - - 670, 499 - - - MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - 781, 542 - - - creatorSpotlight - - - System.Windows.Forms.WebBrowser, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 1 - - - 0 - - - buttonOpenInBrowser - - - 98, 29 - - - Fill - - - 0 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this 741, 462 + + 0, 0, 0, 0 + $this - - 20, 60 + + 20, 20 1 - - Open in Browser + + buttonOpenInBrowser - - $this + + 0 - - 0, 0, 0, 0 - - - 6, 13 - - - Segoe UI Semibold, 8.25pt, style=Bold, Italic - - - WHAT THE CREATOR HAS BEEN UP TO + + Flat True - - ja - \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.Designer.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.Designer.cs index 2f8f9306..6d061020 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.Designer.cs @@ -39,30 +39,29 @@ // // treeView1 // - resources.ApplyResources(this.treeView1, "treeView1"); this.treeView1.ContextMenuStrip = this.contextMenuStrip1; + resources.ApplyResources(this.treeView1, "treeView1"); this.treeView1.Name = "treeView1"; - this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); - this.treeView1.Click += new System.EventHandler(this.treeView1_Click); + this.treeView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeView1_KeyDown); // // contextMenuStrip1 // - resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1"); this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addToolStripMenuItem, this.deleteToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; + resources.ApplyResources(this.contextMenuStrip1, "contextMenuStrip1"); // // addToolStripMenuItem // - resources.ApplyResources(this.addToolStripMenuItem, "addToolStripMenuItem"); this.addToolStripMenuItem.Name = "addToolStripMenuItem"; + resources.ApplyResources(this.addToolStripMenuItem, "addToolStripMenuItem"); this.addToolStripMenuItem.Click += new System.EventHandler(this.addToolStripMenuItem_Click); // // deleteToolStripMenuItem // - resources.ApplyResources(this.deleteToolStripMenuItem, "deleteToolStripMenuItem"); this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; + resources.ApplyResources(this.deleteToolStripMenuItem, "deleteToolStripMenuItem"); this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); // // meta diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.cs index 65847aa1..34de2181 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.cs @@ -34,7 +34,7 @@ namespace PckStudio try { treeView1.Nodes.Clear(); - foreach (string key in currentPCK.meta_data.Keys) + foreach (string key in currentPCK.meta_data) { treeView1.Nodes.Add(key); } @@ -47,14 +47,9 @@ namespace PckStudio } } - private void treeView1_Click(object sender, EventArgs e) - { - - } - private void addToolStripMenuItem_Click(object sender, EventArgs e) { - PckStudio.MetaADD add = new PckStudio.MetaADD(currentPCK, treeView1); + PckStudio.MetaADD add = new PckStudio.MetaADD(currentPCK); add.TopMost = true; add.TopLevel = true; add.ShowDialog(); @@ -64,20 +59,19 @@ namespace PckStudio private void deleteToolStripMenuItem_Click(object sender, EventArgs e) { - try - { - MessageBox.Show("TODO"); - //currentPCK.meta_data.Remove(); - refresh(); - }catch (Exception) - { - - } + if (currentPCK.meta_data.Contains(treeView1.SelectedNode.Text)) + currentPCK.meta_data.Remove(treeView1.SelectedNode.Text); + refresh(); } - private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) + private void treeView1_KeyDown(object sender, KeyEventArgs e) { - + if (e.KeyCode == Keys.Delete && treeView1.SelectedNode != null && + currentPCK.meta_data.Contains(treeView1.SelectedNode.Text)) + { + currentPCK.meta_data.Remove(treeView1.SelectedNode.Text); + refresh(); + } } } } diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.ja.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.ja.resx index 8aa5c277..ec05a7eb 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.ja.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.ja.resx @@ -118,6 +118,21 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 100, 22 + + + 追加 + + + 100, 22 + + + 削除 + + + 101, 48 + AAABAAYAEBAAAAEAIABoBAAAZgAAACAgAAABACAAqBAAAM4EAAAwMAAAAQAgAKglAAB2FQAAQEAAAAEA @@ -2341,10 +2356,4 @@ メタデータベース - - 追加 - - - 削除 - \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.resx index dd526efe..65dc3adc 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/meta.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/meta.resx @@ -117,18 +117,61 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 11, 16 + + + + 107, 22 + + + Add + + + 107, 22 + + + Delete + + + 108, 48 + contextMenuStrip1 + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 7, 62 + + + 238, 268 + + + + 0 + + + treeView1 + + + System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + $this - + + 1 + + + True + 6, 13 - - 238, 268 + + 252, 337 @@ -2350,78 +2393,32 @@ vbLH9tge22N7bI/tsT22x/bYHttjC+3/B71iqRn22EDpAAAAAElFTkSuQmCC - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 107, 22 - - - 108, 48 - - - MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - 252, 337 - - - meta - - - treeView1 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CenterParent - - - Add - No - - - 0 - - - 1 - - - addToolStripMenuItem - - - Delete - - - 107, 22 - - - deleteToolStripMenuItem - - - 7, 62 - - - System.Windows.Forms.TreeView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + CenterParent Meta Database - - ja - - - True - - - 11, 16 - + + addToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + deleteToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + meta + + + MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.cs index 6e55f85b..eadcd2a9 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.cs @@ -89,7 +89,7 @@ namespace PckStudio } else { - file.properties.Add(new Tuple(entryName, entryValue )); + file.properties.Add(new ValueTuple(entryName, entryValue )); entryName = ""; entryValue = ""; entryStart = true; diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.ja.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.ja.resx index f9d7e2cd..1bbf56d9 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.ja.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.ja.resx @@ -117,6 +117,12 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 追加 + + + プリセットはありません + @@ -2341,10 +2347,4 @@ プリセット - - 追加 - - - プリセットはありません - \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.resx index e7aeff30..832b7acd 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.resx +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/presetMeta.resx @@ -117,13 +117,75 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0 + + + 187, 252 + + + Add + + + 1 + + + 1 + + + + Flat + + + True + + + 41, 110 + + + Presets + + + labelSearch + + + presetMeta + + + $this + + + 75, 23 + + + MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a + + + 11, 63 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 6, 13 listView1 + + 0 + + + 166, 155 + + + You have no presets + + + 2 + AAABAAYAEBAAAAEAIABoBAAAZgAAACAgAAABACAAqBAAAM4EAAAwMAAAAQAgAKglAAB2FQAAQEAAAAEA @@ -2344,102 +2406,37 @@ vbLH9tge22N7bI/tsT22x/bYHttjC+3/B71iqRn22EDpAAAAAElFTkSuQmCC - - 166, 155 - - - $this - - - labelSearch - - - - 2 - - - 0 + + CenterParent System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - False - - - - Flat - - - 187, 252 - - - CenterParent - - - 75, 23 - - - 2 - - - True - - - You have no presets - - - MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - - presetMeta - $this - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 0 - - - 1 - - - 1 - - - 41, 110 - - - 11, 63 - - - $this - button1 - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + False - - Add - - - 53, 224 + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 105, 13 - - Presets + + 2 + + + 53, 224 + + + $this True - - ja - \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/programInfo.Designer.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/programInfo.Designer.cs index be047fa6..9a20c2b2 100644 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/programInfo.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Additional-Popups/programInfo.Designer.cs @@ -28,104 +28,116 @@ /// private void InitializeComponent() { - this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.metroLabel1 = new MetroFramework.Controls.MetroLabel(); - this.metroLabel2 = new MetroFramework.Controls.MetroLabel(); - this.metroLabel3 = new MetroFramework.Controls.MetroLabel(); - this.metroLabel4 = new MetroFramework.Controls.MetroLabel(); - this.metroLabel5 = new MetroFramework.Controls.MetroLabel(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); - // - // pictureBox1 - // - this.pictureBox1.Image = global::PckStudio.Properties.Resources.Splash; - this.pictureBox1.Location = new System.Drawing.Point(14, 33); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(575, 293); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); - // - // metroLabel1 - // - this.metroLabel1.AutoSize = true; - this.metroLabel1.Location = new System.Drawing.Point(6, 333); - this.metroLabel1.Name = "metroLabel1"; - this.metroLabel1.Size = new System.Drawing.Size(250, 19); - this.metroLabel1.TabIndex = 1; - this.metroLabel1.Text = "Restored and maintained by PhoenixARC"; - this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroLabel1.Click += new System.EventHandler(this.metroLabel1_Click); - // - // metroLabel2 - // - this.metroLabel2.AutoSize = true; - this.metroLabel2.Location = new System.Drawing.Point(331, 333); - this.metroLabel2.Name = "metroLabel2"; - this.metroLabel2.Size = new System.Drawing.Size(269, 19); - this.metroLabel2.TabIndex = 2; - this.metroLabel2.Text = "Utilizing the Nobledez Website by Newagent"; - this.metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark; - // - // metroLabel3 - // - this.metroLabel3.AutoSize = true; - this.metroLabel3.Location = new System.Drawing.Point(4, 367); - this.metroLabel3.Name = "metroLabel3"; - this.metroLabel3.Size = new System.Drawing.Size(212, 19); - this.metroLabel3.TabIndex = 3; - this.metroLabel3.Text = "3D skin renderer by Łukasz Rejman"; - this.metroLabel3.Theme = MetroFramework.MetroThemeStyle.Dark; - // - // metroLabel4 - // - this.metroLabel4.AutoSize = true; - this.metroLabel4.Location = new System.Drawing.Point(331, 367); - this.metroLabel4.Name = "metroLabel4"; - this.metroLabel4.Size = new System.Drawing.Size(199, 19); - this.metroLabel4.TabIndex = 4; - this.metroLabel4.Text = "3D renderer found by Newagent"; - this.metroLabel4.Theme = MetroFramework.MetroThemeStyle.Dark; - // - // metroLabel5 - // - this.metroLabel5.AutoSize = true; - this.metroLabel5.Location = new System.Drawing.Point(4, 350); - this.metroLabel5.Name = "metroLabel5"; - this.metroLabel5.Size = new System.Drawing.Size(236, 19); - this.metroLabel5.TabIndex = 5; - this.metroLabel5.Text = "Additional code and utilities by MattNL"; - this.metroLabel5.Theme = MetroFramework.MetroThemeStyle.Dark; - // - // programInfo - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle; - this.ClientSize = new System.Drawing.Size(602, 392); - this.Controls.Add(this.metroLabel1); - this.Controls.Add(this.metroLabel5); - this.Controls.Add(this.metroLabel4); - this.Controls.Add(this.metroLabel3); - this.Controls.Add(this.metroLabel2); - this.Controls.Add(this.pictureBox1); - this.DisplayHeader = false; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "programInfo"; - this.Padding = new System.Windows.Forms.Padding(20, 30, 20, 20); - this.Resizable = false; - this.ShadowType = MetroFramework.Forms.MetroFormShadowType.DropShadow; - this.Style = MetroFramework.MetroColorStyle.Silver; - this.Text = "programInfo"; - this.Theme = MetroFramework.MetroThemeStyle.Dark; - this.Load += new System.EventHandler(this.programInfo_Load); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.metroLabel1 = new MetroFramework.Controls.MetroLabel(); + this.metroLabel2 = new MetroFramework.Controls.MetroLabel(); + this.metroLabel3 = new MetroFramework.Controls.MetroLabel(); + this.metroLabel4 = new MetroFramework.Controls.MetroLabel(); + this.metroLabel5 = new MetroFramework.Controls.MetroLabel(); + this.mikuSecrect = new MetroFramework.Controls.MetroLabel(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox1 + // + this.pictureBox1.Image = global::PckStudio.Properties.Resources.Splash; + this.pictureBox1.Location = new System.Drawing.Point(14, 33); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(575, 293); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // metroLabel1 + // + this.metroLabel1.AutoSize = true; + this.metroLabel1.Location = new System.Drawing.Point(6, 333); + this.metroLabel1.Name = "metroLabel1"; + this.metroLabel1.Size = new System.Drawing.Size(250, 19); + this.metroLabel1.TabIndex = 1; + this.metroLabel1.Text = "Restored and maintained by PhoenixARC"; + this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroLabel1.Click += new System.EventHandler(this.metroLabel1_Click); + // + // metroLabel2 + // + this.metroLabel2.AutoSize = true; + this.metroLabel2.Location = new System.Drawing.Point(331, 333); + this.metroLabel2.Name = "metroLabel2"; + this.metroLabel2.Size = new System.Drawing.Size(269, 19); + this.metroLabel2.TabIndex = 2; + this.metroLabel2.Text = "Utilizing the Nobledez Website by Newagent"; + this.metroLabel2.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // metroLabel3 + // + this.metroLabel3.AutoSize = true; + this.metroLabel3.Location = new System.Drawing.Point(4, 367); + this.metroLabel3.Name = "metroLabel3"; + this.metroLabel3.Size = new System.Drawing.Size(212, 19); + this.metroLabel3.TabIndex = 3; + this.metroLabel3.Text = "3D skin renderer by Łukasz Rejman"; + this.metroLabel3.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // metroLabel4 + // + this.metroLabel4.AutoSize = true; + this.metroLabel4.Location = new System.Drawing.Point(331, 367); + this.metroLabel4.Name = "metroLabel4"; + this.metroLabel4.Size = new System.Drawing.Size(199, 19); + this.metroLabel4.TabIndex = 4; + this.metroLabel4.Text = "3D renderer found by Newagent"; + this.metroLabel4.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // metroLabel5 + // + this.metroLabel5.AutoSize = true; + this.metroLabel5.Location = new System.Drawing.Point(4, 350); + this.metroLabel5.Name = "metroLabel5"; + this.metroLabel5.Size = new System.Drawing.Size(236, 19); + this.metroLabel5.TabIndex = 5; + this.metroLabel5.Text = "Additional code and utilities by MattNL"; + this.metroLabel5.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // mikuSecrect + // + this.mikuSecrect.AutoSize = true; + this.mikuSecrect.Location = new System.Drawing.Point(331, 350); + this.mikuSecrect.Name = "mikuSecrect"; + this.mikuSecrect.Size = new System.Drawing.Size(101, 19); + this.mikuSecrect.TabIndex = 6; + this.mikuSecrect.Text = "Miku was here..."; + this.mikuSecrect.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // programInfo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle; + this.ClientSize = new System.Drawing.Size(602, 392); + this.Controls.Add(this.mikuSecrect); + this.Controls.Add(this.metroLabel1); + this.Controls.Add(this.metroLabel5); + this.Controls.Add(this.metroLabel4); + this.Controls.Add(this.metroLabel3); + this.Controls.Add(this.metroLabel2); + this.Controls.Add(this.pictureBox1); + this.DisplayHeader = false; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "programInfo"; + this.Padding = new System.Windows.Forms.Padding(20, 30, 20, 20); + this.Resizable = false; + this.ShadowType = MetroFramework.Forms.MetroFormShadowType.DropShadow; + this.Style = MetroFramework.MetroColorStyle.Silver; + this.Text = "programInfo"; + this.Theme = MetroFramework.MetroThemeStyle.Dark; + this.Load += new System.EventHandler(this.programInfo_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); } @@ -138,5 +150,6 @@ private MetroFramework.Controls.MetroLabel metroLabel3; private MetroFramework.Controls.MetroLabel metroLabel4; private MetroFramework.Controls.MetroLabel metroLabel5; - } + private MetroFramework.Controls.MetroLabel mikuSecrect; + } } \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/rename.Designer.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/rename.Designer.cs deleted file mode 100644 index 6e6b8a8e..00000000 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/rename.Designer.cs +++ /dev/null @@ -1,83 +0,0 @@ -namespace PckStudio -{ - partial class rename - { - /// - /// 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() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(rename)); - this.label2 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.SuspendLayout(); - // - // label2 - // - resources.ApplyResources(this.label2, "label2"); - this.label2.ForeColor = System.Drawing.Color.White; - this.label2.Name = "label2"; - // - // button1 - // - resources.ApplyResources(this.button1, "button1"); - this.button1.ForeColor = System.Drawing.Color.White; - this.button1.Name = "button1"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // textBox1 - // - resources.ApplyResources(this.textBox1, "textBox1"); - this.textBox1.Name = "textBox1"; - // - // rename - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ControlBox = false; - this.Controls.Add(this.textBox1); - this.Controls.Add(this.button1); - this.Controls.Add(this.label2); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "rename"; - this.Resizable = false; - this.ShadowType = MetroFramework.Forms.MetroFormShadowType.DropShadow; - this.Style = MetroFramework.MetroColorStyle.Silver; - this.Theme = MetroFramework.MetroThemeStyle.Dark; - this.Load += new System.EventHandler(this.addCategory_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.TextBox textBox1; - } -} \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/rename.cs b/MinecraftUSkinEditor/Forms/Additional-Popups/rename.cs deleted file mode 100644 index 2f110774..00000000 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/rename.cs +++ /dev/null @@ -1,75 +0,0 @@ -using PckStudio.Classes.FileTypes; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace PckStudio -{ - public partial class rename : MetroFramework.Forms.MetroForm - { - string oldName; - string newName; - TreeNode node; - - public rename(TreeNode nodeIn) - { - Console.WriteLine("Full Node Path - " + nodeIn.FullPath.Replace("\\", "/")); - string[] parents = nodeIn.FullPath.Split(nodeIn.TreeView.PathSeparator.ToCharArray()); - foreach (string parent in parents) - { - Console.WriteLine(" - " + parent); - } - InitializeComponent(); - node = nodeIn; - oldName = nodeIn.Text; - textBox1.Text = nodeIn.Text; - FormBorderStyle = FormBorderStyle.None; - } - - public void fixDirectoryNameForFiles(TreeNode dirN) - { - foreach (TreeNode n in dirN.Nodes) - { - if (n.Tag == null) - { - fixDirectoryNameForFiles(n); - continue; - } - PCKFile.FileData mf = (PCKFile.FileData)n.Tag; - string fullNew = mf.name.Replace(oldName + "/", newName + "/"); - Console.WriteLine("Full old - " + mf.name + " - Old: " + oldName + " - New: " + newName + " - " + fullNew); - mf.name = fullNew; - } - } - - private void button1_Click(object sender, EventArgs e) - { - newName = textBox1.Text; - node.Name = textBox1.Text; - - if (node.Tag == null) fixDirectoryNameForFiles(node); - else - { - PCKFile.FileData mf = (PCKFile.FileData)node.Tag; - string path = Path.GetDirectoryName(node.FullPath.Replace("\\", "/")); - string fullNew = path + "/" + newName; - mf.name = fullNew; - Console.WriteLine("Full old - " + mf.name + " - Old: " + oldName + " - New: " + fullNew); - } - this.Close(); - } - - private void addCategory_Load(object sender, EventArgs e) - { - - } - - } -} diff --git a/MinecraftUSkinEditor/Forms/Additional-Popups/rename.resx b/MinecraftUSkinEditor/Forms/Additional-Popups/rename.resx deleted file mode 100644 index 41fb29d6..00000000 --- a/MinecraftUSkinEditor/Forms/Additional-Popups/rename.resx +++ /dev/null @@ -1,2436 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - True - - - - 19, 41 - - - 35, 13 - - - 3 - - - Name - - - label2 - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - - Flat - - - 96, 78 - - - 75, 23 - - - 4 - - - Rename - - - button1 - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - 60, 38 - - - 181, 20 - - - 0 - - - textBox1 - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - True - - - 6, 13 - - - 264, 105 - - - - AAABAAYAEBAAAAEAIABoBAAAZgAAACAgAAABACAAqBAAAM4EAAAwMAAAAQAgAKglAAB2FQAAQEAAAAEA - IAAoQgAAHjsAAICAAAABACAAKAgBAEZ9AAAAAAAAAQAgAOOBAABuhQEAKAAAABAAAAAgAAAAAQAgAAAA - AAAABAAAwg4AAMIOAAAAAAAAAAAAAO3t7QCTk5MA4ODgf8/Pz+DMzMzcysrK3MnJydzHx8fcxsbG3MTE - xNzDw8PcwcHB3MLCwuDX19d/bWxtAOzs7AD7+/sAAAAAANfX15y6urr/tbW1/7Ozs/+xsbH/r6+v/6ys - rP+qqqr/qKio/6Wlpf+np6f/ysrKnAAAAAD6+voA/Pz8AAAAAADZ2dmcwMDA/7u7u/+3t7f/tra2/7e3 - t/+0tLT/r6+v/62trf+rq6v/q6ur/8zMzJwAAAAA+vr6APz8/AAAAAAA3t7enL+/v/++vr7/v7+//7q6 - uv+ZmZn/oqKi/7q6uv+2trb/sbGx/7a2tv/Qz8+cAAAAAPv7+wD9/f0AAAAAAObm5pyenp7/pKSk/8zM - zP+Wlpb/cnJy/29vb/+fn5//lJSU/4SFhf+4uLj/0tLSnAAAAAD7+/sA/f39AAAAAADp6emcnJyc/4aG - hv++vr7/l5eX/5ubm/+srKz/pKSk/2ZmZv+ZmZn/v76+/9TU1JwAAAAA+/v7AP39/QAAAAAA7OzsnJ2d - nf9paWn/bGxs/5CQkP+Wlpb/1dXV/6ampv8+Pj7/ubm5/729vf/V1dWcAAAAAPv7+wD9/f0AERERAO/u - 7pyhoaH/paWl/35+fv+MjIz/np6e/7i4uP+oqKj/W1tb/6CgoP/BwcH/1tbWnAAAAAD7+/sA/f39AC8v - LwDx8fGcpKSk/3l5ef9ubm7/lZWV/3d3d/9zc3P/pKSk/5GRkf+EhIT/w8PD/9nZ2ZwAAAAA+/v7AP39 - /QBDQ0MA7+/vnNXV1f+0tLT/vr6+/9LS0v+ysrL/ubm5/87Ozv/Kysr/wsLC/8nJyf/c3NycAAAAAPz8 - /AD9/f0AW1tbAO/v75zl5eX/5OTk/+Hh4f/d3d3/3d3d/9rb2v/V1dX/0tLS/9DQ0P/Q0ND/4+PjlG5u - bwD6+voA/v7+AHd3dwDy8vKc6eno/+Xl5f/j4+P/4eHh/97e3v/f39//4+Pj/+Hh4f/g4OD/5+fnze/v - 7zDs7OwA8fHxAP7+/gCVlZQA9fX1nO3t7f/q6ur/6Ojo/+bm5v/j4+P/5OTk/+fn5//n5+f/7OzszPPz - 8zHu7u4A+vr6AAAAAAD+/v4AtLS0APj4+Jzy8vL/7+/v/+3t7f/r6+v/6Ojo/+jo6P/s7Oz/8PDwy/X1 - 9TDy8vIA+/v7AAAAAAAAAAAA/f39ANbW1QD7+/uc9/f3//T09P/y8vL/8PDw/+3t7f/u7u7/8vLyyfT0 - 9C7u7u4A/f39AAAAAAAAAAAAAAAAAO/v7wD///8A+vr6f/v7++D6+vrc+Pj43Pf399z19fXe9fX1xvPz - 8zX5+fkA4+TkAAAAAAAAAAAAAAAAAAAAAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMAD - AADAAwAAwAMAAMADAADABwAAwA8AAMAfAADAPwAAKAAAACAAAABAAAAAAQAgAAAAAAAAEAAAwg4AAMIO - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvr6wDo6Ogd7OzsnOnp6bLo6Oix6Ojosejo6LHn5+ex5+fnsefn - 57Hm5uax5ubmsebm5rHl5eWx5eXlseXl5bHk5OSx5OTkseTk5LHj4+Ox4+PjsePj47Hj4+Oy6enpnOjo - 6B7q6uoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyAPPz80fb29v4w8PD/8HBwf/AwcD/v7/A/7+/ - v/++vr7/vb29/7y8vP+7u7v/urq6/7m5uf+4uLj/t7e3/7a2tv+1tbX/tLS0/7Ozs/+ysrL/srGx/7Gx - sf/Q0ND48PHwR+7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADy8vIA9fX1SdPT0/m2trb/tbW1/7S0 - tP+zsrP/sbGx/7CwsP+vr6//rq6u/62trf+srKz/qqqq/6mpqf+oqKj/p6en/6ampv+lpaX/pKSk/6Kj - o/+hoaH/oKCg/8XFxfnx8fFJ7e3tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLy8gD19fVJ1dXV+bm5 - uf+4uLj/t7e3/7a2tv+0tLT/s7Oz/7Kysv+xsbH/sLCw/6+vr/+urq7/rays/6urq/+qqqr/qamp/6io - qP+np6f/pqam/6SlpP+kpKT/x8fH+fLy8knu7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8/PzAPb2 - 9knW1tb5vLy8/7q6uv+5ubn/uLi4/7e3t/+2trb/tbW0/7Ozs/+ysrL/sbGx/7CwsP+vr6//rq6u/62t - rf+rq6v/qqqq/6mpqf+oqKj/p6en/6ampv/IyMj58vLySe7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADz8/MA9vb2SdjY2Pm+vr7/vLy8/7u7u/+6urr/ubm5/7i4uP+3t7f/trW2/7S0tP+zs7P/srKy/7Gx - sf+wsLD/r6+v/62trf+tra3/q6ur/6qqqv+pqan/qKio/8rKyvny8vJJ7+/vAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPT09AD29vZJ2dnZ+cPDw//Ozs7/zc3N/8DAwP+8vLz/u7u7/7q6uv/ExMT/zMzM/8vL - y//Kysr/xMTE/7e3t/+/v7//xMTE/7a2tv+3t7f/w8PD/7q6uv+srKz/y8vL+fPz80nw8PAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA9PT0APf390na29v50tLS/6Kiov+vr6//0NDQ/76+vv+9vb3/ycnJ/729 - vf96enr/cnJy/3Nzc/+ioqL/1tbW/7S0tP+Xl5f/0tLS/8jIyP+Kior/xcXF/7e3t//MzMz58/PzSfDw - 8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD19fUA9/f3Sdzc3PnZ2dn/XFxc/3Z2dv/Z2dn/wMDA/7+/ - v//U1NT/ZmZm/yIiIv9fX1//Pz8//zU1Nf/h4eH/jo6O/0ZGRv/o6Oj/lZWV/zs7O//Kysr/tbW1/87O - zvnz8/NJ8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19QD39/dJ3d7d+dra2v9cXFz/dnZ2/9ra - 2v/CwsL/wcHB/9XV1f9aWlr/XFxc/+7u7v+oqKj/NTU1/+Li4v+Pj4//SEhI/+rq6v9MTEz/i4uL/8rK - yv+ysrL/0M/Q+fT09Enx8fEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9vX2APj4+Enf39/53Nzc/1xc - XP94eHj/5OTl/9DQ0P/Ly8v/19fX/1tbW/9aWlr/4+Pj/6ampv86Ojr/4+Li/4+Pj/9LS0v/tLS0/zw8 - PP/Jycn/vLy8/7S0tP/R0dH59PT0SfHx8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29vYA+Pj4SeHg - 4fnd3t3/XV1d/1NTU/+srKz/p6en/8fHx//l5eX/W1tb/1paWv/d3d3/zs3O/7S0tP/i4uL/jo6O/0VF - Rf9dXV3/gYGB/9DQ0P+4uLj/t7e3/9PT0/n09PRJ8vLyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb2 - 9wD4+PhJ4uLi+d/f3/9fX1//FxcX/zg4OP8hISH/SUlJ/+rq6v9cXFz/W1tb/9jY2P/Jycn/y8zL/9PT - 0/+Pj4//GRkZ/zg4OP/Gxsf/w8PD/7q6uv+5ubn/0tPT+fT09Enx8fEAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA9/f3APn5+Unj4+P54eHh/11dXf9vb2//4+Pj/4iIiP8wMDD/5ubm/11dXf9bW1v/2dnZ/8jI - yP/Jycn/09PT/5CQkP8HBwf/PDw8/9TU1P/CwsL/vLy8/7i4uP/R0dH59PT0SfHx8QAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD39/cA+fn5SeXl5fni4uL/XV1d/3R0dP/j4+P/jIyM/zExMf/n5+f/XV1d/1tb - W//f39//2NjY/9DQ0P/j4+P/j4+P/zs7O/9GRkb/mZmZ/9HR0f+7u7v/t7e3/9LS0vn09PRJ8vLyAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj4+AD5+flJ5ubm+eTk5P9dXV3/dHR0/+Hh4f+Li4v/MTEx/+fn - 5/9dXV3/W1tb/+np6f+vr6//TExM/+bm5v+RkZH/S0tL/5KSkv9MTEz/1dXV/76+vv+5urr/1NTU+fX1 - 9Uny8vIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+Pj4APn5+Uno6Oj55ubm/11dXf92dnb/7u7u/4+P - j/8xMTH/6Ojo/11dXf9cXFz/9PTz/6qqqv81NTX/5ubm/5GRkf9JSUn/3Nzc/zU1Nf+ioqL/zc3N/7y8 - vP/W1tb59fX1SfLy8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4+PgA+vr6Senp6fnn5+f/X19f/yws - LP9jY2P/ODg4/zs7O//r6+v/bGxs/yMjI/9jY2P/QkJC/zc3N//n5+f/kZGR/0dHR//x8fH/c3Nz/0xM - TP/V1dX/wcHB/9fX1/n19fVJ8/PzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPn5+QD6+vpJ6+vr+ebm - 5v+7u7v/k5OT/5KSkv+SkpL/urq6/+np6f/Ly8v/lZWV/5GRkf+RkZH/srKy/+Tk5P/IyMj/rq6u/+Li - 4v/MzMz/oqKi/9bW1v/FxcX/2dnZ+fX29Unz8/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+fn5APr6 - +kns7Oz54eHh/+jo6P/q6ur/6enp/+jo6P/j4+P/2tra/9/f3//l5eX/5OTk/+Pj4//e3t7/1NTU/9jY - 2P/Z2tn/zs7O/9DQ0P/X19f/zc3N/8XFxf/a2tr59vb2SfP09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD6+voA+/v7Se7u7vni4uL/4eHh/+Dg4P/e3t7/3d3d/9zc3P/b29v/2tra/9nZ2f/Y2Nj/1tbW/9XV - 1f/S0tL/zs7O/83Nzf/MzMz/ysrK/8nJyf/Ix8f/x8fH/9zc3Pn39/ZJ9PT0AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPr6+gD7+/tJ7+/v+eXl5f/k5OT/4uLi/+Hh4f/g4OD/39/f/97e3v/d3d3/3Nzc/9ra - 2v/Z2dn/2dnZ/9fX1//W1tb/1NXU/9PT0//S0tL/0dHR/9DQ0P/S0tL/5ubm8vf39z/19fUAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA+/v7APv7+0nx8fH55+fn/+bm5v/l5eX/5OTk/+Pj4//h4eH/4ODg/9/f - 3//e3t7/3d3d/9zc3P/h4eH/4+Pj/+Li4v/h4eH/4ODg/9/f3//e3t7/4ODg/+vr6/fy8vKB6ejoCOvr - 6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/sA/Pz8SfLy8vnq6un/6Ojo/+fn5//m5ub/5eXl/+Tk - 5P/j4+P/4uLi/+Dg4P/f39//3t7e/+Pj4//l5eX/5OTk/+Pj4//i4uL/4eHh/+Pj4//t7e338/Pzf+rq - 6gjt7e0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD8/PxJ9PT0+ezs7P/r6+v/6urq/+jo - 6P/n5+f/5ubm/+Xl5f/k5OT/4+Pj/+Li4v/h4OH/5eXl/+fn5//m5ub/5eXl/+Tk5P/l5eX/7u7u9/T0 - 9H7s7OwI7+/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8AP39/Un19fX57u7u/+3t - 7f/s7Oz/6+vr/+rq6v/p6en/5+fn/+bm5v/l5eX/5OTk/+Pj4//n5+f/6enp/+jo6P/n5+f/6Ojo//Dw - 8Pb19fV87e3tB/Dw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/PwA/f39Sff3 - 9/nx8fH/8PDw/+/v7//t7u3/7Ozs/+vr6//q6ur/6enp/+jo6P/n5uf/5uXl/+np6f/q6ur/6enp/+rq - 6v/x8fL29vb2e/Dw8Afy8vIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD9/f1J+Pj4+fPz8//y8vL/8fHx//Dw8P/v7+//7u7u/+zt7P/r6+v/6urq/+np6f/o6Oj/6+vr/+zs - 7P/t7e3/8/Pz9vf493ry8vIH9PT0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/f39AP39/Un6+vr59vb2//T09f/z8/P/8vLy//Hx8f/w8PD/7+/v/+7u7v/t7e3/6+vr/+rq - 6v/t7e3/8PDw//T09PXz8/N49PT0Bvb29gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD+/v4A/v7+Sfv7+/n4+Pj/9/f3//b29v/19fX/8/Pz//Ly8v/x8fH/8PDw/+/v - 7//u7u7/7e3t//Dw8P/29vX18vLyd9jY2Abi4uIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv7+wD6+vpH/Pz8+Pv7+//6+vr/+fn5//j4+P/39/f/9vb2//X1 - 9f/09fX/8/T0//Pz8//y8vL/9vb28/Ly8nTZ2dkF4+PjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7u7uAOrq6h74+Pic/v7+sv39/bH9/f2x/f39sfz8 - /LH8/Pyx/Pz8sfv7+7H7+/ux+/v7sfv7+7P09fRy3NzcB+Tk5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AA - AA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AA - AB/wAAA/8AAAf/AAAP/wAAH/8AAD//AAB//wAA//8AAf/ygAAAAwAAAAYAAAAAEAIAAAAAAAACQAAMIO - AADCDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeHhwD///8A5eXlNPLy8n729vaB9fX1gfX1 - 9YH19fWB9fX1gfX19YH19fWB9fX1gfX19YH09PSB9PT0gfT09IH09PSB9PT0gfT09IH09PSB8/PzgfPz - 84Hz8/OB8/PzgfPz84Hz8/OB8/PzgfPz84Hz8/OB8/PzgfLy8oHy8vKB8vLygfPz84Hw8PB+5eXlNP// - /wCHh4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANra2gDa29sK7+/vtuXl - 5f/a2tr/2dnZ/9jY2P/Y2Nj/2NjY/9fX1//X19f/19fX/9bW1v/W1tb/1dXV/9XV1f/V1dX/1NTU/9TU - 1P/U1NT/09PT/9PT0//T0tP/0tLS/9LS0v/R0dH/0dHR/9DQ0P/Q0ND/0NDQ/8/Pz//Pz8//z8/O/8/P - z//e3t7/7O3tttzc3ArZ2dkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPr6 - +gD///8Q7u7uzc3Nzf+5ubn/uLi4/7e3t/+3t7b/tra2/7W1tf+0tLT/tLS0/7Ozs/+ysrL/srKy/7Gx - sf+wsLD/r6+v/66urv+urq7/ra2t/6ysrP+srKz/q6ur/6qqqv+qqqr/qamp/6ioqP+nqKf/p6en/6am - pv+lpaX/pKSk/6SkpP+9vb3/6enpzf///xD5+fkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPv7+wD///8Q7e3tzcrJyv+2trb/tbW1/7S0tf+0tLT/s7Oz/7Kysv+ysbH/sbGx/7Cw - sP+vr6//rq6v/66urv+tra3/rKys/6urq/+rqqv/qqqq/6mpqf+oqKj/qKeo/6enp/+mpqb/paWl/6Wl - pf+kpKT/o6Oj/6Kiov+hoqL/oaCh/6CgoP+4uLj/5+fnzf///xD6+voAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv7+wD///8Q7u7uzcvLy/+4uLj/t7e3/7e3t/+2trb/tbW1/7S0 - tP+ztLT/s7Oz/7Kysv+xsbH/sLCx/7CwsP+vr6//rq6u/62urv+tra3/rKys/6urq/+qqqr/qqmq/6mp - qf+oqKj/p6en/6enpv+mpqb/paWl/6SkpP+kpKT/o6Oj/6Kiov+6urr/5+fnzf///xD6+voAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv7+wD///8Q7u7uzczMzP+6urr/ubm5/7i4 - uP+3uLf/t7e3/7a2tv+1tbX/tLS0/7S0tP+zs7P/srKy/7Gxsf+xsbH/sLCw/6+vr/+urq7/rq6u/62t - rf+srKz/q6ur/6qqqv+qqqr/qamp/6ioqP+np6f/p6en/6ampv+lpaX/pKSk/6SkpP+7u7v/6Ojozf// - /xD6+voAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q7u7uzc3N - zf+7u7v/u7u7/7q6uv+5ubn/uLi4/7i4uP+3t7f/tra2/7W1tf+0tLT/tLS0/7Ozs/+ysrL/sbGx/7Gx - sf+wsLD/r6+v/66urv+urq7/ra2t/6ysrP+rq6v/qqqq/6qqqv+pqan/qKio/6enp/+np6f/pqam/6Wl - pf+8vLz/6Ojozf///xD6+voAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8 - /AD///8Q7+/vzc/Pz/+9vb3/vLy8/7u7u/+7u7v/urq6/7m5uf+4uLj/uLi4/7e3t/+2trb/tbW1/7S0 - tP+0tLT/s7Oz/7Kysv+xsbH/sbGx/7CwsP+vr6//rq6u/66urv+tra3/rKys/6urq/+qqqv/qqqq/6mp - qf+oqKj/p6en/6enp/++vb7/6enpzf///xD6+voAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPz8/AD///8Q7+/vzdDQ0P++vr7/vr69/729vf+8vLz/u7u7/7u7u/+6urr/ubm5/7m4 - uP+4uLj/t7e3/7a2tv+1tbX/tLS0/7OztP+zs7P/srKy/7Gxsf+xsbH/sLCw/6+vr/+urq7/rq6u/62t - rf+srKz/q6ur/6qqqv+qqqr/qamp/6ioqP+/vr//6enpzf///xD6+voAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q8PDwzdHR0f/AwMD/wsLC/8XFxf/ExMT/wMDA/7y8 - vP+7u7v/u7u7/7q6uv+5ubn/ubm5/7y8vP++vr7/vr6+/729vf+8vL3/vLy8/7i4uP+zs7P/s7Oz/7e3 - t/+4uLj/tbS1/6+vr/+vr6//s7Oz/7W1tf+ysrL/rKys/6qqqv/AwMD/6urqzf///xD7+/sAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q8PDwzdLS0v/FxcX/1tXW/9/f - 3//g4OD/1dTU/8LCwv+9vb3/vLy8/7y8u/+8vLz/x8fH/9zc3P/f39//3d3d/93d3f/d3d3/3d3d/9nZ - 2f/CwsL/xMTF/9fX1//b29v/09PT/7y8vP/AwMD/1tbW/9nZ2f/U1NT/vr6+/62trf/BwcH/6urqzf// - /xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q8PHwzdPT - 0//Nzc3/2tra/2BgYP94eHj/5eXl/8nJyf++vr7/vr6+/729vf/DwsL/3t7e/6Ojo/9OTk7/RERE/0VF - Rf9ERET/TU1N/6Wlpf/e3d3/3t7e/5GRkf9PT0//zMzM/9LT0//b29v/l5eX/0tLS/++vr7/zs7O/7Cw - sP/CwsL/6urqzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8 - /AD///8Q8fHxzdTU1P/Q0ND/2NjY/yMjI/9FRUX/5+fn/8zMzP/AwMD/v8DA/76+vv/Jycn/29vb/zQ0 - NP8CAgL/ICAg/yMjI/8hISH/AwMD/z4+Pv/j5OP/6urq/2xsbP8LCwv/w8PD/+Xl5f/Y2Nj/Ly8v/y4u - Lv/W1tb/xcXF/6+vr//Dw8P/6+vrzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPz8/AD///8Q8fHxzdXV1f/R0tH/2NjY/yMjI/9FRUX/5+jn/83Nzf/CwsL/wcHB/8DA - wP/MzMz/1tbW/yUlJf8hISH/z8/P/9/f3//T09P/Jycn/zc3N//l5eX/7e3t/2xsbP8LCwv/xsbG//j4 - +P+enp7/BgYG/4aGhv/d3d3/uLi4/7CwsP/ExMT/6+vrzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q8fLxzdfX1//T09P/2NjY/yMjI/9FRUX/6Ojo/87O - zv/Dw8P/w8PD/8LCwv/Nzc3/1tbW/yUlJf8lJSX/2tra/+Li4v/h4eH/Kysr/zc3N//l5eX/7e3t/2xs - bP8LCwv/y8vL//b29v9JSUn/KSkp/9PT0//Kysr/tLS0/7Kysv/Gxcb/6+vrzf///xD7+/sAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q8vLyzdjY2P/U1NT/2dnZ/yMj - I/9FRUX/6enp/9HR0f/Gxsb/xsbG/8TExP/Ozs7/19fX/yUlJf8lJSX/1tbW/9vb2//e3t7/Kysr/zc3 - N//m5ub/7e3u/2xsbP8LCwv/z8/P/8PDw/8ODg7/fHx8/+Hh4f+8vL3/tLS0/7S0tP/Hx8f/7Ozszf// - /xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD///8Q8vLyzdnZ - 2f/W1db/2dnZ/yMjI/9GRkb/8/Pz/+fn5//h4eH/39/f/9XV1f/U1NT/19fX/yUlJf8lJSX/1tbW/9ra - 2v/f39//U1NT/11dXf/m5ub/7O3s/2xsbP8LCwv/ycnJ/2NjY/8cHBz/ycnJ/9HR0f+4uLj/tra2/7W1 - tf/IyMj/7Ozszf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8 - /QD///8Q8/Pzzdra2v/X19f/2tra/yUlJf8pKSn/lpaW/5eXl/+VlZX/oqKi/9fX1//m5ub/2tra/yQk - JP8lJSX/19fX/9TU1P/b29v/3d3d/93d3f/c3dz/5+fn/21sbf8ODg7/n5+f/x0dHf90dHT/4+Pj/8LC - wv+4uLj/uLi4/7e3t//Jycn/7e3tzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD///8Q8/Pzzdvc2//Y2Nj/2tra/ycnJ/8AAAD/AQEB/wEBAf8BAQH/AAAA/2Zm - Zv/x8fH/3t7e/yQkJP8lJSX/2NjY/9DQ0P/IyMf/zMzL/8rKyv/Jycj/4uLi/21tbf8LCwv/SkpK/xgY - GP/Dw8P/1tbW/7y8vP+6urr/ubm5/7m5uf/Kysr/7Ozszf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9PT0zd3d3f/Z2dn/29vb/yQkJP8tLS3/oqKi/6Wl - pf+NjY3/CwsL/zw8PP/s7Oz/4ODg/yQkJP8lJSX/2NjY/9DR0f/ExMT/xMTE/8PDw//FxcX/4uPj/25u - bv8AAAD/AAAA/1hYWP/o6Oj/ycnJ/7y8vP+8vLz/u7u7/7m5uf/HyMj/7Ozszf///xD7+/sAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9PT0zd7e3v/b29v/29vb/yMj - I/9GRkb/7+/v/+np6f/Pz8//ExMT/zo6Ov/t7e3/4ODg/yQkJP8lJSX/2NjY/9LS0v/IyMj/ysrK/8nJ - yf/Jycn/5OPj/25ubv8CAgL/FRUV/zs7O//e3t7/z8/P/76+vv+9vb3/u7u7/7a2tv/Hx8f/7Ozszf// - /xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9PT0zd/f - 3//c3Nz/3Nzc/yMjI/9ERET/4+Pj/9XV1f/Gxsb/ExMT/zo6Ov/t7e3/4ODg/yQkJP8lJSX/2dnZ/9bW - 1v/Z2dn/5+fn/+bm5v/a2tr/5+fn/21tbf8ODg7/enp6/w8PD/+YmJj/4eHh/8TExP+9vr7/uLm4/7a2 - tv/Jycj/7Ozszf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD///8Q9fX1zeDg4P/d3d3/3Nzc/yMjI/9ERET/4+Pj/9TU1P/Gxsb/ExMT/zo6Ov/t7e3/4eHh/yQk - JP8lJSX/2dnZ/97e3v/k5OT/jo6O/5SUlP/o6Oj/7u7u/21tbf8MDAz/ubm5/zY2Nv8/Pz//4uLi/87O - zv+7u7v/ubm5/7i4uP/Kysr/7e3tzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD///8Q9fX1zeHh4f/f39//3d3d/yMjI/9ERET/4+Pj/9TU1P/Gxsb/ExMT/zo6 - Ov/u7u7/4eHh/yQkJP8lJSX/2tra/+Li4v/g4OD/Kysr/zc3N//o6Oj/8fHx/21tbf8LCwv/zs7O/42N - jf8KCgr/q6ur/93d3f+/vr//urq6/7q6uv/Ly8v/7e3tzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9fX1zePj4v/g4OD/3d3d/yMjI/9FRUX/6Ojo/97e - 3v/Kysr/ExMT/zo6Ov/u7u7/4eHh/yQkJP8lJSX/3t7e/+rq6v/k5OT/Kysr/zc3N//p6en/8vLy/21t - bf8LCwv/zs7O/9vb2/8dHR3/SUlJ/+Dg4P/Kysr/vLy8/7u7u//MzMz/7u7uzf///xD7+/sAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9vb2zeTk5P/h4uH/3t7e/yQk - JP8/Pz//3d3d/93d3f/AwMD/ERER/zs7O//u7u7/4uLi/yUlJf8hISH/0NDQ/+Li4v/V1dX/Jycn/zg4 - OP/p6en/8vLy/21tbf8LCwv/ysrK//39/f9paWn/BwcH/6qqqv/c3Nz/wMDA/729vf/Ozs7/7u7uzf// - /xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9vb2zeXl - 5f/j4+P/3t7e/ycnJ/8HBwf/IiIi/yMjI/8eHh7/AAAA/09PT//x8fH/6Ofn/zg4OP8CAgL/ICAg/yMj - I/8hISH/AwMD/0BAQP/p6en/8fHx/21tbf8LCwv/x8fH//b29v+3t7f/CgoK/1JSUv/i4uL/ysrK/7+/ - v//Pz8//7u7uzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD///8Q9vb3zebm5v/j4+P/5ubm/4WFhf9tbW3/bW1t/21tbf9tbW3/cXFx/8DAwP/t7e3/7e3t/7Ky - sv9ubm7/bW1t/21tbf9tbW3/bW1t/7CwsP/p6en/6urq/6qqqv91dXX/19fX/+Tk5P/i4uL/ioqK/319 - ff/b29v/0NDQ/8HBwf/Q0ND/7+/vzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD///8Q9/f3zefn5//g4OD/6enp//Py8//09PT/8/Pz//Pz8//z8/P/8fHy/+rq - 6v/d3d3/3t7e/+rq6v/w8PD/8fHx//Hw8f/w8PD/7+/v/+jo6P/Z2dn/29vb/+np6f/s7Oz/4uLi/9LS - 0v/X19f/5+jo/+np6f/d3d3/ysrK/8LCwv/S0tL/7+/vzf///xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q9/f3zenp6f/g4OD/4eHh/+Li4v/h4eH/4eHh/+Dg - 4P/f39//3t7e/9zc3P/a2tr/2dnZ/9ra2v/b29v/29vb/9ra2v/Z2dn/2NjY/9bW1v/T09P/0tLS/9HR - 0f/Q0ND/zs7O/8rKyv/Kysr/zMzM/8zMzP/Jycn/xsbG/8XFxf/T09P/8PDwzf///xD7+/sAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q+Pj4zerq6v/i4uL/4eHh/+Dg - 4P/f39//39/f/97e3v/d3d3/3dzc/9zc3P/b29v/29ra/9rZ2v/Z2dn/2NjY/9fX1//W1tb/1dXV/9XV - 1f/U09P/0NDP/83Nzf/Nzc3/zMzM/8zLzP/Ky8r/ycnJ/8jIyP/IyMj/x8fH/8bGxv/U1NT/8PDwzf// - /xD7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD///8Q+Pj4zevr - 6//k5OT/4+Pj/+Li4v/h4eH/4OHh/+Dg4P/f39//3t7e/93d3f/d3d3/3Nzc/9vb2//b29v/2tra/9nZ - 2f/Y2Nj/2NjY/9bW1v/S0tL/0NDQ/8/Pz//Ozs7/zc7O/83Nzf/MzMz/y8vL/8rKy//Kycn/yMjI/8jI - yP/X19f/8vLyzf///xD8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD///8Q+fn5zezs7P/l5eX/5eXl/+Tk5P/j4+P/4uLi/+Li4f/g4eH/4ODg/9/f3//e3t7/3t7e/93d - 3f/c3Nz/29vb/9vb2//a2tr/2tra/9ra2v/Z2dn/2NjY/9jY2P/X19f/1tbW/9XV1f/V1dX/1NTU/9PT - 0//T0tP/0tLS/9XV1f/n5+f/9PT0uPf39wr19fUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD///8Q+fn5ze7t7f/n5+f/5ubm/+bl5f/l5eX/5OTk/+Pj4//i4+P/4uLi/+Hh - 4f/g4OD/39/f/97e3//e3t7/3d3d/9zc3P/b29v/3Nzc/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg - 4P/g4OD/39/f/97e3v/e3t7/4eHh/+zs7f/09PTO6+vrNP///wDBwcEAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD///8Q+fn5ze/v7//p6ej/6Ojo/+fn5//m5ub/5ubm/+Xl - 5f/k5OT/4+Pj/+Pj4//i4uL/4eHh/+Dg4P/f39//39/f/97e3v/d3d3/3t7e/+Tk5P/k5OT/5OTk/+Pj - 4//i4uL/4uLi/+Hh4f/h4eH/4ODg/+Dg4P/i4uL/7e3t//T09M7t7e0y////ALS0tAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD///8Q+vr6zfDw8P/q6ur/6enp/+np - 6f/o6Oj/5+fn/+bm5v/m5ub/5eXl/+Tk5P/j4+P/4+Pj/+Li4v/h4eH/4ODg/9/f3//f39//39/f/+Xl - 5f/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Li4v/i4uL/4eHh/+Tk5P/u7u7/9fX1zO7u7jH///8Azc3NAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD///8Q+vr6zfHx - 8f/s7Oz/6+vr/+rq6v/p6en/6enp/+jo6P/n5+f/5ubm/+bm5v/l5eX/5OTk/+Pj4//j4+P/4uLi/+Hh - 4f/g4OD/4eHh/+bm5v/m5+b/5ubm/+Xl5f/l5eX/5OTk/+Tk5P/j4+P/5ubm/+/v7//19fXL7u7uMf// - /wDExMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+ - /gD///8Q+/v7zfLy8v/t7e3/7e3t/+zs7P/r6+v/6urq/+np6f/p6en/6Ojo/+fn5//m5ub/5ubm/+Xl - 5f/k5OT/4+Pj/+Pj4//i4uL/4uLi/+jo6P/o6Oj/5+fn/+bm5//m5ub/5eXl/+Xl5f/n5+f/8PDw//b2 - 9srw8PAv////ALCwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP7+/gD///8Q+/v7zfP08//v7+//7u7u/+3t7f/t7e3/7Ozs/+vr6//q6ur/6enp/+np - 6f/o6Oj/5+fn/+bn5//m5ub/5eXl/+Tk5P/k4+T/5OTk/+np6f/p6en/6Ojo/+jo6P/n5+f/5+fn/+np - 6f/x8fH/9/f3yfLx8S7///8Az8/PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD///8Q+/v7zfX19f/w8PH/8PDw/+/v7//u7u7/7u7u/+3t - 7f/s7Oz/6+vr/+rq6v/q6ur/6enp/+jo6P/n5+f/5+fn/+bm5v/l5eX/5uXm/+rq6v/q6ur/6urp/+np - 6f/o6Oj/6urq//Ly8v/39/fI8vLyLf///wDGxsYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD///8Q/Pz8zfb29v/y8vL/8fHx//Hw - 8f/w8PD/7+/v/+7v7v/u7u7/7e3t/+zs7P/r7Oz/6uvr/+rq6v/p6en/6Ojo/+fo6P/n5+f/5+fn/+vr - 6//r6+v/6+vr/+rq6v/s7Oz/8/Pz//j4+Mf09PQs/Pz8AN/f3wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD///8Q/Pz8zff3 - 9//09PT/8/Pz//Ly8v/y8fL/8fHx//Dw8P/v7+//7+7v/+7u7v/t7e3/7ezs/+zs7P/r6+v/6urq/+np - 6f/o6Oj/6enp/+zt7f/t7e3/7Ozs/+7u7v/19fX/+fn5xvX19Sv///8A1NTTAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+ - /gD///8Q/Pz8zfj4+P/29vb/9fX1//T09P/z8/P/8vLy//Hy8v/x8fH/8PDw/+/v8P/v7+//7u7u/+3t - 7f/s7ez/7Ozs/+vr6//q6ur/6urq/+7u7v/u7u7/8PDw//b29v/09PTF8vLyK/n5+QDKysoAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP7+/gD///8Q/f39zfn5+f/39/f/9vb3//b29v/19fX/9PT0//Pz8//z8vL/8vLy//Hx - 8f/w8PD/8PDw/+/v7//u7u7/7e3t/+3t7f/s7Oz/7Ozs/+/v7//x8fH/9/f3//Pz88Tj4uMp9PT0ALW1 - tQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v8Q/f39zfv6+v/5+fn/+Pj4//f39//29/f/9vb2//X1 - 9f/09PT/8/Pz//Py8//y8vL/8fHx//Dw8P/v8PD/7+/v/+7u7v/t7e3/7e3t//Ly8v/3+Pf/9PT0w+Li - 4ij4+PgAlpaWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD9/f0Q/f39zfz8/P/6+vr/+vr6//n5 - +f/4+Pj/+Pj4//f39//29vb/9fX1//T19P/09PT/8/Pz//Ly8//y8vL/8fHx//Dw8P/v8PD/8fHx//j4 - +P/09PTC5OTjKPPz8wCvr68AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANvb2wDW1tYK9vb2tv39 - /f/9/f3//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+vr6//r6+v/5+vr/+fn5//n5+f/4+Pj/+Pj4//j4 - +P/3+Pj/+fn5//T09MDk5OQm9PT0AK6urgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeH - hwD///8A5ubmNPf3937+/v6B/v7+gf7+/oH+/v6B/v7+gf7+/oH+/v6B/f39gf39/YH9/f2B/f39gf39 - /YH9/f2B/f39gf39/YH9/f2B+vr6fObm5ij9/f0AfX19AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AAAAAH8AAPwA - AAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/ - AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA - AAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/ - AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA - AAAAPwAA/AAAAAA/AAD8AAAAAH8AAPwAAAAA/wAA/AAAAAH/AAD8AAAAA/8AAPwAAAAH/wAA/AAAAA// - AAD8AAAAH/8AAPwAAAA//wAA/AAAAH//AAD8AAAA//8AAPwAAAH//wAA/AAAA///AAD8AAAH//8AAPwA - AA///wAA/gAAH///AAAoAAAAQAAAAIAAAAABACAAAAAAAABAAADCDgAAwg4AAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDw8MAvLy8Atvb2zL29vZT+/v7Uvr6+lL6+vpS+vr6Uvr6 - +lL6+vpS+vr6Uvr6+lL6+vpS+vr6Uvr6+lL6+vpS+vr6Uvr6+lL6+vpS+vr6Uvr6+lL6+vpS+fr5Uvn5 - +VL5+flS+fn5Uvn5+VL5+flS+fn5Uvn5+VL5+flS+fn5Uvn5+VL5+flS+fn5Uvn5+VL5+flS+fn5Uvn5 - +VL5+flS+Pn5Uvj5+VL5+flS+fn5UvX19VPc29wyvLy8AsPCwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8/PzAOHh4UDx8fHf7u7u+erq - 6vjp6en46enp+Onp6fjp6en46enp+Onp6Pjo6Oj46Ojo+Ojo6Pjo6Oj46Ojo+Ofo6Pjn5+f45+fn+Ofn - 5/jn5+f45+fn+Ofn5/jm5ub45ubm+Obm5vjm5ub45ubm+Obm5vjl5eX45eXl+OXl5fjl5eX45eXl+OTl - 5fjk5OT45OTk+OTk5Pjk5OT45OTk+OPk4/jj4+P44+Pj+OTk5Pjp6ur57/Dw3+Hh4UHy8vIAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPn5 - +QDx8fF97Ozs/9XV1f/Jycn/yMjI/8fHx//Hx8f/xsfG/8bGxv/Gxsb/xcXF/8XFxf/FxMX/xMTE/8TE - xP/Dw8P/w8PD/8LCwv/CwsL/wsLC/8HBwf/BwcH/wMDA/8DAwP+/v7//v7+//7+/v/++vr7/vr6+/76+ - vv+9vb3/vb29/7y8vP+8vLz/u7u7/7u7u/+6urr/urq6/7q6uv+5ubn/ubm5/7i4uP+5ubn/yMjI/+bm - 5v/w8PB99vb2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADz8vMA+Pj4f+Xk5P/ExMT/tra2/7a1tf+1tbX/tbW0/7S0tP+zs7P/s7Oz/7Ky - sv+ysrL/sbGx/7Gwsf+wsLD/r6+v/6+vr/+urq//rq6u/62trf+sraz/rKys/6urq/+rq6v/qqqq/6qq - qv+pqan/qamp/6ioqP+oqKj/p6en/6anpv+mpqb/paWl/6Wlpf+kpaT/o6Sk/6Ojo/+ioqL/oqKi/6Gh - of+hoaH/oKGh/7Kysv/c3Nz/9vb2f+7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8vLyAPj4+H/k5OT/w8PD/7a2tv+2trb/tbW1/7S0 - tP+0tLT/s7Oz/7Ozs/+ysrL/srGx/7Gxsf+xsbH/sLCw/6+vr/+vr6//rq6u/66urv+tra3/ra2t/6ys - rP+rq6v/q6qr/6qqqv+qqqr/qamp/6ipqP+oqKj/p6en/6enp/+mpqb/pqam/6Wlpf+kpaT/pKSk/6Oj - o/+jo6P/oqKi/6Kiov+hoaH/oKCg/6CgoP+wsLD/2tra//X19X/t7e0AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLy8gD4+Ph/5OTk/8TE - xf+4uLj/t7e3/7a2tv+2trb/tbW1/7W0tf+0tLT/tLSz/7Ozs/+ysrP/srKy/7Gxsf+xsbH/sLCw/7Cw - sP+vr6//rq6u/66urv+tra7/ra2t/6ysrP+rq6v/q6ur/6qqqv+qqqr/qamp/6mpqf+oqKj/p6eo/6en - p/+np6b/pqam/6Wlpf+kpaT/pKSk/6SkpP+jo6P/oqKj/6Kiov+hoaH/sbGx/9vb2//19fV/7e3tAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADz8vMA+Pj4f+Tk5f/FxcX/ubm5/7i4uP+4uLj/t7e3/7e3t/+2trb/tbW1/7S0tf+0tLT/tLS0/7Oz - s/+zsrL/srKy/7Gxsf+xsbH/sLCw/6+wr/+vr6//r66u/66urv+urq3/ra2t/6ysrP+sq6v/q6ur/6qq - qv+qqqr/qamp/6mpqf+oqKj/p6en/6enp/+np6f/pqam/6Wlpf+lpaX/pKSk/6SkpP+jo6P/o6Oj/7Ky - sv/b29v/9fX1f+7u7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA8/LzAPj4+H/l5eX/xsbG/7q6uv+5ubn/ubm5/7i4uP+4uLj/t7e3/7e3 - t/+2trb/tbW1/7S1tf+0tLT/tLS0/7Ozs/+ysrL/srKy/7Gxsf+xsbH/sLCw/7CwsP+vr6//rq+u/66u - rv+urq7/ra2t/6ysrP+srKv/q6ur/6qqqv+qqqr/qamp/6mpqf+oqKj/qKeo/6enp/+np6f/pqam/6Wl - pf+lpaX/pKSk/6SkpP+ztLP/3Nzc//X19X/u7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPPz8wD4+Ph/5eXl/8fHx/+7u7v/u7u7/7q6 - uv+6ubn/ubm5/7i4uP+4uLj/uLe3/7e3t/+2trb/tbW1/7W1tf+0tLT/tLS0/7Ozs/+zsrP/srKy/7Gx - sf+xsbH/sLGx/7CwsP+vr6//rq+u/66urv+urq7/ra2t/6ysrP+srKz/q6ur/6qqqv+qqqr/qqqq/6mp - qf+oqKj/qKeo/6enp/+np6f/pqam/6alpv+lpaX/tLS0/9zc3P/19fV/7u7uAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/MA+Pj4f+bm - 5v/JyMj/vLy8/7y8vP+7u7v/u7u7/7q6uv+5urr/ubm5/7i4uP+4uLj/t7i3/7e3t/+2trb/tbW1/7W1 - tf+0tLT/tLS0/7Ozs/+zs7P/srKy/7Gxsf+xsbH/sLCx/7CwsP+vr6//r6+v/66urv+urq7/ra2t/62t - rP+srKz/q6ur/6qqqv+qqqr/qqqq/6mpqf+oqKj/qKio/6enp/+np6f/pqam/7W1tf/d3d3/9vb2f+/v - 7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA8/PzAPn5+X/m5ub/ycnJ/76+vv+9vb3/vLy8/7y8vP+7u7v/u7u7/7q6uv+6urr/ubm5/7i4 - uP+4uLj/uLi4/7e3t/+2trb/tbW2/7W1tf+0tLT/tLS0/7Ozs/+zs7P/srKy/7Gxsf+xsbH/sbGx/7Cw - sP+vr6//r6+v/66urv+urq7/ra2t/62srP+srKz/q6ur/6qqq/+qqqr/qqqq/6mpqf+oqKj/qKio/6en - p/+2trb/3d3d//b29n/v7+8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPPz8wD5+fl/5+fn/8rKyv+/vr7/vr6+/76+vv+9vb3/vLy8/7y8 - vP+7u7v/u7u7/7q6uv+6urr/ubm5/7m4uP+4uLj/uLi4/7e3t/+2trb/tbW1/7W1tf+0tLT/tLS0/7Oz - s/+zsrP/srKy/7Gxsf+xsbH/sbGx/7CwsP+vr6//rq6u/66urv+urq7/ra2t/62trf+srKz/q6ur/6qq - qv+qqqr/qqqq/6mpqf+pqan/t7e3/97e3v/29vZ/7+/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz8/MA+fn5f+fn5//Ly8v/wMDA/8C/ - v//AwMD/wcHB/8HBwf+/v7//vb29/7y8vP+7u7v/u7u7/7u6uv+6urr/ubm5/7m4uf+4uLj/urq6/7q6 - uv+5urn/ubm5/7i4uP+4uLj/uLe4/7e3t/+0tbT/srKy/7Kysv+ysrL/tLS0/7S0tP+zsrL/sLCw/66u - rv+urq7/r6+v/7CwsP+wsLD/rq6u/6ysrP+qqqr/qqqq/7i4uP/e3t7/9vb2f/Dw8AAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PT0APn5 - +X/o6Oj/zMzM/8LCwv/Hx8f/0tLS/9nY2P/Y2Nj/0NDQ/8XFxf++vr7/vb29/7y8vP+7u7v/u7u7/7q7 - uv+7vLv/w8PD/83Nzf/T09P/1NTU/9TU1P/U1NT/09PT/9PT0//Q0ND/x8bH/7q6uv+2trb/wcHB/83N - zf/Q0ND/zMzM/7+/v/+zs7P/tLW0/8LBwv/MzMz/zs7O/8nJyf+8vLz/r6+v/6urq/+5ubn/39/f//f3 - 93/w8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPT09AD5+fl/6Ojo/83Nzf/FxcX/1tbW/+Hh4f/V1dX/2NjY/+Xl5f/U1NT/wsLB/76+ - vv+9vb3/vb29/7y8vP+8vLz/xsbG/9vb2//p6en/2tra/9TU1P/U1NT/1NTU/9TU1P/U09P/3t7e/+Xl - 5f/Pz8//xsbG/9jZ2f/X19f/0tLS/93d3f/Y2Nj/wMDA/8bGxv/e3t7/2NjY/9HR0f/b29v/1dXV/7m5 - uf+tra3/urq6/9/f3//39/d/8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD09PQA+fn5f+np6f/Ozs7/ycnJ/+Li4v+3t7f/ISEh/zc3 - N//b29v/39/f/8XFxf+/v7//vr6+/76+vv+9vb3/wMDA/9XU1f/l5eX/dnZ2/ycnJ/8dHR3/Hh4e/x4e - Hv8eHh7/HR0d/zY2Nv+rq6v/5eXl/9nZ2f/l5eX/XFxc/xcXF/+Kior/6urq/87Ozv/a2tr/z8/P/zc3 - N/8gICD/qKio/+Hh4f+8vLz/rq6u/7u7u//f39//9/f3f/Dw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9fX1APn5+X/p6en/z8/P/8vL - yv/l5uX/sLCw/wMDA/8dHR3/2dnZ/+Li4v/Hx8f/wMDA/8DAwP+/v7//vr6+/8TExP/f39//w8PD/xIS - Ev8AAAD/AgIC/wMDA/8DAwP/AwMD/wEBAf8AAAD/S0tL/+rq6v/j4+P/6enp/0dHR/8AAAD/fHx8/+/v - 7//b29v/6urr/4WFhf8AAAD/Li4u/9vb2//X19f/uLe3/6+ur/+8vLz/4ODg//f393/w8PAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX1 - 9QD5+fl/6enp/9DQ0P/MzMz/5ubm/7CwsP8DAwP/HR0d/9nZ2f/i4uL/yMjI/8HCwv/BwcH/wMHB/7+/ - wP/FxcX/4+Pj/6+vsP8FBQX/AwMD/4KCgv+2trb/sbGx/7e3t/9XV1f/AAAA/0VFRf/s7Oz/5+fn/+rq - 6v9HR0f/AAAA/3x8fP/19fX/6+vr/93d3f81NTX/AAAA/3t7e//p6en/x8fH/7Ozs/+wsLD/vb29/+Dg - 4f/39/d/8PDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD19fUA+fn5f+rq6v/R0dH/zc3N/+fn5/+wsLD/AwMD/x0dHf/Z2dn/4+Pj/8nJ - yf/CwsP/wsLC/8LCwv/BwcH/x8fH/+Pj4/+wsLD/BQUF/wUFBf+1tbX/9/f3/+7u7v/8/Pz/enp6/wAA - AP9FRUX/7e3t/+fn5//q6ur/R0dH/wAAAP98fHz//Pz8//r6+v+lpaX/AwMD/yMjI//Q0ND/29vb/7y8 - vP+xsbH/sbGx/76+vv/h4eH/9/f3f/Hx8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9fX1APr6+n/q6ur/0tLS/87Ozv/n5+f/sLCw/wMD - A/8dHR3/2dnZ/+Tk5P/Kysr/xMTE/8PDw//Dw8P/wsLC/8jIyP/k5OT/sLCw/wUFBf8FBQX/sLCw/+fn - 5//b29v/8fHx/3h4eP8AAAD/RUVF/+3t7f/o6Oj/6urq/0dHR/8AAAD/fX19///////z8/P/S0tL/wAA - AP98fHz/6urq/8rKyv+2trb/s7Oy/7Kysv+/v7//4eHh//f393/x8fEAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPX19QD6+vp/6+vr/9PT - 0//Pz8//6Ojo/7Gxsf8DAwP/HR0d/9nZ2f/k5OT/y8vL/8XFxf/FxcX/xMTE/8PDw//Iycj/5OTk/7Cw - sP8FBQX/BQUF/6+vr//k5OT/1tfX//Dw8P94eHj/AAAA/0VFRf/t7e3/6Ojo/+rq6v9HR0f/AAAA/319 - ff//////xMTE/w8PD/8ZGRn/zc3N/97e3v+/v7//tLS0/7S0tP+0s7T/wMDA/+Li4v/39/d/8fHxAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD29vYA+vr6f+zr7P/U1NT/0NDQ/+jo6f+xsbH/AwMD/x0dHf/a2tr/6urq/9XV1f/Q0ND/0NDQ/87O - zv/Jycn/y8vL/+Xl5f+wsLD/BQUF/wUFBf+wsLD/5eXl/9fX1//w7/D/eHh4/wAAAP9FRUX/7e3t/+jo - 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 - fP/39/f/7u7u/+Pj4/83Nzf/AAAA/1xcXP/r6+v/1dXV/8LCwv+/v7//ysrK/+bm5v/4+Ph/8/PzAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD5+fkA+/v7f/Ly8v/j4+P/4ODg/+/v7//Gxsb/S0tL/0dHR/9HR0f/R0dH/0dHR/9HR0f/RkZG/1hY - WP/Nzc3/8PDw/+vr6//v7+//jIyM/0ZGRv9HR0f/R0dH/0dHR/9HR0f/R0dH/0xMTP+2trb/7u7u/+bl - 5f/t7e3/e3t7/0JCQv+fn5//8PDw/+Li4v/t7e3/pKSk/0VFRf9bW1v/2NjY/93d3f/Gxsb/wcHB/8vL - y//m5ub/+Pj4f/Pz8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA+fn5APv7+3/z8/P/5OTk/+Dg4P/o6Oj/8vLy//Pz8//z8/P/8/Pz//Pz - 8//z8/P/8/Pz//Ly8v/y8vL/7+/v/+Li4v/e3t7/6Ojo//Lx8v/x8fH/8vLy//Ly8v/y8fL/8fHx//Hx - 8f/w8PD/7u7u/+Dg4P/b29v/5+fn/+/v7//w8PD/7u7u/+Pj4//V1dX/3Nzd/+zs7P/u7u7/7e3t/+jo - 6P/W1tb/xcXF/8LBwv/MzMz/5+fn//j4+H/z8/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPn5+QD7+/t/8/Pz/+Xl5f/f39//4uLi/+fn - 5//q6ur/6urq/+rq6v/p6en/6enp/+np6f/o6Oj/5uXm/+Dg4P/a2tr/2dnZ/9zc3P/h4eH/5eXl/+bm - 5v/l5eX/5eXl/+Tk5f/k5OT/4uLi/9zc3P/V1dX/09PT/9nZ2f/e3t7/3t7e/9vc2//T09P/y8vL/87O - zv/X19f/29vb/9vb2//V1dX/y8vL/8TExP/Dw8P/zc3N/+fn5//4+Ph/8/PzAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD5+fkA+/v7f/T0 - 8//m5ub/4eHh/+Dg4P/g4OD/4ODg/+Dg4P/f39//39/f/97e3v/d3t3/3d3d/9zc3P/b29v/2tra/9nZ - 2f/Z2dn/2dnZ/9nZ2f/Z2dn/2NjY/9fY1//X19f/1tbW/9bW1v/U1NT/09PT/9LS0v/Q0ND/z87O/87O - zv/Nzc3/y8vL/8rKyf/Jycn/ysrK/8rKyv/Jycn/yMjI/8bGxv/FxcX/xcXF/87Ozv/o6Oj/+Pn4f/T0 - 9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA+vr6APz8/H/09PT/5+fn/+Li4v/h4uH/4eHh/+Dg4P/f39//39/f/97e3v/e3t7/3d3d/93c - 3P/c3Nz/3Nzc/9vb2//b29v/2tra/9nZ2f/Z2dn/2NjY/9jY2P/X19f/1tbW/9bW1f/V1dX/1dXV/9TU - 1P/R0dH/zs7O/83Nzf/Nzc3/zMzM/8zMzP/Ly8v/ysrK/8nKyf/Jycn/yMjI/8fHyP/Hx8f/x8fH/8bG - xv/Pz9D/6Ojp//n5+X/09PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPr6+gD8/Px/9fX1/+jo6P/j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg - 4P/f4OD/39/f/9/f3//e3t7/3d3d/93d3f/c3Nz/3Nzc/9vb2//b29v/2tra/9nZ2f/Z2dn/2NnY/9jY - 2P/X19f/1tbX/9bW1v/T09P/0NDQ/9DQz//Pz8//zs7O/83Nzf/Nzc3/zc3N/8zMzP/Ly8v/ysrL/8rK - yv/Jycn/yMjI/8jIyP/Hx8f/0NDR/+np6f/5+fl/9PT0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/sA/Pz8f/X19f/p6en/5OTk/+Tk - 5P/j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg4P/f4OD/39/f/9/f3//e3t7/3t3e/93d3f/c3Nz/3Nzc/9vb - 2//b29v/2tra/9na2f/Z2dn/2dnZ/9jY2P/V1dX/0tLS/9LS0v/R0dH/0NDQ/8/Pz//Pz8//zs7O/83N - zf/Nzc3/zM3M/8zMzP/Ly8v/y8rL/8rKyv/Jycn/ycnJ/9XV1f/t7e3/+vr6f/f39wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/v7APz8 - /H/19fX/6urq/+bm5v/l5eX/5eXk/+Tk5P/j4+P/4+Pj/+Li4v/i4uL/4eHh/+Dg4P/g4OD/39/f/9/f - 3//e3t7/3d7e/93d3f/c3Nz/3Nzc/9vb2//b29v/2tra/9nZ2f/b29v/29zc/9vb2//b29r/2tra/9rZ - 2f/Z2dn/2NnY/9jY2P/X19f/19fX/9bW1v/W1tb/1dXV/9XV1f/U1NT/1NTU/9nZ2f/n5+f/9PT0+PT0 - 9GL29vYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPv7+wD8/Px/9vb2/+vr6//n5+f/5ubm/+bm5v/l5eX/5eXl/+Tk5P/j4+P/4+Pj/+Li - 4//i4uL/4eHh/+Dg4P/g4OD/39/f/9/f3//e3t7/3t3e/93d3f/c3Nz/3Nzc/9vc2//b29v/397e/+Tk - 4//j4+P/4+Li/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4ODg/+Dg4P/f39//39/f/97e3v/e3t7/3t7e/+Li - 4v/t7e3/9fX19+/v74PNzc0J3d3dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7+/sA/Pz8f/b29v/s7Oz/6Ojo/+fn5//n5+f/5ubm/+bm - 5v/l5eX/5eXl/+Tk5P/j4+P/4+Pj/+Lj4//i4uL/4eHh/+Dg4P/g4OD/39/f/9/f3//e3t7/3t7e/93d - 3f/c3N3/3Nzc/9/f3//k5OT/5OTk/+Tj4//j4+P/4uLi/+Li4v/h4eL/4eHh/+Hh4f/h4OD/4ODg/+Dg - 4P/f39//39/f/+Pj4//t7e3/9fX19/Dw8IDOzs4J3t7eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+/v7AP39/X/39/f/7e3t/+np - 6f/p6en/6Ojo/+fn5//n5+f/5ubm/+bm5v/l5eX/5eXl/+Tk5P/j4+P/4+Pj/+Lj4//i4uL/4eHh/+Hh - 4f/g4OD/39/f/9/f3//e3t//3t7e/93d3f/g4OD/5eXl/+Xl5f/k5OT/5OTk/+Pj5P/j4+P/4uLi/+Li - 4v/i4uH/4eHh/+Hh4f/g4OD/4ODg/+Tk5P/u7u7/9vb29/Hx8YDS0tII39/fAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPv7 - +wD9/f1/9/f3/+7u7v/q6ur/6urp/+np6f/p6en/6Ojo/+jn6P/n5+f/5ubm/+bm5v/l5eX/5eXl/+Tk - 5P/k4+P/4+Pj/+Pj4//i4uL/4eHh/+Hh4f/g4OD/39/f/9/f3//e3t7/4eHh/+bm5v/l5uX/5eXl/+Xl - 5f/k5OT/5OTk/+Tk5P/j4+P/4uLi/+Li4v/i4uL/4uLi/+bm5v/u7u7/9vb29vLy8n7T09MI4ODgAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD8/PwA/f39f/j4+P/v7+//7Ozs/+vr6//q6ur/6urq/+np6f/p6en/6Ojo/+jo - 6P/n5+f/5+bn/+bm5v/l5uX/5eXl/+Tk5P/j5OT/4+Pj/+Pj4//i4uL/4eHi/+Hh4f/g4OD/39/f/+Li - 4v/n5+f/5ubm/+bm5v/m5eb/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+fn5//v7+//9vb29vLy - 8n3X19cI4ODgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8AP39/X/4+Pj/8PDw/+3t7f/t7e3/7Ozs/+vr - 6//q6+r/6urq/+np6f/p6en/6Ojo/+jo6P/n5+f/5ufm/+bm5v/m5ub/5eXl/+Tk5P/k5OT/4+Pj/+Pj - 4//i4uL/4uHi/+Hg4f/j4+P/6Ojo/+fn5//n5+f/5ubm/+bm5v/m5ub/5eXl/+Xl5f/k5OT/5OTk/+jo - 6P/w8PD/9/f39vPz83vY2NgH4uLiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD9/f1/+fn5//Hx - 8f/u7u7/7e3t/+3t7f/t7e3/7Ozs/+vr6//r6+v/6urq/+np6f/p6en/6Ojo/+jo6P/n5+f/5ubn/+bm - 5v/m5ub/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/5eXl/+np6f/o6Oj/6Ojo/+jo6P/n5+f/5ubm/+bm - 5v/m5ub/5ubm/+np6f/w8fD/9/f39fPz83rZ2dkH4uLiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD8/PwA/f39f/n5+f/y8vL/7+/v/+/v7//u7u7/7e3u/+3t7f/t7e3/7Ozs/+vr6//r6+v/6urq/+np - 6f/p6en/6eno/+jo6P/n5+f/5ufn/+bm5v/m5ub/5eXl/+Xl5P/k5OT/4+Pj/+bm5v/p6un/6enp/+np - 6f/o6Oj/6Ojo/+jn6P/n5+f/5+fn/+rq6v/x8fH/+Pj49fX19Xjc3NwG5eXlAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/Pz8AP39/X/5+fn/8/Pz//Dw8P/w8PD/8O/w/+/v7//u7u7/7u7u/+3t - 7f/t7e3/7Ozs/+vr6//r6+v/6urq/+np6f/p6en/6ejp/+jo6P/n5+f/5+fn/+bm5v/m5ub/5eXl/+Tk - 5P/n5+f/6urq/+rq6v/q6ur/6enp/+np6f/o6Oj/6Ojo/+vr6//y8vL/+Pj49PX19Xfd3d0G5eXlAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD9/f1/+vr6//T09P/y8vL/8fHx//Dw - 8P/w8PD/8O/w/+/v7//u7u7/7u7u/+3t7f/t7e3/7Ozs/+zs6//r6+v/6urq/+np6f/p6en/6enp/+jo - 6P/n5+f/5+fn/+bm5v/m5ub/6Ojo/+vs6//r6+v/6urq/+rq6v/q6er/6enp/+zs7P/z8vP/+Pj49Pb2 - 9nXf398G6OjnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/f39f/v6 - +//19fX/8/Pz//Lz8v/y8vL/8fHx//Hw8P/w8PD/8PDw/+/v7//u7u7/7u7u/+3t7f/t7e3/7Ozs/+zs - 7P/r6+v/6urq/+np6v/p6en/6enp/+jo6P/o5+f/5+fn/+np6f/s7Oz/7Ozs/+zs7P/r6+v/6+vr/+3t - 7v/z8/P/+fn59Pb29nXf398G6OjoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/f39AP39/X/7+/v/9vb2//T09P/z8/P/8/Pz//Pz8//y8vL/8fHx//Hw8f/w8PD/8PDw/+/v - 7//v7u//7u7u/+3t7f/t7e3/7ezs/+zs7P/r6+v/6urq/+rq6v/p6en/6enp/+jo6P/q6ur/7e3t/+3t - 7f/s7Oz/7Ozt/+/v7//19fX/+fn58/j4+HPk5OQF7OzsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD9/f1/+/v7//f39//29vX/9fX1//T09P/z8/P/8/Pz//Pz - 8v/y8vL/8fHx//Hx8f/w8PD/8PDw/+/v7//u7+//7u7u/+3t7f/t7e3/7O3s/+zs7P/r6+v/6urq/+rq - 6v/p6en/6+vr/+7u7v/u7e7/7u7u//Hx8f/29vb/9/f38vLy8nLr6+sF7OzsAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+f/z8/P/4+Pj/9/f3//b2 - 9v/19vb/9fX1//T09P/z8/P/8/Pz//Pz8//y8vL/8fHx//Hx8f/w8PD/8PDw/+/v7//v7+//7u7u/+7t - 7f/t7e3/7O3s/+zs7P/r6+v/6urq/+zs7P/v7+//7+/v//Ly8v/39/f/9/f38ujo6G+0tLQFy8vLAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+ - /n/8/Pz/+fn5//j4+P/39/f/9/f3//b29v/19vb/9fX1//T09P/09PT/8/Pz//Pz8//y8vL/8fHy//Hx - 8f/w8PD/8PDw/+/v7//v7+//7u7u/+3t7f/t7e3/7e3t/+zs7P/t7e3/8PDw//Pz8//4+Pj/9/f38ujo - 6G+0tLQFy8vLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP3+/QD+/v5//f39//r6+v/5+fn/+Pn5//j4+P/39/f/9/f3//b29v/29vb/9fX1//T0 - 9P/09PT/8/Pz//Pz8//y8vL/8vHy//Hx8f/w8PD/8PDw/+/v7//v7+//7u7u/+7t7v/t7e3/7+/v//T0 - 9P/4+Pj/9/f38ejo6G2wsLAEy8vLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+f/39/f/7+/v/+vr6//r6+v/5+fn/+Pn4//j4 - +P/39/f/9/f3//f29//29vb/9fX1//T09f/09PT/8/Pz//Pz8//y8vP/8vLy//Hx8f/x8fD/8PDw/+/w - 8P/v7+//7+/v//Py8v/5+fn/+Pj48ejo6GyxsbEEy8vLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////APX19X39/f3//f39//z8 - /P/8+/z/+/v7//v7+//6+vr/+vr6//r6+v/5+fn/+fn5//j4+P/4+Pj/9/f3//f39//29/f/9vb2//b2 - 9v/19vX/9fX1//T09P/09PT/9PT0//T09f/4+Pj/+Pj48enp6WusrKwEy8vLAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPT0 - 9ADi4uJB9/f33/39/fn+/v74/v79+P39/fj9/f34/f39+P39/fj9/f34/f39+P39/fj8/Pz4/Pz8+Pz8 - /Pj8/Pz4/Pz8+Pz8/Pj8/Pz4+/v7+Pv7+/j7+/v4+/v7+Pv7+/j7+/v5+Pj46+np6Wmtra0Ey8vLAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADBwcEAubm5Atzc3DL4+PhT/v7+Uv7+/lL+/v5S/v7+Uv7+/lL+/v5S/v7+Uv7+ - /lL+/v5S/v7+Uv7+/lL+/v5S/v7+Uv7+/lL+/v5S/v7+Uv7+/lL+/v5S/v7+Uv7+/lL+/v5S/v7+U/Dw - 8EDBwcEGysrKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+A - AAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAA - Af//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+A - AAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAA - Af//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+A - AAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAA - Af//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+A - AAAAAAP//4AAAAAAB///gAAAAAAP//+AAAAAAB///4AAAAAAP///gAAAAAB///+AAAAAAP///4AAAAAB - ////gAAAAAP///+AAAAAB////4AAAAAP////gAAAAB////+AAAAAP////4AAAAB/////gAAAAP////+A - AAAB/////4AAAAP/////gAAAB/////+AAAAP////KAAAAIAAAAAAAQAAAQAgAAAAAAAAAAEAwg4AAMIO - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3d3AAAA - AADCwsIfx8fHa/X19X/8/Px/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7 - +3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7 - +3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+/v7f/v7+3/7+/t/+vr6f/r6+n/6+vp/+vr6f/r6 - +n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6 - +n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6+n/6+vp/+vr6f/r6 - +n/6+vp/+fr6f/r6+n/5+vp/+fr6f/n6+n/6+vl/+vr6f/n6+n/7+/t/9fX1f8fGxmvCwsIfAAAAAHp6 - egAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJiYgDa2toAzMzMMe/v78Xz8/P99vb2//T09P/z8/P/8vLy//Ly - 8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vLy//Ly8v/y8vL/8vHy//Lx - 8f/y8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx - 8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8PHw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw - 8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/w8PD/8PDw/+/w - 8P/v8O//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v - 7//v7+//7+/v//Hx8f/09PT/8vLz/e/v78bMzMwx29raAGFhYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoaGhAHd3 - dwrh4eGp+vr6//Pz8//s7Oz/5ubm/+Pj4//i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh - 4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/g4eH/4eDh/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/9/f - 4P/f39//39/f/9/f3//f39//39/f/9/f3//e397/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e - 3v/e3t7/3t3d/97d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3dzc/9zc3P/c3Nz/3Nzc/9zc - 3P/c3Nz/3Nzc/9zc3P/c3Nz/29zb/9vc3P/b29v/29vb/9vb2//b29v/29vb/9vb2//b29v/29vb/9vb - 2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/a2tr/2tra/9ra2v/b29v/39/f/+bm5v/w8PD/+fn5/+Hh - 4al4eHgKoaGhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NQAzs7OG+rq6uH19fX/6urq/9/f4P/X19f/0dLR/9DQ - 0P/P0M//z8/P/8/Pz//Pz8//z8/P/87Pzv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/83Ozf/Nzc3/zc3N/83N - zf/Nzc3/zc3N/83NzP/MzMz/zMzM/8zMzP/LzMz/y8vL/8vLy//Ly8v/y8vK/8vKyv/Kysr/ysrK/8rK - yv/Kysr/ysrK/8rKyv/Kysr/ysrK/8nJyv/Jycn/ycnJ/8nJyf/Jycn/yMnJ/8jIyP/IyMj/yMjI/8jI - x//Ix8j/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx8f/xsfH/8bGxv/Gxsb/xsbG/8bGxv/FxcX/xcXF/8XF - xf/ExcT/xMTE/8TExP/ExMT/xMTE/8TExP/ExMT/xMPD/8PDw//Dw8P/w8PD/8PDwv/DwsL/wsLC/8LC - wv/CwsL/wsLC/8TExP/Ly8v/1tbW/+Pk4//y8vL/6erq4c7OzhvU1NQAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+ - /gD///8c+vr64/Dw8P/i4uL/1NXV/8jIyP/BwcH/wMDA/8DAwP/AwL//v7+//7+/v/+/vr7/vr6+/76+ - vv++vr7/vr6+/76+vv+9vb3/vb29/729vf+8vLz/vLy8/7y8vP+8vLz/u7y8/7u7u/+7u7v/u7u7/7u7 - uv+7u7r/urq6/7q6uv+6urn/ubm5/7m5uf+5ubn/uLm5/7i4uf+4uLj/uLi4/7i4uP+3uLj/t7e3/7e3 - t/+3t7b/t7a2/7a2tv+2trb/tbW2/7W1tv+1tbX/tbW1/7W1tf+1tbX/tbW1/7W0tP+0tLT/tLS0/7O0 - s/+zs7T/s7Oz/7Ozs/+zsrP/s7Ky/7Kysv+ysrL/srKx/7Gysf+xsbH/sLCx/7CwsP+wsLD/sLCw/6+v - r/+vr6//r6+v/6+vr/+vr6//r6+v/6+vrv+urq7/rq6u/66urf+trq3/rq6u/7e3t//Hx8f/2dnZ/+vr - 6//5+fnj////HP39/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8AP39/Rz5+fnj7e3t/93d3f/MzMz/vr6+/7e3 - t/+2trb/tra2/7a2tv+2tbX/tbW1/7W1tf+0tbT/tLS0/7S0tP+0tLT/s7Oz/7Ozs/+zs7P/s7Kz/7Ky - sv+ysrL/srKy/7Kysf+xsbH/sbCx/7CwsP+wsLD/sLCw/7CwsP+wsK//r7Cw/6+vr/+vr6//rq6v/66u - rv+urq7/rq2u/62trf+tra3/ra2s/6ysrP+srKz/rKys/6usq/+rq6v/q6ur/6uqqv+qqqr/qqqq/6mq - qv+pqar/qamp/6mpqf+pqan/qamp/6mpqf+oqKj/qKio/6inqP+np6f/p6en/6anpv+mpqb/pqam/6am - pv+mpqb/pqam/6alpf+lpaX/pKWk/6SkpP+kpKT/o6Oj/6Ojo/+jo6P/o6Kj/6Kiov+ioqL/oqKi/6Ki - ov+hoaH/oaGh/6Ghof+hoaH/qamp/7y8vP/S0tL/5+fn//b29uP8/fwc+/v7AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD8/PwA/f39HPn5+ePs7Oz/29ra/8nJyf+7u7v/tba1/7W1tf+1tbX/tLS0/7S0tP+0tLT/tLS0/7S0 - s/+0s7P/s7Oz/7Ozsv+ysrP/srKy/7Gxsv+xsbL/sbGx/7Gxsf+xsbH/sbGx/7CwsP+wsLD/r6+w/6+v - r/+vr6//rq6u/66urv+urq7/rq6u/66urv+ura7/ra2t/62trf+trKz/rKys/6usq/+rq6v/q6ur/6qr - q/+qqqr/qqqq/6qqqv+qqqr/qqqq/6mpqv+pqan/qaip/6ioqP+oqKj/p6in/6enp/+np6f/p6en/6em - p/+npqf/pqam/6ampv+lpqb/paal/6WlpP+kpaT/pKSk/6SkpP+kpKT/pKSk/6Oko/+jo6P/oqOj/6Ki - ov+ioqL/oaKh/6Ghof+hoaH/oKCh/6CgoP+goKD/oKCg/6CgoP+foKD/n6Cf/5+fn/+mpqb/uLi4/8/P - z//l5eX/9vb24/39/Rz7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD9/f0c+fn54+zs7P/b2tr/ycnJ/7y7 - vP+2trb/tra1/7a1tf+1tbX/tbW1/7W0tf+0tLT/tLS0/7S0tP+0tLT/s7Oz/7Ozs/+zs7P/srKy/7Ky - sv+ysrL/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+wsbD/sLCw/7CwsP+wr6//r6+v/6+urv+urq7/rq6u/66u - rv+urq7/ra2u/62trf+tra3/rays/6ysrP+srKz/rKur/6urq/+rq6v/qqqr/6qqqv+qqqr/qqqq/6qq - qv+pqar/qamp/6mpqf+oqKj/qKio/6iop/+np6f/p6en/6enp/+np6f/p6en/6amp/+mpqb/pqal/6Wl - pf+lpaX/paSl/6SkpP+kpKT/pKSk/6SkpP+ko6T/o6Oj/6Ojo/+io6P/oqKi/6Kiov+ioaL/oaGh/6Gh - of+goKD/oKCg/6CgoP+goKD/oKCg/6enp/+4uLj/zs7O/+Xl5f/29vbj/f39HPv7+wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/Pz8AP39/Rz5+fnj7Ozs/9vb2//Kysr/vLy8/7e3t/+2t7f/tra2/7a2tv+2tbX/tbW1/7W1 - tf+0tLT/tLS0/7S0tP+0tLT/tLS0/7SztP+zs7P/s7Oz/7Kysv+ysrL/srKy/7Gxsf+xsbH/sbGx/7Gx - sf+xsbH/sLCw/7CwsP+wsLD/r6+v/6+vr/+vr6//rq6u/66urv+urq7/rq6u/66urf+tra3/ra2t/6yt - rf+srKz/rKys/6yrq/+rq6v/q6ur/6uqqv+qqqr/qqqq/6qqqv+qqqr/qaqq/6mpqf+pqan/qaip/6io - qP+np6j/p6en/6enp/+np6f/p6en/6enp/+np6b/pqam/6ampv+lpaX/paWl/6SlpP+kpaT/pKSk/6Sk - pP+kpKT/pKSk/6Oko/+jo6P/o6Oi/6Kiov+ioqL/oqKi/6Ghof+hoaH/oaCg/6CgoP+goKD/p6en/7i4 - uP/Pz8//5eXl//b29uP9/f0c+/v7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/PwA/f39HPn5+ePs7Oz/29vb/8rK - yv+9vb3/uLi4/7e4uP+3t7f/t7e3/7a2tv+1trb/tba2/7W1tf+1tbX/tbS0/7W0tP+0tLT/tLS0/7S0 - tP+0tLP/s7Oz/7Oys/+ysrP/srKy/7Kxsv+xsbL/sbGx/7Gxsf+xsbH/sbCx/7Cwsf+wsLD/sK+w/6+v - r/+vr6//r6+v/66urv+urq7/rq6u/66urv+urq7/ra2t/62trf+tra3/rKys/6ysrP+sq6v/q6ur/6ur - qv+rq6r/qquq/6qqqv+qqqr/qqqq/6mqqv+pqan/qamp/6moqf+oqKj/qKeo/6enp/+np6f/p6en/6en - p/+npqf/pqen/6ampv+mpqX/paal/6Wlpf+lpaX/pKSk/6SkpP+kpKT/pKSk/6SkpP+jo6P/o6Oj/6Kj - o/+ioqL/oqKi/6Kiof+hoaH/oaGh/6Ghof+np6j/ubm5/8/Pz//l5eX/9vb24/39/Rz7+/sAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAPz8/AD9/f0c+fn54+zs7f/b29v/y8vL/76+vv+4uLj/uLi4/7i4uP+4t7f/t7e3/7e2 - t/+2trb/tra2/7a2tv+1tbX/tbS1/7W0tf+0tLT/tLS0/7S0tP+0tLT/tLO0/7Ozs/+zs7P/s7Kz/7Ky - sv+ysrL/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+wsbH/sLCw/7CwsP+wr7D/r6+v/6+vr/+vrq7/rq6u/66u - rv+urq7/rq6u/62trv+tra3/ra2s/6ysrP+srKz/rKyr/6urq/+rq6v/qqqr/6qqqv+qqqr/qqqq/6qq - qv+qqqr/qqmp/6mpqf+pqKn/qKio/6inqP+op6j/p6en/6enp/+np6f/p6en/6empv+mpqb/pqal/6Wl - pf+lpaX/pKWl/6SkpP+kpKT/pKSk/6SkpP+kpKT/pKOk/6Ojo/+jo6P/oqKj/6Giov+hoqL/oaGh/6io - qP+5ubn/z9DP/+bm5v/29vbj/f39HPv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pz8AP39/Rz5+fnj7e3t/9zc - 3P/Ly8v/vr6+/7i4uf+4uLj/uLi4/7i4uP+3uLj/uLe4/7e3t/+3t7f/tre2/7a2tv+2trX/tbW1/7W1 - tf+0tbX/tLS0/7S0tP+0tLT/tLS0/7S0tP+ztLP/s7Oz/7Ozsv+zsrL/srKy/7Kysf+xsbH/sbGx/7Gx - sf+xsbH/sLGw/7CwsP+vsLD/r7Cv/6+vr/+vr6//rq6v/66urv+urq7/rq6u/62urv+trq3/ra2t/62t - rf+srKz/rKys/6yrq/+sq6v/q6ur/6qrqv+qqqr/qqqq/6qqqv+qqqr/qqqq/6mpqf+pqan/qKip/6io - qP+oqKj/p6in/6enp/+np6f/p6en/6enp/+npqb/pqam/6ampv+lpqX/paWl/6Slpf+lpKX/pKSk/6Sk - pP+kpKT/pKSk/6SjpP+jo6P/o6Oj/6Kiov+ioqL/qaip/7m5uf/Qz8//5ubm//b29uP9/f0c+/v7AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD8/PwA/f39HPn5+ePt7e3/3Nzc/8zMzP+/v7//ubm5/7m5uf+4ubj/uLi4/7i4 - uP+4uLj/uLi4/7i3uP+3t7f/t7e3/7a3tv+2trb/tra2/7W2tf+1tbX/tbW0/7S0tP+0tLT/tLS0/7S0 - tP+ztLT/tLOz/7Ozs/+zs7P/srKy/7Kysv+ysbL/sbGx/7Gxsf+xsbH/sbGx/7CxsP+wsLD/r7Cw/7Cw - sP+vr6//r66v/6+urv+vrq7/rq6u/66urv+urq7/ra2t/62trf+tra3/rKys/6ysrP+srKz/q6ur/6ur - q/+rqqv/qqqq/6qqqv+qqqr/qqqq/6qqqf+pqan/qamp/6ipqP+oqKj/qKin/6eop/+np6f/p6en/6en - p/+np6f/pqen/6ampv+mpqb/pqWm/6Wlpf+lpaX/pKWk/6SkpP+kpKT/pKSk/6SkpP+jo6P/o6Oj/6Oj - o/+pqqn/urq6/9DQ0P/m5ub/9vb24/39/Rz7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD9/f0c+fn54+3t - 7f/c3Nz/zMzM/7+/v/+6urr/urm6/7m5uf+5ubn/ubi5/7i4uP+4uLj/uLi4/7i4uP+3uLf/t7e3/7e3 - t/+2trf/tra2/7a2tv+1tbb/tbW1/7S1tP+0tbT/tLS0/7S0tP+0tLT/tLS0/7O0s/+zs7P/s7Oz/7Ky - sv+ysrL/srGx/7Gxsf+xsbH/sbGx/7Gxsf+xsLD/sLCw/7CwsP+vr7D/r6+v/6+vr/+urq//rq6u/66u - rv+urq7/rq6u/66trv+tra3/ra2t/62srf+srKz/rKys/6yrq/+rq6v/q6qr/6qqqv+qqqr/qqqq/6qq - qv+qqqr/qamp/6mpqf+pqaj/qKio/6ioqP+oqKj/p6eo/6enp/+np6f/p6en/6enpv+mp6b/pqam/6al - pf+lpaX/paWl/6SlpP+kpKT/pKSk/6SkpP+kpKT/pKSk/6qqqv+6u7r/0NDQ/+bm5v/29vbj/f39HPv7 - +wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/Pz8AP39/Rz5+fnj7e3t/93d3f/MzMz/wMDA/7q7u/+6urr/urq6/7q6 - uv+5ubn/ubm5/7i4uf+4uLj/uLi4/7i4uP+4uLj/t7e4/7e3t/+3t7f/t7a3/7a2t/+2tbb/tbW2/7W1 - tf+1tbX/tLS0/7S0tP+0tLT/tLS0/7S0tP+zs7T/s7Oz/7Ozsv+ysrL/srKy/7Kxsv+xsbH/sbGx/7Gx - sf+xsbH/sbGx/7CwsP+wsLD/sK+w/6+vr/+vr6//rq+u/66urv+urq7/rq6u/66urv+urq3/ra2t/62t - rf+traz/rKys/6ysrP+rq6v/q6ur/6urq/+qqqr/qqqq/6qqqv+qqqr/qqqq/6qpqf+pqan/qamp/6io - qP+oqKj/qKeo/6enp/+np6f/p6en/6enp/+np6b/pqam/6ampv+mpqb/paWl/6Wlpf+lpKX/pKSk/6Sk - pP+kpKT/q6ur/7u8u//R0dH/5ubm//b29uP9/f0c+/v7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/PwA/f39HPn5 - +ePt7e3/3d3d/83Nzf/AwcD/u7u7/7u7u/+7u7v/uru6/7q6uv+5urn/urm5/7m5uf+5ubn/uLi4/7i4 - uP+4uLj/uLi4/7i4uP+4t7f/t7e3/7e2t/+2trb/tra2/7W2tf+1tbX/tbW1/7S1tP+0tLT/tLS0/7S0 - tP+0s7T/tLSz/7Ozs/+zs7P/srKy/7Kysv+xsrH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+wsLH/sLCw/6+w - sP+vr6//r6+v/6+vrv+urq7/rq6u/66urv+urq7/rq6u/62trf+tra3/rK2s/6ysrP+srKz/q6yr/6ur - q/+qq6v/q6qq/6qqqv+qqqr/qqqq/6qqqv+qqqn/qamp/6mpqf+oqKj/qKio/6eoqP+np6f/p6en/6en - p/+np6f/p6en/6anpv+mpqb/pqWm/6Wlpf+lpaX/paWl/6SlpP+rq6v/vLy8/9HR0f/m5ub/9vb24/39 - /Rz7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/AD+/f4c+fn54+3t7f/d3d3/zc3O/8HBwf+7u7z/u7u7/7u7 - u/+7u7v/u7u7/7u6uv+6urr/urq6/7m5uf+5ubn/ubm5/7m4uP+4uLj/uLi4/7i4uP+4t7j/t7e3/7e3 - t/+2t7b/tra2/7a2tv+2tbb/tbW1/7W0tf+1tLT/tLS0/7S0tP+0tLT/tLS0/7Ozs/+zs7P/s7Oy/7Ky - sv+ysrL/sbKy/7Gysf+xsbH/sbGx/7Gxsf+xsbH/sbCw/7CwsP+wsLD/r7Cv/6+vr/+ur67/rq6u/66u - rv+urq7/rq6u/66trv+tra3/ra2t/62srf+srKz/rKys/6usq/+rq6v/q6ur/6urqv+qqqr/qqqq/6qq - qv+qqqr/qqmp/6mpqf+pqan/qKio/6ioqP+oqKj/p6en/6enp/+np6f/p6en/6enp/+mp6b/pqam/6al - pv+lpaX/paWl/6yrq/+8vLz/0dHR/+fn5//29vbj/f39HPv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP/+ - /xz5+fnj7e3t/97e3f/Ozs7/wcLB/7y8vP+8vLz/vLy7/7u7u/+7u7v/u7u7/7u7u/+7urr/urq6/7q6 - uv+5ubr/ubm5/7m5uf+4ubj/uLi4/7i4uP+4uLj/uLi4/7e4t/+3t7f/t7e3/7a2tv+2trb/tba1/7W1 - tf+1tbX/tbW0/7S0tP+0tLT/tLS0/7S0tP+0s7T/s7Oz/7Ozs/+zsrL/srKy/7Gysv+xsbL/sbGx/7Gx - sf+xsbH/sbGx/7Cwsf+wsLD/sLCw/6+vr/+vr6//rq+v/66vrv+urq7/rq6u/66urv+urq3/ra2t/62t - rf+tra3/rKys/6ysrP+sq6z/q6ur/6urqv+rqqr/qqqq/6qqqv+qqqr/qqqq/6qqqv+pqan/qamp/6io - qP+oqKj/qKin/6enp/+np6f/p6en/6enp/+np6f/pqan/6ampv+mpqb/rKys/728vf/S0tL/5+fn//b2 - 9uP9/f0c+/v7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPn5+ePu7u7/3t7e/8/Oz//DwsL/vb29/728 - vf+8vLz/vLy8/7u7u/+7u7v/u7u7/7u7u/+7urv/u7q7/7q6uv+5urr/ubq5/7m5uf+5uLn/uLi4/7i4 - uP+4uLj/uLi4/7i4uP+4uLf/t7e3/7e3t/+2t7b/tra2/7a2tf+1trX/tbW1/7W0tf+0tLT/tLS0/7S0 - tP+0tLT/s7Oz/7Ozs/+zs7P/srKz/7Kysv+ysrH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsLH/sLCw/7Cw - sP+wr7D/r6+v/6+vr/+urq7/rq6u/66urv+urq7/rq6u/62urf+tra3/ra2t/62srf+srKz/rKys/6ur - q/+rq6v/qqur/6qqqv+qqqr/qqqq/6qqqv+qqqn/qamp/6mpqf+oqan/qKio/6ioqP+np6f/p6en/6en - p/+np6f/p6en/6enp/+tra3/vb29/9LS0v/n5+f/9vb24/39/Rz7+/sAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD+/v4c+fn54+7u7v/e3t7/z8/P/8PDw/++vr7/vb29/729vf+8vL3/vLy8/7y8vP+8u7v/u7u7/7u7 - u/+7u7v/u7u7/7u7uv+6urr/urq6/7m6uf+5ubn/ubi5/7i4uP+4uLj/uLi4/7i4uP+4uLj/t7e4/7e3 - t/+3t7f/tra3/7a2tv+2trb/tbW2/7W1tf+1tbT/tLS0/7S0tP+0tLT/tLS0/7O0tP+zs7P/s7Oz/7Kz - sv+ys7L/srKy/7Kxsv+xsbH/sbGx/7Gxsf+xsbH/sLGw/7CwsP+wsLD/r6+v/6+vr/+ur6//r66u/66u - rv+urq7/rq6u/66urv+tra3/ra2t/62trf+srKz/rKys/6usq/+rq6v/q6ur/6uqq/+qqqr/qqqq/6qq - qv+qqqr/qqqq/6mpqf+pqan/qamo/6ioqP+oqKj/p6en/6enp/+np6f/p6en/66urv++vb7/09LS/+fn - 5//29vbj/f39HPv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz5+fnj7u7u/9/f3//Pz8//w8PD/76+ - vv++vr7/vb2+/729vf+9vb3/vL28/7y8vP+8vLz/u7y7/7u7u/+7u7v/u7u7/7u7u/+7u7v/uru6/7q6 - uv+6urr/ubm5/7m5uf+4uLj/uLi4/7i4uP+4uLj/uLi4/7i3t/+3t7f/t7e3/7a2t/+2trb/tra2/7W1 - tv+1tbX/tbS1/7S0tP+0tLT/tLS0/7S0tP+0tLT/s7O0/7Ozs/+zsrL/srKy/7Kysv+ysbH/sbGx/7Gx - sf+xsbH/sbGx/7CxsP+wsLD/sLCw/6+vsP+vr6//r6+v/6+urv+urq7/rq6u/66urv+trq7/rq6t/62t - rf+tra3/rK2s/6ysrP+srKz/q6ur/6urq/+qqqv/qqqq/6qqqv+qqqr/qqqq/6qpqv+pqan/qamp/6mp - qP+oqKj/p6io/6eoqP+nqKj/rq6u/76+vv/T09P/5+fn//b29uP9/f0c+/v7AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD9/f0A/v7+HPn5+ePu7u7/39/f/9DP0P/Dw8T/vr6+/76+vv++vr7/vr6+/76+vv+9vb3/vb29/729 - vP+8vLz/vLy8/7u7vP+7u7v/u7u7/7u7u/+7u7v/uru7/7q6uv+6urr/urm5/7m5uf+5ubn/ubi4/7i4 - uP+4uLj/uLi4/7i4uP+4uLj/t7e3/7e3t/+2t7b/tra2/7a2tv+1tbX/tbW1/7W1tf+0tLT/tLS0/7S0 - tP+0tLT/tLS0/7Ozs/+zs7P/s7Oz/7Kysv+ysrL/srKy/7Gxsf+xsbH/sbGx/7Gxsf+xsLH/sLCw/7Cw - sP+wsK//r6+v/6+vr/+urq7/rq6u/66urv+urq7/rq6u/62urf+tra3/ra2t/6ysrP+srKz/q6ys/6us - q/+rq6v/q6qr/6qqqv+qqqr/qqqq/6qqqv+qqqr/qaqp/6mpqf+oqan/qKio/6ioqP+urq7/vr6+/9PT - 0//n6Oj/9vf34/39/Rz7+/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+fn54+7u7v/f39//0NDQ/8TE - xP+/v7//v7++/76+vv++vr7/vr6+/76+vv++vr7/vb69/729vf+9vbz/vLy8/7y8vP+8vLz/u7u7/7u7 - u/+7u7v/u7u7/7u7u/+6urr/urq6/7m6uv+6ubn/ubm5/7m4uP+4uLn/uLi4/7i4uP+4uLj/uLe4/7e3 - t/+3t7f/t7e2/7a2tv+2trb/tbW1/7W1tf+1tbX/tLW0/7S0tP+0tLT/tLS0/7S0tP+0s7P/s7Oz/7Oz - s/+ysrL/srKy/7Gysv+xsbH/sbGx/7Gxsf+xsbH/sbGx/7CwsP+wsLD/sK+w/6+vr/+vr6//r66u/66u - rv+urq7/rq6u/66urv+ura7/rq2t/62trf+sraz/rKys/6ysrP+rq6v/q6ur/6urqv+qqqr/qqqq/6qq - qv+qqqr/qqqq/6qpqf+pqan/qamp/66ur/++v7//09PT/+jo6P/39/fj/f39HPv7+wAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/f39AP7+/hz5+fnj7u7u/9/g3//Q0dH/xcXF/8DAwP+/v7//v7+//7+/vv++vr7/vr6+/76+ - vv++vr7/vr6+/76+vf+9vb3/vb29/728vP+8vLz/vLy8/7u7vP+7u7v/u7u7/7u7u/+7urv/u7q6/7q6 - uv+6urn/ubm5/7m5uf+4uLn/ubi5/7i4uP+4uLj/uLi4/7i3t/+3t7f/t7e3/7a3t/+2trb/tra2/7W2 - tv+1tbX/tbW1/7W0tf+0tLX/tLS0/7S0tP+0tLT/tLO0/7Ozs/+zs7P/srOy/7Kysv+ysrL/sbKx/7Gx - sf+xsbH/sbGx/7Gxsf+wsLD/sLCw/7CwsP+vr6//r6+v/66urv+urq7/rq6u/66urv+urq7/rq6t/62t - rf+tra3/rayt/6ysrP+srKz/rKus/6urq/+rq6v/qqqq/6qqqv+qqqr/qqqq/6qqqv+qqar/r6+v/7+/ - wP/U09T/6Ojo//f39+P9/f4c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPn5+ePu7u7/4ODg/9HR - 0f/FxcX/wcDB/8DAwP/AwMD/wMDA/8HBwf/CwsL/w8PD/8PDw//Dw8P/wsPD/8HBwf/Av8D/vr2+/729 - vf+8vL3/vLy8/7y8vP+7u7v/u7u7/7u7u/+7u7v/u7u7/7u6uv+6urr/urq5/7m6uf+5ubn/ubi5/7i4 - uP+5ubn/urq7/7y8vP+8vLz/vLy8/7y8vP+8vLz/u7y7/7u7u/+7u7v/u7u7/7q7u/+6urv/urq6/7q6 - uv+5ubr/uLi4/7e3t/+1tbX/s7Oz/7Kysv+ysrL/srKy/7Kysv+0tLT/tbW2/7a2tv+2trb/tra2/7W1 - tf+0tLT/srKy/6+wsP+vr67/rq6u/66urv+urq7/r6+v/7Gxsf+ysrL/s7Oz/7Kzsv+ysrL/srGy/7Cw - sP+urq7/q6ys/6qqqv+qqqr/qqqq/6qqqv+wsK//wMDA/9TU1P/o6Oj/9/f34/7+/hz8/PwAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD+/v4c+vr64+/v7//g4OD/0dLS/8XGxv/BwcH/wcDB/8LCwv/FxcX/ysrK/83N - zf/Pz8//z8/Q/8/Pz//Ozs7/zMvM/8jIyP/Dw8P/v7+//729vf+9vb3/vLy8/7y8vP+8vLz/u7u7/7u7 - u/+7u7v/u7u7/7u7uv+7u7r/urq6/7q6uv+6urn/vLy8/8DAwP/ExMT/x8fH/8nJyf/Kysr/ysrK/8nJ - yf/Jycn/ycnJ/8nJyf/Jycn/ycjJ/8jIyP/IyMj/yMjI/8fHx//FxcX/wsLC/729vf+4uLf/tLS0/7Oz - s/+0tLT/ubi4/76+vv/CwsL/xMTE/8XFxf/FxcX/xMTD/8HBwf+8vLz/tra2/7Gxsf+vr6//r6+v/7Ky - sv+4uLj/vb29/8DAwP/CwsL/w8LD/8LCwv/BwcH/vb29/7m5uf+ys7L/ra2t/6urq/+qqqv/qqqq/7Gw - sP/AwMD/1NTU/+jo6P/39/fj/v7+HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz6+vrj7+/v/+Dg - 4P/S0tL/xsbG/8LCwv/DwsL/x8fH/87Ozv/U1NX/2tra/93d3f/f39//397e/93c3f/Z2dn/1NTT/8zM - zP/ExMT/v7+//769vv+9vb3/vb29/728vf+8vLz/vLu8/7y7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/76+ - vv/FxcX/zMzM/9LS0v/W1tb/2dnZ/9vb2v/b29v/29vb/9vb2//a29r/2tra/9ra2v/a2tr/2tra/9ra - 2v/a2tr/2NjY/9XW1v/R0dH/ysrK/8LCwv+5ubn/tbW2/7q6uv/Dw8P/y8vL/9LS0v/W1tb/19fX/9fX - 1//V1dX/0dHR/8rKyv/CwcH/uLi4/7Gxsf+zs7P/vLy7/8XFxf/MzMz/0tLS/9XV1f/W1tb/1dXV/9PT - 0//Pz8//yMfH/76+vv+0tLT/ra2t/6urq/+rq6v/sbGx/8HAwf/U1NT/6Ojo//f39+P+/v4c/Pz8AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD9/f0A/v7+HPr6+uPv7+//4OHh/9LS0v/Gx8b/wsLC/8bFxv/Nzc3/19fX/+Dh - 4P/p6en/7u7u//Dv8P/v7+//7u7u/+jo6P/f39//1tbW/8vLy//CwsL/vr6+/76+vv++vb7/vb29/729 - vf+8vbz/vLy8/7y8vP+7vLv/u7u7/7u7u/++vr//xsbG/9DQ0P/Z2dn/4eHh/+fn5//r6+v/7u7u/+7u - 7v/u7u7/7u7u/+7u7v/u7u7/7u7u/+7u7v/u7u7/7u3t/+3t7f/s7Oz/5+fn/+Hh4f/Z2dn/zs7O/8PD - w/++vr7/w8PD/87Ozv/a2tr/5OTk/+rq6v/s7Oz/7Ozs/+rp6v/i4uL/2djZ/83Nzf/AwMD/t7e3/7u7 - u//Hx8b/0tLT/93d3f/m5ub/6urq/+vr6//r6+v/6Ojo/+Hh4f/X19f/ysrK/7y8vP+xsbL/rKys/6ys - rP+xsrL/wcHB/9TU1P/o6On/9/f34/7+/hz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+vr64+/v - 7//h4eH/0tPS/8fHx//DxMP/ycnJ/9PT0//f39//6+vr/+fn5//d3d3/3t7e/97e3v/g4OD/8fHx/+rq - 6v/e3t7/0dHR/8XGxf+/v7//vr6+/76+vv++vr7/vr6+/769vf+9vb3/vb29/7y8vP+8vLz/vb29/8TE - xf/Qz9D/2tvb/+bm5v/x8fH/+vr6/+zs7P/d3d3/3d3d/93d3f/e3d7/3d7e/97e3v/e3t7/3t7e/93e - 3f/d3d3/3d3d/+Hh4f/19fX/8vLy/+fn5//a29v/zs7P/8nJyf/MzMz/19jY/+fn5//k5OT/29vb/93d - 3f/d3d3/39/f/+7u7v/m5ub/1tbW/8fHx/+/v7//xMTE/9LS0f/g4OD/7u7u/+np6f/c3Nz/3d3d/93d - 3P/e3t7/7e3t/+Pj4//R0dH/wcLC/7W1tf+ura7/rK2s/7Kysv/BwcH/1dXV/+np6f/39/fj/v7+HPz8 - /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz6+vrj8PDv/+Hi4f/T09P/yMjI/8XFxP/Ly8v/19fX/+Tk - 5P/29vb/i4uL/xcXF/8cHBz/Ghoa/zMzM//g4OD/8/Pz/+Pj4//V1dX/yMjI/8DAwP++v77/vr6+/76+ - vv++vr7/vr6+/769vv+9vb3/vb29/729vf/BwMH/y8rL/9jY2P/l5eX/8/Pz/9zc3P+Ghob/S0tL/xoa - Gv8cHBz/HBwc/xwcHP8cHBz/HBwc/xwcHP8cHBz/HBwc/xwcHP8bGxv/JSUl/3d3d//W1tb/8fHx/+bm - 5v/Z2dn/09PT/9XV1f/f39//8/Pz/4qKiv8XFxf/HBwc/xoaGv8zMzP/39/f//Dw8P/d3d3/zc3N/8fH - x//MzM3/29vb/+zs7P/s7Oz/WVlZ/xkZGf8cHBz/GRkZ/z09Pf/i4uH/6urq/9XV1f/DxMT/tra2/6+v - rv+tra3/s7Oz/8LCwf/V1dX/6enp//f39+P+/v4c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPr6 - +uPw8PD/4uLi/9TT1P/Iycn/xcXF/83Nzf/Z2dn/5+fn//n5+f9+fn7/AAAA/wAAAP8AAAD/Ghoa/93d - 3f/29vb/5ubm/9fX1//Kysn/wcHB/7+/v/+/v7//v7+//76+vv++vr7/vr6+/76+vv++vr7/vr6+/8TE - xP/Qz9D/3t7e/+7u7v/r6+v/UVFR/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AQEB/y0tLf/V1dX/8fHx/+Hh4f/c3Nv/3Nzc/+Tk5P/39/f/fn5+/wAA - AP8AAAD/AAAA/xoaGv/d3d3/9PT0/+Hh4f/T09P/z8/P/9TU1P/j4+P/9vb2/6ysrP8KCgr/AAAA/wAA - AP8AAAD/fHx8//f39//n5+f/1NTU/8PDwv+1tbX/rq6u/66urv+0s7P/wsLC/9XW1f/p6en/9/f34/7+ - /hz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+vr64/Dw8P/i4uL/1NTU/8nKyf/Gxsb/zs7O/9ra - 2v/o6Oj/+vr6/35+fv8AAAD/AAAA/wAAAP8aGhr/3d3d//b39//n5+f/2NjY/8vLy//CwsL/wMDA/8DA - wP+/v8D/v7+//7+/v/++vr7/vr6+/76+vv+/v7//xsbG/9PT0//i4uL/9PT0/9HR0f8XFxf/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4KC - gv/39/f/6Ojo/+Hh4f/h4eH/5+fn//j4+P9+fn7/AAAA/wAAAP8AAAD/Ghoa/93d3f/09PT/4uPj/9jY - 2P/X19f/3Nzc/+vr6//s7Oz/SEhI/wAAAP8AAAD/AAAA/yEhIf/S0tL/9PT0/+Hh4f/Q0ND/v7+//7Ky - sv+urq7/rq6u/7S0tP/Dw8P/1tbW/+np6f/39/fj/v7+HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+ - /hz6+vrj8PDw/+Li4v/V1dX/ysrK/8fHxv/Ozs7/2tra/+np6f/6+vr/fn5+/wAAAP8AAAD/AAAA/xoa - Gv/e3t3/9/f3/+fn5//Y2Nn/y8vL/8LCwv/BwcH/wMHB/8DAwP/AwMD/v8DA/7+/v/+/v7//vr6+/7/A - wP/IyMj/1tXW/+Xl5f/4+Pj/iIiI/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/dnZ2//r6+v/s7Ov/5OTk/+Tj5P/o6Oj/+Pj4/35+ - fv8AAAD/AAAA/wAAAP8aGhr/3d3d//T09P/m5ub/39/f/97e3v/j4+P/8/Pz/9XV1f8YGBj/AAAA/wAA - AP8AAAD/bm5u//b29v/r6+v/2tra/8nJyf+6urr/sbGx/6+vr/+vrq//tLS0/8PDw//W1tb/6enp//f3 - 9+P+/v4c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - x//l5eX/4uLi/+Dg4P/f39//39/f/9/f3//f39//39/f/97e3v/u7u7//Pz8//T09P/q6ur/4uLi/+Dg - 4P/j4+P/6+vr//r6+v9+fn7/AAAA/wAAAP8AAAD/AAAA/35+fv/6+vr/6Ojo/9nZ2f/Q0ND/z8/P/9fX - 1//h4OH/6Ojo/+7u7v/w8O//8PDw/+/v7//r6+v/5OTk/9zc3P/b29v/39/f/+jo6P/5+fn/fn5+/wAA - AP8AAAD/AAAA/xoaGv/g4OD/9fX1/0tLS/8AAAD/AAAA/wAAAP99fX3/+Pj4/+vr6//c3Nz/zc7N/8HB - wf+5urr/uLm4/7i4uP+4uLj/uLi4/7i4uP+4t7j/t7e4/7e3t/+8vLz/ycnJ/9ra2v/r6+v/+Pj44/39 - /Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+vr64/Ly8v/m5ub/29vb/9LS0v/Pz8//1dXV/+Df - 4P/s7Oz/+/v7/35+fv8AAAD/AAAA/wAAAP8DAwP/GBgY/xwcHP8cHBz/HBwc/xwcHP8cHBz/HBwc/xwc - HP8cHBz/Ghoa/0tLS/+Hh4f/3d3d//X19f/q6uv/5+fn/+jo6P/t7e3/+vr7/35+fv8AAAD/AAAA/wAA - AP8AAAD/fn5+//r6+v/o6Oj/2dnZ/83Nzf/Kysr/z8/P/9bW1v/b29v/3t7e/+Dg3//g4OD/3t7e/9zc - 3P/X19f/0tLS/9PU0//a2tr/5+fn//n5+f9+fn7/AAAA/wAAAP8AAAD/Ghoa/+Li4v+urq7/CgoK/wAA - AP8AAAD/IyMj/9nZ2f/19fX/5OXl/9bW1v/Hx8f/vb29/7m6uv+6ubn/ubm5/7m4uf+4uLj/uLi4/7i4 - uP+4t7j/uLi4/7y8vP/Jycn/2tra/+zs7P/4+Pjj/f39HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+ - /hz7+/vj8vLy/+fn5//c29v/0tLS/9DQ0P/W1tb/4ODg/+zs7P/7+/v/fn5+/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9RUVH/7Ozs//Ly - 8v/s7Oz/7Ozs/+/v7//7+/v/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7/+vr6/+jp6f/a2tr/zczN/8XG - xv/IyMj/zMzM/8/Pz//R0dH/0tLR/9HR0f/R0dH/z8/P/8zMzP/Kysn/zc3N/9jY2P/n5+f/+fn5/35+ - fv8AAAD/AAAA/wAAAP8bGxv/3t7e/3BwcP8AAAD/AAAA/wAAAP9tbW3/+fn5/+3t7f/e3t7/0NDQ/8PC - w/+7u7v/urq6/7q6uv+6ubr/urm5/7m5uf+4ubn/uLi4/7i4uP+4uLj/vL29/8rKyv/a29v/6+vr//j4 - +OP+/v4c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPv7++Py8/P/5+fn/9zc3P/T09P/0NDQ/9bX - 1//g4OD/7Ozs//v7+/9+fn7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/xcXF//S0tL/9/f3//Dw8P/v7+//8fHx//v7+/9+fn7/AAAA/wAA - AP8AAAD/AAAA/35+fv/6+vr/6enp/9ra2v/Nzc3/xcXF/8TExP/FxcX/x8bG/8fHx//Hx8b/xsbG/8bG - xv/GxcX/xMTE/8TEw//Ly8v/2NjY/+fn5//5+fn/fn5+/wAAAP8AAAD/AAAA/x0dHf+8vLz/JCQk/wAA - AP8AAAD/CgoK/6mpqf/4+Pj/5+fn/9jY2P/Kysr/v7+//7u7u/+7u7v/u7u6/7u6u/+6urr/urq6/7m5 - uf+5ubn/ubm4/7i4uf+9vr7/ysrK/9rZ2v/q6ur/+Pj44/7+/hz8/PwAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD+/v4c+/v74/Pz8//n5+f/3Nzc/9PT0//R0dH/19fX/+Hg4f/s7Oz/+/v7/35+fv8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4mJ - if/7+/v/8vLy//Hx8f/y8/P//Pz8/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//r6+v/p6en/29ra/87O - zv/Gxsb/xcTE/8TExP/ExMT/xMTD/8PDw//Dw8P/wsLC/8LCwv/CwsL/w8PD/8vLy//Y2Nj/5+fn//n5 - +f9+fn7/AAAA/wAAAP8AAAD/EBAQ/zs7O/8CAgL/AAAA/wAAAP9JSUn/7e3t//Dw8P/h4eH/0tLT/8XF - xf++vb3/vLu8/7u7u/+7u7v/u7u7/7u7u/+6u7r/urq6/7q6uv+5ubn/ubm5/76+vv/Jycn/2NjY/+rq - 6v/4+Pjj/v7+HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz7+/vj8/Pz/+jn6P/c3dz/1NTU/9LR - 0v/X19f/4eHh/+3s7P/8+/v/fn5+/wAAAP8AAAD/AAAA/w0NDf9vb2//gICA/39/f/9+fn7/fn5+/35+ - fv9/f3//goKC/0BAQP8AAAD/AAAA/wAAAP8AAAD/fn5+//z8/P/z8/P/8fHx//Pz8//8/Pz/fn5+/wAA - AP8AAAD/AAAA/wAAAP9+fn7/+vr6/+np6f/b29v/zs7O/8bGxv/FxcX/xcXF/8TExP/ExMT/xMTE/8PD - w//Dw8P/w8LD/8LCwv/DxMP/y8vL/9jZ2f/n5+f/+fn5/35+fv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/CgoK/66urv/7+/v/6+vr/93d3f/Nzc7/wcHB/729vf+8vLz/vLy8/7u8u/+7u7v/u7u7/7u7 - u/+7u7v/uru6/7q6uv+6urr/vLy8/8bGxv/Y2Nj/6urq//j4+OP+/v4c/Pz8AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD9/f0A/v7+HPv7++Pz8/P/6Ojo/93d3f/U1NT/0tLS/9fX1//i4uL/7e3t//z8/P9+fn7/AAAA/wAA - AP8AAAD/Gxsb/+Hh4f///////v7+//v7+//6+vr/+/v7//7+/v//////gICA/wAAAP8AAAD/AAAA/wAA - AP9+fn7//Pz8//Pz8//x8fH/8/Pz//z8/P9+fn7/AAAA/wAAAP8AAAD/AAAA/35+fv/6+vr/6enp/9vc - 3P/Pz8//x8fH/8XFxf/FxcX/xcXF/8XFxf/ExcX/xMTE/8TExP/DxMP/w8PD/8TExP/MzMz/2dnZ/+fo - 5//5+vr/fn5+/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9BQUH/7u7u//f39//p6en/29vb/8vL - y/+/wL//vb29/729vf+9vL3/vLy8/7y8vP+7vLv/u7u7/7u7u/+7u7v/uru7/7e4t/+4ubn/xsbG/9jY - 2P/q6ur/+Pj44/7+/hz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+/v74/Pz8//o6Oj/3d7d/9XV - 1f/S09L/2NjY/+Li4v/t7e3//Pz8/35+fv8AAAD/AAAA/wAAAP8aGhr/3t7e//z8/P/09PT/7e3t/+vr - 6//t7e3/9PT0//////9/f3//AAAA/wAAAP8AAAD/AAAA/35+fv/8/Pz/8/Pz//Hx8v/z8/P//Pz8/35+ - fv8AAAD/AAAA/wAAAP8AAAD/fn5+//r6+v/p6en/3Nzc/8/Pz//Hx8j/xsbG/8bFxv/FxcX/xcXF/8XF - xf/FxcX/xMTE/8TFxP/ExMT/xcXF/8zMzP/Z2dn/6Ojo//r6+v9+fn7/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/yQkJP/Z2dn/+Pj4/+rq6v/c3Nz/zc3N/8HBwf++vr7/vr6+/729vf+9vb3/vb28/7y8 - vP+8vLz/vLu8/7u7u/+4uLj/tLS0/7i5uP/Gxsb/2NjY/+rq6v/4+Pjj/v7+HPz8/AAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/f39AP7+/hz7+/vj8/Pz/+jo6P/e3t7/1tXV/9PT0//Z2dj/4uLi/+3t7f/8/Pz/fn5+/wAA - AP8AAAD/AAAA/xoaGv/d3d3/+fn5/+3t7f/j4+P/4ODg/+Pj4//t7e3/+/v7/35+fv8AAAD/AAAA/wAA - AP8AAAD/fn5+//z8/P/z8/P/8vLy//Pz8//8/Pz/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7/+vr6/+np - 6f/c3Nz/0NDQ/8jIyP/Hx8f/xsbG/8bGx//Gx8f/xsfH/8bGxv/Gxsb/xsXF/8XFxf/FxcX/zc3N/9rZ - 2f/o6Oj/+vr6/35+fv8AAAD/AAAA/wAAAP8DAwP/CgoK/wAAAP8AAAD/AAAA/3x8fP/5+fn/7u7u/+Dg - 3//R0tH/xcXF/7+/v/++vr7/vr6+/76+vv+9vb3/vb29/729vf+8vLz/ubm5/7W1tf+0tLT/ubm5/8fH - xv/Z2dj/6+vr//j4+OP+/v4c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPv7++P08/P/6enp/97e - 3v/W1tb/1NPT/9rZ2f/j4+P/7e3t//z8/P9+fn7/AAAA/wAAAP8AAAD/Ghoa/93d3f/29vb/5ubm/9ra - 2v/W1tb/2tra/+bm5v/4+Pj/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7//Pz8//Pz8//y8vL/8/Pz//z8 - /P9+fn7/AAAA/wAAAP8AAAD/AAAA/35+fv/7+/r/6urq/9zc3P/Q0dH/ycjJ/8jIyP/Kysr/zMzM/87O - zv/Pz8//z8/P/87Ozv/MzMz/ysrJ/8jIyP/Ozs7/2tra/+jo6f/6+vr/fn5+/wAAAP8AAAD/AAAA/xoa - Gv+Dg4P/DAwM/wAAAP8AAAD/ISEh/9bW1v/19fX/5eXl/9jY2P/Ly8v/wsLB/76+vv++vr7/vr6+/76+ - vv++vr7/vb69/7q6uv+2trb/tbW1/7W1tf+6urr/yMfH/9nZ2f/r6+v/+Pj44/7+/hz8/PwAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD+/v4c+/v74/T09P/p6en/397f/9fX1//U1NT/2tra/+Pj4//u7e7//Pz8/35+ - fv8AAAD/AAAA/wAAAP8aGhr/3d3d//X19f/i4uL/09PT/87Ozv/T09P/4uLi//f39/9+fn7/AAAA/wAA - AP8AAAD/AAAA/35+fv/9/P3/9PP0//Ly8v/z8/P//Pz8/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//v7 - +//q6ur/3d3d/9HR0f/Kysv/zs7O/9PT0v/X19f/2dna/9vb2//c29v/2tra/9fX1//T09P/z8/P/9LS - 0v/b29v/6eno//r6+v9+fn7/AAAA/wAAAP8AAAD/HBwc/9PT0/9NTU3/AAAA/wAAAP8AAAD/enp6//j4 - +P/s7Oz/39/f/9LS0v/Gxsb/wMDA/7+/v/++v77/vr6+/76+vv+7u7v/t7a3/7W1tf+1tbX/tbW1/7q6 - uv/IyMj/2dnZ/+vr6//4+Pjj/v7+HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz7+/vj9PT0/+rq - 6f/f39//19fX/9XV1f/a2tr/4+Pj/+7u7v/8/Pz/fn5+/wAAAP8AAAD/AAAA/xoaGv/d3d3/9PT0/+Li - 4v/S0tL/zMzM/9LS0v/i4uL/9/f3/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//39/f/08/T/8vLy//Pz - 8//8/P3/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7/+/v7/+rq6v/d3d3/0tLS/9DQ0P/V1dX/3N3d/+Li - 4v/m5+b/6enp/+np6f/n5+f/5OTk/97e3v/Z2dj/2dnZ/97e3v/p6en/+vr6/35+fv8AAAD/AAAA/wAA - AP8aGhr/4uLi/7Gxsf8LCwv/AAAA/wAAAP8gICD/1dXV//X19f/m5ub/2dnZ/8zMzP/CwsL/v7/A/7+/ - v/+/v7//vLy8/7i4uP+2t7f/tra2/7a2tv+2trb/u7u7/8nIyf/a2tr/6+vr//j4+OP+/v4c/Pz8AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD9/f0A/v7+HPv7++P09PT/6urq/+Df4P/Y19j/1dXV/9va2v/k4+T/7u7u//z9 - /f9+fn7/AAAA/wAAAP8AAAD/Ghoa/93d3f/09PT/4uLi/9LS0v/MzMz/0tLS/+Li4v/39/f/fn5+/wAA - AP8AAAD/AAAA/wAAAP9+fn7//f39//T09P/y8vL/9PP0//39/f9+fn7/AAAA/wAAAP8AAAD/AAAA/35+ - fv/7+/v/6+rr/97e3f/V1dX/1dXV/93d3f/m5ub/7u7u//X19f/39/f/+Pj4//b29v/y8vL/6urq/+Li - 4v/f4OD/4uPi/+rq6v/6+vr/fn5+/wAAAP8AAAD/AAAA/xoaGv/h4eH/5OTk/yQkJP8AAAD/AAAA/wAA - AP94eHj/9/f3/+zs7P/f3t//0tLR/8bGxv/AwcH/wMDA/729vf+5ubn/uLi4/7e4t/+3t7f/t7e2/7a2 - tv+8vLv/ycnJ/9ra2v/s7Ov/+Pj44/7+/hz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+/v74/T0 - 9P/q6ur/4ODg/9nY2P/V1dX/29vb/+Tk5P/u7u7//f39/39/f/8AAAD/AAAA/wAAAP8aGhr/3d3d//T0 - 9P/i4uL/0tLS/8zMzP/S0tL/4uLi//f39/9+fn7/AAAA/wAAAP8AAAD/AAAA/35+fv/9/f3/9PT0//Pz - 8//09PT//f39/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//v7+//r6+v/39/f/9jY2P/a2tr/4+Pj/+/v - 7//y8vL/2dnZ/9bW1v/W1tb/1dXV/+bm5v/z8/P/6enp/+Xl5f/m5ub/7Ozs//r6+v9+fn7/AAAA/wAA - AP8AAAD/Ghoa/9/f3///////e3t7/wAAAP8AAAD/AAAA/yMjI//e3t7/9PPz/+Xl5f/Y19j/y8vL/8LC - wv++vr7/urq6/7m5uf+4ubn/uLi4/7i4uP+4t7j/t7e3/7y8vP/Jycn/2tra/+zs7P/4+Pjj/f79HPz8 - /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz7+/vj9PT0/+rq6//h4eH/2dnZ/9bW1v/c3Nz/5eXl/+/v - 7//9/f3/f39//wAAAP8AAAD/AAAA/xoaGv/d3d3/9PT0/+Li4v/S0tL/zMzM/9LS0v/i4uL/9/f3/35+ - fv8AAAD/AAAA/wAAAP8AAAD/fn5+//39/f/09PT/8/Pz//T09P/9/f3/fn5+/wAAAP8AAAD/AAAA/wAA - AP9+fn7/+/v7/+vr6//f39//2tra/93d3f/o6Of/9vX1/9nZ2f8uLi7/FxcX/xgYGP8UFBT/hYWF//v7 - +//u7u7/6enp/+np6f/t7e3/+/v7/35+fv8AAAD/AAAA/wAAAP8aGhr/39/f///////X19f/GBgY/wAA - AP8AAAD/CwsL/66urv/6+vr/6+vr/97e3v/R0dH/xMTE/7u7u/+6urr/urq6/7m5uf+5ubn/ubm5/7i4 - uP+4uLj/vb29/8rKyv/b29v/7Ozs//j4+OP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPv7 - ++P19PX/6+vr/+Hh4f/Z2dn/19fX/9zc3f/l5eX/7+/v//39/f9/f3//AAAA/wAAAP8AAAD/Ghoa/93d - 3f/09PT/4uLi/9LS0v/MzMz/0tLS/+Li4v/39/f/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7//f39//T0 - 9P/z8/P/9PT0//39/f9+fn7/AAAA/wAAAP8AAAD/AAAA/35+fv/7+/v/6+zr/+Dg4P/c3Nz/39/f/+rq - 6v/4+Pj/1tbW/xgYGP8AAAD/AAAA/wAAAP94eHj//f39//Hx8f/r6+v/6+rq/+7u7v/6+vr/fn5+/wAA - AP8AAAD/AAAA/xoaGv/f39////////Ly8v9JSUn/AAAA/wAAAP8AAAD/TU1N//Dw8P/y8vL/5OTk/9XV - 1f/Gxcb/vLy8/7u7u/+6urv/urq6/7q6uv+5urr/ubm5/7m5uf+9vr7/ysrK/9vb2//s7Oz/+Pj44/39 - /Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+/v74/X19f/r6+v/4eHh/9ra2v/Y2Nf/3d3d/+bm - 5f/v7+///f39/39/f/8AAAD/AAAA/wAAAP8aGhr/3d3d//T09P/i4uL/0tLS/8zMzP/S0tL/4uLi//f3 - 9/9+fn7/AAAA/wAAAP8AAAD/AAAA/35+fv/9/f3/9PT0//Pz8//09PT//f39/35+fv8AAAD/AAAA/wAA - AP8AAAD/fn5+//v7+//s7Oz/4ODg/9zc3P/g4OD/6+vr//j4+P/W1tb/GBgY/wAAAP8AAAD/AAAA/3h4 - eP/9/f3/8vLy/+zs7P/r6+v/7u7u//v6+v9+fn7/AAAA/wAAAP8AAAD/Ghoa/9/f3////////////6+v - r/8LCwv/AAAA/wAAAP8LCwv/r6+v//r5+v/p6en/2tra/8zLzP/AwMD/u7u7/7u7u/+7u7v/urq7/7q6 - uv+6urr/ubq6/76+vv/Ly8v/29vb/+zs7P/4+Pjj/f39HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+ - /hz7+/vj9fX1/+vs6//i4uL/29va/9jY2P/d3d3/5ubm/+/v7//9/f3/f39//wAAAP8AAAD/AAAA/xoa - Gv/d3d3/9PT0/+Li4v/S0tL/zMzM/9LS0v/i4uL/9/f3/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//39 - /f/09fT/8/Pz//T09P/9/f3/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7/+/v7/+zs7P/h4eH/3Nzc/+Dg - 4P/r6+v/+Pj4/9bW1v8YGBj/AAAA/wAAAP8AAAD/eHh4//39/f/y8vL/7Ozs/+vr6//u7u7/+/v6/35+ - fv8AAAD/AAAA/wAAAP8aGhr/39/f////////////8vLy/0pKSv8AAAD/AAAA/wAAAP9MTEz/7+/v//Dw - 8P/h4eH/09PT/8bGxv+9vb3/u7u7/7u7u/+7u7v/u7u7/7u6uv+6urr/vr++/8vLzP/b29z/7Ozs//j4 - +OP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPv7++P19fX/7Ozs/+Li4v/b29v/2dnZ/97e - 3v/m5ub/7/Dw//39/f9/f3//AAAA/wAAAP8AAAD/Ghoa/93d3f/19fX/4uLi/9PT0//Ozs7/09PT/+Li - 4v/39/f/fn5+/wAAAP8AAAD/AAAA/wAAAP9+fn7//f39//X19f/z8/P/9PT0//39/f9+fn7/AAAA/wAA - AP8AAAD/AAAA/35+fv/7+/v/7Ozs/+Li4v/e3t7/4eHh/+zs7P/5+fn/1tbW/xgYGP8AAAD/AAAA/wAA - AP94eHj//f39//Ly8v/t7ez/7Ovr/+/u7//7+/v/fn5+/wAAAP8AAAD/AAAA/xoaGv/f39////////// - ////////hISE/wAAAP8AAAD/AAAA/wsLC/+urq7/+Pj4/+jo6P/a2tr/zMzN/8HBwf+8vLz/vLy7/7u7 - u/+7u7v/u7u7/7u7u/+/v7//zMzM/9zc3P/s7Oz/+Pj44/39/Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD+/v4c+/v74/X19f/s7Oz/4+Pj/9vb2//Z2dn/3t7e/+bm5v/w8PD//f39/39/f/8AAAD/AAAA/wAA - AP8aGhr/3d3d//b29v/m5ub/2tra/9bW1v/a2tr/5ubm//j4+P9+fn7/AAAA/wAAAP8AAAD/AAAA/35+ - fv/9/f3/9fX1//Pz8//19fX//f39/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//z8/P/v7+//5ubm/+Tk - 5P/m5ub/7u7u//r6+v/W1tb/GBgY/wAAAP8AAAD/AAAA/3h4eP/9/f3/8vLy/+3t7f/s7Oz/7+/v//v7 - +/9+fn7/AAAA/wAAAP8AAAD/Ghoa/9/f3//////////////////Y2Nj/ISEh/wAAAP8AAAD/AAAA/0pK - Sv/u7u7/8PDw/+Hh4f/T09P/xsfH/76+vv+8vbz/vLy8/7y7vP+7u7v/u7u7/7/Av//MzMz/3Nzc/+zs - 7P/4+Pjj/f39HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz7+/vj9fX1/+zs7P/k5OT/3Nzc/9ra - 2v/f39//5+fn//Dw8P/9/f3/f39//wAAAP8AAAD/AAAA/xoaGv/d3d3/+fn5/+3t7f/j4+P/4ODg/+Pj - 4//t7e3/+/v7/35+fv8AAAD/AAAA/wAAAP8AAAD/fn5+//7+/v/19fX/8/Pz//X19f/9/v3/fn5+/wAA - AP8AAAD/AAAA/wAAAP9+fn7//v7+//Pz8//t7e3/6+vr/+3t7f/z8/P/+/v7/9bW1v8YGBj/AAAA/wAA - AP8AAAD/eHh4//39/f/y8vL/7e3t/+zs7P/v7+//+/v7/35+fv8AAAD/AAAA/wAAAP8aGhr/39/f//// - ///+/v7//v7+//////99fX3/AAAA/wAAAP8AAAD/CgoK/6ysrP/5+Pn/6Ojo/9ra2v/NzM3/wsLC/729 - vf+9vb3/vLy8/7y8vP+8vLv/wMDA/83Nzf/d3d3/7Ozt//j4+OP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD9/f0A/v7+HPv7++P19fX/7Ozt/+Tk5P/d3d3/2tva/9/g3//n5+f/8PDw//39/f9/f3//AAAA/wAA - AP8AAAD/Ghoa/97e3v/8/Pz/9PT0/+3t7f/r6+v/7e3t//T09P//////f39//wAAAP8AAAD/AAAA/wAA - AP9+fn7//v7+//X19f/z8/P/9fX1//7+/v9+fn7/AAAA/wAAAP8AAAD/AAAA/39/f///////+Pj4//T0 - 8//y8vL/8/Pz//j4+P/+/v7/19fX/xgYGP8AAAD/AAAA/wAAAP94eHj//f39//Ly8v/t7e3/7ezt/+/v - 7//7+/v/fn5+/wAAAP8AAAD/AAAA/xoaGv/f39////////z8/P/8/Pz//////9HR0f8WFhb/AAAA/wAA - AP8AAAD/SUlJ/+3t7f/v7+//4eHh/9PT0//Gxsb/v7+//729vf+9vb3/vb28/728vP/BwcH/zc3N/93d - 3f/t7e3/+Pj44/39/Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c+/v74/X19f/t7e3/5OTk/93d - 3f/b29v/4ODg/+jo6P/x8fD//f39/39/f/8AAAD/AAAA/wAAAP8bGxv/4eHh////////////+/v7//r6 - +v/7+/v///////////+AgID/AAAA/wAAAP8AAAD/AAAA/35+fv/+/v7/9fX1//Pz9P/19fX//v7+/35+ - fv8AAAD/AAAA/wAAAP8AAAD/gICA/////////////v7+//39/f/+/v7////////////a2tr/GRkZ/wAA - AP8AAAD/AAAA/3h4eP/9/f3/8vLy/+3t7f/t7e3/7+/v//v7+/9+fn7/AAAA/wAAAP8AAAD/Ghoa/97e - 3v/+/v7/+vr6//n5+f/6+vr/7e3t/0lJSf8AAAD/AAAA/wAAAP8KCgr/q6ur//j4+P/n5+f/2trZ/8zM - zP/CwcL/vr6+/76+vv+9vb3/vb29/8LCwv/Ozs7/3d3d/+3t7f/5+fnj/f39HPz8/AAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/f39AP7+/hz7+/vj9fX1/+3t7f/l5eX/3t7e/9zc3P/h4OH/6Ojo//Hx8f/9/f3/f39//wAA - AP8AAAD/AAAA/w0NDf9wcHD/gICA/39/f/9+fn7/fn5+/35+fv9/f3//goKC/0BAQP8AAAD/AAAA/wAA - AP8AAAD/fn5+//7+/v/19fX/9PT0//X19f/+/v7/fn5+/wAAAP8AAAD/AAAA/wAAAP9AQED/goKC/39/ - f/9/f3//fn5+/39/f/9/f3//gYGB/21tbf8MDAz/AAAA/wAAAP8AAAD/eHh4//39/f/y8vL/7e3t/+zs - 7P/v7+//+/v7/35+fv8AAAD/AAAA/wAAAP8aGhr/3t7e//z8/P/39/f/9fX0//T09P/7+/v/r6+v/wsL - C/8AAAD/AAAA/wAAAP9NTU3/7u7u/+7u7v/g4OD/0tLS/8bGxv+/wMD/v7+//76+vv++vr7/w8PD/8/P - z//d3t7/7e3t//n5+eP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPv7++P19fX/7u3u/+Xl - 5f/e3t7/3Nzc/+Hh4f/o6Oj/8fHx//39/f9/f3//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+JiYn//f39//X19f/z8/P/9fT0//39 - /f+JiYn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP93d3f//Pz8//Hx8f/s7Oz/7Ovs/+/v7//7+/v/fn5+/wAAAP8AAAD/AAAA/xoa - Gv/e3t7/+vn6//Ly8v/v7+//7+/v//X19P/j4+P/JSUl/wAAAP8AAAD/AAAA/xgYGP/V1dX/9fX1/+bm - 5v/Y2dn/y8vM/8LCw//Av8D/v7+//7+/v//Dw8P/z8/P/97e3v/t7e3/+fn54/39/Rz8/PwAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD+/v4c+/v74/b29v/u7u7/5ebl/9/f3//c3d3/4eHh/+np6f/x8fH//f39/39/ - f/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/ISEh/9TU1P/5+fn/8vLy//Hx8f/y8vL/+fn5/9PT0/8hISH/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/4aGhv/8/Pz/7+/u/+rq - 6v/q6ur/7+7u//v7+/9+fn7/AAAA/wAAAP8AAAD/Ghoa/97e3v/4+Pj/7u7u/+rq6v/q6un/7u7u//f3 - 9/94eHj/AAAA/wAAAP8AAAD/AAAA/319ff/5+fn/7Ozs/97e3v/R0dH/xsXG/8DAwf/AwMD/wMDA/8TE - xP/Pz8//3t7e/+3t7f/5+fnj/f39HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz8/Pzj9vb2/+7u - 7v/m5ub/4ODg/93d3v/i4eL/6ejo//Hx8f/9/f3/f39//wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woKCv+BgYH/+vr6//Pz8//u7u7/7e3s/+7u - 7v/z8/P/+vr6/4GBgf8KCgr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP9PT0//39/f//X19f/r6+v/5+fn/+jo5//t7ez/+/v7/35+fv8AAAD/AAAA/wAA - AP8aGhr/3d3d//f39//q6ur/5OTl/+Tk5P/o6Oj/9fX1/9fX1/8iIiL/AAAA/wAAAP8AAAD/ICAg/9XV - 1f/y8vL/4eHh/9TU1P/Iycj/wcLC/8HBwf/AwMD/xMXE/9DQ0P/f39//7e7t//n5+eP9/f0c/Pz8AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD9/f0A/v7+HPz8/OP29vb/7u7u/+fm5//g4OD/3t7e/+Hh4v/o6Oj/7+/v//r6 - +v+9vb3/e3t7/319ff99fX3/fX19/319ff99fX3/fX19/319ff99fX3/fX19/319ff99fX3/fX19/319 - ff94eHj/ra2t/+/v7//29vb/7u7u/+np6f/n5+f/6Ojo/+3u7v/19vb/7+/v/62trf94eHj/fX19/319 - ff99fX3/fX19/319ff99fX3/fX19/319ff99fX3/fX19/319ff95eXn/goKC/+Dg4P/5+fn/7u7u/+bm - 5v/i4uL/5OPj/+rq6v/39/f/vLy8/3t7e/99fX3/fX19/4mJif/n5+f/8/T0/+bm5v/f39//3t7e/+Li - 4//t7e3/9vb2/7Gxsf97e3v/fX19/319ff99fX3/xcXF//Py8v/i4uL/1dXV/8nKyv/CwsL/wcHB/8HB - wf/FxcX/0NDQ/9/f3//u7u7/+fn54/39/Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c/Pz84/b2 - 9v/v7+//5+fn/+Dh4f/f39//4eHh/+fm5v/t7e3/9PP0//v7+/////////////////////////////// - //////////////////////////////////////////////7+/v/7+/v/9fX1/+7u7v/o6Oj/4uLi/9/g - 4P/i4uL/5+fn/+7u7v/09PT/+/v7//39/f////////////////////////////////////////////// - //////////////7+/v/8+/v/9vb2/+/v7//n5+f/4ODg/93d3f/f3t//5ubm/+/v7//5+fn///////// - /////////f39//X19f/s7O3/4eHh/9nZ2f/X19f/29vc/+Xl5f/v7+//+fn5//79/f/+/v7//v7+//39 - /f/29vb/6+vr/9/f3//T09P/ycnI/8LCwv/BwcH/wcHB/8bFxf/Q0dD/39/f/+7u7v/5+fnj/f39HPz8 - /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+/hz8/Pzj9vb2/+/v7//n5+f/4eHh/9/f3//g4OD/5OTk/+np - 6f/u7u7/8vLy//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X19f/19fX/9fX1//X1 - 9f/19PX/8/Pz//Dw8P/s7Oz/6Ojn/+Li4v/d3d3/2tra/9zc3P/h4eH/5ubm/+vr6//v7+//8vHy//Pz - 8//09PT/9PT0//T09P/z8/P/8/Pz//Pz8//z8/P/8/Pz//Pz8//z8/P/8vLy/+/v7//r6+v/5ubm/+Dg - 4P/Z2dr/19fX/9rZ2f/g4OH/5+jo/+3t7f/w8PD/8fHx//Dw8P/u7+7/6+vr/+Tk5P/b29v/09PT/9DQ - 0P/U1NT/3Nzc/+Tk5P/q6ur/7u3u/+/v7//v7+//7e3t/+np6f/i4uL/2dnZ/8/Pz//Hxsb/wsLD/8LC - wv/CwsL/xsbG/9HR0f/g4OD/7u7u//n5+eP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v7+HPz8 - /OP39vb/7+/v/+jo6P/h4uL/39/f/9/f3//i4uH/5eXl/+jp6P/r6+v/7e3t/+7u7v/u7u7/7u7u/+3t - 7v/t7e3/7e3t/+3t7f/t7e3/7e3t/+zs7P/s7Oz/7Ozs/+vr6//q6ur/6Ojo/+Xl5f/h4eH/3d3d/9nZ - 2v/Z2Nj/2dnZ/9zc3P/g4OD/4+Pj/+bm5v/o6Oj/6unp/+rq6v/q6ur/6urq/+rp6f/p6en/6enp/+np - 6f/p6en/6Onp/+jo6P/n5+f/5eXl/+Li4v/e3t7/2dnZ/9TU1P/S0tL/1dXV/9rb2v/f39//4+Pj/+Tk - 5P/k5OT/5OTj/+Li4v/f39//2tva/9TU1P/Nzc3/ysrK/83Ozf/U1NT/2dra/97e3v/g4OH/4uLi/+Li - 4v/g4OD/3d3d/9jY1//R0dH/ycnK/8TFxf/Dw8P/w8PD/8PDwv/Hx8f/0tLS/+Dg4P/u7u7/+fn54/39 - /Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD+/v4c/Pz84/f39v/v8O//6Ojo/+Li4v/g4OD/39/f/9/g - 4P/h4eH/4+Pk/+Xl5f/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+Xl5f/l5OT/5OTk/+Tk - 5P/k5OT/5OTk/+Li4v/h4eH/397f/9zc3P/a2tn/2dnZ/9nZ2f/Z2Nn/2dnZ/9ra2v/c3N3/3t7e/+Dg - 4P/h4eH/4eHh/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/39/f/9/f3//e39//3t7e/97e3v/c3Nz/2tra/9fX - 1//U09T/0tLS/9LS0v/S0tL/1dXV/9jX1//Y2Nj/2NfY/9jY2P/Y2Nf/19fW/9XV1f/S0tL/zc3N/8rK - yv/IyMj/ycnJ/8zMzf/Q0ND/09PT/9XU1f/V1dX/1dXV/9TU1P/S0dH/zs7O/8rKyv/Gxcb/xMXE/8TE - xP/ExMT/w8PD/8fHx//S0tL/4ODg/+7u7v/5+fnj/f39HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP7+ - /hz8/Pzj9/f3//Dw8P/p6en/4+Pj/+Hg4P/g4OD/3+Dg/9/g4P/g4OD/4eHg/+Hh4f/h4eH/4OHg/+Dg - 4P/g4OD/4ODg/9/g4P/f4N//39/f/97e3v/e3t7/3t7e/97e3v/e3t7/3d3d/9zc3P/b29v/2tra/9ra - 2v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2tr/2tra/9ra2v/a2tr/2trZ/9nZ2f/Z2dn/2dnY/9jY - 2P/Y2Nj/19fY/9fX1//X19f/19fX/9bW1v/V1dT/09TT/9PT0v/S0tL/0tLS/9LS0v/S0tL/0NDQ/8/P - z//Qz8//z8/P/8/Pz//Oz87/zc7N/8zMzP/Kysr/ycnJ/8nJyf/Jycn/ycjJ/8rKyv/Ly8v/zMvL/8vL - y//Ly8v/ysrL/8rJyf/IyMj/xsbG/8XGxv/FxcX/xcXF/8XFxP/ExMT/yMjI/9PT0v/h4eD/7u/v//n5 - +eP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/v3+HPz8/OP39/f/8PDw/+np6f/k5OT/4eLh/+Hh - 4f/h4OD/4ODg/9/g4P/f3+D/39/f/9/f3//f39//39/f/97e3v/e3t7/3t7e/97d3f/d3d3/3N3d/9zc - 3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nvb/9vb2//b2tv/2tra/9ra2v/a2tr/2dnZ/9nZ2f/Z2dn/2dnZ/9jZ - 2f/Y2Nj/2NjY/9jX2P/X19f/19bX/9bX1v/W1tb/1tbW/9XV1v/V1dX/1dXV/9XV1f/V1dX/1dTV/9TU - 1P/U1NT/09TT/9PT0//T09P/0tLS/9DQ0P/Nzc3/zc3N/83Nzf/MzM3/zMzM/8zMzP/Ly8v/y8vL/8vK - yv/Kysr/ysrK/8nJyf/Jycn/ycnJ/8jIyP/IyMj/x8fI/8fHx//Hx8f/x8fH/8fHx//Gx8b/xsbG/8bG - xv/Gxcb/xcXF/8XFxf/Jycn/09PT/+Hh4f/v7+//+fn54/39/Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39 - /QD9/f0c/Pz84/f39//x8PD/6erp/+Tk5P/i4uL/4eLh/+Hh4f/h4eH/4OHh/+Dg4P/g4OD/4N/f/9/f - 3//f39//39/f/9/f3//f3t//3t7e/97e3v/d3t3/3d3d/93d3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb - 2//b29v/29vb/9rb2v/a2tr/2trZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dj/2djY/9jY2P/Y19j/19fX/9fX - 1//W19b/1tbW/9bW1v/V1tX/1dXV/9XV1f/V1dX/1dXU/9TU1f/U1NT/1NTU/9PT0//R0dH/zs7O/83N - zf/Nzc3/zc3N/83Nzf/Nzc3/zMzM/8zMzP/MzMv/y8vL/8vLy//Ly8v/ysrK/8rKyv/Jysr/ycnJ/8jJ - yf/IyMn/yMjI/8jIyP/Hx8j/x8fH/8fHx//Hx8f/x8bH/8bGx//Gxsb/xsXG/8nJyf/U1NT/4eHh/+/v - 7//5+fnj/f39HPz8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP39/Rz8/Pzj+Pj4//Hx8f/q6ur/5eXl/+Pj - 4//i4uL/4uLi/+Li4f/h4eH/4eHh/+Hg4f/g4OD/4ODg/9/g3//f39//39/f/9/f3//f39//3t/e/97e - 3v/e3t7/3t3d/93d3f/d3d3/3N3c/9zc3P/c3Nz/3Nzc/9zc3P/c29z/29vb/9vb2//b29r/2tra/9rZ - 2v/a2dr/2dnZ/9nZ2f/Z2dn/2dnZ/9jZ2P/Y2Nj/19jY/9fX1//X19f/1tbW/9bW1v/W1tb/1dXW/9XV - 1f/V1dX/1dXV/9XV1f/V1NT/0tLS/8/Pz//Ozs7/zs7O/87Ozv/Nzc7/zc3N/83Nzf/Nzc3/zc3N/8zM - zP/MzMz/zMzM/8vLy//Ly8v/y8vK/8rKyv/Kysr/ysnK/8nJyf/Jycn/yMnI/8jIyP/IyMj/yMfH/8fH - x//Hx8f/x8fH/8fHx//Gxsb/ysrK/9XV1f/i4uL/7+/v//n5+eP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD9/f0A/f39HPz8/OP4+Pj/8fHy/+vq6v/l5eX/4+Pj/+Pj4//j4+L/4uLi/+Li4v/i4uL/4eHi/+Hh - 4f/h4eD/4ODg/+Dg4P/g39//39/f/9/f3//f39//39/f/9/f3v/e3t7/3t7e/97d3f/d3d3/3d3d/9zc - 3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nvc/9vb2//b29v/2tvb/9ra2v/a2dr/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ - 2f/Y2Nj/2NjY/9jY2P/X19f/19fX/9fW1v/W1tb/1tbW/9XV1f/V1dX/1dXV/9PT0//Q0ND/0NDP/8/P - z//Pz8//z8/O/87Ozv/Ozs3/zc3N/83Nzf/Nzc3/zc3N/83Nzf/NzMz/zMzM/8zMzP/My8v/y8vL/8vL - y//Kysv/ysrK/8rJyv/Jycn/ycnJ/8nIyf/IyMj/yMjI/8jHx//Hx8f/x8fH/8fHx//Ly8v/1dXV/+Li - 4v/v7+//+fn54/39/Rz8/PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD9/f0c/Pz84/j4+P/x8vL/6+vr/+bm - 5f/k5OP/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//i4uL/4uLi/+Lh4f/h4eH/4eHh/+Dg4P/g4OD/3+Dg/9/f - 4P/f39//39/f/9/f3//f39//3t7e/97e3v/d3t3/3d3d/93d3P/d3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zb - 3P/b29v/29vb/9ra2//a2tr/2tna/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2djY/9jY2P/Y2Nj/19fX/9fX - 1//X19f/1tbW/9bW1v/U09P/0dHR/9HR0f/R0ND/0NDQ/9DQ0P/Qz8//z8/P/8/Pzv/Ozs7/zs7O/83N - zf/Nzc3/zc3N/83Nzf/Nzc3/zc3N/8zMzP/MzMz/y8zL/8vLy//Ly8v/ysrK/8rKyv/Kycr/ycnJ/8nJ - yf/Iycn/yMjI/8jIyP/Ix8j/x8fI/8vLy//W1db/4+Li//Dw7//5+fnj/f39HPz8/AAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/f39AP39/Rz8/Pzj+Pj4//Ly8v/r6+v/5ubm/+Tk5P/k5OT/4+Pk/+Pj4//j4+P/4+Pj/+Pj - 4//j4+L/4uLi/+Li4v/h4uH/4eHh/+Hh4f/h4OD/4ODg/+Dg4P/f39//39/f/9/f3//f39//397f/97e - 3v/e3t7/3t7e/93d3f/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c29z/29vb/9vb2//b2tv/2tra/9ra - 2v/a2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9jZ2f/Y2Nj/2NjY/9jY1//X19f/1dTV/9LS0v/R0tH/0tLS/9LR - 0f/R0dD/0NHQ/9DQ0P/Q0M//z8/P/8/Pz//Oz8//zs/O/87Ozv/Nzc7/zc3N/83Nzf/Nzc3/zc3N/83N - zP/MzMz/zMzM/8vMzP/Ly8v/y8vL/8vKy//Kysr/ysrK/8nJyf/Jycn/ycnJ/8jIyP/IyMj/zc3N/9jY - 2P/l5eX/8fHx//r6+uP9/f0c/Pz8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9/f0A/f39HPz8/OP4+Pj/8vLy/+zr - 7P/n5+f/5eXl/+Tl5f/k5OT/5OTk/+Tk4//j4+P/4+Pj/+Pj4//j4+P/4uPj/+Li4v/h4uL/4eLh/+Hh - 4f/h4eH/4eDg/+Dg4P/f4OD/39/f/9/f3//f39//39/f/9/f3//f3t//3t7e/97e3v/d3d3/3d3c/9zd - 3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vb3P/b29v/29vb/9ra2v/a2tr/2dra/9nZ2f/Z2dn/2dnZ/9jZ - 2f/Z2Nn/2NjY/9XV1f/T09P/09PT/9PT0//S0tL/0tLS/9HS0f/R0dH/0dHR/9DQ0P/Q0ND/z9DQ/8/Q - z//Pz8//zs/P/87Ozv/Ozc7/zc3N/83Nzf/Nzc3/zc3N/83Nzf/Nzc3/zMzM/8zMzP/My8z/y8vL/8vL - y//Kysr/ysrK/8nJyv/Jycn/ycnJ/8rLyv/S0tL/3d3d/+jp6f/z8/T/+/v74/7+/hz9/f0AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP39/QD9/f0c/Pz84/j4+P/y8vL/7Ozs/+fn5//m5ub/5ebm/+Xl5f/l5eX/5OTk/+Tk - 5P/k5OT/4+Pj/+Pj4//j4+P/4+Pj/+Lj4//i4uL/4uLi/+Li4f/h4eH/4OHh/+Dh4P/g4OD/4ODg/9/f - 3//f39//39/f/9/f3//f3t//397e/97e3v/e3t7/3d3d/93d3f/d3N3/3dzc/9zc3P/c3Nz/3Nzc/9zc - 3P/b29z/29vb/9rb2//a2tr/2tra/9ra2v/Z2dn/2dnZ/9nZ2f/Y2Nj/1tbW/9bW1v/V1tX/1dXV/9XV - 1f/V1dX/1dTU/9TU1P/U1NT/1NTT/9PT0//T09P/09PS/9LS0v/S0tL/0tLS/9HR0f/R0dH/0dHQ/9HQ - 0P/Q0ND/0NDQ/9DQ0P/Q0ND/z8/P/8/Pz//Pz8//zs7P/87Ozv/Ozc3/zc3N/83Nzf/Ozs7/09PT/9vb - 2//l5eX/7+7u//f39//7+/vg+fn5G/n5+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/f39AP39/Rz8/Pzj+Pj4//Ly - 8v/t7e3/6Ojo/+bm5v/m5ub/5ebm/+Xl5v/l5eX/5eXk/+Tk5P/k5OT/4+Tj/+Pj4//j4+P/4+Pj/+Pj - 4//j4uP/4uLi/+Li4f/h4uH/4eHi/+Hh4f/h4OD/4ODg/+Df4P/g39//39/f/9/f3//f39//39/f/97f - 3v/e3t7/3t7e/93d3v/d3d3/3d3d/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/29vb/9vb2//b29v/2trb/9ra - 2v/a2dn/2tra/+Dg4P/h4uH/4eHh/+Hh4f/h4eD/4OHg/+Dg4P/g4OD/4ODg/+Dg3//g39//39/f/9/f - 3//f39//39/f/97e3v/e3t7/3t7e/97e3v/d3d3/3d3d/93d3f/d3d3/3d3c/9zc3P/c3Nz/3Nzc/9vc - 3P/b29v/29vb/9vb2//b29v/3Nvb/9/f3//k5OX/6urq//Hx8f/39/f/+Pj49+Xl5YXAwMAH0dHRAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD9/f0A/f39HPz8/OP4+Pn/8/Pz/+3t7f/p6Oj/5ubm/+bm5v/m5ub/5ubm/+bm - 5v/m5eX/5eXl/+Xk5f/k5OT/5OTk/+Pk4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Li4v/i4uL/4uLh/+Hh - 4f/h4eH/4ODg/+Dg4P/g4OD/4N/f/9/f3//f39//39/f/9/f3//f39//3t7e/97e3v/e3d3/3d3d/93d - 3f/d3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9vc2//b3Nv/2tva/9ra2v/b29v/4eHh/+Tj4//j4+P/4+Lj/+Li - 4v/i4uL/4uLi/+Li4v/i4uH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4OH/4ODg/+Dg4P/g4OD/4ODg/+Dg - 4P/f4N//39/f/9/e3//e3t7/3t7e/97e3v/e3t7/3d7e/93d3f/d3d3/3d3d/97e3v/h4eH/5ubm/+zs - 7P/y8vL/+Pf4//j4+Pfk5OSHs7OzDcfHxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP39/QD9/f4c/Pz84/n4 - +f/z8/P/7u7u/+np6f/n5+f/5+fn/+bn5v/m5ub/5ubm/+bm5v/m5ub/5uXl/+Xl5f/l5eX/5OTk/+Tk - 5P/k5OT/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4uL/4uLi/+Li4f/h4eH/4eHh/+Hg4f/g4OD/4ODg/9/g - 3//f39//39/f/9/f3//f39//3t7f/97e3v/e3t7/3d3e/93d3f/d3dz/3Nzc/9zc3P/c3Nz/3Nzc/9zc - 3P/c29v/29vb/9zb3P/i4uL/5OTk/+Tk4//j4+P/4+Pj/+Pj4v/i4uL/4uLi/+Li4v/i4uL/4eHi/+Hh - 4f/h4eH/4eHh/+Hh4f/h4eH/4eDh/+Dg4P/g4OD/4ODg/9/g4P/f39//39/f/9/f3//e3t//3t7e/97e - 3v/e3t7/3t7e/93d3f/e3t//4uLi/+fn5//s7Oz/8vLy//j4+P/4+Pj25OTkh7Ozsw3Hx8cAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz9/f3j+fn5//T09P/u7u7/6urq/+jo6P/o5+j/5+fn/+fn - 5//m5ub/5ubm/+bm5v/m5ub/5ubm/+Xm5f/l5eX/5eXk/+Tk5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj - 4//j4+P/4uLj/+Li4v/i4uL/4eHi/+Hh4f/h4OH/4ODg/+Dg4P/f4N//39/f/9/f3//f39//39/f/9/e - 3//e3t7/3t7e/97d3v/d3d3/3d3d/9zd3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/+Li4v/k5OT/5OTk/+Tk - 5P/k4+T/5OPj/+Pj4//j4+L/4uLj/+Li4v/i4uL/4uLi/+Li4v/h4eL/4eHh/+Hh4f/h4eH/4eHh/+Dh - 4f/g4OD/4ODg/+Dg4P/g4OD/3+Dg/9/g3//f39//3t/f/97e3v/e3t7/39/f/+Pi4v/n5+f/7O3t//Ly - 8v/4+Pj/+Pj49ebm5oGzs7MMycnJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7/HP39 - /eP5+fn/9PT0/+/u7//q6ur/6Onp/+jp6P/o6Oj/6Ojo/+fn5//n5+f/5+fm/+bm5v/m5ub/5ubm/+bm - 5v/m5eb/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4v/i4uL/4uLi/+Hh - 4f/h4eH/4OHh/+Dg4P/g4OD/4ODg/9/f3//f39//39/f/9/f3//f39//3t7e/97e3v/d3t7/3d3e/93d - 3f/c3N3/3Nzc/9zc3P/c3Nz/4uPi/+Xl5f/k5OT/5OTk/+Tk5P/k5OT/4+Tk/+Pj4//j4+P/4+Lj/+Li - 4v/i4uL/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eD/4ODg/+Dg4P/g4OD/4ODg/+Dg - 3//f39//39/f/+Dg4P/k4+P/6Ojo/+3t7f/y8vL/+Pj4//j4+PXm5uaBs7OzC8nJyQAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v4c/f394/n5+f/09PT/7+/v/+vq6//p6en/6enp/+np - 6f/o6Oj/6Ojo/+jn6P/n5+f/5+fn/+bn5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eTl/+Tk - 5P/k5OT/4+Tj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uPi/+Li4v/h4uH/4eHh/+Hh4f/g4eD/4ODg/+Df - 4P/f39//39/f/9/f3//f39//39/f/97e3//e3t7/3d7e/93d3f/d3d3/3N3c/93d3f/j4+P/5eXl/+Xk - 5f/l5eT/5eTk/+Tk5P/k5OT/5OTk/+Pk5P/k4+T/4+Pj/+Lj4//i4uL/4uLi/+Li4v/i4uL/4uLi/+Li - 4f/h4eH/4eHh/+Hh4f/h4eH/4OHh/+Dg4f/g4OD/4ODg/+Dg4P/h4eH/5OTk/+jo6P/t7e3/8/Py//j4 - +P/4+Pj15ubmgbOzswvJyckAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+ - /hz9/f3j+fn5//T09P/v7+//6+vr/+np6f/p6en/6enp/+np6f/p6ej/6Ono/+jo6P/o6Oj/5+fn/+fn - 5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5f/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj - 4//j4+P/4uLj/+Li4v/i4uL/4uLh/+Hh4f/h4eH/4ODh/+Dg4P/g4OD/39/f/9/f3//f39//39/f/9/f - 3//f3t7/3t7e/93e3v/d3d3/3t3d/+Pj4//l5eX/5eXl/+Xl5f/l5eX/5OTl/+Tk5P/k5OT/5OTk/+Tk - 5P/k5OT/4+Tj/+Pj4//j4uP/4+Li/+Li4v/i4uL/4uLi/+Li4f/h4uH/4eHh/+Hh4f/h4eH/4eHh/+Dh - 4P/g4OD/4eHh/+Tk5P/p6On/7e3t//Pz8//4+Pj/+fn59Obm5oGzs7MLycnJAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+HP39/eP5+vr/9fX1/+/w8P/s7Oz/6urq/+rq - 6v/q6en/6enp/+np6f/p6en/6enp/+jo6P/o6Oj/5+jo/+jn6P/n5+f/5+bn/+bm5v/m5ub/5ubm/+bm - 5v/m5ub/5eXl/+Xl5f/k5eX/5OTk/+Pk5P/j4+T/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//i4uL/4uLi/+Hh - 4v/h4eH/4eHh/+Dg4f/g4OD/4ODg/9/g3//f39//39/f/9/f3//f39//3t7e/97e3v/e3t7/5OTk/+bm - 5v/l5eb/5eXl/+Xl5f/l5eX/5eXl/+Xl5P/l5eT/5OTk/+Tk5P/k5OT/5OTk/+Tj5P/j4+P/4+Pj/+Li - 4v/i4uL/4uLi/+Li4v/i4uL/4eLi/+Hh4f/h4eH/4eHh/+Li4v/l5eX/6enp/+7u7v/z8/P/+Pj4//n5 - +fPo6Oh8sbGxCsrKygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+ - /gD+/v4c/f394/r6+v/19fX/8PDw/+zs7P/r6+v/6urr/+rq6v/q6un/6enp/+np6f/p6en/6enp/+jp - 6f/o6On/6Ojo/+jn6P/n5+f/5+fn/+fm5//m5ub/5ubm/+bm5v/m5ub/5ubm/+bl5f/l5eX/5eXl/+Tk - 5P/k5OT/5OPk/+Tj4//j4+P/4+Pj/+Pj4//j4+P/4uPi/+Li4v/i4eH/4eHh/+Hh4f/g4eH/4ODg/+Dg - 4P/f3+D/39/f/9/f3//f39//397f/9/f3//k5OT/5ubm/+bm5v/m5ub/5ubl/+bl5f/l5eX/5eXl/+Xl - 5f/l5eX/5eXk/+Xk5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//i4+P/4uLi/+Li4v/i4uL/4uLi/+Li - 4f/i4uL/5ebm/+rq6v/u7u7/8/Tz//j4+P/5+fnz6Ojoe7GxsQnKysoAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz9/f3j+vr6//X19f/w8PH/7e3t/+zs - 6//r6+v/6+vr/+rr6v/q6ur/6urq/+nq6v/p6en/6enp/+np6f/p6en/6ejo/+jo6P/o6Oj/5+jo/+fn - 5//n5+f/5+bm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tl5f/k5eT/5OTk/+Tj5P/j4+P/4+Pj/+Pj - 4//j4+P/4+Pj/+Lj4v/i4uL/4uLi/+Hh4v/h4eH/4OHg/+Dg4P/g4OD/3+Df/9/f3//f39//39/f/+Xl - 5f/n5+b/5ubm/+bm5v/m5ub/5ubm/+bm5v/m5eX/5eXl/+Xl5f/l5eX/5eXl/+Xl5P/k5OT/5OTk/+Tk - 5P/k5OT/5OTk/+Pj4//j4+P/4+Li/+Li4v/i4uL/4+Pj/+bm5v/q6ur/7+7v//T09P/4+Pj/+fn58+jo - 6HuxsbEJysrKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD+/v4A/v7+HP39/eP6+vr/9vb2//Hx8f/u7e3/7Ozs/+zs7P/s7Ov/6+vr/+vr6//q6+v/6urq/+rq - 6v/p6un/6enp/+np6f/p6en/6enp/+jp6P/o6Oj/6Ojo/+jo5//n5+f/5+bn/+fm5//m5uf/5ubm/+bm - 5v/m5ub/5eXl/+Xl5f/l5eX/5OXl/+Tk5P/j4+T/4+Pj/+Pj4//j4+P/4+Pj/+Lj4//i4uL/4uLi/+Li - 4v/h4eH/4eHh/+Hh4f/g4OD/4ODg/+Df4P/g4OD/5eXl/+fo5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm - 5v/m5eb/5eXl/+Xl5f/l5eX/5eXl/+Xl5f/k5OX/5OTk/+Tk5P/k5OT/5OTk/+Tj5P/j4+P/4+Pj/+Tk - 5P/m5uf/6+vr/+/v7//09PT/+Pj4//n5+fLo6Oh6sbGxCcrKygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v4c/f394/r6+v/29vb/8fLy/+7u - 7v/t7e3/7e3t/+zt7f/s7Oz/7Ozs/+vr7P/r6+v/6+vr/+rq6v/q6ur/6urp/+np6f/p6en/6enp/+np - 6f/p6en/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5uf/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eTl/+Xk - 5P/k5OT/5OTk/+Pj4//j4+P/4+Pj/+Pj4//j4+L/4uLi/+Li4v/i4uL/4eHh/+Hh4f/h4OH/4ODg/+Dg - 4P/m5ub/6Ojo/+jo6P/n6Of/5+fn/+fn5v/m5ub/5ubm/+bm5v/m5ub/5ebm/+Xl5f/l5eX/5eXl/+Xl - 5f/l5eX/5eXk/+Tk5P/k5OT/5OTk/+Tk5P/l5OT/5+fn/+vr6//v7/D/9PT0//j4+f/5+fny6urqdq6u - rQjKysoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/v7+AP7+/hz9/f3j+vr6//b29v/y8vL/7u/u/+3t7f/t7e3/7e3t/+3t7f/t7O3/7Ozs/+zs - 7P/r7Ov/6+vr/+vr6//q6ur/6urq/+nq6v/p6en/6enp/+np6f/p6en/6Onp/+jp6P/o6Oj/6Ojo/+fn - 6P/n5+f/5+fm/+bm5v/m5ub/5ubm/+bm5v/m5eb/5eXl/+Xl5f/k5OT/5OTk/+Tk5P/k4+P/4+Pj/+Pj - 4//j4+P/4+Pj/+Li4v/i4uL/4uHi/+Lh4v/h4eH/4eHh/+bm5v/o6Oj/6Ojo/+jo6P/n6Oj/5+fn/+fn - 5//n5+f/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eb/5eXl/+Xl5f/l5eX/5eXl/+Xl5P/k5OT/5eXl/+fo - 6P/r6+v/8PDw//T09f/5+fn/+fn58urq6nasrKwIy8vKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+HP39/eP6+vv/9/b3//Ly - 8v/v7+//7u7t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7O3s/+zs7P/s7Oz/6+zr/+vr6//r6uv/6urr/+rq - 6v/q6un/6erp/+np6f/p6en/6enp/+np6f/o6On/6Ojo/+fo6P/n5+f/5+fn/+fm5v/m5ub/5ubm/+bm - 5v/m5ub/5ubm/+Xl5f/l5eX/5OXk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//i4+L/4uLi/+Lh - 4v/i4uL/5+fn/+np6f/p6ej/6Ojo/+jo6P/o6Oj/6Ojo/+fo5//n5+f/5+fn/+fm5//m5ub/5ubm/+bm - 5v/m5ub/5uXm/+Xl5f/l5eX/5eXl/+Xl5v/o6Oj/7Ozs//Dw8P/19fX/+fn5//r5+vLq6up2rKysCMrK - ygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP7+/gD+/v4c/f394/v6+//39/f/8/Pz//Dw8P/v7+7/7u7u/+7u7v/u7e7/7e3t/+3t - 7f/t7e3/7e3t/+zt7P/s7Oz/7Ozs/+vr7P/r6+v/6+vr/+rq6v/q6ur/6urq/+rp6f/p6en/6enp/+np - 6f/p6en/6Ojo/+jo6P/o6Of/5+fn/+fn5//m5uf/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5uX/5eXl/+Xk - 5f/k5OT/5OTk/+Tj5P/j4+P/4+Pj/+Pj4//j4+P/4+Li/+Pj4//n5+f/6enp/+np6f/p6en/6ejp/+jo - 6P/o6Oj/6Ojo/+jo6P/o6Of/5+fn/+fn5//n5uf/5ubm/+bm5v/m5ub/5ubm/+Xm5v/m5ub/6enp/+zs - 7P/x8PD/9fX1//n5+f/6+vrw6+vrdKysrAjKysoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz9/f3j+/v7//f3 - 9//z9PP/8PDw/+/v7//v7+//7+/v/+7u7v/u7u7/7u3t/+3t7f/t7e3/7e3t/+3t7f/s7e3/7Ozs/+zs - 7P/r7Ov/6+vr/+vr6//r6uv/6urq/+nq6f/p6en/6enp/+np6f/p6en/6enp/+np6P/o6Oj/6Ojo/+fn - 5//n5+f/5+fn/+bm5v/m5ub/5ubm/+bm5v/l5ub/5eXl/+Xl5f/k5eX/5OXk/+Tk5P/k4+P/4+Pj/+Pj - 4//j4+P/4+Pj/+jo5//p6un/6enp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+jo6P/o6Oj/6Ofn/+fn - 5//n5+f/5ubn/+bm5v/m5ub/5+fn/+np6f/t7e3/8fHx//X19f/5+fn/+vr68Ozs7HCrq6sHzc3NAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD+/v4A/v7+HP39/eP7+/v/+Pf3//T09P/x8fH/8PDw//Dw8P/v8O//7+/v/+/v - 7//u7u7/7u7u/+3u7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+zs7P/r7Oz/7Ozs/+vr6//r6+r/6+rq/+rq - 6v/q6ur/6enp/+np6f/p6en/6enp/+np6f/p6Oj/6Ojo/+jo6P/n5+f/5+fn/+fn5//m5ub/5ubm/+bm - 5v/m5ub/5ubm/+Xl5v/l5eX/5eXl/+Tk5P/k5OT/5OTk/+Pj4//j4+T/6Ojo/+rq6v/p6un/6enp/+np - 6f/p6en/6enp/+np6f/o6On/6Ojo/+jo6P/o6Oj/6Ojo/+jo5//n5+f/5+fn/+fn6P/q6ur/7e3t//Hx - 8f/19fX/+fn5//r6+vDs7OxwqqqqBs7OzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v4c/f394/v7 - +//4+Pj/9PT0//Hx8f/w8PD/8PDw//Dw8P/w8PD/7+/w/+/v7//v7+//7u7u/+7u7v/u7u3/7u3t/+3t - 7f/t7e3/7e3t/+3t7f/s7e3/7Ozs/+zs6//r6+v/6+vr/+vr6v/q6ur/6urq/+np6f/p6en/6enp/+np - 6f/p6en/6ejp/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ufm/+bm5v/m5ub/5ubm/+bm5v/l5eb/5eXl/+Xk - 5f/k5OT/5OTk/+Tk5P/o6Oj/6urq/+rq6v/q6ur/6urq/+rq6v/p6en/6enp/+np6f/p6en/6ejp/+jo - 6P/o6Oj/6Ojo/+jo6P/o6Oj/6+rq/+7u7v/y8vL/9fX2//n5+f/6+vrw7OzscKqqqgbOzs4AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz9/f3j+/v7//j4+P/19fX/8vLy//Hx8f/w8PD/8PDw//Dw - 8P/w8PD/8PDw//Dv7//v7+//7+/v/+7u7v/u7u7/7u3u/+3t7f/t7e3/7e3t/+3t7f/t7ez/7Ozs/+zs - 7P/s7Oz/6+vr/+vr6//r6ur/6uvq/+rq6v/q6en/6enp/+np6f/p6en/6enp/+no6f/o6Oj/6Ojo/+fn - 6P/n5+f/5+fm/+fm5//m5ub/5ubm/+bm5v/m5ub/5ubm/+Xl5f/l5eX/5eXl/+np6f/r6+v/6urq/+rq - 6v/q6ur/6urq/+rq6v/p6er/6enp/+np6f/p6en/6enp/+no6f/o6Oj/6enp/+vr6//u7u7/8vLy//b2 - 9v/5+vr/+/v77+3u7W6qqqoGzs7OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+HP39 - /eP7+/v/+Pj4//X19f/y8vP/8fHy//Hx8f/x8fH/8fDw//Dw8P/w8PD/8PDw//Dw8P/v8PD/7+/v/+/v - 7//v7u//7u7u/+7u7v/t7e3/7e3t/+3t7f/t7e3/7e3t/+zs7f/s7Oz/7Ozs/+vr6//r6+v/6+vr/+rq - 6v/q6ur/6erq/+np6f/p6en/6enp/+np6f/p6en/6Ojo/+jo6P/n6Oj/5+fn/+fn5//n5ub/5ubm/+bm - 5v/m5ub/5ubm/+Xl5f/m5uX/6urq/+zs6//r6+v/6+vr/+rq6v/q6ur/6urq/+rq6v/q6ur/6enp/+np - 6f/p6en/6enp/+np6f/s6+z/7+7v//Ly8v/29vb/+vr6//v7++/v7+9roKCfBc7OzgAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v4c/f394/v7/P/5+fn/9vb2//Pz8//y8vL/8vLy//Hx - 8v/x8fH/8fHx//Hw8P/w8PD/8PDw//Dw8P/w8PD/8O/w/+/v7//v7+//7u7u/+7u7v/u7u7/7e3t/+3t - 7f/t7e3/7e3t/+3s7f/t7Oz/7Ozs/+zs7P/r7Ov/6+vr/+vr6//q6ur/6urq/+nq6f/p6en/6enp/+np - 6f/p6en/6enp/+jo6f/o6Oj/6Ojn/+fn5//n5+f/5+bm/+bm5v/m5ub/5ubm/+bm5v/q6+r/7Ozs/+zs - 7P/r7Ov/6+vr/+vr6//q6ur/6urq/+rq6v/q6ur/6urq/+nq6f/q6ur/7Ozs/+/w7//z8vP/9vb2//r6 - +v/7+/vv7+/va6CgoAXOzs4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+ - /hz9/f3j/Pz8//n5+f/29vb/8/P0//Pz8//z8/P/8vPy//Ly8v/y8vL/8fHx//Hx8f/x8PH/8PDw//Dw - 8P/w8PD/8PDw//Dv8P/v7+//7+/u/+7v7v/u7u7/7u7u/+7t7f/t7e3/7e3t/+3t7f/t7e3/7Ozt/+zs - 7P/s7Oz/6+zs/+vr6//r6+v/6uvq/+rq6v/q6ur/6erp/+np6f/p6en/6enp/+np6f/o6Oj/6Ojo/+fo - 6P/o5+f/5+fn/+fm5//m5ub/5ubm/+vr6//s7Oz/7Ozs/+zs7P/s7Oz/6+zs/+vr6//r6+v/6+rr/+rq - 6v/q6ur/6+vr/+zt7f/w8PD/8/Pz//b39v/6+vr/+/v77+/v72ugoKAFzs7OAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+HP39/eP8/Pz/+fn5//b29//09PT/8/Pz//Pz - 8//z8/P/8/Pz//Ly8v/y8vL/8vLy//Lx8f/x8fH/8PDx//Dw8P/w8PD/8PDw//Dw8P/v8PD/7/Dv/+/v - 7//u7+7/7u7u/+7u7v/u7e7/7e3t/+3t7f/t7e3/7e3t/+3t7f/s7Oz/7Ozs/+vs6//r6+v/6+vr/+rq - 6v/q6ur/6unq/+np6f/p6en/6enp/+np6f/o6en/6Ono/+jo6P/o6Of/5+jo/+fn5//n5+f/6+vr/+3t - 7f/s7e3/7Ozs/+zs7P/s7Oz/7Ozs/+vs7P/r6+v/6+vr/+zs7P/u7u7/8fDx//P08//39/f/+vr6//v7 - ++3w8PBpoKCgBc7OzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+ - /gD+/v4c/f394/z8/P/5+vn/9/f3//X09P/09PT/8/P0//Pz8//z8/P/8/Pz//Lz8//z8vL/8vLy//Ly - 8v/x8fH/8fHx//Hw8f/w8PH/8PDw//Dw8P/w8PD/8PDw/+/w7//v7+//7+/v/+7u7//u7u7/7e3t/+3t - 7f/t7e3/7e3t/+3t7f/t7ez/7O3s/+zs7P/r6+z/6+vr/+rr6//q6uv/6urq/+rq6v/p6en/6enp/+np - 6f/p6en/6ejp/+no6f/o6Oj/6Ojo/+jo6P/s7Oz/7e3t/+3t7f/t7e3/7e3s/+zs7P/s7Oz/7Ozs/+zs - 7P/t7e3/7+/v//Hx8f/09PT/9/j3//r6+v/7+/vt8vLyZpycnAPU1NQAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz9/f3j/Pz8//r6+v/49/f/9fb1//T0 - 9P/09PT/9PT0//Pz8//z8/P/8/Pz//Pz8//z8/P/8vLz//Ly8v/y8vL/8fHy//Hx8f/x8PH/8PDw//Dw - 8P/w8PD/8PDw//Dw8P/w7+//7+/v/+/v7//u7u7/7u7u/+3u7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+zs - 7P/s7Oz/6+zs/+vr6//r6+v/6urr/+rq6v/q6ur/6enp/+np6f/p6en/6enp/+no6f/o6ej/6eno/+zs - 7P/t7u3/7e3t/+3t7f/t7e3/7e3t/+zs7f/s7O3/7e3t//Dw8P/y8vL/9fX1//j4+P/7+/v/+/v77fLy - 8macnJwD1NTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAD+/v4A/v7+HP39/eP8/Pz/+vr6//j4+P/29vb/9vb1//X19f/19fX/9PT0//T09P/z8/P/8/Pz//Pz - 8//z8/P/8/Pz//Lz8v/y8vL/8vLy//Hx8v/x8fH/8fHw//Dw8P/w8PD/8PDw//Dw8P/w8PD/7+/w/+/v - 7//v7+//7u7v/+7u7v/u7u7/7e3t/+3t7f/t7e3/7e3t/+zt7f/s7Oz/7Ozs/+vs7P/r6+z/6+vr/+rr - 6//q6ur/6urq/+rp6v/p6en/6enp/+np6f/p6en/7e3t/+7u7v/u7u7/7e3t/+3t7f/t7e3/7e3t/+7u - 7v/w8PD/8/Pz//b29v/5+fn/+/v7//r6+u3y8vJmnJycA9TU1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v4c/f394/z8/P/6+vv/+Pj4//f3 - 9//29vb/9vb1//X19v/19fX/9fT1//T09P/09PT/8/Pz//Pz8//z8/P/8/Pz//Pz8v/z8vL/8vPy//Hy - 8v/y8vH/8fHx//Hx8f/w8PD/8PDw//Dw8P/w8PD/8PDw//Dv8P/v7+//7+/v/+7u7v/u7u7/7u7t/+3t - 7f/t7e3/7e3t/+3t7f/t7e3/7O3s/+zs7P/r7Oz/6+vr/+vr6//q6+v/6urq/+rq6v/p6er/6enp/+np - 6f/t7e3/7u7u/+7u7v/u7u7/7u7u/+3t7v/v7+7/8fHx//Tz8//29vb/+fn5//z8/P/v7+/r2dnZY7e3 - twTU1NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA/v7+AP7+/hz9/v3j/fz8//v7+//5+fn/9/f3//f39//39vb/9vb2//b19v/19fX/9fX1//T1 - 9f/09PT/9PT0//Tz8//z8/P/8/Pz//Pz8//z8/P/8vPz//Ly8v/y8vL/8vHx//Hx8f/x8fH/8PDw//Dw - 8P/w8PD/8PDw//Dw8P/w7+//7+/v/+/v7//u7u7/7u7u/+3u7v/t7e7/7e3t/+3t7f/t7e3/7e3t/+zt - 7P/s7Oz/7Ozs/+vr6//r6+v/6+vq/+rq6v/q6ur/6urq/+7u7f/v7+//7u7v/+7u7v/u7u7/7+/v//Hx - 8f/09PT/9/f2//r5+v/8/Pz/7+/v69PT02CEhIQCu7u7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+HP7+/uP9/f3/+/v7//n5 - +f/3+Pj/9/f3//f39//39/f/9vb3//b29v/29vb/9fX2//X19f/19fX/9PT0//T09P/z9PP/8/Pz//Pz - 8//z8/P/8/Pz//Lz8//y8vL/8vLy//Ly8f/x8fH/8fHx//Hw8P/w8PD/8PDw//Dw8P/w8PD/8PDw/+/v - 7//v7+//7u7v/+7v7v/u7u7/7u3u/+3t7f/t7e3/7e3t/+3t7f/s7ez/7Ozs/+zs7P/s6+v/6+vr/+rr - 6//r6uv/7u7u//Dw8P/v7/D/7+/v//Dw8P/y8vL/9PT0//f39//6+vr//Pz8/+/v7+vT09NghISEAru7 - uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP7+/gD+/v4c/v7+4/39/f/7+/v/+vr6//j4+P/39/f/9/f3//f39//39/f/9/f3//b3 - 9//29vb/9vb2//X19v/19fX/9fX1//T09P/09PT/9PT0//Pz8//z8/P/8/Pz//Pz8//z8vP/8/Ly//Ly - 8v/y8fL/8fHx//Hx8f/x8fH/8PDx//Dw8P/w8PD/8PDw/+/w7//v7+//7+/v/+7v7//u7u7/7u7u/+3t - 7f/t7e3/7e3t/+3t7f/t7e3/7O3t/+zs7P/s7Oz/6+vr/+vr6//v7+7/8PDw//Dw8P/x8fD/8vLy//X1 - 9f/49/f/+vr6//z8/P/v7+/q09PTYISEhAK7u7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz+/v7j/f39//z8 - +//6+vr/+fn5//j4+P/3+Pj/+Pf4//f39//39/f/9/f3//f39//29/f/9vb2//b29v/29fX/9fX1//X1 - 9P/09fT/9PT0//T09P/z8/P/8/Pz//Pz8//z8/P/8/Pz//Ly8//y8vL/8vLy//Hx8f/x8fH/8PHx//Dw - 8P/w8PD/8PDw//Dw8P/w7/D/7+/v/+/v7//u7+//7u7u/+7u7v/u7u3/7e3t/+3t7f/t7e3/7e3t/+3t - 7P/s7Oz/7Ozs/+/v7//w8PD/8fHx//Pz8//19fX/+Pj4//r6+v/8/Pz/7+/v6dPT012CgoICurq6AAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD+/v4A/v7+HP7+/uP9/f3//Pz8//v6+v/6+fr/+fn5//n5+f/4+Pj/+Pj4//j4 - +P/39/f/9/f3//f39//39/f/9/f2//b29v/29vb/9fb2//X19f/19fX/9PT1//T09P/09PT/8/P0//Pz - 8//z8/P/8/Pz//Py8//y8vL/8vLy//Hy8v/x8fL/8fHx//Hx8P/w8PD/8PDw//Dw8P/w8PD/7/Dw/+/w - 7//v7+//7+/v/+7u7v/u7u7/7u7u/+3t7f/t7e3/7e3t/+3t7f/t7e3/8O/v//Ly8v/z8/P/9fX1//j4 - +P/6+vr//Pz8/+/v7+nU1NRcenp6Ar29vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+/gD+/v4c/v7+4/39 - /f/8/Pz/+/v7//r6+v/6+vr/+fn5//n5+f/5+fn/+Pj4//j4+P/39/j/9/f3//f39//39/f/9/f3//f3 - 9//29vb/9vb2//b29f/19fX/9fX1//X09P/09PT/9PT0//P08//z8/P/8/Pz//Pz8//z8/P/8/Lz//Ly - 8v/y8fL/8fHy//Hx8f/x8fH/8PDw//Dw8P/w8PD/8PDw//Dw7//v7+//7+/v/+7v7//u7+7/7u7u/+7t - 7v/t7e3/7e3t/+3t7f/x8fH/9PT0//b29v/4+Pj/+vr6//39/f/v7+/p1NTUXHp6egK9vb0AAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA/v7+AP7+/hz+/v7j/f39//39/f/7+/z/+/r6//r6+v/6+vr/+vr6//n5 - +v/5+fn/+fn5//j5+P/3+Pj/9/j4//f39//39/f/9/f3//f39//39/b/9vb2//b29v/29vb/9fX1//X1 - 9f/09PX/9PT0//T09P/z8/T/8/Pz//Pz8//z8/P/8/Lz//Py8//y8vP/8vLy//Hy8v/x8fH/8fHx//Dw - 8P/w8PD/8PDw//Dw8P/w8PD/7/Dw/+/v7//v7+7/7u7u/+7u7v/u7u7/7+/v//Pz8//29vb/+Pn5//v7 - +//9/f3/8PDv6dTU1Ft6enoCvb29AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/v4A/v7+HP7+ - /uP9/v7//f39//z8/P/7+/v/+vr6//r6+v/6+vr/+vr6//r6+v/6+vn/+fr5//n5+f/4+fj/+Pj4//j4 - +P/39/f/9/f3//f39//39/f/9/f3//f29//29vb/9vb1//X19v/19fX/9fX1//T09P/09PT/9PT0//Pz - 8//z8/P/8/Pz//Pz8//z8/P/8vLy//Ly8v/x8vL/8fHx//Hx8f/x8fD/8PDw//Dw8P/w8PD/8PDw/+/w - 7//v7+//7+/v//Dv8P/y8vL/9vb2//n5+f/7+/v//f39/+/v7+fU1NRYenl6Ab+/vwAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8c/v7+4/7+/v/9/f3//f39//z8/P/7/Pv/+/v7//v7 - +//7+/v/+/r6//r6+v/6+vr/+vr6//r6+v/5+fn/+fn5//n5+f/5+fn/+fj5//j4+P/4+Pj/+Pj4//j3 - +P/49/f/9/f3//b39//29/b/9vb2//b29v/29vb/9fX2//X19f/19fX/9fX1//T09f/09PX/9PT0//T0 - 9P/09PT/8/Pz//Pz8//z8/P/8vPy//Ly8v/y8vL/8vLy//Hy8v/y8vL/8/Pz//X19f/4+Pj/+/v7//39 - /f/v7+/n09PTV11dXQG7u7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1dXVAM3N - zRvs7Ozh//////7+/v/9/f3//f39//39/f/9/Pz//Pz9//z8/P/8/Pz//Pz8//v8/P/7/Pz/+/v7//v7 - +//7+/v/+/v6//r7+v/6+vr/+vr6//r6+v/6+vr/+vr6//r5+f/5+fn/+fn5//n5+f/5+fn/+fn5//j4 - +f/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/39/j/9/f3//f39//39/f/9vb2//b29v/29vb/9vb2//b2 - 9v/29vX/9fb2//b29v/39/f/+Pj5//v7+//9/f3/7+/v59PT01ddXV0Bu7u7AAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChoaEAd3d3CuLi4qn+/v7//v7+//7+/v/+/v7//v7+//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//Pz9//z8/f/8/fz//Pz8//z8/P/8/Pz//Pz8//z8 - /P/8/Pz//Pz8//z8/P/7+/z/+/v8//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//r6 - +//6+vr/+vr6//r6+v/6+vr/+vr6//r6+v/6+vr/+vr5//n6+f/5+fn/+vr6//r6+v/8/Pv//f39//Dw - 8ObT09NXXV1dAbu7uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGFh - YQDb29sAzMzMMfDw8Mb39/f9/f39//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ - /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v3+//39/f/9/f3//f39//39/f/9/f3//f39//39 - /f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f38//z9/P/8/Pz//Pz8//z8 - /P/8/Pz//Pz8//z8/P/8/Pz//f39//39/f/v7+/l1NTUU0ZGRgG+vr4AAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHp6egAAAAAAwsLCH8fHx2v39/d//v7+f/7+ - /n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+ - /n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+ - /n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5//v7+f/7+/n/+/v5/+fn5f9TU - 1EWCgoIBvLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////wAAAAAAAAAAAAAA////// - 4AAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD - /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA - AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA - AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP///// - wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD - /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA - AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA - AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP///// - wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD - /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA - AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA - AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP///// - wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD - /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA - AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA - AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP///// - wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD - /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA - AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA - AAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP///// - wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD - /////8AAAAAAAAAAAAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAA - AAAAA//////AAAAAAAAAAAAAAAP/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA - AAAAAAAAAAf/////wAAAAAAAAAAAAAAP/////8AAAAAAAAAAAAAAH//////AAAAAAAAAAAAAAD////// - wAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAA///////AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP/ - /////8AAAAAAAAAAAAAH///////AAAAAAAAAAAAAD///////wAAAAAAAAAAAAB///////8AAAAAAAAAA - AAA////////AAAAAAAAAAAAAf///////wAAAAAAAAAAAAP///////8AAAAAAAAAAAAH////////AAAAA - AAAAAAAD////////wAAAAAAAAAAAB////////8AAAAAAAAAAAA/////////AAAAAAAAAAAAf//////// - wAAAAAAAAAAAP////////8AAAAAAAAAAAH/////////AAAAAAAAAAAD/////////wAAAAAAAAAAB//// - /////8AAAAAAAAAAA//////////AAAAAAAAAAAf/////////wAAAAAAAAAAP/////////8AAAAAAAAAA - H//////////AAAAAAAAAAD//////////wAAAAAAAAAB//////////8AAAAAAAAAA///////////AAAAA - AAAAAf//////////wAAAAAAAAAP//////////8AAAAAAAAAH///////////AAAAAAAAAD/////////// - wAAAAAAAAB///////////8AAAAAAAAA////////////AAAAAAAAAf///////////4AAAAAAAAP////// - //////AAAAAAAAH//////////////////////////////4lQTkcNChoKAAAADUlIRFIAAAEAAAABAAgG - AAAAXHKoZgAAgABJREFUeNrtvTuwLdl5Hvb9q/c+cwfPIYEBxBFcGjwImpmrREOhiwQlMpACUZETSiLN - wIEjh1ZZlqXQkQMnNFVFBs4MB1JJRYKlWIJVZTuiBBT4KEBEYTjggMBwZu7ZvdbvYP3P1d37nHvPOffu - Bs6aunP27t29Xr3+9wt4bI/tsT22x/bYHttje2yP7bH9GDV62RO4TfvN3/zNzz558uSfP3ny5G/8vb/3 - 91592fP5cWtEhH/zb/7NN0sp/8XP//zPv/uy5/PY7q9dPAL47d/+7X/yq7/6q/8jM7/sqWw3BkAAg/37 - j0ojgOSY/Nt/+2+/+/Tp0y88IoEfnXbRCOC3f/u3/+mv/uqv/qO7Aj/r/4hBAC4ZlzzzypjAxA+CdIho - 8f0RCfxotYtFAL/1W7/107/2a7/29VsDvxFf9pW9IEDvDEAHxmEWz9gLwKGP55kJMwCSxd9h/dRJf0cC - RAAzSikAgK997Wt//md/9mc/83f+zt95+4G29LG9oFZe9gS22tXV1f++Cvzc/zF3MGOWf/Jfum+zcbhB - O/O+4ueb/zWgMVpjNDQ0bmhr97UGbgxu3O9prT/T4ufeX/93w7h2b++79ylz17FuMf/GMh+Zk+9n/9xa - A7fWd0rex5e+9KWffP3117/+L/7Fv/jkyz4nj+1u7WIRwJMnT740XmMATAroN1M4BfMO1HDghsI8CyKB - ow8GmnzufztAt9YC4LYMuAaIZ4DNxhAqrYPdAJwLINc5cEAgOnbzeXJbm+vyX0RMCvCtNdQ2IISIIAF8 - 6Utf+olHJLD/drEiQGttAd5rHAH7j8tfFEfcQhx4XgWeqBY698/sg2l3dIt+mdMcn5Vz1/tJkBdJZ9Zt - nINNbTkK2UIIVKhLEiAQ9X+lFPus+oGvfe1r7/zZn/3ZFx/FgX22/SAAHuRqRlJ+KSDaz8SgRnb4WfrY - xAYRdqXfTWlctf5CxbuITCCl9BQmdAaaHekYyJ67ua+Jff4NXffAPhnrd8RHt2v6QG9F5H8F/BEBPCKB - /bd9IIAB+BncqR2zkD0H9C2Yi7BAbhZwJLIKKJyUcnoLx05vAFqARTfIjhmYhDMZJ8vhGfLPTKBNun2+ - 9b0aLQU+FyaAmNFAgky6ApAIIBRTBE7TtIoAHpHAvtvuEEAH4C4fhws3wqL/7FQ3XqEwBgm15RsosyET - CuIGDLU4yy3kmGmDzzdRZZtjcBzF4baMFPowgrRkKALfsC0C9IYkGERF+iOgAIUKpjKhTOsI4BEJ7Lft - AAFwEu+5a+n63zPy7EjxWTgFlBYglQTQdTPUFId1jmD43rkO6v0bgDd5uLlZUCl5oLKLeW9CqSsyOH43 - pIIg6siekHMa64ugsE65TxQGHJ5TEaBzAAeUUlBEN0C0LQ784Ac/+Nm/9bf+1ndf7Il5bM/TLtYKoG0B - Fy0c9MyQp6eEmDm1DJxC1/AD3DEJCAwyS4GAxwbwm0RgFL7ZPIgF6LmBWkmmSTb6LYMEDmFTZgmkveMA - MceRWzPA3icrkmAOYs7aMkSbT82REymKkv4I3Sxplo1unuyWAbjlY8U68Nprr33zX/7Lf/mfveyz89hu - bhfPASTNf2D9+cwBJ6VmCzZbwZDQpd6ggN9Slhni8BuIo27AWX6fUmbQWbiErHdYGXBkCEjZfY6YZ0X5 - ubLeod8uFbCvR/UQvjmLB3TVEB3ANB2E+pM5BXVrAaEIRwDqYtO///f//i/feuutn/3bf/tvf+sBj8lj - u2O7eA5gu/Hym1BW9o/ym9JhZY2bcwZrqv6gLPOPar8nAx7nJzo6ia5IbeiTjfvghCTGMd3PAcaRKLIx - jiIiweDXsLpD+j/2/vIDa7/5yvutkQtwfwHzfWj+XTmSn/u5n/vwpz71qT945AQuu+0GAUSOmBNgy8lt - jgSUaiqrrGy+6hOYAnAk5R0b5U1ig+kIOqhHtVoz9t+peqMgWuuEeXtVXX8g82zkABowWRdXotiwJTv4 - WqDKTJFpdB01jq+YilasHLG/tkQCzA3csEAKEJ3IIxK4/LYbEUBZ/saDDB313ExgkZOzc05QBp4ZM1F7 - kCENM5nJaE1ZehmkmfTtTkCMLZnCRQPqNjixNjRTH5qZcFQV3mjYZ1NsZhHDhZRxD5i3LAWuLAQDNBVM - pViMQCkEoIAKUECgaCIspSsQ0cWFR3HgctuOEIBTFnWnNXOdaN3Xzn2Sc8cWL1HwnAu/ZVlcr+l31/qr - nH7W7JZEC9dGGJdOWWlpgBw9+TZUB2nc+EEQgjJDquknvtlAGAciKpimKXwXb0HQwmFIfyvBj+ARCVxm - 240IAERZvremrLoCv7K0qtmWpza1e+SyuSKLNgjDKpO7uAHXByR9w7bHQNZPxHk5B66KQo9mHDSCkZgv - rgelYPCPYI79wzT9Ucbf2mm9J6oLXB8gf2uMWeAcO6AxEiLiPIoDl9l2hgD6/90CoIcxcAqAcQjnqL4D - JRCOurDf/V8DutmxdcUfGGhkjLpR/W0k49xC5kYQlIphXcoZLBQVy7mzcgii/FDkZ/oPNXFGJaHpImht - oknt0PeQTKlnN5k+QUYZzIGLAKIQIBWQwBdf9ll6bL3tCgEoBJjiPiICqLb8HNAH5Z4oDalxvm6Q0P8R - fAxV0iVuYIUf92kJQmEFbH/WJOwRf7CjgzR5cNBpyL8mSEqvKDfT4l7wMABWPos8FfbShyUkh6aIjwRj - tCFy0CIUV/793M/93Ic//elP/3//+l//6//8pRyhx5bavhBAAuQIqMMN4zMm98I1/GaWE4UeZ0Bx4SLo - HImxmX1nmIb3JCBKDYZ1jF0XLfrQL4+Tj3qCxex82iT8PhMnp6d15iQAumyjMhS6w2RORtnyER4TNh+B - +ofw5Y3w6L/+1//6k09+8pP/zyMSePntshHAFtFCFpG3H86ed0odO9RJTAGJYY8pAbp3o8DESwoYPnVF - G6dxO4C5f4CLGVGf4f0ulqT2/ygOMLpLs3EESYCJS9/YSxWdYmCSUHKK/InPT7mXcf/Ne7JG6s+Wi4BD - 7oJHJHCZ7aIRAJ+Bcl5AIjsQGRxS0KpTQgRK9KnJfXLQzdM4uLeeYSwwAnDTEeyagJHJ1+RzPLsyfU7k - +bDOGN9v6wifz/Vr91CTcAWfn7P67lIcxSwbPyJUeSyKAJU5JSSJjkKPSOCy2kUjAGeVMwPq8r40MwX2 - X5WlbuwUTRWDo+zOArZdtZdTX61PSXQDAkkMci2568iMn9bxiOO46zJEv4WCGoKtK+Zg9YgOQUlXwFsz - 9vDiMNeo8ugTb2F/Bl1G+ujYRr3/CDBg7xYAB/qYTWlUDD4igZfbLhsBpBYAdiChBjRKBhs5mwzANOrq - A08ZGZgJjs852fTmqrWglKNADVOQDpm9fb3XCFghkxBHLsD9HFw+13sCVV70nBV6XdnpFgNNLNLMl7Fl - TslEC3aDBJohjkZLpAxokNC6y7ClMMMjEriUtiMEIG3kn9X/XFjafnBdaUVyj5sGW3g0yrlLChpt5pGL - WAXCIcLP/fQ35AeZXQZiN69ZfgITI7Imnjf71HUEnQYaGoXEIIhmQkqRkC5PhEFYo49JIieBtWU5V5Ct - AG4V8DyEYxLSRyTwctqOEECg+E5uHJzVrRZu0XIjAfshBomZLJzuFWhaAl0wqxkbTWFmHIB1RCQrnxXY - BrEg5SSA45WkyFzZGeV+3PnH+JTgSMgrCCRwCYrsVrbE/CwGq2Bqpk8g1wGsWAVGk2FEAq+//vr/+7u/ - +7v/5UOcoMe2bBftChzdgFnt9XZgHEwB+EEXuNXvBl80gM8Wp88ICm92wLAEHGxKslRk5FyggVF4UTYy - JHd/AzGhhWc9iCi4626kK+t/3H+4SSKgzu4DKYkIHDnGxCQmYnBPCroqBjEwHSYLAR5/jPqY0cHYEopS - EXfh9RyD8TMAfPWrX/3SL/3SL/3fD3rIHtt+OAA7rqrLSn4ungCjKVSyqfRE5md/cIsrVwAHdw/A0Kf7 - HsSgGg0C2gB+vayZgxJf0RwsAxfgij773xo8BvHAZXI0CKKMy3TlYkwlFv0bFDNsek8uyAQv5h4DpNOd - Rv1rF0XYU45Hh6HoTAQAf/Nv/s2vPXICD992ggCcjjnJF7k/yOfOxgKdugaRYOgrfWdOwGGkNLLTDZ6R - NykQN6crdfWcW9EwhZFzUbSQ2X0Cb3Wd8ILMrZHbQTRGydwd41yDJYF8FlHeT/eqbgBBnAp7Gh/LF1wk - sQIkVa0EAQHUitZq9hsQRPCIBB6+7QIB8Ch0drLaD6ZDVVKaJTPXskfrrFsFAu0y60EbHo5KwD7+Vp+9 - X6FsUZGmCksAMbxfex/742WvTrY3ApbAAKu1gD24Sc2X6t+/lfI8j4XkBBX1E+sekcEyMkQ7rlsFWrYO - NF64FT8igYdtu0AAiVIFll4PonPQHSNs+w8pJSQDhMhHKxA1sCXm0ISfS4ocuBIsmWCWPGOmYQ8APY47 - QLl1H+MQnBKH+aqYMzg4UZDL7XMyLcZ5DHMIAN+UBVoTRwZ1iqgbkw5jXJY5CrVq5sKq1L9tKwcfkcDD - tX0ggFF3p9RUr6iSjdZhyX5HBkCjTHp8RXjuCYTNMg5/em1acR5KZQcKbcCj39ez/EcW3fCT/hB1GMaJ - NM9ExD6HnhZcnXpu8m1Qqi6iUHA6tPBkao4HVvaVhCNLiG3t9THgtRRbFwkE2Gssu8btEQm8oLYPBGDN - TVoW5x6TcIw6s0jZeQBYHgAMfth5vDbMIXZOEu3nFBbZR1+AM8vIKwCpFD/oGWIYsXvpiqIz6iDUZbdp - J76Gcf5Z95DvaQXWtyNY2WPOvWRXJdhmrqFJcyug1iMYGclb0HwDTC+w7kL8iATuv+0KAXBiw7c1z2Yg - CPm9laIlwIGawJzF3tKEm4QBDe/tF5r1JOG+rZvhRrFinYfAAODZu0+Dc7oXoDvWxKBCgSljwX1u62Op - X2JS4o2pBzgiiKBDsN8o9bk5mC5FnY+4dGuF+B+25hGECvTpX0pF7kjgX/2rf/XlF3PifvTbrhDAKLOu - 0majaHJwRSilBDyevHKUjRc9ymUSkqzxBXY9KNo0GCCZDdPk4hcBEApxBS3f4yH64uS0kvMsS9orvHfi - bjJist8sqQALorHtyzI82KIeU/ai1ZfgadLY9iooVsUz0JSAGxWNa116Df7yL//y7z8igftpl48AUkTe - 4HmHzIKSAXz/xc+iS/OmnEOWxodBHTjUNb5RuJ9MrBg5EXOnXfGxcq2AJwcJM/WCH0FxOK4lBuyo+L/Z - CJ7rMAG0j6uRfYYww+9bCCW7UjilZ1kDux0SbAFWi62V66oDqMkC0EuU1/65toV14BEJ3E+7eASQs+s6 - 2TXGmyXt1ZDqWz1dmKkXwNHMPAZQ23Rfx3LZtnfYswEF6wDU3E7mQUfjXMNXpeiRetqcbBzNPOzA2cLc - Oc1uW+vp+ji1bHg5sFWLAqIYssZdrXAzhiQ51UJUsHfEsyUCsVsMKifKr6ZCQwLtEQk8RLt4BODsZLgS - w1ORqX4E7v5skww5msuP1+Aly78q5wZq5wk11VAotFxFgliGPPYb0gyn/wISIF1DIwFOJ7HMweJBPAA8 - ry7DeRQAjYRl9zlHbiXL+ptvIPMzEYHZO9H/6T5tJUmN3Ez2ymzs6cXMVFgZtVZTCPbfHpHAfbUdIAAg - nnpmV2CZbUrz9IkSjiElBDsPjJRRZ9Eni3yd5WKFEDKSKRej/iEiphWFhAXoOLoQSsmqPHDrXqDWHGr2 - 9f+PgL+yQ2FfLAU4WmYSbO5kJs9x8omLUi4kRU2q3kIiC5sDf3S5po3JplLn6pAU5mHmv8rJGqD+AmYx - qPURCdxD2wUCcCrDI9FAhsiWrxulWpNlyQDYqJdlyHEVXlDop6CXPDP/7noHBUgvVAJu8IxA7Cn/4xJM - txBp9fqw1o8AkmfbgZci45AyPSgwtxh9W4fVDySff7itO0vB3Z2twOJyZxKXAEd2HqCVxYvGqhRkiR2o - KxYC5QzaIxK4Q9sFAkgtEmlStZyCitrQI71aeV7OaaPg+GJAxY5HOJgOR/Ei/VHA0tJgAmwMNNEimrmQ - g8eeUs0IBHEemxTfMYb5BxjScXFCswP3sYAekBQGwThETKKiPAv7lprSg6HbFLMWraFm6Doza7EcPLJS - KvNzTc5C47/uVdgMCfzSIxJ45rZDBOCnhsSkpwU742/5Gf0TVWgd+K1+oAGu3t6SNmGTWIroEXMQqHre - EE1AHmNZUePuA3u+Cfh6jy01Qia7f0DgAChkBx4Mk30PVfRwOcQ4pHxJUBh5SfWItKLktP6+NkQCE3vY - fRikNcliVDeRQDUk0FqXRX7pl3/p93/v937vV+7tvP2It90hAIvLRyTUQUewfKL/X4FShFZnSzVLTtCx - JVyyTol1NAoUvpFaJZwa96aRfoKoWvDNT8q3dUHfZGw4C29sPDuVd9zhiGHLsSlyNdm9GM6VBB1IRFJb - cREyhYDczlkURFfAJHtI9nxs6ihUa7WIQkcAbLqAZkgA+PKXv/x/PiKB27XdIQBPkBsOUfg50RuDFbaH - WQ5bZ5VVC6fa90iO15oDLcWSYVrhw4AUQcHXQn/NgMvSaqdZDwsJykcerqcUgghWBVUGbvgH6JAtuSi7 - XkBTpKcVD74Vq+7Fun8IitO1NUEyI4QCqEsEHmwMTJY/sNVqTkFqKaiqC4hIAI9I4Lbt8hFAUBwBSCmx - 4y288lw/mBS+O31KB51jD5u8vlAsEQ2aWxa8gEZGRcnbToN0BKAC/V2dOEfLBJQ97kjLuSAFuDA/OECO - O8Ss0YG98JkhDutLc/5x6H8Jy1l052Rc3bYmBpt/EkqW78xMsPAErinDcOscQbcUdBPhIxJ4vnb5CCCo - n+PBVuqZf3Vg6axCQ2KdGyzc1QNt1v0C/Cn3+osecK4lj/L7CFD6fVlDYBzPRox1A4yqd3OmPSvmT81k - vC4CBUQZzKDOngsnhMAsMItJFYnDWLwSn63NYcshMa5lxHqjfkXxJ6mOgbnHVSjSHmoNqK+AWgnqwCEA - j0jgpnbxCCDK4iOrH6mj+Zzz2j3hc0zEQauQGA4iIbHhcRyrICJzs5MedAzBzrdF6W1uPNyvKbpYpZQA - 2ip+hGCn2K+ObeJBCFnKfXQFZVuD0iWjtaTbQYTYEpoizR/nmt5nwKTRUtJ0roJYHcCrRQ6mFGM1xxQA - j0jgXLt4BKDND3O4Yt5mMZd9pMT6ef1Aj8hCP2mwy9J3DgbcZj0ILL7OhSMfvqlOIDvg5kVILI4H7OY2 - AEwNpq44J60IG+/2fk5jAVICxebt+oloAIjNzIA23nkuJos8LH2s7HN4N4xc2Uj3lsL8YweL7EFK/YOn - YHtEArdqu0EASuw89p/sF7N9Q24yMSH+XZe4+y8q92ZAIDuE+hu727GVEXft+Sh8r8FIP+Q6X2Wh5RcL - 8+X0hMcObNNZ/ymmMgvISrgAMt9mDjFLvFAaGkG2ZWXOYGVgmJGTA7c2PBILq0Qxx6MMPT/j+k72z01q - D7hrsCOBiAxWkMB//axn70e57QYBOKXqkWYmoxu7rSy+a+pvIsIw4BsO3Cgvt/QI/Ag75RZQ3cQzjmQE - 2JKVYIhkMtGDNpVqnOYZ/gvee4mjZwqljseOwj4Z0nTOAKSVhNbm4dYECuzJKqfFHPZBTZchYUjsMz4b - sJEhI2Zw645CLgawmQvPIIH/43d/93d/7TlP4Y9c2w8CCFkrkvZeAd+UfcICr8jH4Rwa+EblnCMOl78H - YpyoVhZK1iF/hOs+BA/WDE6chyOUVT5bdoNjvdPAmcR9AZStIPYeVxWf0r+FJId9QZO048OWxn2P5dHS - bWFucf8T4IdSQxkdd2TZdaBZx2PLZNEH1KgXEOXgBhL4xV/8xd96RAK97QYB9Ig+/RLYcrj8mNxRMzm3 - Z1gCcSj4E0Q31RFlmOnNxhtt8sAaNLmWXBENe2CBNK8pkB18tkh+1HU01srGyqVQWAdC/UNlsTc4oYDQ - sjdj6DsiSENWAaNhOWfPyiTPak6GkHyEVfRYxXMx9HrNVyBMf81LsLZVcaDWRyQQ224QwJINjHXuDMRW - HiM7UNEnoJvx3THICooYK93S/clNdSMltv6NOgGlwuFXA7Jlos0lDTWYJkcmPbpfC3tm1sTl6wjBS+jP - 3EbkgPwOFbQ0tUf0oMw3R2k9iF4ckERz5eQCicZZyVoTN7a4b4WbY0ZrVUyC/W/SCVRNQtq/A49IANgT - AkA8m+EIrYS0xgesFJf6BeitCqWqjGsiPxvc0BAbANiXBQnSj8H+Hw+6yfJuQdc0YLn/2MZy3rFwiCI7 - CvKzWz7G/AlrJNb0ESG4RyML2eFw5fk1kh0sD56tVebN+X1htdCQrxF8Pq4jbrpaGRRBM1sYMQ8cgCEG - cRh6RAK97QoBaIsa5nUaOlA1kow4mllHb7asQYF+BhfVxJovBwkfApXi0gG8uZ6iRQDLT6y2JAlER6aA - E2J8gHLSlJ5e9mcAbmtF0DdY4LLvnyKKYJJccCZ2tydQiWHV8cl1VO1vDMRhDeOecFg30nuK3ECT4KCa - 2P6azIMaRvyIBPaCAAI1yMyuX9QDTs7f5xx76QC73M+5gxAfsDoRIACiiiHG8grS8Ph7ud3YWl6Dz8U8 - zPwY7HAptRaZAdK5ig08FcUBjpAic9fgJZ+3KxYauvJvvbSAg18ysypSsVTiPDyhTwWrRUpWOu6L7kl2 - o14/J1EcGGIGapUyZG2BDIAfXySwDwRgLTiHhJh9AOLbLlSgZE2+p9HXewIKYQe/deCMowubKhQxc88B - iSRAV1Z4u1ONEWCbo5vItCPlInpmY14FK+8Qjniar1/nYe7DUllI7fDWA3F+frAKKNDrOq06myGYlXRg - AfkYR8BhvsN9imDz97hczv3qGhgePNSqxQq0WjtnoPqAgUMAM37xF3/xt37v937vv7vLCd1b2wUCiO88 - 2oiddW8B+KD+o8L661VeHKosKvD6oEpVwgVSK0IM6Y2AzjR0sSVDBO12h3jpw6mjphjPzk5joQ4MI7Fw - Js32wACEhMsBAEvTHbIjKUTHWYaqo5laB2EleUMNwGmAHhHtkOdRPxjyiSLEllije656A++pNQY3oIpv - gEYNJo4gcQk92OjLX/7y//rVr371v3+ug7rDdvEIYEHrOJJ+NdHF8NLsJKTnzs9T86cDsC7GtWSggbKz - H7wWyvb0n0sgZlEZmBbT/3AMMPL7ulVCJmbVfeMYK7sSJaEY4qvIklVRSLYX2QVBHaua7W3MshTH0EzF - uv6Yzmy1RZ3FwkeKh1vjPrBzQVtdGxJJCw7IultyLHYgyP3mPLTiJ8DM+IVf+IX/5ccFCVw8AkgHPNFh - aW0s8ulpr/pXJ2dOgEaKlYczIGHvk7lYqCxr0U9kdvgs0FvfWdhNmnYRVyw997mk/5FpUGosyDANiGZl - 1JWt94hFANxM+cfIVHTtRXgdQMKmb4EBIBJwbt8pSDGVIFuiCttd6VjFvhheDQbiFiDoA+aoExAu4Mcd - CVw+AlhpfkacThirr8DIsAq/BuuaJmujxxyRpr8oy9xCYKDm2We4iYtXk3BEbz3nDxwIw3nOc9U712An - cg4S+tz/hDJnpABCrhQdRB7SYICw7sWuBO7HPCw34gJ8XcEpaaNUc0a0fnXtbtUVUOCGugSmFZ+G+a/M - axk05D4CVfQDP45IYDcIYGSB9f9us86KqZ6WS515smIunzmXI2Nxi6QIG4FUgYjXJhm+smvIzestyM3E - 0WzOwaKQASECos6Nw4AtUe4gmuhcE++0urP5q4kKATGu2fAiUkvjr3S/2Ct2y8hZOYLTe9YvWkuBcYZL - Su+dJYegAj2bVUAtBGP24R8HJLAbBOCNg5LKD3fmNjkDzUoX/iEW+0JyNzYzlY5DDki02S87dRd/PQV2 - r7sXwXfLu27oOnrdsrgBN0rcRVx/BLyYOzGKIKtgR8o9OLeDMOdxE13o4dXf0vyD+LGayiCMZ2+W3Qph - aG+Fqxr3MzphxWdqZckXEKwCEQnUHy8ksA8EMLCnBoQMICi+EpU4R/HUrdaARU164ZreG6P1OPXiH5Tz - jJQ5AGX01HOKqdRpNLJz7pdD+TNj3eMNZoSz/9RnoMV5yOasmvTDPqe6hPp/TU6Sbs0Wgbwp+dVFBLqK - HGzNymqwvQvA06wvkFscls2AYNGGiSsKCKMqAhhcheuGcvBHGQnsAgFEeE7u5YAfqkX4Xn7ejrOZuwLF - 0Hz+CJTdzgzZ/4cZIcoIeXi9pkFHg3zKa33pVxFZhpJkcQ0GlDacHvio/gSylnw5WkRiYjS0C8b9jAAe - AHMdk3DccFGcrqw7fLaiJjG/go25bvKM72+RomxlXzt3p6KRlyZX4J/rjFYr5qgcrKtI4J/iR6jtAgEs - mmF6IGb7WbnNAQRBHxAoq/5Ojbwop1KrSLFTz6pcjPH6GjEYFYhKPclEiTUUNTKxTrR8bebU1IRCqvXD - HgkUO3EI65uilNK4E+Mcwp5ZSXJlvXl1N7xvRw5pPhsvzxyf4hqSOJM9MIY3EN4BZ83/xqKTGMEcEop0 - ij/Xijq7KFBb1gsIEvhHv//7v//PnvHEXmy7aASw7e8W2dTxGf8fOTSIRSA4xSAcOMpZgmkDdmyARXhq - kL/jAYYqqc50yAhuvUKJ1VnH5AfhNIjRirP8Cxs/GGOy1AV3Lv3E4uTGyCAoQgFTYiZxZ3XD9Y/UYjyb - IlQhlbR6+Ura8a3BMlfvfsxbtys3QuvvlFmSi+ZiI3N1LqAOIgEz4+d//uf/hx8VJHDRCCCzjAMfu0FG - TWWnlC0U6NT7XA+mrG5/0hELlmNxdDFS0UNuaOQmR8sWrIquZTJT+8uZQkbXBAruxgzA/HRCua9mXn7N - EdCwLZ410VlzS7SrKCemKbd9Qdq3VSpuf+Ier9J85yJM3NBwZhhzth07EPcnWktWbrJnIxLmxYx8z73Y - aB1iBKJi8EcVCVw2Aoht0F4tqL9yxEoJ9XpTYEHQgAcN8TnyplRGjlBpKlOHA2+HsuU5Oee8So2TrGqc - ytB34GIGVJGBanX+2bpgIoho+FsYDiIh6TPrHFC4mHQNWVRaPDPEXTh3JhWGY7HU4VGP4RBrQEA8CyTD - 3oflIVggRP2Wc543SH5BUwq6MjAqCvvn+iOFBPaBAIzjjQDm+N1cWWNAS5DFgWZ1AI3YnyEfdiCJpdx4 - HCvCq4xBGdi2jp0vZIU+NUdGETl5CvDwXBBtthCXIxcBhtg5BxEgIJgsvqz1qQrKbb8C5wFYuKawLiH3 - 6Z6xnwHJRzGNV0Zz0QbBSWl9X6KSMXpvUiPTB7S5rnsLGkJoP1JIYBcIIBaMsBavMQGtSJScAIpridzn - nrPiLI0R/rPDzj42uAXFYEw0En0OUof2TymXRtfF/IaapVeTj1jUn1Hjzs9QCIHgs0ADCfMl53BEn2DJ - PmIsvYT7brrTpMUNGvqVe13jTwa44xzPYJiwaXz2GdkdU1yu4vO0VyMHFZA5BdMpK9svacVqRa3zgBBc - L7B3JHCxCCCzg+Fl6Ysz9g1W2IKlCOcyYm274q6btCicO5FSWREIDX24wnBlst5dOPzMbIk1GWOOwZj6 - 2ymjxQSpiWwVSjmIP1GE6EoDtUK2ARCinL9klQP+iqLXprytWxjBqnlykIxeFw+POMOCtzYHgogPrG99 - OTlDPrEQa14vYzwnfdzKnj2oikgwz/OqWLB3JHCxCIB45YXGv+k4DcdLAYt48XCSi6GU3E+5ue8q0Gsd - PqOgWeblxQQhCi0RTsTCoFlwI7RFTj7OnYa/acJpPOdqKB7ydG8bLB/x8dF25kAQ/e83YXF4JqQDSh6U - 65hL3ldCMOcde3VzTQRZMf0l0SpyLwb8jMh5ra6rATFXgAUTzfNCKTgiga9+9av/201LuKR2sQiAN664 - Z6rLwqP2+VyYagp05S56O2urDjjOV67JxeuyqAbikFEwimkIzWcgCMTNx3IjICOl7VrZBpb+IvXU8Fyj - oAhJR+PhX7DFCNo2CutlczWOiMpxC8NxoSJbWT81bNoPFSeYaS4jiU0OIXBLa8RAf1XOwH6Jc0wnZZiT - cUS6jlCIdK4mDmQT4RIJ/MIv/MJ/uyckcLEIYLUpWxdcRpV9Dkn3sU5HBlu9OAdRM/CFH2o2R5V44Lcm - xUE8oHS8/GC6icLzErbSvLgmO1CPS15cMdFE1xvWP87WMMBaqGLkncijHnXe5osQ9s+XBZEt/PfIfays - g8Pslt4Ry3lngN9GhjEyI7H1uj8bXExcVUxE6gyJJhOpmNtssQPx31znXSOB3SCAJLPplZjJZoXiJLeS - oAD0fPx+ANwRKLCMK/awdJAHtpLZ9REg13a7XgHBPx9monQUtDymbgpDOsiqvPOTHvQKaV55T+JHUxYC - 4fBnxRq75hIADzr8QZewBWZBpPDY/fV705avcBDxp1BLNRGBJPqt04JhO86lH+lZhuvcFiZBVQjO85zc - iveEBHaDAGLzcl4RwIF0PNjr4LnCTZJcpif7w0k+XyE64fzaDcrhR5HBk3+GSkahk6wH4GDaWCKahGWY - s0Y9UH8VCQbdNhYdJm6myRoYQVMI1Rn4NOMmkPFdwwauvKQ8xy3OIAO73LlpZvSbFxmEWN2LskJ1Be+l - ugNbjoRpJAZ6GHEzX4A6D45C89x/b/viBPaDAPj8pU4M1cEjhYcESjYCptu/tzTUxmSOIanyLTGfXusq - yJ5IokSkn+MiHFAChbV+GDw4IkEOPrGbGreoMAe/fk2hBgUW817sLtNk/YfpoNN/3cNtehn2InA2awAW - 2XY102Yub+S0sp6l4zAVWdTsuVUgRqMEndNb1wNmJEtBJ6AJRea5mwTneUats7kPtyGfAAB8+ctfvmgk - cKPS9WW1WiurIqZv+hzYr1kcMkLVzsSKhquiWWb/n97e/6xU+WEEDbzqAtKjimQA1/J5mu0spTBWhlgO - COvG2XHqTirK0qozU8yJT/DPW916ohQSzSSFNQxigt42zLmxmkXT5kHRQkcmPlcDVu3LOqTNuZJtq3Aj - ZUDYEb/rq9+s0hSqOqlVZrFc26Gu7zCXZP1eUggzABQQyjRhmiYcDgf7e3V1hePhiOPVEdN0wOHgv0/T - BCK6SFg7vOwJPFNTSr0QbXlxaJUVJD3sDe4Qg/F5/UAmNiavQyh6Iec0Orm0qxZzEARTpqDZXjn33qdQ - SgFOBARjLK2w62TmNQ28WaOtnuQks0md+lHKlBRMoVuuDQAKkfnKOyTlTY+ils2suYUENk5GPoZTYn4B - hptkZctRFaEKgHIRJDnu6eqWpN3htUPAkLkKSqMKtFTPqet4asM0dWp/OBz6L/KuqRCIeg7J1hqmaUpW - iUtr+0IAWIrMmhVYk3VGis0JQOTvZkaMcKgjEmgkhJPsEDjCIfEzYTvUTM38TxYBTPGzcCQU+hSbZJqx - 5hSCUqbVDmOnMahJyR/MZbnHATjfsIhJsJtDn3K9TBPAhMrVf9+YRkYGHqwUwV71NkTuxOWIJeIDFtyt - bH5AMVYjwde09mqNYxo5NOGiZEZQkyaFQqz9nAVRhrticNbuC6GWCioFU62YpoLWJpTSkcCFEn8AO0MA - o+tP/2A03mBOg12I5XAtDrZ1IvAhx0MPYAE8g05msFn4REMQUVaOB2xNrND/kTjvqCxOeVUmBghlG2jl - uQ2KOyNchVNVY1zinNY7QQZup5A0FRTwIH7pbfIepOCIoaMw7c7FOO8Tq44Zm66ACJ9wpNxMKtplhLiG - Y/WXzvS4j4ABOdRLkkxU8WrEfffVTTtuVm2AooBSCmqpmKZJRNQJ09R82x45gLs03rxsNvtIdeSQGD3n - ZT8DVywyJZl2mJoRaBE5PCuNi5/sNfA2CL1PVI9qLuEdNfvuWkwgqUzMK4d67JdtEX5HX7dTUkbHOWbW - j2z7giPSDVE223q020rpNRCacAIsugUmNSFGvUsQMxTIZA4jJUZkv5PSxal8/zpwdXD45PgpcDq8ZB2h - /h7O3bG81oAM9HwF5GranwZUapZOrLaKAx/MY9T0JhfcLt4KsOrUEyDbAMpT3/frZzPEyHEOceWu7Onm - JC/7RaZE4ziePsM3sHcma4cUHOqcEn347aAFZ6SVZduHoHBjVnFH5WYOHo5D/sNzQTZBlo+KTpt7cGYq - paBQkX6VxTdIEfEp2EzYLSm2LwPHEtmUlKEZ7vt/DpGnfuWMRKuCoSLbX7baKyMWVyRqvhfkc9N5dGQn - OQRWUoiZ6/gFt91xAGoyMqcdJRxWqWZpSoo90XDoWFhSpRXKmnqMQMwU2EDRmrBeNdPpMEcmNKzFLjvL - zPG3tTOjXE1QTrqFgOPAIdxVvidvoqFTDkFGUVHmmNE5I31cOAMqBYUl574irxLehe5v+sQmE1heAltf - QAaqaxwSuiy4oEEMMItDWDJZ6TitlKCIIPojLhWDHIQI1ZuwsFMqJigSMKovwN+4rb7GS2uXjwAWB1av - dUqtt6wlgzQFj4lzA9uZ8kI4+KdTGLQALgbk4+jSoiIUd1Nx6xdblxwQAGHQ5K8iLpdX4xybKBxNS81Z - 7t3ORuYAQEmLD0vTZVYNCiW7o/Zf6wlNpQ9Tm1sZbVhloYPHpmwUNUIj1acEh57Nd7+yI6zKQtcXNDPj - cTgnLvt7HgS2Nem4WoHYzK7mbu3PkT27nJHpF1Sy2wEGuHwEcK5Fdny8jBWk4OaBHDJstnoyjXS/XQ7n - 0n3APivAWIvpqkwvkR80ZZdaEM4sjyKSCCJHdPtVPeI4120uKIojSPtn17WqsMjxbp8IOhYZq5S+mNa0 - NJkj08i1Gw8gDjx6zZHmAh1uv3ZdKxCUd+jvzxk3Qzz6ZPCCSCZVMtMfm+KyAaACqwa9ZnbldibuZAcY - YF8IYBExtmQI7ROHV5b416BdNqKmFINN+2/ydeh4bbR4aI11NorkfUQunJad5Z4HTqMXIiNP2yWWBJZM - xq49P9OnAJkiCecWwuY47x83bAWfRKerfrWUrk6aa5Wng5hEijSyMs837SY7R+CBWHcGakMwpOPvgMXS - En/VjXV5x/g7HvZg8z0NnBoByQnhhvd6ie3CEYDh+nwpEnS5FpNKMi1udXkbgKXHSPI8DCq2dAhxLpqQ - tpUwRyYkOVcBjfIa1rpOVJW8bFinraq4Ek1FE9Y3pPnYZPNtvlkJqWxy5pKECscQ6xbJ7PlXVahgmoA6 - zwiSdqegyaNSV6Yv7xy3H528ghg2xkVoE6cJRzVdfk/DkSDVoP9Qfwvd98W5S7vq+xFNi7ZPO2oXjQCM - EpqcxuAV4crNN3bBE4oo25zO26j8Cbb4VejULpw97OJCC857UUbXow8/+Ig01e9034V4oMnLjwOmrCqs - LDNtnjOnZT5aCo4BZxk/7J9eaCbLR+eX5QKSqCXLLyCgTKitDlr/4dkb9tvvCX54Mm+L77CtzzwKx0/2 - k3M4KUIhSYec9m25r2zI2HaZnVM4V6PiUttFIwBtyfd+5EfZAS6+VGc1I2s5Hp6ACHgxaOAByRVNIe1V - BGBXugU2c5DvF9Sa0lEM10JyD/vV2eB1OTnr2xNnHwFKBOSIlKL8YHiANvYkzER9DRgQz6v+e5kKGIza - apAsoqINZwAlUHxFjE3mHDk2RGklK0Cdk1PO0NCmIe+O+FX6WIo045r70LLmrOZAi+bPs2u7vLYLBNBb - FgcSBRFA7SxccjYdAlHkRZlyiG8cMWqU1aMMpiiKyjlI1R7c2G9S5qWQ1CAmDEDrdHB1W5BYHJE9HPDI - 7OoaYBR1ARFgtlKAjcO5hYXN5U+pKBqJYnDCPNfFcyu7HNase9gyJ0N9v4suT9+jeUsGhGyPcABgPTeq - 3XcLyPZ6ubsAh75YJupORipUhrO5IwywAwQwAMUg4DeDHlXGscMXs6TKCu5wkQyvcHtOfcmAPobiqzyQ - agy1YD7a8g2w4QILY1RzNDMIZaXMCazM1K0WwbbuyTL1sjsGUevTLSHLcA7oOfMeDBF1J94G0boHEar3 - L1xTAaYDoc5tffaWd3HL/Bd8+5rI6fo+g6unBjK53mQDBGUvdE+27lEkIYoWuzOGTqvoaK5S+4H51Pbl - CRi99TgCK7BQ3cj/qLkHmQIGr572fo8BP5Sn4CTjaiUeZa2JQ0fhs800XGtRVpVxut98mJXGuyNOkdMs - 01g+SL9snmuBIocHFUAaIQHCWSuC3MBxDzmiM+eQTHch8nChHg47dhf9GnIqtI5IG/KqczUgFlOidsbm - 0WdcQ+4g79diM/M4UegyTyXWrFHxwRaWmj049yIK7IMD4Lyhrv0XOiQRe5rhxV4fJTeegQEY3w6lPx3w - i9vWhaoVja5DVNzF4CBnXL0/p1B24AGhoqrQE0pIYW7DYY0pvAyIVL+p6yYK2hCy8dUHrrO9fV1pybrH - awyM3Wd0PyDR4DHHelemrqUU8ZKrfQ9NQRq7d/Oczq1FV9rWuY1m61oCWhR5JiJwCW7cVKCVij2/AoEL - g5uCe9ANSI85etl/VzGw+0hExK6rYdPnXHK7fARgMvzIq7OF6zo71jAQE4B6LDtQAOKupbafI9u8NTZQ - lN1meBy6sc7RWWip51eLF3OD9qTcSFPlYhTf16eBFFFK3eSmCK2EI+jPFFtbX8jktClKHMopbQ8PLyjS - UDCZfoETotqW8gHgME3gaUKtDVQA4oIo3MQZsJJVSQrCjcGlhXckFL+oYk+UkgQQFRyp2IYRYYnUVHTQ - mgUFQGULczbOKFiILYMzsXFXJlWy7EXyGCNcOOz39/KyJ3CrlpJVuMOHp84CVLOtPiVEQCmTHACxppOq - AQiU+lfiFfnk6C2GICcPUpPpgXiBeNCJrfiK935KUyomPuN6P5YPq/LOJG/qQTikVJ0IVFy/QakXl5Wz - qORDuP3adQjx4Nvt4jfQAYSlrmBDa4xWGcEAu2gkyApE3U/gAHCrHWDRKfA4lvlUcO1cACGV41LrgEbx - 9XEI01SAQp3HKIQi+1SorIhS7vTVBMGURqjMAGY0TfhIcU9oUcg0W/6G/hfv9vLaPhBAkAEi4GeZzoM1 - iAAqpQMIRCMtSEDhxUiqutpGBV5Zjh8I/u1fqoWFCh1uLBxEn2dt4sUXY+stgYdwHKWfwUKTZZspgskU - ARBKdKazD5vTjAgqWDSSttOsJC7vF8lyU5jRGskWzuBWLPglCygeNVimAlDBsRC4HdBYEmVQEBqYhFNS - rqOg1gYujKo5SGqPgTBZnAiT9F+mgom6H8Ik77yQcEJDUo4UsttYyoRXUGuoAMAzGD0VmiLRAhcfYJ8b - gKzj2FPbCQLobYgGdUVN+N6B/4BCHfDJ/ioVApQbQBIH4AgEW4CeXVJXbeU2VwfCwg1ojDYxuBUUbqi1 - D9BaRSM127Flnul8PgsQTZhKp26FCFOZ+s+G5NBt1JA1nfPai0RfqacI5As/d9l0D23tlLjny29gbiA6 - oM5VKKlXSC4AyqGglJ4ZZyoCpFSCToD7+xDgbKbZ659bbSiloXLtlkYizKjg2gG3CAIspWCaDpimIv8m - kIyjRKDjATe9qmK41V4ZeK4VVKn7Lkir82xKPhU1gvpPaMWgsL1wij+23SCA1X1dUeQV6sBdpoJJAJ9K - PwxF2eZw6FYHUuDI4vL2zNg5iJSEzKLDOoVpUmC0cQOhopYGqn0qtTIQAKArmQRoilK3CTSRAZEdbhUF - DLHZtFajJFembwqtfCebfGtrwIRWK8rkJbQBmMtwzxREKBNhogOmiTBNU0di09R1F6WInwBkL5xvgHBE - DEhtvooyF1QUYD6ZQK5RnqWUnnzz0PufSk/IWUpHnMotAc4FxPdiiEZSfM/z7Ah+6vNotYbAo6jvcVPt - yH3tpe0GASQ7K69j21IIUGCn4odArnW5UPh7QtKoAysd3rEp0Ki8qTJsrbUDbWuoqMLy187yStLNIvL+ - VCZDAh2QOjWlaeqigSACQA64ZuVJ2TRvv65F3IWsw+beKlD6PCtV800EzRK5CBFPCmiCAL5nx9V1qCiT - Xqux5R0ZzrVgqhNmmvvaGGA+gbiz+kyMiQoO04TD4eiZeg8TJuGaTBQkyms0Mawn8yjzjFqK3dEYmJjB - bUal1tP/qHWRNZlZ6FODye7/GD1o2w0CSKx+Usw4Yy400Nh+ZZ2LHDwqhImm+N4evMXsMPqZJMMuKfWU - w11rlYMNA5RpKijlIH8LDtOhizQlcAHh3y038/ZIj4U1RweWqU2dys81WO4YNB8wTwBNk+lVOhBOCTAP - 0wSivq6+9CVV1r0qpWIuNc1jagV8OIiFoL/vSdJvHw9HHA4HHI79e5k6B9CVkMOyZJxaG2qpKFRwohPU - QnNojFZrJxqtoILdOUjt/1BrANs57OdzPxhgNwggNVW9BvlM2XpVlKlsWPQQHpT9fIHQD1ha6AX1rxU1 - 3EdTfxVMPdW1Ks5o6khMKWikpCMCeJitFhtLa5hYymS1ilIK5hMZ+w6uITW6WCyoOGsuABrnv6WY0/Hm - uVN+Tc01tQPq1LrKTWT6UgiHgwD/1aHn5j8cMR26XoDEXLqpBJRx5iIJSxpjKg1zqTLHAqIqHoDoeQNI - WX9VXKoZUDt/Nq7rZbZdIIBVy3KM9oNqxaVwQykoNLnsfNg+dC9k/sym+CIiQwLmRC/rO9DBqG2383cq - ejhkNnoNAbyINbTWwBOj1GKyfxyaZ+4mTxQTYdR0qfM/HI7CopfNcQCkdNrMDVNrKNOMYz2gknvhT9q3 - IIHjURFA5zpu2pvOaRT7XNuEUgvKLKJkgehju/t3twaZyrh34v5WWKqmL7vtAgFYC8qWVJjHbMnuL6BY - n0Qe1RztL7pdX1/jhz/8IT796U97WipBAr6oCWrXL1xMji6kVWgOVmXGRIPSzYJvvfUWPvKRj+Dq6upB - 5t9aw/vvv4933nkHb775pgNmgKvKDRNPdr+aY4pp6LtZbpomHI8TWuOw/mVjZrz99tt4/fXXO+KpFdPU - uvXjCMAkJzIl4PEo7L+IGldXV5jnGTe10+mEq6sr1FqFcCjn6FYVFSubOp3Ze5O/UfZPJoHLb/tAAEHD - mjLohp8jpldNP4WXqQflZbb33nsPT548SYffHFKgFWUcSXTnlkz1FRF88MEH+NCHPvTC1/DNb34Tb775 - pk5e5OWDvQ9fQ3fMUSWc6WGo4OrqZrv5X/zFXwTlrXMSY5tERCpBTDoej3j69Omt92ee58Duk+kwkBSH - Y3CB/5K+7QTwtV0+AoiBLvY3+p5zN0FNA6tHL449vm3TAxk5ES0fpZyKRhmqN5se7gj8pby8GK7Pf/7z - +Iu/+At85CMfcUenkAo7NtUDPM87iGtUUWIMKtJ7JqH8cX9uC/x/+Zd/Gez7bDkWe05/DfJd+vRHx7DI - ESRHoZfwfp55n1/2BG5qvPjOwV7dwuY7FQ2qqYtsSnGiaa9/7rb+bjorC8pWSrkVW/vQ7eMf/zi++c1v - dkvE5GsgWYOZXO+gqByfKeLqG/eDCqX909++973v3XqcV199tSMvs9Y0r/fKEgyotQPMG1XZfs8I5Exq - 4ER3gAIuHgFstf4uYrEIdVvFCzXzPU+7urrCt7/97aQks38B8CMAlVLw7W9/+8Fk/WdtX/ziF91PIcj5 - ynkp5VerzPM2QwBTZ9FV/9Gp/VIxSkR4/fXXb9X3e++917mXWq3atDkHaezB3LpitoWQ5BZFA6SkLiH5 - OZgv/CDi0kUAXv/eM/PEjY6SAmMPzNfrr79ugG0BLhTCX8W0GZHAT/zET7zsaaemysBSijn/FDQJ0GRz - U76PcbpDV2CzxeFJuQL990d/9Ee37vfJkyc4nU6orbtk97p+3SOwte6Q1BDK0AcvTY+j8LoC/jfcd+Ht - ojmAMXFkRKg9MIvDdQoI4vIxr8qoyuaqa6yzvtnLDwA+9rGPvexpp/anf/qn5llZQnBSuYPsv9bMpyD5 - QhRMhyJWEqf+X/jCF27V59OnTwPQzw78rbsf11rR5tlFAyA4//SgrjE2BZEZBfZAhy6cA7AW3K7kqyb/ - 0FTO2UbIu9j82BR4WDLQ9Ci/7MN+ae3JkycLT0Sz3btZ4M7jTNOEitpjIYY03KMe5bbteDzidDqZElMR - QJ0b5lk+t+70xFbwBLAEKBzqMcSztgOqH9tlI4DMAPTPEQfA/YB6o+XDO2qa4QccPu+oJVOsKWTv3qda - ANQHQVlyz4/Qgf+99967db9quagSADTPs3k59uv6XWtINMk/AGg9BnUHiuq+vZ26y0YAqy3zXepdtwwN - fr6j99577+HVV1/NI4aQ2Ni2tNt3odgh4Pj5+xjTkQc/+7V5jvP97ne/i7/yV/7KrcfLe6Cp10az2fOB - RrIElBA/IMjFw72pmyZv0dT9V12zFRnMdcZpPmGeZyn33Yz6azJV8z8XkVMjGHMat/2ggR0hgKD0i5co - sP2L+5+9jTZ6/Rv9+YFIfdxB5T7s81YB5x7I/+hbv2qnDy7KCmhPnz59/vkT1p1hnhMmqJQeZUgkUYJs - +64u1tM04bvf/e6t+zSAn2fjADT0WEOc29zAtcIzISMAuYR/k+YgNC+CO631ZbTdIICoArBAIM0GK0rA - YAy883gR6JVVXEMAGuyjrsZ3RQL3dXYi1xLXEpsCf5zzJekb1CvP5tkvGsLSNRAR3njjjVv1+Y1vfCO9 - V1UEznXGfJpN/m/cenowIzLsFB/9KzHAU8ggvCPA17YbBAAMIrG4YTFJjTeND73HFzFSilprQgAK/Opi - PHqq3aVF+fK5nh+89BbeekSYAvAn9vo+2x3eBQ3AHr/Ha//hP/yHW/f5uc99Lr3P02kW019QBKryDysl - xIbkpYVLz1gcddD3u4MP2naFAJIysKGbYtQMoD6Z97D7EWBUQaSHJiKACFC3iTy7/epUFKDnUqJHtj9y - MD3ZiMwfAASBaZuG7882ex4vpLRjz9tGJBCv69+f/umfvlVff/Inf5I1/tUVfqfTjLnOovzr5kBl9e14 - sSgAeVA2Ewe1oC8fuHxksBsEsCi8SAxUGuSC+2Wh9ZDM84zT6bRww1XK77b8u7D/2Z7E4EXewmeZe2T7 - 44GPbWIAhwxMz72Ggfrdlx4jZfIZuAH9e1vvyM985jNd2z9o/6tQf56b5Ty0/P6tc5mwsm/6ntQcCHMJ - jjEqWpyWnhOhvqi2GwQAwFJ1q9rF89b2xkFRcJdtH2V/RQBKMQAk5ZnaoO+iA4hVZe6j2RrkcM+1os01 - 2ecZnEJrn5f6LxZin3Evpsw1zkqv/eAHP7hVH9/61rccGc41IMWGUz2hzTNOdUatHfGbo4+sIyr4PCcg - PAlKSgzIjxzAQzQFbWod86onIJm227eb7sgRROp5jgOIwSl3AyBeJvO9IwC5X3tDFREm3zBZ6u57AX6b - tnto3qdGYQ0RfPzjH7/Vs2+88YZR/7kqu9+9ANvcMLcqKcIbwM3fg0qWjJW08DEBrOWnu3igj21XCEBN - sFqHbaF0iS/mjhQ1KtGSs0jgAICOBGLevzsu75YXbzn/JvMPYkBwaLd1bIXzPv9CFBj4XjwBt9p3vvOd - W98X36NyAVG/M89z5wxa7XUcrAiolnZafxkU2M89BP+MbV8IABB2q6XvLnrlw+03POdQQRRQLiAqAQHc - P/CMc7iDa6llI1Yf96DE1C26O+eyNfIK9b/nYW5r+vvUpz61kP1r4ADqPHv0X9Oqz3C338hNrug6/dTx - rhKCAntEANQrxqjwGipThzp4Khrcj2t2dAgaOYAXk2bs7ovose1SBQdSLzGqK+4fBzgGeADz2B/8wR/c - 6r7vfe97S+pfK07GAXT9iCkCdaZ8Q00IwQYsSUvDpV21i44GXG2joi/UB1wLxtrD++Abfry3NdiGLD3X - 7p9yBYtGLIt+T+2zn/3sre77iZ/4ieDqWzGLq2+rFSdx/tEowJ4FiE35t+nQGIAfGhAUnlhYrC647QYB - 8Mo3N8gAZ9/axTe+08/PNtLycJ4rcXYvy3oA2XiM11hr7777brD1a+WfZvJ/E5m/CnLI8eZn1mOoM+QJ - UNOheQvv4yDuBgGsBV9Hs9+u2wtQHi0ChOw67s1ct4jGoK1f7tbeeeedW933oQ99SHQgzcp+1TpjbrW7 - /YrrL9cqYdgrAj6coiuibGLyGy2eVj78/pf8YG0/CACAFmEA5OCSKmzWD/c+2rqg8jCZ5eOJHdjyu1kw - ASydXh4qJ95P/uRP3njPe++9F1x7O5V3z85TNwO2zvrP84Yeh1yZqXkAib0W4BrjpJaAvdgDdoUARss+ - t0He4oHF3QMm2Jjjg3CQA4urVoK7WwGyEszDj+8fDP7kT/7kVvc9efIEHN2ga7XS41Uov+YA0EzMYWPg - uf6jvoSSoq97AA4Zg+/BEe1Ftou3AmQ2f6Qw7ppp9eJVQaM3XHgbhJp0PSc7eb6+o69k7t8Ll9q1544D - gAF+Q7Ow3bsEM201q0lwpr3//vtd8cds5r1uBRBPzlLENNrjAHQ/iMnqTuq2ETrL3wPOhl3U+znu9b7a - LjiAdX2M/qfxwLy8Y2/6Ab7xwrN3qFZRJ2xmurTrzGiNQ378ZxjBKvo2cz5ShK3XXnR75ZVXgit3juZU - CwAVDeZSrpEsvBxw196me0jKKTiRSf/sz77O3A4QAA+fg7NPo/7ioC9r47E9NL7Vpefu06IorEhpL3yh - XoJsAPxsfg2KPJqG0AYPSv39vtq777574z3X19erQVDZ/7+vt5QSLCBeFMTke1JRBq7hb9070JEnSbnw - h3iBD98uXgRIjckolr+s7oK5L8lrfWlKSO5fcpFeTe7vKchjQQwFjFIKPvNX/+qtZO3XXnstBUnxUPNv - K5Xa87aPfvSjN97z9a9/HV/84hfTmkbq30WBPqfj4Qqn+Xrwj+jATzH/f/I9oSDeMDwqZX9tVwjACjNA - NM5jQIByaMPLzB8utUVN5v1G0UTvNgBG7QmUAL/O1Vyc33jjjc1qPgrUp9NJKKvnSxg9I+8ryvC2Kb9+ - 9md/NuVv8Ay/3dtvrg0NEhfBPfvy8dAzBEcErJmm1ePEPwVcoXUB2HzR8zHbgS/ArhDACCOiukkepx4w - rOYYOf6X/jIGS8Z9FjdTBZYWufDYhWqlvhXYmZyFj8k3bZoh2Yhn1TmJO223qUOSdBLfU4gxcKskpd/4 - xjeWSVCq5/1rraf+4iqikEBzAeFwPGI+XYcaAGr8y8Z+u0KZW7BrsZblhR85YFcIYPS6iGWaAwpQm7S5 - ZS4f/3FrFtIS5HUGgyqhlp4WS1trDe3QFnX9rK8h2cg8z5hrxen6JFl0GMSSXuzQi4T0OTx/+8Y3vnGr - +8Z0XznVVw8D7nqPajEkKtYTdyRwOp2SIhMSEJiTACmXJpYO8Q0IyYJ303aCALJudS0acFG1/YG8W1/C - 0u+pH0WIzgFwAWjWMtj9BCv11GKfZRMBNAugmWuViDoJlGoNVEq3sU+qZ37+hfy1v/bXbrxH033FRJ/K - +s+zxv27riKZjQUBAITD4YjT9bVZ/RkAUZP7enpwJvcKjEYAXebACFx02wUCiGasDce5VWH/0tMx3XL1 - 99eLdNWBhFGYMStTy70I5lQPmKYZpUzoEkAo8SUssJrPag0htnXulJOAA02gSbP5xlLuz9deeeWVG+/R - dF8q90dOoIkY0Jh7uu/mQb4UQF3z/x2vDjhdn7qyVNakG9g0+tTqAuoGB9aftg7p5bVdIABtmjM/cQOh - MMhuGz/XT7fueq2P1ipaZTCOYO5FMqgyDlNDrWSAT+glywDhqlh9L8SU2Nhq6bEkAOEJONKgOX/O9v3v - f//Ge7797W8Pcr8jge7y29wM2EJaNBGO+rx9ooSC4+GI69MMLwUubmfBVGh+FuMu7+gw7gcBmMNG/2pZ - WEXBlag9pz93bjF19piU8j6KgTxk6/Urhp1geNHL+QSmg7D9FXUumCYt+FmsArDtp3gPWrqx2jkHrqJX - oAkEoBaSw3U3Wew2FZHfeOMNM0eqRaJplJ8G/XBwByZyuX6LSywFx+MB16eTJQWyPQjnK4qeiiz21HaD - AMbIMhLnDKYK4sl/Dw4cd20x4admAI4JQTQn4FjF95nX9hD7FQ9mklGTDyVobkA5ofGEUrrmv9ZejRdS - pTi4EZjylTW5SOuIoNv/CYcJaFNJkPK8/Nl/+k//6cZ7vvOd76SQX/X8m+cZ9TQLdzKDtdSXZvm6oRG6 - ifDq2HUCrnT2d5beuCKFe0iF/iLb5SOAQYsfvxpHEFw476vFVN/TNBkCiO1wOKTS1M+PBB7ywCjCVHOo - rdBddkV7X6uU9wa6KW/DFNmpP5vMz8IJEBHaFAqE3pET+8xnPnPjPZ/+9KeN+hvgS4lvrfZj3o7NEVKk - 5GtvQlN9ExUcr67wVJCA/krqq5H0U5pBdAdBKNIuHgFsJlgOG23KWI3MugcdzAj8qhmPHID+FpHAfa0a - oLvl1Nxaf4MK817eGtRZY+4R1g0EKt5FVHirAqy7wDaY14KJaI5Y+Nw8bmi3KfT59ttvp+KeMe23ZvrR - RCCt1mUaeQgVT4gq+GCwWJwIeOV4xNOn1/3yKrfZ/Kxeus9JaBePAHpbVWNlP+5BPXgXMSCy/grka9Vp - DodDQgD3ggQYPc/cA+yg7ZHZv021BTTyPRN/gVUKOWIFi5ZXjsH71zfzUO0nf/Ine5XftiyB1s1/M2Yt - +b0hm1vEfwjuZ24G5NQIXLoS4OrqCtfX1wM2XDE5s+/3pbddIICs31MlFMIL638TzN8DB6AZc1WbHfPn - 6++KAKZpupfSYMp6JuH73jZS/ujhtoPbD7jyUzdS7pQoY5g/+0oWfdwjPHz/+98PkYjVTJuGBKr4O4gL - 8OoemNa/l/typWDIBGwFaPv349WxIwHZs7TWcCj3YoLeBQJIyWWTjJWxQIv3Ye3L7Zpq9mPhz1hKW78r - 4Edl4F1La+nHB5UihyQX0S2OB7BOc1KWV760mBGXu8LQajSvKWPvcVEf+9jHQj0GEf9YPRRzZacY5tyL - +uR5GfA3vcNLgfW1W2FAEAjH4xVO4jZMg7x/17P3otsuEMDSxNLEcU0i21bzT0fa9HxvIhb/WEMAKiLc - CfDzzJ/5tzuNpf7uQ7Wb8U6Nq7DEGKTFMoLfvIliw+Mcrt4TVXzvvfdutUKLRkSMCQnzErynopBe24Ri - +ViIurPQ03k56j2boB+67QIBAArkQemXUk0H0yCy2ckO6DM2Vfgpa6/fRwQQC2o+nE/AfR2nKOcGnQlv - 397XGhNgChIQCt9DZqMycaCuxGN3d24f+tCHblePgWB6CeceYamWVHGpkX+IUhdvb0o3AEw4HIG5zXZ9 - R7o/a7tBAJmqRy1TdFTxl81rYsIzthGgx+8vzBnoHg6Wb5fZTDZvUpVelInteYU7YpQmGXKVk+Bzfv/3 - Cx1vv/02PvGJTyTHLEKPayilgNCj/KgQSiNUboNZMutc7Lis0ArbAREVSErSl1JwNV25YnWHGGA3CCAd - 2UDR1YvT77pbu435aa9NrHb9IC9kfQ6a7yDrg4DgO2/qAgt9C4bw0gBMmXhGO/k9tk996lMWsuz6lx59 - SADKNIGmCVOZUEsDaoNlKQzFZHSKa1ZmxwmhRJhaOkU5WMqEwzQBhTyd2E4UgMAuUoL1RuBQgim8OmqJ - XbNDvhspLMw9Zc+55/mHPWorcevcfxCZGGZpUUEhy7ecIjBXhrg3ef9c+9M//dMsiqk/hgD+YSqgiTCV - 0t2a+yJFf3Q+btdTgSuOc/aB0YGfZJ1EBcfDAVTSw7tou0EAiXGNkgCPqZrHpy67qQYb7JQjlqe617Eo - 6kqi6UqJfQyTDc7v46bHr8Natgd/trl+8MEHN97zmc98JllfSikoU6fI02Hq1Dn4ZjSo1j5aj/IklTcw - eI+1J8zRjGz7AHEbBmE6HKIddBdtVwhg/dMgf4VQzEsu1/zBBx+knHlel04s8/dR6iwo/NL3eNDVpt8k - wIokCKh0b8BSCJhKD/IpovwkyoFCScN292kDwDzP+MEPfnDjfX/8x39scRmTAr85cRWUKZhoNex32CI/ - R+RFP4TKG6cQ1U52QZ9sHbmAME0WArWLthsdAGE8xMDiTcpfu3zBSpn33nsPH/3oRxMS6Hn6G7r6SjiB - O61hRdk3srJMKGCgEI7lMLged+ie7PuUuur5/xu4AK0xyK2B9yIH3yYJ6Oc//3nLaah+GcoFzIcDprli - mqbuElxaihnJlk9KqMF/c/mfQylq9p/7Thk7QJim8vwu3C+4XTgCSGg3/gECLvcw4RVNzoW21157zcJW - u+uq6zIsZfUdM+oKwy9f2P8IEGjE21SmfnCL5gEokgzELSuJ32VC62WZzOFmmkQPWCiY3+7+Hp4+fXpj - QpD/+B//I77whS8kx6z5NGMqPbnJVPqaHCqF2iNwjvHPwgzYhJtcYe+pDWhWTIw7wQCXjQCYEvxvWgJF - BNiL+PX1r389hK+ye6vJP/U5uI9DlJNy+OZRIaAVTKUrzKZp6iazENmYkoKaTMy9JBtiOHBfB6OJ+FCA - Et/d87+V26Qn/8IXvpBiNybRAUxVvh8OONQZrRW0SmhykGLlpQjE1FQ08tpTAwb0/TWHKNMW9rvuFB36 - 4tpFI4BlppX8vVti2N3m+aK5fgAd+D/3uc/1TLpSrbZJuirVZXDlLkvesyaQtfoNEQgFZepejiXIzqR/ - RwRgfQhXIiHBPS/gjFJ6mrBSumksBRPfAQ5++qd/+sZ7rq6uLFrTuYAJ86zcwElSnFXQRECVKEYuvRAK - qW1Tin6oe7RMfqk1gOlJSd6bR6RfPtDHdtEIwNoKZ89RI4sBWVwYEri+vsZf/uVf4uMf/zha0zTac4ph - j62z/w2NaZC677p9/bCW0mN9yxRCmg8TDlOIbKSCMq3riGNm4M7FTD0qj12J2Pu5ez5AoJv73njjjbP3 - PH36FMfjcWENmEvBdDhgmmccpoLWJslixCAN6OFo9rvBhsfDB7boBw+J1ka4eC5gHwhg3MMWj3QDobiD - Bu6mOHv33Xfx4Q9/OF27syzOjI985CMhaWX/e326ts9juHF0Mb5zi6xpIRTufnJT6cB/PF7hoAjgICz0 - VACoLiBnBY7lv3Q9ZepZgGXyKMXzCt61/dRP/dSN97z66qtW36Cz/BX1UDHNc1IOllpRqFP+lsLJ4d4/ - a696APwYIGS/xMQJD+H99ABtHwhgAXwb1H7hHn63iOyR3R0RAYu56BzRiLb9Visq9wSVSvlP19ddAYil - 3Hg4HO7vEAmnVKjXw5tK95ZTdvl4OOJ4dfTwZpHj1zITGAKQXPulFOAaYgxjUS4W0yssXt1ztHfeeefG - /IDvv/++FQY1XYAA/nSYcKiHXiikFDRWD0cOHECeX9abkL3r7howKqCHZ0dO4ULbLhAAL76Qa2UDkC/K - XwPPLUePlE5z4Wuo6TP107qm2LLXSC591QNYliHqgKOhxuOa7rSH5idBZr+fpmKU/3h1xPHY/22lQBvX - VWvFVD0PQlyLKRLvSSP+2muv3XjPRz7ykYVJ8HA44Fgr6nzEPFVBehW1lW7C1PWs9NcJeqz/1919/e0v - w4HHd3bJvijAThBAbCxuF+YAlLOz603ADa6eN44zsLlqqmvCrt8WCYyVdDRZxVx7RZ35dLK+pqmgMESh - djfAzwfbqRQhZzkuyvYfJhyPR1xdXVl+g3OAq+s5nU72HYCYM9Hz5guiiWnb74LQ3n//fbz66qtn7/nh - D3+ID3/4w2it4XA4mIgyTQWHaUKbDqhTNVGgcX6PoyzPWQXa19VoCDC9bCp/ru0OAcTWlbbBlmM/2P+e - r98B+FOpqYAQbgbSzl46AtBU2lqyuiOBrpDqLjcHkCWvvEvL0dIhYk68dYgkr6GmPRMF4OFwwHe+851b - VeN5++23LTHHNE0dkRGs8o4hkXvyjX/y5MmN97z22mtLLmA64GjIoIpvwIQ6VWD2bSKETD6GMLMgALGk - dEQRc1JuLfCykcO+EMAYZhZs06OJ8G7DZNY/ZZwNNedG6rHVj2et6eW4O9D3whx17ghAgaWFsmd3YQLc - ipWdX8WPx0SNMfX5syoeI6D14qDdx8DyJng+8Xt5N7dp77zzDj7+8Y+htY7Q6rHiNLu+o9ZD5wpaQaUW - sht7qjObsSRAtTJhZiJkNHD3ogSSKLCHXIDa9oEARn2fKlvlLzWAJ4hJ5hY57W4zpCKAmhGAFsNscy88 - EZNJLuZLAKSMlpXUinnruIsCADDhgNIkFZkA7V3qHWnI69JzbWlpiMrHZ5XXo9NQKcXqBDxvfze1P/7j - P8abb7559p5PfvKTwgU0dw0O4kCZJpSpoMydA5p5dj+SRPGFW9IqIsThV5H/gxk6qgv30vaBAAYW0oA+ - vI5mL+V+PIKUctdQaHKeZ5xOM+rs5bDXH4Y5lnTPueDrH/rVyjogQolhzbyOV55p/hjlV/8hJdEQR587 - A2pwHDL2+QFs4LcRTQDgrbfewic+8QlM04Tj4YB2OOA0z93KcTrhqLqA1kCVwCnJJ8wpS/2DmNR9WBh+ - 4woyUgDu3X/rQds+EAAWzpdWpNGCZ9Qh4x6KUQJReRfzzc+Y5xNOpxNO86nXmdfBVnPJSdgoi+JSRQGh - kh1PyH1dAA193APwjOm5gn3aMugA8ED2u7wY9YEXpd8DQsHbb7+NT37yk2fv+amf+inT1cQAoTp1Zecs - /gHzPINI6z2E/bckqeh6ptLfVbYz9U1d1gLdjxBw+QggxcaHl+IB2wIrOSfwfb2AbvbrlWbqrEUnOhLg - lJt8I8FmcC7zPHxkgN+z6XKvuffgcuRYZuWcEewZe3yBcv4nPvGJW933rW99C2+88YbJ/ofDwUQA9xEg - lEpojXotBKX6K04BaxmTVQHoCUZUJ7APFHDxCCCxV1LD3RV+QWnD4WXc9xyEalduqK2XmmLu39Up5Lwz - UHA1lQv9U5MiINlM9iDAv9LlTs7oanv33XdvTN/25ptvBi6gRwYepgMOUxcF5jrjcDqiUhOOqGnCoL4/ - RPHlrW+injpNHMLx6uW33SQE6Y2hrhuaCUiDMVTs7vLzQ9FPBKUPhOk4p3QMFJfZ8Rji32SvA4Bswku9 - PO+ksVrJ8kGTWD7w6R/dtbfaN7/5zWWUoJoHywHl0KMXi0QvatLUzGVurC8ooz1ydbBUXXjbFQLI+ll/ - ORySNGTMe79KmZQ9lpdxYmlYORQkMqLXpWOfcwD0uLbRaYbu4E1me8Pj8TxzuJ97sI0LD8Rq9Ao959ub - b765DBUOyOAwHXA4TD1uoRRPMbdl2pHWFlfkve4L/veDAKKsGQG9JcVZsHePuoM7TyBDK29yGRJLTp0t - VM9FTjKC8pk54WbS2ncjdF77neevugbA8trdJxeQc488uBvsbXIFXF1dJT8Hq+cYgp5MH1DORAJZ6vO+ - vgKJC1l1BdkB5EvbDQKISSopUpYtufsBhrfkncRdcZcQTJDeWVJEN/LvkUKIv0LgHwGMBU3U3HRXc0b8 - Q0EUEF+DgRG4C7KJCJcDmr4/hawX/wR6IpDbtKdPny5yBRzK1PUCVttRi7suaxswxJwb4k88VejCLgBc - uP9/bPtBAGYBWOZzXwLJwyjR/HxTEA+jZSJrgjl8anavC4/r7PjDUI9YxaiUzu5qKrC0ZXcZnpbAfh/c - fwT68dp3vvOdG59/9dVXbf2Tpgw/HoULOPR/ZcJUDpIDgU2m12jQjvub4WwKxMfPBd8zynv4dvFWgNg0 - Hz0GSlO4JOH/3llPc2t1gNb/KFJzBXAGuPTnPHBk5cBY99Gn/H7nrtlxlfJZEktJXullze9jn3An78W1 - FgE/Inp1Mvr0pz99q37ef/99Ewc8QUj3DTgeDqjHI+Y6Y5oJlchzJ6ZYoHACkj5oZ4J/aLtBAKvivHFc - zeTu5U33MbbL4uZsHGR4pxiqXUcH/jGh5lb/D3CAUsUcmiS8+Nht3VAEcEicwf3kILy/fR/3J+ZjiO7L - 3//+928MF9ZQ4ZgrQPUB82HGNE89MnJqOLSG6zab6dZLBjqijoFDqc7KvuB/JwhgZI2THQ2mmEG7X+Yr - ybRhLNIy0oPjjpoiiZwVXAOpfoDi/ctx7tqif/50mHDgQ/LQI+rZgFUGvsQkll7+mxMSsN2SLEof+9jH - btXfD3/4Q3zoQx/q7sHHI2rt/gAHzRtwOKCeajcLkmY+joXBrDBikPeDD8jOgB+4cATgFDVUcIWL2k2B - CPob3bMHVlZm6TChrIZlkO4OibyOq2J/4vk3Egy3BkTNwfM3lXctIcnKvnSnGM+ac4lIIEdU8kIM0AzK - H3zwwY3hwhoq7FzAAYdDxeF4xGGuHRkeTii1c061NeP4srFkUBA2oQqjRWUHCOGiEUAs9hMRrIeayqEI - LPq973kE5gjdkfu4KXLHHum+8q6jiELmUkfwvBY6AlldAUMCkGSjkp1IEURMAXafVY61wvCd+ghh2TGz - kuVPJD8Lf/iHf3irPt955x187GMfMy5gDjkDTRcwzz0KtPTcDfGdrK1UQ4YXup3LwqWr7aIRwEglIxfQ - 1epL4HnQiVDmB7xCbr5t7dlu1nd/gM7+y7MTTIOcH32+RVEhUMtJRYnIko/q95Q3L+gC7qNRLNt+h3ez - TMuW9QCtdGTwMz/zM7fqT0OFW3Uu4Hg8YJ5FCVg8dLjUnjd4PdBr5S09hAnkgduOzIDB1Ba08F6q6eE2 - e7Du2d9cMGKcq5v8kn+AYA+PIVCkQobg7ss3x3QAQeGVnGE0U+49KQAX68fd30tMyrL6LyRp+da3vnWr - Pt966y1LiX51PIgo0K0Dx+MBh+PBECOF8OaFuZe5Jxd9QPPtQ7eL5gDWWrK7I7CDC1Zd77+XQVecdNpK - 34HxZdcWq9KvPyB16slFmxJ0CuP8n7fF6kIpYYdRT4CoJOC/H+q/JgffbUExFVvKx0jAVCZDcjfVDtCm - ocK1VpSDWgSOOB4q6uGA6RQiBcuEuZ6Eo9Gz50VDyg6o/Lm2Kw4AiGbZES1j1SnofpSCvDTz8PKePp5o - i43Ys7glsziSkCmV3Nsv9ntjYvpbN7fx08L0NU2u/S/3JP+nFNn31di5gJ6NKaRmm2tK01Zrxfe+971b - dfvtb3/b8wUeQzr0sE+ldCVpgToHuRjK4f+Lt7Mjv4AdcgDDB6budIN4AHOCpruNx0MfbpnQyrHRnZbQ - rF6AXutKN2RHkvg3mrmwQTSfQaP00jT5DKufcF/yLyNkUGoNtVVJmippVCWpx+FwQGvtVunDgZ5ZSJHG - iBwPx5434DBNqHQCJgLPskAie78MlwYoEJ+MDC5bE7gvDmChbItFGcd7CePdzz9uMAGqYku5UI7igFiK - VSPMsGhATwdGEgsUqMcQqqsZhHLA0eVSEg6FUwBYtqOxiMpdWqvNkrJoTcVYZUlrErTW8N57792qzz/8 - wz9c6EeUK4jm0QNNItaRhYCH2iDqhCKf9c/D66buo+2KA7Dsv6pcExhiCjCqgnWM636eseRvDwFeKXXd - 60iKGTBk+CFJ5skBxImdaoij0JoFwwOEwuU1qnIhTesBqolOKbTOvzUJmrqHFbTWNfdWg1BajPRTan6b - 9OFA5wI0m7G6SneF4AHT4YhpOnUOY5qBSl2nAsC9PH1dC0R9iS9spe2KAyDNCGR166W1wQnHUnDdZbRA - ndf8PBUXQcpJy0XLD6cZY0VbbK4CpPqEIZKMQ8ZgiO17qD9wW8r2oto777yzMNFBuJ3aKpSbua+mysCU - on2umE/+fS1waKtdXV3hD/7gD4I/xAHHY8gVIFxBoR44RQ0m9oVoEHmB6c9u2q4QgKrRopzP8Lh7A1rm - O9B+GwyjfwHDbfhAT0waNEM2LstMndGP4b8bwzVxfUWvIdiC04se6nffffdlv4LUvvjFL+bKSaqMa66t - v2th1fg6RpOgKQWriwQ6l29+85u36vfzn/98NpVOx84FSKBQN5NqwpBtsdL4gAuX+ce2HxEgyVvytzlX - oMo4VRrdy8Fj95134PY5UIuKO5dHiAU5mLLo/KFo3LqmmRm1BSpaqyMD5lsnw3wR7Z133lm1xzsn4N6H - RpHv8jpEyRarKQNAETPg6TTjcHCvvptqB2h79dVXzVzqlH+ykGmPmiQUIszjtKKeA7DcgHtpl88BDEqV - dI0i4PWa79k6eDdE0DgHoyibHsR0mw4b9vcgn1xIYm097Gwzcy80InJ0r0fQrP6AAtfXv/71l/1GAAAf - /ehHUUOB01kKns5GmauVQDNvPn524IicBADbi9PpJCbBPn6d5561OXAjb7311q3GeP/99xcekUQ9IKgQ - 9SrJRKAyLYxKKRLQMovvRxC4eAQQU1bFEBoW2dp+a8E7UItwtPUoshvHHMJPo3yrfWsBEi9I4sDvnMLY - MfxXJjRDBg21NqH6otWutWcgtoIkPRX55z73uZeKBN577700JytzLkA4nxQga9LOpxTqz/AexjqNyhnN - dcbpuiMBrbF4mk9JP3BbjunDH/5wqpDU/6n5llDYA4EJxYE8ZneOq9uRGHD5IsCqhS+zXRaNKdroKmW3 - Yl0/Lbd9m6aKpqjcatyLe+pBVoVe0thv+PBYNFkKGw1mokag0ink3BqmWtHqjPk0YSKN6Xdc/dnPfha1 - Vvz5n/85PvrRj95a632X9u677+Jb3/oWrq6ucDqdcH193ZHSdUdM8+lkSIABFPKQ2dq0tNoBx+PtuYBR - 4ddYyqnNp/4upBLxCSdMkvN/luItKtf/4Ac/uFW48A9/+EMcr65WxUeW9O36jqN6iALnN7Cfu2iXjwCQ - tfkMTc/kuoBGwCRyc1MkIBriOjklur6+Puv3rpQm2pa9GKgeQEUGbcgazasUv3uQkq9D8sx7NqH+W2sN - dZ57GOpcey37MhsLquO47Fvw8Y9/HKUUzPOMh27MjM9//vPGiZxOJ1yfrvu/6/5vPs1uBizAoXWkW+cZ - 86Hv59OnTy1H303v4fr62hV+NXIVqmvo74MKGUdSpp7XT3P7KcK6qdR5rbWvISKbgfPreqdmgO/c3mDK - RSZSl9x2gQAWZDZp6BmoQC0NU+us9Fx6/fe5ziizH7RaKw6H80vWA3B9fVpUBOZaoRV+V0WKSOUjyWdC - I0ZMLUGNwCW4AVMXJ3qpKkI5lZSBRg9Y4wO4NStwOZUOZA/p/Wf1DKP2/XTCtXEC15jnE55eXxvQTGUC - T4xSJpxOM0q57sgMsHj8tfwDOpbu+9OnTzsimHOFZkV6RA2FCq6nU2LhARcb9J1Hd2d9O2ptqSrKiAjT - akvxB+7kpMVCg89JPAoh4GsPbScIAAsrgMbhc9PKYK1XeIl1/EKuu9aalIaqVr8uda+yZlBkKUUwJCAI - ZgwDMlAntvLbyVRJHKbOYiXgblcOfsStdkeTWgtOdJK8U5TmWGvDPM0pWu0+o/mcM4EHvyhQ1hlt9v3p - IsA1nl5f43Tq31sVgCoVRxwxzT3jLgXgP4QsRIVimBV1BKsIYK7GYTy9fpqQ8VxP4BbiHZ667A4AXPu7 - nI4HHKbzZc97nzPmuTqHIwRA3ztrIVduaIKaFcdnau9m4T203SAAS6xpF5DYrla7h107VTQizFRApVOJ - xozDJDHeg7Kn/97soEe9wUmVWuZ2KqxnbWkeY9GdXryUjFJEBSEQHYexoBStNsxqbLJ4+mYKzei7rroB - Kr4eBlLAFId5bSophvlrKD/L2OClDf500kKpM65PJ5yeXnclXJ1BIAFwz0bcfWjYKHIMVErDS+FUE8Hm - asDvFocZdWbU1uP3u4aeQNfF6kG01jDXIw6i/+nIRmz57GuLfhY6xvV1L/5aReyYBelZQVcM1p1hS/cU - ILgbBLA4twPBa2BQrZiJQXMvU83X3YV0qr0UdKKYIUc+26Hp2V+UGmRtt5u1GmfLvrsfw4tMKyA1SyOa - F7JKsLuI0FrFfApzs1qE1dJaWwafEtZzn9stPgxt1MS3inrqForOHdWuCJSqyfM8o1AJyUd7CDLXhnas - ifqbYlZcqVXUbq0GRHzCfKpWkXk+zai1GdXmif1dMrpLsiHKk0Q9LpG+v3dOyM2Q/mnG0+trXAerRmsD - 6x/PZYL6RyvAg7TkkcvRtNehr7UGzIza67aIa23BVJokgBDlEBEKAST3NVXwiKa/cUt2bDdrde1zgPdQ - lqzL9Srne7oyeJ15AH5Sx8X138yaQRXtxDhwVzbW1jDNB0vl3YGHutIL6EBEOu7ZXYQWWOUAeNt3uznV - /P1rExt83yMD/loBbqii2KgFuL4W7qF2RGzci9jaId7dNicDyl6VWX0K6kk4svmE+fqEyrU7atWGE59M - 7GrckdQ0HXCcJpDqSShnEgZDSrYHzm92ZWNEaKf5hFaraXCIQy1qUkMgMLBbu2g7QQAZYFJKTQEcPfit - Aaf5hImnrmzigoZ+EDTbqz6h+kT3IGxm6uuHtnVuQP5ygx8CwKwR7o3IYilW/4AxZGT5yX4nYxn6weYG - roxTY7Ta5eY6dxFGNd2l0Cpli85IjnSaKSCTsvI2u8++N4oAuFXMsWR6m3tWZhHVamtopxkHjW84HFBq - 7Sz7FN4DlbwnFlnY1z+32YKAOmDOJhIRMSoDUyOcTteAjjVV0OGEuRxcRAIZ+68vL1pVuo+BOF5F8+Np - 7m9TiE6j/r4JORvwUuzfBxLYBwLgfLgjULkmVmu3ScYYZnCZ0MCoaKBKYh4irOnLGJC6eS3Y/JsrgUzz - T+hqoFHZB7X5BbPQukNQAvwIqZIz0JXLDOIeVNNak+w3BKoFBQRMcrABgIphM+UANouXru6x/A0KS4eV - Zt9bbQKcFSct1RWoI3MPgW7EoNpwEscpFZumojqLIkDpYytANuPGmvt1tCCHN9XId0DsohvhxCcz35WZ - ME8zCkTupzUhyfUFAEy8Yxmr1orKrav+jWMa3ivDPFJzcNc+xIDLRgB6MMg3l2NyLg6+OJHNZmBmRuG5 - s+WFQCwWARUXKSng5cMQ115bj8tvnCY1JgG2maWUURtmQoSSn6Tf+ymKwUZmSQTMtt5Kc2UWAZi1gzCe - DTvOgX3R6pewlc1YEUnIU6j7osDZteLsClTPfdZHb1JPTxAF1RmFJsxFWPFUp9AG7atvauHJkYZVwnHd - yhrEncaoqOYDMtGUxIsykexxgwlqkvOfOYg56PoDMGPmmqm7iUsxsYsoSse2E0vARSOAdZfaAOVAdq7h - YI5j0SgTgCrsOFF4dSsAouUfVKDTBB5mzg+lwGK1oIUyePnyo1lNnzUgYfLaB4F69+c836FSqoZqFI1F - 7o9SEkcUFJMPjhMivdtFmiRqhefsnpaTfei6IvJl4WZs3opQqYJqETdbBfjQuyd18LdvSAegsH+eVi23 - xgyuM6rukW7EHNe3DpyO4Po+qzl0Gc4V33S2u5w5AhfZLhoBAGs5/bLA1fPvkSXaMNhFxwZJYatOA5tU - rwWAy3oGZesbMUoLXdCZd81+jx1ckjgCDqKCHe5lxsO13hu6D0FTbVQQg3TdiaVvjgwiqy4z2hglr4MT - 8vJIePNyjLPd4Cw005EW1mSBTpIYextHuzA2jbMUuDLnEQw7J+FxF3ZddCyO2LwXkjnCvDfPvQUo+c+L - 33IQu9B2+cFA43ehMKyRV/qilB2MbDbHF8wbHRoMyvMN7GFdJn6wUW05P0nWX5s4u2yoKcCVPIr7cppO - mOuW5K5rN3iXZ5gz8MR9YfncEUCzaxFstw63ZVwyEUUpPyfqmJDuAHC5KQcW5pNEJk5jdu5Ir21jWhUJ - LF9EC/fLXFp8X8q9UOAwOeR5Zntb6+dR+ogcl/+wMs8LFgcungNYNPagDLkghz345ynlOKPpjgwoBipG - IFNm9RfafCys97nojwGr/GMxo+TyZ2MwChyM0ghjxwvKwmGsoIsM8Nf3pUu9Lqeb3Bu6T4MpwKAbMzWP - sUGZpsUDGyVP46/36h+YpTqScADDuigqE0YPu/GjWU6W140156ytj7cxB6/HTWQexD2O/I+cDxZT6kp9 - ipi64lLbvhBAOuUDGx0ZwLOlupYvyA9JeInck3oY0xwVTkNvpmuKMqMRAmVpXfHmnHQG/q2p5jsYpgpT - eG3eX2JameQnMhZ+k64xGSw1cGcNmU1HEaPeoq+BrA5bG26AAmcMHCGETuy3IKZtbUwKpuLEERkq1sQc - QW9j4gD5PtxsJyGz1OS1Uq5IzVi4iN+m95fddoEAXDcU5MMFp8WrH/tX8RYTQCdjl0d5P1JyCgCzwX7q - weBoadfCIDJXo3bsB5TVF2E4IAYIEXiRKbs9q1OXGeuzTTACR6DHNjBZdKKz0T6kUnivZxAmMuxa+CSd - aTEN1r3XNXNQXBaF3oDANykx4EjIORnV/9hYOm8T4XL/RjRustTF8xI4Cmj2KXkfifNcINnLRgG7QAAU - sKwd6Bap/xnSHPjPeBA1dZe9rKhMw5mXGJBRV4J1+3CUzRNANGfJ/ad4l0/Uz6gc8qj1HrgaDofSAlMD - 57xu4kukVtYheyryNjh4E5a+L436OumsyjByOhHZwTiJmC5d98SNBdl4GkdQ7qrZnvhe6upbHBsB+CPX - MnIWa4QicmqUiQ0ppzjse+phQCoXLP4D2AkCiDLkxrvz35OpOx9Xq++ePLlCiK4C24IjiF8UgbhPoFEH - 6c9dRSPV2FocyVwpL1RkkCSfJmo5eA3YwgdBN7XM8RjbLHJsKn6qooWKB0geGIuNN/Hb6DLMGYaNyxB2 - nZogyy1Nu7DtRswDw67yk67DXDL7PicHq8BtbXJBNnHOHFDYZzMra7JHske8G+X4tvnSi2y7QACR6p7d - 0mCPzgTQKWlvzQ9/GGCNupmTTlQqGqsJZzXDcy2fjPUFMcSGDzudFkUQRAGjQPKB2MHB2P+0xq1zvmCJ - DJGZGoED8kv+Ays7Y3POpsu4hlg9h9rgm7BCPRFQGsVr7L5OLNyIe1ASeBRJAut+RvZBtBPHsBI9KqRS - vb7fpmcQJjqFg9IvN8Ke2j4QgDZev+AAT8GXXm4x1lMZRZgoIDcsOh4e9YuBtSZ2WdZwS9Q4n1sGA6ol - jHbqri8YWP20brZoQ0MSW+uI3Aq60xHgnFH38uMAtBhggjfW4UpRXYxOJRdHiX3Q6jN5r2mIq5f3GCru - RBdpl8N97oywZj73GpbWHJsRjchEtiVxaSOmjc5gl07zc7t4P4CtppQkYWi4zGdudeE0dKofWe0VF9rw - Uv1dC6KheAj74Wtq6185VLE/+81sSX6UrYaAdhwQQe+3hTU6a72UTxygTQQKPgJN7eoyZlYS+n6tH2F2 - n5eQlMWZEfd7sNJnxuYrJ7XcH7WgOGLtHTel/BFIgxLYdqO55cV8Imgx9fHVZh2FzkQJhSJ4sHGdzEHX - suibzkp5l9x2wwGkbWenzlQ5KGkWd8p19zTLJ1D07Ab8AwUnd1QxfEIk9QB4nCCWFyjrIiLny5mSmsZf - 5fAo22p/axgmIqzAkbjUHjzt4jNGcSOgrpziUZ4KfykBkZo74l6HtS93Rq5pWTXvykus+/swV2mwKCV1 - D0dv0RUMFiwR+k5cPDBGX9wcdB9HQd87dbHQxwvakxs5wEtqu0EAzi47tYgwYTJjADJX8slviz4pUVA7 - JMo+M4Ipi1P8PK1PMfikOECpz3+SLVQp1vwhX1/0HWo3HCgVcdRXoY8bD7VBkcGAshnj7Ff6dXsXzNLN - BKIA6MKxuDi0AQSOpQPO1e8MTQwSdS7RtZnjVCJy2N6W8D1Q71inRFOz6SxGIrLaub9b9u4yst5J2w8C - kGZuqaQuu+F1BWR9LiurOZEEJxGSPk1NyCqmN2O51XKwdb4pziPY7JvlCoxssHIFAwUUNQZG2TYvIJxB - 13sohPSf1TMBGeCjYm8k+mvMRSPjSjQOHqKEY2oebBPVKrw2Xfn/MF5W+0VvTgXwobZS5IIGjsgQ8IAo - sKDUAfiVhT/rPBbnFIHf5J+0cI6XLrxdPAJIL8wwbAuw7qY9B3rafJkjDJhcRwFO9EuDKeu2bNQRGhMb - zc5+97s8X98ihwEyZT57GI07iSx9D6pXl+g8R3WACoq+2Bf82KrTkuGuGDwVtPC9W7dQrEoPA5ORBZ11 - Fprcz9gALXF9YU1rLtMmQg1cYDYLk5+BINdvA7/sji2keadtXMPyuUtvl4sAFtDmcrcpn+zSyAuuy7Jm - QtK/epCE7Kq3YILjkSUchmAa5hDuTgF0LXABTf0OumIu+8iewVzKxodRsjzqN0dpw5HdeqNh6zgiGEUq - Ou3oabeYblhLFBESxxLopKlglDtgcT4KSHDVr4EXnwwltGCFUG9EeZHRS3BLbMD4Kkzf4NtB6tVJDZCa - jsv4p2dKx/LS2sUigIWj6QZwRx9+pCey8ix5AWoobYw/Fw7CX3xwOtno3RxEBGiSAcm83wIXalON8fM0 - zHdlJ2KaXoHEjGo4xwMkYFsXxr2Yqn5X7iMow/ROFoq8wnLn5l505o8RoF5TcURE4dYCQcet6xeorQFV - 3H9FsiJm+ei26q57UVfMW9jnwx4TvMDrYnxdm3AA2azsc9gB/F8uAoiNAgCZrNu/bD0hvwY2FTndVpdt - mxh4Q4z4QvBuqd9RidZxhLDdHAHAWf6Ro88pRWxh6aMhNqI0H0UmWSRR9p1WqHJu2mUsUtIRkuxriVvs - 4stZ7gSB2kfTIlqcZNAXLCm8V0kKz59dh0fhBSExbGV0Fd9ChOPus50eY7hG8YPDOyQ4Qgtj7CUdGLAT - BMDI/EDgyLKoEIm+2+0CVVyT05Gp8MKkpCwtRNNNIgY6ZXMKHVxR5YAP6CPNeSkzuqnKJBPjk93hyH3W - XVEWKd/YrR5UFu29wkUQgoJHnAZORT3mOheR5slsMQO2t4qpTOuexSu/z19icK1aHTJlKTJpI64kPJ8g - ebmMKEK5TIPAkQTku8QBG+9wa78us+0CAcQmLjMYyYSxtDQAdzgEPf5e8/WuUZmVE6LjRZYV8ENiVM8B - Us1VJVJy+Dlb4CyDfYnBD+nBFLmoOdKBKWT53WT0fQCrVxAMBo5AVh6k5cH3n5Vqu0il1gtDSMFu77EO - QefPI0LIVHTtvRrzpSIa4rMBkPMb9u4cZ/mXRuAiE29hHNVJBOXnuRTqwketn6MLbjtCAH7oyMIu4y/h - QFi+K3aC3iS0DetK6zRMpHomwMdo7xg8E+fCBrRd18cLBVtshlKipcG4iLhAlkpD7FYKKFXfWoa7p+Y9 - Iot8NFElKCmiG/AmpWMFEBF3FKg0dwA7QA5MdUDG63vilwnOZHFALgHOhV9ogz9HdpEOfSqHQr5ODvvp - 6xeUmdy1zwtA8uJFP7AfEWA3rsBRGRxiwzq8Nsq0UBNAKEZQMhWU0isjuKjB6voJd28NwJhs1NScmmpX - If3UOVpg4zV2iiacgAW4IQIVBtk89mUbkDLRaB4Cj1JjaLIMrVoUfRa2+nSvP50H5wElvZelQlMAM7GG - wzNnN8UAihWo4Oy6uhqbwjMizIRk8lBJU9CEk0zvtP/gZ4CgWYK33p2LTPGchQxKO2g74gBWGvshJ+O7 - IU5CFDTRa+x+PFShkTr+RHexyFiQUer+g5udsDFOGMxky/x8E2CMikGpIGzHa9RPxE0ISs+wLmNxbaNK - 8AcYgGVl0r4mv1c5m+RxKVTP8jakkFkF/o1RTGxbFtvoJrdwj11vtp9bgUvKkSRXo4GFNw7K5uBPnwvq - yucl4I94WHbCBOwLAWz5fBsMNAnHJGfPsSUhw8xb/RCZlGx9Kyfp2t4wGLkp7Sabr1JZ0nRUwVRnpabl - Xqs9u5CRw7oTaBoUhJBhKJoJj5UgFtykaIOLPmQTC2ZSBdjsdhTDqzk+vyqSe8y/6QpYU3m5NaNzYbHI - Kmz/F3BvxADobsV9H7snpopZLiqaLSYmnNl+iVmkhGSA4tAfhzljH21XCCBiafPi4gG7ByXgOlnQj3KI - NepL3VzDgRj9/4FI+KIWfnPGMjcyVlwBswcUxQw5Ii3zAJwDUbHoOkbWumOwvYdIyf6nBf0Bp+4jsLmV - oHMMpGWx+qZDlXkpSw4YnfVqyVV2KU/AAMkMkcY5h70MiUk8Mav7VSz61haoriJ1LmqlDYjTuDFdEzYp - NltfwztJFg9eLvk24s4FtF0hAIRkC0bfk+deZMTH0xdk3Ki1dzpg1F/Te/lITlksFdfZd5sYQncIoqyY - UxMhUTxA6yeRhgNoloJIzYP8rKScx4M/nlTllEym1vGiyOHxEtklIAKqikw3H3oTZ8jUHwZQbD8JkogK - Pd7scPGVQ6SnA29wF1pi9PU+VQ+jx4aDJ2B8iStz24MycFcIINKtRCdHGSzcT5HdZsCi68w0pzZ2BVJ5 - NmV8YVeYnbVUs1FHY1fldHV46ROxkCO1JLCz67xyEj37kCCtGPZrJ5PyoY3AvkK9UrKQoGhbO8lJoTmE - 7qqstAyEC2g1IiqzPPS+khuDbom/vLOI1s2zIZYjiU4ee5Ap8waX4q/QPD319xi+nN6U+Zcs95r4/Pwv - oe0KASh17pz/UmsNuzI4skRqxZReLlnhS3eSsTcrVC0GkqyDqHvWpeOxoPpsbK8CtpmjNvoMQnIHGGWP - 5VKLWAtYyKmLFjWjMlAKH1pj2+HKRb9t5CxWXxfYSpj179Soiy4mapDUSJDpIQLwep+GFMlnopabaA2M - 4cyp1NoaQjTJMVYqCvtvj3h0KCJHuDHVc1Gpl9D2gwCCrGuUZ/WArDvsRAna7PMWRy9PJFYwa6StM+0z - 2M0pzgmcxcpYiWrsZ6AbHsw4zD3CZkxDxrCSYpwmtgLFY8otHmZgvHycVRSMBOySMWIdbTnXInMLsnJT - vYshIBex1pFPvKSyQufQPGeCsScZmUYrQVpJGEKRu2KpRFzU4jOcN1O2jrLD2qQvWwzYDQLIW93f/AK7 - 2vkfcLJBl1IDwNNFI5iChiO/7CSwwv1/EXDN5i5ucV70czBxrXTrGWp8bpEqjQR6PPi5w7hs13WkyMDC - g04Fqchwv9bMHTaNu/mSBscf3SPyq4mLs+u0Cju6ubZEQ9Qk1hPZ1yYOQSGyUvd7RQhyXkBfqSHxIAaK - KbhF9oAiUueF9WA9b/IjB3BvLZbeGj3w9J0pxk+mNMCRQqQWg+LrBpW+3JJlYJOfA6cYZdOkQR5PYWDD - EycqE2qi6ncX56jU25IvgygyWBRsbjaXPHCUbdWUpiLzwjqhfRrx5NBPsKjIMOPaop/GOMdklZD4hSbv - pwO++P5bAhfXq6Rs/WsIHPn96QK9fxVNGnxJ/lwL3MKIXPYg849tFwjAWLgY2y38n5nxoqU+yc2BC4vv - h2PPC5eXOLi0GFsQWV09zFE2HyTNNbyiMffmPIMQ2RYgktitBQ6N6/skQJvMlqZZdzk4At5CYIhUN+zB - qpyb7mVjoZNIpGswyrzBpQWEEa83QaJW3Ct5Co1cIVZWFDihKIoJF9SPkYdyqw+Yl1NzOxH5AYibmMZZ - UwZectsFAhigFuob3tJPvLhVZdasIQ+nZiHLZqrVqVqQWRku3ydtcmTFaXkEV86E0XObl1yTMOXenXkL - JQo99hNbZ4XF2GEkzLPdGichh7n/dfNYmvsqzA+RiAb4ZHEBnrVTrRZw34oANJEJ0r7N5i9riWHVfhfH - 7of95qE/98OIbAETpbwKGiJmCkl7tc7P8JmN97EGYnXhbR8IIDTV2JtMO1ASY+uIAgus/8ipbnrLYwfx - rKjiqgm7q7QopvyilWO3mPki90dTyibee+4AE9h+BtY7ZJg+A051za5ugBpl+Y0Z8vALrw+XPQ4RUqb5 - c+ZPqUC3ZWfXbUjSkb8P9WY0yp44LyTd2ihAjIjSFalsIkvCymEfnYuMfhYrm6K4SgPMIh3YfmkX13aH - ALKqnnP6qn4J5msfqH5yjV0lccGtNlblNIWe3gO4rZ/XD4deonRmwyEkV/oNcf2cb93aBFdiGiWMrs/j - /0NILbuScsFCb245B426Fw1PiNSofPRb2Jx9UPw5x4ISOaJAsa27VZLv252iJP3e/ptyLLF4We4nOZcN - O7hoFgkaHcx0v7CbtisEoGZZ+y7ymqN6P3yaoCLcvS5zxj6VCge23yO7osafE7CenXD0qAtchz6bYv8X - CGoxWyjNUaa0EQ13jXKxWwE8SEer7vD2OIHik7rswekhMQfBoS3HXd0P5x5ikQ+SD2wBUZ5GJVVf2tif - COAxzJcYCZiTJcTRFKJFaSveKrovO0bvOQGdOKh8uNbBZbbLRwBh73oqq0BdGOGAA0Wz0Cjwb8QDWIKK - dNGpu+rYkkNIkAQXE0v9hkOIIBMmU1hW8i296PLyIycNW2eOeLSchxRMmwHZROenc5RNLWmun4jcluwp - D3M6M39bptJ9DkwccTCz8cBVRRPm9tHQ+H636KgtN9sWGMhJ/thjKXyZG05Co7kvOHdpiHMDUKiAKBQV - sX4uVx9w+fkACH1TiVBKQSmEQmSHrgUKrZ9Xc9hx6E9ldwXU+EwA3sRcIGsTvNvxeDIaBblQZha5CI1j - TzJ+4kmdozGGlfy6svLONQhUaRqytA53ejoLSTov6SvUynDa1qHIgMvmxWe6Jeca8n5lSwFz9ghMHFF6 - lY6+VCTRObPuDdz8ykokTPzCMMaSg1ouJOsBKLyzLswQJgH+aSp2Xkm5s8uF/x1wAAAgwK9IYDoccDgc - UGtNh0g+hVgfo33ym7PEMIpckB6Wq9ocb7hSSPtiAEX7VA86zdFffE6EabGkILqHDzoYdzgrwi+IkJwk - FWP9aaVvI1XI2MV9JyIja/sSIxKpebjuDT75qy2w+fndEIyVZur7ZAC7xUpkyu4mOuWkqG+7PcrgQpji - +157AYhzFO5E5gN1WVaMETSWMaLy6uqI4/GIw+GAaZpANGEqE0opdm75mTfvxbWLRgAG8KX0v1MH/NYq - WrsCAEzzDG5DMEgZDx4vYMyaqwL6mDEsVZ+2lFNsrr25sxsciIyabd9nbDJn3zu/Pt4fzHGr/Tpiivvg - P+nCY+ZkXe+tV5bmiJX5LGfHRpFHBLHaMRCQa56QefAxgczz0jZcbm4B8dz0FtYWFnwzTM/QV1UAHK6O - ePLKK3jllVdwdXWF4+GA6TChTBOmsiESXFC7WASQ2f6CaZpwPE5o7ahZuTrrNU1gDjHrduRcFn+WFuXK - qF+IGMZ0BVu9KxVK3oGuQEyMxhm5eRtrpYEMejWIxnUQo1lta71x79ZuiF+9rFqagple10EsclK4lWwf - kBLzsp9Bxke4f8tr8fwupgGDiLG2nr63Uyk4HI545ZUrPHnliSCBIw7TAYdpClzrIwJ4rkbU5f1SCg7T - Ae3Q0ETAJQJKKTi2I1prTiFWmh8oDk4q/ZfbmWxicMvmCA4c6franbHHJdDc7O5700xD/YKzXE9kvZei - wvOgz5HansdyatPnDLT6rpLcn7P0PuO0EjLeQg8L8dFega/EGJGJMNGEaZpwdXXlwH91xHQ8dA5gKpim - AjxyAM/evvKVr3zwd//u331SpglTY/CR0STxZMeqE6bDAdxqRwp2aNQ2GDPibB8cpyhZHrwpFv02LZ/f - 0B+fO4bheXmOeMMZ5Tkm4xpsss9ncAQcUF0JGkWVZ0cS2xOMSPYcnCfUclsGKUST9v8Hv/9nRSoMUHHu - 9Hg84nh1wPFwhVeuXsErV8cuCkwTiAhf+cpXPriXLXqAdrEI4IMPPvh3RPRflVJwOEwwVpYIZRKRoLVO - /Rlgbmd6W5GT700vwyaOeLfP0LmZCW/zmCi8gDsjqMTZB/+JW3e6IivcrCsYxIfUjytjPP9Cb/eAi2/c - A1cQLxcXdYCqViEQqHSt/1QOOBy7fupqmttsAAABnklEQVTq6qrrAo5HHKYjSpnwwQcffO0Bpn8v7WIR - wPX19W+UUr4+XicitNpEGdjAzCYWvPx2s3x706Mx1v9W/O4aID4Pm3xfO+CTv68eERN7GHtwq2Fc0blW - 2/B2o3sqNO+y99vF0C4GTGXCdJhwOBw6RyBiAJWC6+vr/+Zhd/3528UigF//9V//Rinln/yDf/AP/rFe - U6VgmxoO7AggyvL3cfajYszk8YciQy+4uWj7LID0jGMg+ztG2L1Tryn91w1l1B9i7+JaAJRBUV2mCYep - KwanqaBQwe/8zu/8s1//9V//xoub5bO1i0UAAPAP/+E//J8AQJGAbjSrI438exnNzXAj2/8Sye+zLSAr - ubY8Jy+2Bc9Cc1l+8bNXTX93AppA6CJqKQW/8zu/8z///b//9//x3Ud5uHa56snQfvM3f/OzT548+edP - njz5G7/yK7/yKoCXBvj7aZF1ftlzufSWtQFL1ogWv4zfusMP8H995Svvf/DBB//ugw8++LXf+I3f+KOX - vbLH9tge22N7bI/tsT22x/bYHttjC+3/B71iqRn22EDpAAAAAElFTkSuQmCC - - - - CenterParent - - - rename - - - MetroFramework.Forms.MetroForm, MetroFramework, Version=1.4.0.0, Culture=neutral, PublicKeyToken=5f91a84759bf584a - - \ No newline at end of file diff --git a/MinecraftUSkinEditor/Forms/Form1.Designer.cs b/MinecraftUSkinEditor/Forms/Form1.Designer.cs index c37fc60d..849ef8f0 100644 --- a/MinecraftUSkinEditor/Forms/Form1.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Form1.Designer.cs @@ -36,8 +36,6 @@ this.skinToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.createAnimatedTextureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.audiopckToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.normalAudiopckToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.vitaPS4AudiopckToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.cloneFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.importSkinsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.importSkinToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -52,6 +50,9 @@ this.menuStrip = new System.Windows.Forms.MenuStrip(); this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.newToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.skinPackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.texturePackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mashUpPackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.extractToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.saveToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); @@ -180,25 +181,10 @@ // // audiopckToolStripMenuItem // - this.audiopckToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.normalAudiopckToolStripMenuItem, - this.vitaPS4AudiopckToolStripMenuItem}); resources.ApplyResources(this.audiopckToolStripMenuItem, "audiopckToolStripMenuItem"); this.audiopckToolStripMenuItem.Name = "audiopckToolStripMenuItem"; this.audiopckToolStripMenuItem.Click += new System.EventHandler(this.audiopckToolStripMenuItem_Click); // - // normalAudiopckToolStripMenuItem - // - this.normalAudiopckToolStripMenuItem.Name = "normalAudiopckToolStripMenuItem"; - resources.ApplyResources(this.normalAudiopckToolStripMenuItem, "normalAudiopckToolStripMenuItem"); - this.normalAudiopckToolStripMenuItem.Click += new System.EventHandler(this.normalAudiopckToolStripMenuItem_Click); - // - // vitaPS4AudiopckToolStripMenuItem - // - this.vitaPS4AudiopckToolStripMenuItem.Name = "vitaPS4AudiopckToolStripMenuItem"; - resources.ApplyResources(this.vitaPS4AudiopckToolStripMenuItem, "vitaPS4AudiopckToolStripMenuItem"); - this.vitaPS4AudiopckToolStripMenuItem.Click += new System.EventHandler(this.vitaPS4AudiopckToolStripMenuItem_Click); - // // cloneFileToolStripMenuItem // resources.ApplyResources(this.cloneFileToolStripMenuItem, "cloneFileToolStripMenuItem"); @@ -296,9 +282,29 @@ // // newToolStripMenuItem // + this.newToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.skinPackToolStripMenuItem, + this.texturePackToolStripMenuItem, + this.mashUpPackToolStripMenuItem}); resources.ApplyResources(this.newToolStripMenuItem, "newToolStripMenuItem"); this.newToolStripMenuItem.Name = "newToolStripMenuItem"; - this.newToolStripMenuItem.Click += new System.EventHandler(this.skinPackToolStripMenuItem_Click); + // + // skinPackToolStripMenuItem + // + this.skinPackToolStripMenuItem.Name = "skinPackToolStripMenuItem"; + resources.ApplyResources(this.skinPackToolStripMenuItem, "skinPackToolStripMenuItem"); + this.skinPackToolStripMenuItem.Click += new System.EventHandler(this.skinPackToolStripMenuItem_Click); + // + // texturePackToolStripMenuItem + // + this.texturePackToolStripMenuItem.Name = "texturePackToolStripMenuItem"; + resources.ApplyResources(this.texturePackToolStripMenuItem, "texturePackToolStripMenuItem"); + this.texturePackToolStripMenuItem.Click += new System.EventHandler(this.texturePackToolStripMenuItem_Click); + // + // mashUpPackToolStripMenuItem + // + this.mashUpPackToolStripMenuItem.Name = "mashUpPackToolStripMenuItem"; + resources.ApplyResources(this.mashUpPackToolStripMenuItem, "mashUpPackToolStripMenuItem"); // // openToolStripMenuItem // @@ -466,7 +472,6 @@ this.forMattNLContributorToolStripMenuItem}); this.donateToolStripMenuItem.Name = "donateToolStripMenuItem"; resources.ApplyResources(this.donateToolStripMenuItem, "donateToolStripMenuItem"); - this.donateToolStripMenuItem.Click += new System.EventHandler(this.donateToolStripMenuItem_Click); // // toNobledezJackToolStripMenuItem // @@ -625,7 +630,7 @@ this.tabControl.Controls.Add(this.editorTab); resources.ApplyResources(this.tabControl, "tabControl"); this.tabControl.Name = "tabControl"; - this.tabControl.SelectedIndex = 0; + this.tabControl.SelectedIndex = 1; this.tabControl.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabControl.Style = MetroFramework.MetroColorStyle.White; this.tabControl.TabStop = false; @@ -760,6 +765,7 @@ this.textBox1.UseSelectable = true; this.textBox1.WaterMarkColor = System.Drawing.Color.FromArgb(((int)(((byte)(109)))), ((int)(((byte)(109)))), ((int)(((byte)(109))))); this.textBox1.WaterMarkFont = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Pixel); + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); // // metroLabel2 // @@ -941,8 +947,6 @@ private System.Windows.Forms.ToolStripMenuItem convertPCTextrurePackToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem forMattNLContributorToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem audiopckToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem normalAudiopckToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem vitaPS4AudiopckToolStripMenuItem; private System.Windows.Forms.TabPage openTab; private System.Windows.Forms.ToolStripMenuItem videosToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem howToMakeABasicSkinPackToolStripMenuItem; @@ -968,6 +972,9 @@ private PictureBoxWithInterpolationMode pictureBoxImagePreview; private MetroFramework.Controls.MetroLabel labelImageSize; private MetroFramework.Controls.MetroButton buttonEdit; + private System.Windows.Forms.ToolStripMenuItem skinPackToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem texturePackToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem mashUpPackToolStripMenuItem; } } diff --git a/MinecraftUSkinEditor/Forms/Form1.cs b/MinecraftUSkinEditor/Forms/Form1.cs index b82cafed..248abdc2 100644 --- a/MinecraftUSkinEditor/Forms/Form1.cs +++ b/MinecraftUSkinEditor/Forms/Form1.cs @@ -1,4 +1,5 @@ -using System; + +using System; using System.Collections.Generic; using System.Drawing; using System.IO; @@ -21,15 +22,13 @@ namespace PckStudio { public partial class FormMain : MetroFramework.Forms.MetroForm { - string saveLocation = String.Empty; //Save location for pck file + string saveLocation = string.Empty; //Save location for pck file string PCKFilePath = ""; string PCKFileBCKUP = "x"; - PCKFile.FileData mf;//Template minefile variable PCKFile currentPCK;//currently opened pck LOCFile l; //Locdata PCKFile.FileData mfLoc = new PCKFile.FileData("CURRENTLOCDATA", 6); //LOC minefile - PCKFile.FileData file; //template for a selected minefile bool needsUpdate = false; bool saved = true; bool isTemplateFile = false; @@ -74,6 +73,8 @@ namespace PckStudio PCKFile pck = null; using (var fileStream = File.OpenRead(filePath)) { + isTemplateFile = false; + saveLocation = filePath; pck = PCKFileReader.Read(fileStream, LittleEndianCheckBox.Checked); } return pck; @@ -83,15 +84,17 @@ namespace PckStudio { treeViewMain.Nodes.Clear(); treeViewMain.LabelEdit = false; + addPasswordToolStripMenuItem.Enabled = true; foreach (var file_entry in currentPCK.file_entries) { - if (file_entry.name != "0") - continue; - foreach(var pair in file_entry.properties) + if (file_entry.name != "0") continue; + foreach (var pair in file_entry.properties) + { + addPasswordToolStripMenuItem.Enabled = !(pair.Item1 == "LOCK"); if (pair.Item1 == "LOCK" && new pckLocked(pair.Item2).ShowDialog() != DialogResult.OK) return; + } } - addPasswordToolStripMenuItem.Enabled = true; foreach (var file_entry in currentPCK.file_entries) { Console.WriteLine(file_entry.name); @@ -99,30 +102,33 @@ namespace PckStudio node.Tag = file_entry; treeViewMain.Nodes.Add(node); - if (file_entry.type == 8) // audio / binka - { - node.ImageIndex = 1; - node.SelectedImageIndex = 1; - } - else if (file_entry.type == 0 || file_entry.type == 1 || file_entry.type == 2) // skins, capes, textures + if (file_entry.type == 0 || file_entry.type == 1 || file_entry.type == 2) // skins, capes, textures { node.ImageIndex = 2; node.SelectedImageIndex = 2; } + else if (file_entry.type == 5 || file_entry.type == 11) // Skins.pck / x16info.pck + { + node.ImageIndex = 4; + node.SelectedImageIndex = 4; + } else if (file_entry.type == 6) // .loc { node.ImageIndex = 3; node.SelectedImageIndex = 3; } - //else if (file_entry.type == 11) // Skins.pck - //{ - // node.ImageIndex = 3; - // node.SelectedImageIndex = 3; - //} - else if (file_entry.type == 5 || file_entry.type == 11) // Skins.pck / x16info.pck + else if (file_entry.type == 8) // audio / binka { - node.ImageIndex = 4; - node.SelectedImageIndex = 4; + node.ImageIndex = 1; + node.SelectedImageIndex = 1; + } + else if (file_entry.type == 11) // Skins.pck + { + using (var stream = new MemoryStream(file_entry.data)) + { + PCKFile subPCKfile = PCKFileReader.Read(stream, LittleEndianCheckBox.Checked); + // TODO: load sub pck into tree and make it editable with ease + } } else { @@ -144,222 +150,189 @@ namespace PckStudio private void selectNode(object sender, TreeViewEventArgs e) { - treeMeta.Enabled = true; buttonEdit.Visible = false; - //Sets preview image to "NO IMAGE" if selected file data isn't image data + // Sets preview image to "NO IMAGE" by default pictureBoxImagePreview.Image = (Image)Resources.NoImageFound; int pictureBoxMaxHeight = (tabPage1.Height / 2) - (tabPage1.Height / 10); pictureBoxImagePreview.Size = new Size(pictureBoxMaxHeight, pictureBoxMaxHeight); - labelImageSize.Text = "";//Resets image size display if theres no image - if (treeViewMain.SelectedNode.Tag != null && treeViewMain.SelectedNode.Tag is PCKFile.FileData) //"Selects" node if it has data/isn't a folder + labelImageSize.Text = ""; + var node = e.Node; + if (node.Tag == null || !(node.Tag is PCKFile.FileData)) return; + PCKFile.FileData file = node.Tag as PCKFile.FileData; + treeMeta.Nodes.Clear(); + comboBox1.Items.Clear(); + textBox1.Text = ""; + foreach (var type in currentPCK.meta_data) + comboBox1.Items.Add(type); //Adds available metadata names from metadatabase to the metacombo + + //Retrieves metadata for currently selected mineifile and displays it within metatreeview + int boxes = 0; + foreach (var entry in file.properties) { - PCKFile.FileData file = e.Node.Tag as PCKFile.FileData; + TreeNode meta = new TreeNode(entry.Item1); + meta.Tag = entry; + treeMeta.Nodes.Add(meta); - treeMeta.Nodes.Clear(); //clears minefile metadata treeview - - comboBox1.Items.Clear(); //clears metacombo(entry name) - textBox1.Text = ""; //clears metatextbox(entry value) - - foreach (var type in currentPCK.meta_data.Keys) - comboBox1.Items.Add(type); //Adds available metadata names from metadatabase to the metacombo - - //Retrieves metadata for currently selected mineifile and displays it within metatreeview - int boxes = 0; - foreach (var entry in file.properties) //object = metadata entry(name:value) + //Check for if file contains model data + if (entry.Item1 == "BOX") { - TreeNode meta = new TreeNode(entry.Item1); - meta.Tag = entry; - treeMeta.Nodes.Add(meta); - - //Check for if file contains model data - if (entry.Item1 == "BOX") + boxes += 1; + buttonEdit.Text = "EDIT BOXES"; + buttonEdit.Visible = true; + } + else if (entry.Item1 == "ANIM") + { + if ((entry.Item2 == "0x40000") || (entry.Item2 == "0x80000")) { - boxes += 1; - buttonEdit.Text = "EDIT BOXES"; + buttonEdit.Text = "View Skin"; buttonEdit.Visible = true; } - else if (entry.Item1 == "ANIM") - { - Console.WriteLine(entry.Item2); - Console.WriteLine((entry.Item2 == "0x80000").ToString() + " - " + entry.Item2); - Console.WriteLine((entry.Item2 == "0x40000").ToString() + " - " + entry.Item2); - - - if ((entry.Item2 == "0x40000") || (entry.Item2 == "0x80000")) - { - buttonEdit.Text = "View Skin"; - boxes += 1; - buttonEdit.Visible = true; - } - } - else if (boxes == 0) - { - buttonEdit.Visible = false; - } } + } - //Check for Animated Texture - if ((file.name.StartsWith("res/textures/blocks/") || file.name.StartsWith("res/textures/items/")) && - (!file.name.EndsWith("clock.png") && (!file.name.EndsWith("compass.png")))) + //Check for Animated Texture + if ((file.name.StartsWith("res/textures/blocks/") || file.name.StartsWith("res/textures/items/")) && + (!file.name.EndsWith("clock.png") && (!file.name.EndsWith("compass.png")))) + { + buttonEdit.Text = "EDIT TEXTURE ANIMATION"; + buttonEdit.Visible = true; + } + + //If selected item is a image, its displayed with proper dimensions in image box + if (Path.GetExtension(file.name) == ".png" || file.type == 0 || file.type == 1 || file.type == 2) + { + MemoryStream png = new MemoryStream(file.data); //Gets image data from minefile data + Image skinPicture = Image.FromStream(png); //Constructs image data into image + pictureBoxImagePreview.Image = skinPicture; //Sets image preview to image + + + if (skinPicture.Size.Height == skinPicture.Size.Width / 2) { - buttonEdit.Text = "EDIT TEXTURE ANIMATION"; - buttonEdit.Visible = true; + pictureBoxImagePreview.Size = new Size(pictureBoxMaxHeight * 2, pictureBoxMaxHeight); //Sets 64x32 ratio images to appear at largest relative size to program window size + labelImageSize.Text = skinPicture.Size.Width.ToString() + "x" + skinPicture.Size.Height.ToString(); + return; + } + else if (skinPicture.Size.Height == skinPicture.Size.Width) + { + pictureBoxImagePreview.Size = new Size(pictureBoxMaxHeight, pictureBoxMaxHeight); //SWets 64x64 ratio images to appear at largest relative size to program window size + labelImageSize.Text = skinPicture.Size.Width.ToString() + "x" + skinPicture.Size.Height.ToString(); + return; } else { - buttonEdit.Visible = false; - } - - //If selected item is a image, its displayed with proper dimensions in image box - if (Path.GetExtension(file.name) == ".png") - { - pictureBoxImagePreview.SizeMode = PictureBoxSizeMode.StretchImage; - pictureBoxImagePreview.InterpolationMode = InterpolationMode.NearestNeighbor; - MemoryStream png = new MemoryStream(file.data); //Gets image data from minefile data - Image skinPicture = Image.FromStream(png); //Constructs image data into image - pictureBoxImagePreview.Image = skinPicture; //Sets image preview to image - - - if (skinPicture.Size.Height == skinPicture.Size.Width / 2) + //Sets images to appear at largest relative size to program window size + Size maxDisplay = new Size((tabPage1.Size.Width / 2 - 5) / 3, (tabPage1.Size.Height / 2 - 5) / 3); + if (skinPicture.Size.Width > maxDisplay.Width) { - pictureBoxImagePreview.Size = new Size(pictureBoxMaxHeight * 2, pictureBoxMaxHeight); //Sets 64x32 ratio images to appear at largest relative size to program window size - labelImageSize.Text = skinPicture.Size.Width.ToString() + "x" + skinPicture.Size.Height.ToString(); - return; + //calculate aspect ratio + float aspect = skinPicture.Width / (float)skinPicture.Height; + int newWidth, newHeight; + + //calculate new dimensions based on aspect ratio + newWidth = (int)(maxDisplay.Height * aspect); + newHeight = (int)(newWidth / aspect); + + //if one of the two dimensions exceed the box dimensions + if (newWidth > skinPicture.Width || newHeight > skinPicture.Height) + { + //depending on which of the two exceeds the box dimensions set it as the box dimension and calculate the other one based on the aspect ratio + if (newWidth > newHeight) + { + newWidth = maxDisplay.Width; + newHeight = (int)(newWidth / aspect); + } + else + { + newHeight = maxDisplay.Height; + newWidth = (int)(newHeight * aspect); + } + } + pictureBoxImagePreview.Size = new Size(newWidth, newHeight); } - else if (skinPicture.Size.Height == skinPicture.Size.Width) + else if (skinPicture.Size.Height > maxDisplay.Height) { - pictureBoxImagePreview.Size = new Size(pictureBoxMaxHeight, pictureBoxMaxHeight); //SWets 64x64 ratio images to appear at largest relative size to program window size - labelImageSize.Text = skinPicture.Size.Width.ToString() + "x" + skinPicture.Size.Height.ToString(); - return; + //calculate aspect ratio + float aspect = skinPicture.Width / (float)skinPicture.Height; + int newWidth, newHeight; + + //calculate new dimensions based on aspect ratio + newWidth = (int)(maxDisplay.Width * aspect); + newHeight = (int)(newWidth / aspect); + + //if one of the two dimensions exceed the box dimensions + if (newWidth > skinPicture.Width || newHeight > skinPicture.Height) + { + //depending on which of the two exceeds the box dimensions set it as the box dimension and calculate the other one based on the aspect ratio + if (newWidth > newHeight) + { + newWidth = maxDisplay.Width; + newHeight = (int)(newWidth / aspect); + } + else + { + newHeight = maxDisplay.Height; + newWidth = (int)(newHeight * aspect); + } + } + pictureBoxImagePreview.Size = new Size(newWidth, newHeight); } else { - //Sets images to appear at largest relative size to program window size - Size maxDisplay = new Size((tabPage1.Size.Width / 2 - 5) / 3, (tabPage1.Size.Height / 2 - 5) / 3); - if (skinPicture.Size.Width > maxDisplay.Width) - { - //calculate aspect ratio - float aspect = skinPicture.Width / (float)skinPicture.Height; - int newWidth, newHeight; - - //calculate new dimensions based on aspect ratio - newWidth = (int)(maxDisplay.Height * aspect); - newHeight = (int)(newWidth / aspect); - - //if one of the two dimensions exceed the box dimensions - if (newWidth > skinPicture.Width || newHeight > skinPicture.Height) - { - //depending on which of the two exceeds the box dimensions set it as the box dimension and calculate the other one based on the aspect ratio - if (newWidth > newHeight) - { - newWidth = maxDisplay.Width; - newHeight = (int)(newWidth / aspect); - } - else - { - newHeight = maxDisplay.Height; - newWidth = (int)(newHeight * aspect); - } - } - pictureBoxImagePreview.Size = new Size(newWidth, newHeight); - } - else if (skinPicture.Size.Height > maxDisplay.Height) - { - //calculate aspect ratio - float aspect = skinPicture.Width / (float)skinPicture.Height; - int newWidth, newHeight; - - //calculate new dimensions based on aspect ratio - newWidth = (int)(maxDisplay.Width * aspect); - newHeight = (int)(newWidth / aspect); - - //if one of the two dimensions exceed the box dimensions - if (newWidth > skinPicture.Width || newHeight > skinPicture.Height) - { - //depending on which of the two exceeds the box dimensions set it as the box dimension and calculate the other one based on the aspect ratio - if (newWidth > newHeight) - { - newWidth = maxDisplay.Width; - newHeight = (int)(newWidth / aspect); - } - else - { - newHeight = maxDisplay.Height; - newWidth = (int)(newHeight * aspect); - } - } - pictureBoxImagePreview.Size = new Size(newWidth, newHeight); - } - else - { - pictureBoxImagePreview.Size = new Size(skinPicture.Size.Width, skinPicture.Size.Height); - } - labelImageSize.Text = skinPicture.Size.Width.ToString() + "x" + skinPicture.Size.Height.ToString(); - return; + pictureBoxImagePreview.Size = new Size(skinPicture.Size.Width, skinPicture.Size.Height); } + labelImageSize.Text = skinPicture.Size.Width.ToString() + "x" + skinPicture.Size.Height.ToString(); + return; } - else if (Path.GetExtension(file.name) == ".loc") - { - buttonEdit.Text = "EDIT LOC"; - buttonEdit.Visible = true; - } - else if (Path.GetExtension(file.name) == ".col") - { - buttonEdit.Text = "EDIT COLORS"; - buttonEdit.Visible = true; - } - else if (Path.GetFileName(file.name) == "audio.pck") - { - buttonEdit.Text = "EDIT MUSIC CUES"; - buttonEdit.Visible = true; - } - else - { - buttonEdit.Visible = false; - //Sets preview image to "NO IMAGE" if selected file data isn't image data - pictureBoxImagePreview.Image = (Image)Resources.NoImageFound; - pictureBoxImagePreview.Size = new Size(pictureBoxMaxHeight, pictureBoxMaxHeight); - labelImageSize.Text = ""; - } + } + else if (file.type == 6) // .loc + { + buttonEdit.Text = "EDIT LOC"; + buttonEdit.Visible = true; + } + else if (Path.GetExtension(file.name) == ".col" || file.type == 9) + { + buttonEdit.Text = "EDIT COLORS"; + buttonEdit.Visible = true; + } + else if (Path.GetFileName(file.name) == "audio.pck") + { + buttonEdit.Text = "EDIT MUSIC CUES"; + buttonEdit.Visible = true; } } #region Parses boxes and opens model generator public void editModel(PCKFile.FileData skin) { - MessageBox.Show("TODO!!!!"); - return; - // List otherData = new List();//Creates list for backup data to be added to - // List generatedData = new List();//Creates list for model data to be added to - // foreach (var entry in skin.properties) //object = metadata entry(name:value) - // { - // //parses and sorts - // if (entry.Key == "BOX" || entry.Key == "OFFSET") - // { - // generatedData.Add(entry); - //continue; - // } - // otherData.Add(entry); - // } - // skin.properties = otherData; - // generateModel generate = new generateModel(generatedData, new PictureBox()); - // generate.ShowDialog();//Opens Model Generator Dialog - // //Adds model data - // foreach (object[] entry in generatedData) //object = metadata entry(name:value) - // { - // skin.properties.Add(entry); - // } + PCKProperties otherData = new PCKProperties(); + PCKProperties generatedData = new PCKProperties(); + foreach (var entry in skin.properties) + { + //parses and sorts + if (entry.Item1 == "BOX" || entry.Item1 == "OFFSET") + { + generatedData.Add(entry); + continue; + } + otherData.Add(entry); + } + skin.properties = otherData; + generateModel generate = new generateModel(generatedData, new PictureBox()); + generate.ShowDialog(); //Opens Model Generator Dialog + foreach (var entry in generatedData) + { + skin.properties.Add(entry); + } + treeMeta.Nodes.Clear(); - treeMeta.Nodes.Clear(); //clears minefile metadata treeview + comboBox1.Items.Clear(); + textBox1.Text = ""; - comboBox1.Items.Clear(); //clears metacombo(entry name) - textBox1.Text = ""; //clears metatextbox(entry value) - - foreach (var type in currentPCK.meta_data.Keys) - comboBox1.Items.Add(type); //Adds available metadata names from metadatabase to the metacombo + foreach (var type in currentPCK.meta_data) + comboBox1.Items.Add(type); //Retrieves metadata for currently selected mineifile and displays it within metatreeview - foreach (var entry in file.properties) //object = metadata entry(name:value) + foreach (var entry in skin.properties) { TreeNode meta = new TreeNode(entry.Item1); meta.Tag = entry; @@ -377,125 +350,89 @@ namespace PckStudio MessageBox.Show("Cannot extract folders!"); return; } - if (treeViewMain.SelectedNode.Tag is PCKFile.FileData) + if (!(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) return; + SaveFileDialog exFile = new SaveFileDialog(); //extract location + exFile.FileName = treeViewMain.SelectedNode.Text; + exFile.Filter = Path.GetExtension(treeViewMain.SelectedNode.Text).Replace(".", "") + " File|*" + Path.GetExtension(treeViewMain.SelectedNode.Text); + exFile.ShowDialog(); + string extractPath = exFile.FileName; + + if (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(extractPath)))//Makes sure chosen directory isn't null or whitespace AKA makes sure its usable { - SaveFileDialog exFile = new SaveFileDialog();//extract location - exFile.FileName = treeViewMain.SelectedNode.Text; - exFile.Filter = Path.GetExtension(treeViewMain.SelectedNode.Text).Replace(".", "") + " File|*" + Path.GetExtension(treeViewMain.SelectedNode.Text); - exFile.ShowDialog(); + File.WriteAllBytes(extractPath, ((PCKFile.FileData)treeViewMain.SelectedNode.Tag).data);//extracts minefile data to directory - string appPath = exFile.FileName;//Chosen file path - string extractPath = exFile.FileName; - - if (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(extractPath)))//Makes sure chosen directory isn't null or whitespace AKA makes sure its usable + //Generates metadata file in form of txt file if metadata for the file exists + if (treeViewMain.SelectedNode.Tag.ToString() != "") { - File.WriteAllBytes(extractPath, ((PCKFile.FileData)treeViewMain.SelectedNode.Tag).data);//extracts minefile data to directory - - //Generates metadata file in form of txt file if metadata for the file exists - if (treeViewMain.SelectedNode.Tag.ToString() != "") + try { - try + string metaData = ""; + PCKFile.FileData file = (PCKFile.FileData)treeViewMain.SelectedNode.Tag; + + var ms = new MemoryStream(File.ReadAllBytes(extractPath).ToArray()); + + MemoryStream ico = new MemoryStream(); + Bitmap bmp = new Bitmap(Image.FromFile(extractPath)); + bmp.Save(ico, ImageFormat.Png); + + foreach (var entry in file.properties) { - string metaData = ""; - file = (PCKFile.FileData)treeViewMain.SelectedNode.Tag; - - var ms = new MemoryStream(File.ReadAllBytes(extractPath).ToArray()); - - MemoryStream ico = new MemoryStream(); - Bitmap bmp = new Bitmap(Image.FromFile(extractPath)); - bmp.Save(ico, ImageFormat.Png); - - foreach (var entry in file.properties) - { - metaData += entry.Item1 + ":" + entry.Item2 + Environment.NewLine; - } - - File.WriteAllText(extractPath + ".txt", metaData); + metaData += entry.Item1 + ":" + entry.Item2 + Environment.NewLine; } - catch (Exception) - { - } - MessageBox.Show("File Extracted");//Verification that file extraction path was successful + File.WriteAllText(extractPath + ".txt", metaData); } - } - } - else if (treeViewMain.SelectedNode != null) - { - SaveFileDialog exFile = new SaveFileDialog();//extract location - exFile.ShowDialog(); - string appPath = exFile.FileName;//Chosen file path - - foreach (TreeNode item in treeViewMain.SelectedNode.Nodes) - { - if (item.Tag is PCKFile.FileData)//Makes sure item being extracted is minefile and not folder or null item + catch (Exception ex) { - string extractPath = Path.Combine(appPath, ((PCKFile.FileData)item.Tag).name);//combines file path with file path & name of minefile being extracted - - if (!String.IsNullOrWhiteSpace(Path.GetDirectoryName(extractPath)))//Makes sure chosen directory isn't null or whitespace AKA makes sure its usable - { - Directory.CreateDirectory(Path.GetDirectoryName(extractPath));//Creates directory variable out of generated/chosen extract path - File.WriteAllBytes(extractPath, ((PCKFile.FileData)item.Tag).data);//extracts minefile data to directory - - //Generates metadata file in form of txt file if metadata for the file exists - if (item.Tag.ToString() != "") - { - try - { - string metaData = ""; - file = mf; - - var ms = new MemoryStream(File.ReadAllBytes(extractPath).ToArray()); - - MemoryStream ico = new MemoryStream(); - Bitmap bmp = new Bitmap(Image.FromFile(extractPath)); - bmp.Save(ico, ImageFormat.Png); - - foreach (var entry in file.properties) - { - metaData += entry.Item1 + ":" + entry.Item2 + Environment.NewLine; - } - - File.WriteAllText(extractPath + ".txt", metaData); - } - catch (Exception) - { - - } - MessageBox.Show("Path Extracted");//Verification that file extraction path was successful - } - } + Console.WriteLine(ex.Message); } + MessageBox.Show("File Extracted");//Verification that file extraction path was successful } } } #endregion - private void save() + private void SaveTemplate() { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "PCK (Minecraft Console Package)|*.pck"; saveFileDialog.DefaultExt = ".pck"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { - using (var fs = File.OpenWrite(saveFileDialog.FileName)) - { - PCKFileWriter.Write(fs, currentPCK, LittleEndianCheckBox.Checked); - } + Save(saveFileDialog.FileName); + } + } + + private void Save(string FilePath) + { + foreach (var file in currentPCK.file_entries) + { + foreach(var property in file.properties) + { + // make sure the meta is valid + if (!currentPCK.meta_data.Contains(property.Item1)) + currentPCK.meta_data.Add(property.Item1); + } + } + + using (var fs = File.OpenWrite(FilePath)) + { + PCKFileWriter.Write(fs, currentPCK, LittleEndianCheckBox.Checked); } } private void replaceToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.Tag is PCKFile.FileData) //Makes sure file being replaced is an actual minefile or not null + if (!(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) { - PCKFile.FileData mf = treeViewMain.SelectedNode.Tag as PCKFile.FileData; //backups minefile data for node - using (var ofd = new OpenFileDialog()) + MessageBox.Show("Invalid PCK File data"); // should never happen unless its a folder + } + PCKFile.FileData mf = treeViewMain.SelectedNode.Tag as PCKFile.FileData; + using (var ofd = new OpenFileDialog()) + { + if (ofd.ShowDialog() == DialogResult.OK) { - if (ofd.ShowDialog() == DialogResult.OK) - { - mf.SetData(File.ReadAllBytes(ofd.FileName)); //overwrites minefile data with chosen files data - } + mf.SetData(File.ReadAllBytes(ofd.FileName)); } } saved = false; @@ -516,12 +453,12 @@ namespace PckStudio { foreach (TreeNode item in treeViewMain.SelectedNode.Nodes) { - if (item.Tag == null) + if (item.Tag == null || item.Nodes.Count > 0) { MessageBox.Show("Can't fully delete directory with subdirectories"); return; } - if (item.Tag is PCKFile.FileData)//makes sure selected node is a minefile + if (item.Tag is PCKFile.FileData) //makes sure selected node is a minefile { //removes minefile from minefile list PCKFile.FileData mf = (PCKFile.FileData)item.Tag; @@ -536,31 +473,30 @@ namespace PckStudio saved = false; } - #region renames pck entry from treeview and PCKFile.FileDatas + #region renames pck entry from treeview and PCKFile.file_entries private void renameFileToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = treeViewMain.SelectedNode; - rename diag = new rename(node); - diag.ShowDialog(this); - diag.Dispose();//diposes generated metadata adding dialog data - treeViewMain.SelectedNode.Text = Path.GetFileName(node.Name); - treeViewToMineFiles(treeViewMain, currentPCK); + RenamePrompt diag = new RenamePrompt(node); + if (diag.ShowDialog(this) == DialogResult.OK) + treeViewMain.SelectedNode.Text = Path.GetFileName(diag.NewText); + diag.Dispose(); } #endregion #region clones pck entry from treeview and PCKFile.FileDatas private void cloneFileToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.Tag == null) return; + if (treeViewMain.SelectedNode.Tag == null || !(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) return; - PCKFile.FileData mfO = (PCKFile.FileData)treeViewMain.SelectedNode.Tag; + PCKFile.FileData mfO = treeViewMain.SelectedNode.Tag as PCKFile.FileData; FileInfo mfCO = new FileInfo(mfO.name); string name = Path.GetDirectoryName(mfO.name).Replace("\\", "/") + "/" + Path.GetFileNameWithoutExtension(mfO.name) + "_clone" + mfCO.Extension;//sets minfile name to file name PCKFile.FileData mf = new PCKFile.FileData(name, mfO.type); //Creates new minefile template if (treeViewMain.SelectedNode.Parent == null && mf.name.StartsWith("/")) mf.name = mf.name.Remove(0, 1); mf.properties = mfO.properties; - TreeNode add = new TreeNode(Path.GetFileName(mf.name)) { Tag = mf };//creates node for minefile + TreeNode add = new TreeNode(Path.GetFileName(mf.name)) { Tag = mf }; //creates node for minefile //Gets proper file icon for minefile if (Path.GetExtension(add.Text) == ".binka") @@ -684,11 +620,11 @@ namespace PckStudio tempID = tempID.Remove(0, 8);//removes text from id - tempIDD = int.Parse(tempID) + 1;//adds to skin/cape id index to presets the next skin/cape id + tempIDD = int.Parse(tempID) + 1; //adds to skin/cape id index to presets the next skin/cape id } catch (Exception) { - tempIDD = 00000000;//sets temporary id to 0 if an id can't be generated off the treeviews last item + tempIDD = 00000000; //sets temporary id to 0 if an id can't be generated off the treeviews last item } PCKFile.FileData mf = mfLoc;//Sets loc minefile @@ -705,8 +641,11 @@ namespace PckStudio MessageBox.Show("No localization data found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } - PckStudio.addnewskin add = new PckStudio.addnewskin(currentPCK, treeViewMain, tempIDD.ToString(), l);//Sets dialog data for skin creator - add.ShowDialog();//opens skin creator + PckStudio.addnewskin add = new PckStudio.addnewskin(l); //Sets dialog data for skin creator + add.ShowDialog(); //opens skin creator + if (add.useCape) + currentPCK.file_entries.Add(add.cape); + currentPCK.file_entries.Add(add.skin); using (var stream = new MemoryStream()) { LOCFileWriter.Write(stream, l); @@ -714,62 +653,36 @@ namespace PckStudio } add.Dispose();//disposes generated skin creator data saved = false; + loadEditor(); } #endregion - private void audiopckToolStripMenuItem_Click(object sender, EventArgs e) - { - - } - - PCKFile.FileData makeNewAudioPCK(bool isVita) + PCKFile.FileData makeNewAudioPCK(bool isLittle) { + // create actual valid pck file structure PCKFile audioPck = new PCKFile(1); // 1 = audio pck - audioPck.meta_data.Add("CUENAME", 0); - audioPck.meta_data.Add("CREDIT", 1); - audioPck.meta_data.Add("CREDITID", 2); + audioPck.meta_data.Add("CUENAME"); + audioPck.meta_data.Add("CREDIT"); + audioPck.meta_data.Add("CREDITID"); for (int i = 0; i < 3; i++) { PCKFile.FileData mf = new PCKFile.FileData("", i); - //audioPCKFile.file_entries.Add(mf); - } - PCKFile.FileData audioMF = new PCKFile.FileData("audio.pck", 8); - //TODO!!!!!!!!!! - //audioMF.data = isVita ? audioPck.RebuildVita() : audioPck.Rebuild(); - return audioMF; + audioPck.file_entries.Add(mf); + } + + // create a file data entry for current open pck file + PCKFile.FileData audioFileData = new PCKFile.FileData("audio.pck", 8); + using(var stream = new MemoryStream()) + { + PCKFileWriter.Write(stream, audioPck, isLittle); + audioFileData.SetData(stream.ToArray()); + } + return audioFileData; } - private void vitaPS4AudiopckToolStripMenuItem_Click(object sender, EventArgs e) + private void audiopckToolStripMenuItem_Click(object sender, EventArgs e) { - treeViewToMineFiles(treeViewMain, currentPCK); - List filenames = new List(); - foreach (TreeNode tNode in treeViewMain.Nodes) - { - filenames.Add(tNode.Text); - } - - if (filenames.Contains("audio.pck")) - { - MessageBox.Show("There is already an audio.pck present in this file!", "Can't create audio.pck"); - return; - } - PCKFile.FileData audioMF = makeNewAudioPCK(true); - TreeNode node = new TreeNode(); - node.Text = "audio.pck"; - node.Tag = audioMF; - node.ImageIndex = 4; - node.SelectedImageIndex = 4; - PckStudio.Forms.Utilities.AudioEditor diag = new PckStudio.Forms.Utilities.AudioEditor(node.Tag as PCKFile.FileData, true); - diag.Text += " (PS4/Vita)"; - diag.ShowDialog(this); - if (diag.saved) treeViewMain.Nodes.Add(node); - treeViewToMineFiles(treeViewMain, currentPCK); - diag.Dispose(); - } - - private void normalAudiopckToolStripMenuItem_Click(object sender, EventArgs e) - { - treeViewToMineFiles(treeViewMain, currentPCK); + //treeViewToMineFiles(treeViewMain, currentPCK); List filenames = new List(); foreach (TreeNode tNode in treeViewMain.Nodes) { @@ -782,15 +695,14 @@ namespace PckStudio return; } PCKFile.FileData audioMF = makeNewAudioPCK(false); - TreeNode node = new TreeNode(); - node.Text = "audio.pck"; + TreeNode node = new TreeNode("audio.pck"); node.Tag = audioMF; node.ImageIndex = 4; node.SelectedImageIndex = 4; - PckStudio.Forms.Utilities.AudioEditor diag = new PckStudio.Forms.Utilities.AudioEditor(node.Tag as PCKFile.FileData, false); + Forms.Utilities.AudioEditor diag = new Forms.Utilities.AudioEditor(audioMF, LittleEndianCheckBox.Checked); diag.ShowDialog(this); if (diag.saved) treeViewMain.Nodes.Add(node); - treeViewToMineFiles(treeViewMain, currentPCK); + //treeViewToMineFiles(treeViewMain, currentPCK); diag.Dispose(); } @@ -810,20 +722,11 @@ namespace PckStudio diag.ShowDialog(this); diag.Dispose(); - treeViewToMineFiles(treeViewMain, currentPCK); + //treeViewToMineFiles(treeViewMain, currentPCK); treeMeta.Nodes.Clear(); - foreach (var type in currentPCK.meta_data.Keys) + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); - - //loads all of selected minefiles metadata into metadata treeview - foreach (var entry in file.properties) - { - TreeNode meta = new TreeNode(entry.Item1); - - meta.Tag = entry; - treeMeta.Nodes.Add(meta); - } } catch { @@ -836,104 +739,90 @@ namespace PckStudio } #endregion - #region deciphers what happens when certain pck entries are double clicked private void treeViewMain_DoubleClick(object sender, EventArgs e) { - if (treeViewMain.SelectedNode == null || treeViewMain.SelectedNode.Tag == null) + if (treeViewMain.SelectedNode == null || + treeViewMain.SelectedNode.Tag == null || + !(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) return; - if (treeViewMain.SelectedNode.Tag is PCKFile.FileData) - { - mf = treeViewMain.SelectedNode.Tag as PCKFile.FileData; - if (mf.type == 6) + PCKFile.FileData file = treeViewMain.SelectedNode.Tag as PCKFile.FileData; + if (file.type == 6) // .loc + { + LOCFile l = null; + using (var stream = new MemoryStream(file.data)) + { + l = LOCFileReader.Read(stream); + } + var locedit = new LOCEditor(l); + locedit.ShowDialog(this); + if (locedit.wasModified) { - LOCFile l; - try - { - using (var stream = new MemoryStream(mf.data)) - { - l = LOCFileReader.Read(stream);//sets loc data - } - } - catch - { - MessageBox.Show("No localization data found.", "Error", MessageBoxButtons.OK, - MessageBoxIcon.Error); - return; - } - (new LOCEditor(l)).ShowDialog(); using (var stream = new MemoryStream()) { LOCFileWriter.Write(stream, l); - mf.SetData(stream.ToArray()); + file.SetData(stream.ToArray()); } } } - //Checks to see if selected minefile is an audio file - if (Path.GetFileName(mf.name) == "audio.pck") + if (Path.GetFileName(file.name) == "audio.pck" || file.type == 8) // audio { - if (treeViewMain.SelectedNode.Tag is PCKFile.FileData) + try { - try - { - Forms.Utilities.AudioEditor diag = new Forms.Utilities.AudioEditor(mf, mf.data[0] != 0x00); - if(mf.data[0] != 0x00) diag.Text += " (PS4/Vita)"; - diag.ShowDialog(this); - diag.Dispose(); - } - catch(Exception ex) - { - MessageBox.Show("Error", ex.Message, MessageBoxButtons.OK, - MessageBoxIcon.Error); - return; - } + Forms.Utilities.AudioEditor diag = new Forms.Utilities.AudioEditor(file, LittleEndianCheckBox.Checked); + if (LittleEndianCheckBox.Checked) diag.Text += " (PS4/Vita)"; + diag.ShowDialog(this); + diag.Dispose(); + } + catch(Exception ex) + { + MessageBox.Show("Error", ex.Message, MessageBoxButtons.OK, + MessageBoxIcon.Error); + return; } } //Checks to see if selected minefile is a col file - if (Path.GetExtension(mf.name) == ".col" || mf.type == 9) + if (Path.GetExtension(file.name) == ".col" || file.type == 9) { - //MessageBox.Show(".COL Editor Coming Soon!"); - - if (treeViewMain.SelectedNode.Tag is PCKFile.FileData) - { - try - { - Forms.Utilities.COLEditor diag = new Forms.Utilities.COLEditor(mf); - diag.ShowDialog(this); - diag.Dispose(); - } - catch - { - MessageBox.Show("No Color data found.", "Error", MessageBoxButtons.OK, - MessageBoxIcon.Error); - return; - } - //mf.data = l.Rebuild();//Rebuilds loc file with locdata in grid view after closing dialog + if (file.size == 0) + { + MessageBox.Show("No Color data found.", "Error", MessageBoxButtons.OK, + MessageBoxIcon.Error); + return; } - } + COLFile colFile = new COLFile(); + using (var stream = new MemoryStream(file.data)) + { + colFile.Open(stream); + } + Forms.Utilities.COLEditor diag = new Forms.Utilities.COLEditor(colFile); + if (diag.ShowDialog(this) == DialogResult.OK && diag.data.Length > 0) + file.SetData(diag.data); + diag.Dispose(); + } //Checks to see if selected minefile is a binka file //System.Threading.ThreadStart starter; //System.Threading.Thread binkam; - if (Path.GetExtension(mf.name) == ".binka") + if (Path.GetExtension(file.name) == ".binka") { MessageBox.Show(".binka Editor Coming Soon!"); } - } - #endregion #region updates combo and text boxes for metadata when a metadata entry is selected private void treeMeta_AfterSelect(object sender, TreeViewEventArgs e) { + var node = e.Node; + if (node == null || !(node.Tag is ValueTuple)) return; comboBox1.Items.Clear(); //Resets metadata combobox of selectable entry names - var strings = (Tuple)e.Node.Tag; - foreach (var type in currentPCK.meta_data.Keys) + var property = (ValueTuple)node.Tag; + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); - comboBox1.Text = strings.Item1; - textBox1.Text = strings.Item2; + comboBox1.Text = property.Item1; + textBox1.Text = property.Item2; } #endregion @@ -944,38 +833,42 @@ namespace PckStudio } #endregion - #region updates metadata value when text box value changes private void textBox1_TextChanged(object sender, EventArgs e) { + if (treeMeta.SelectedNode == null || + treeMeta.SelectedNode.Tag == null || + !(treeMeta.SelectedNode.Tag is ValueTuple)) + return; + var valuePair = (ValueTuple)treeMeta.SelectedNode.Tag; + valuePair.Item2 = textBox1.Text; } - #endregion - #region deletes metadata entry private void deleteEntryToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeMeta.SelectedNode != null)//Makes sure selected node is a minefile + if (treeMeta.SelectedNode != null && treeMeta.SelectedNode.Tag is ValueTuple && + treeViewMain.SelectedNode.Tag is PCKFile.FileData) { - file.properties.Remove((Tuple)treeMeta.SelectedNode.Tag);//removes minefile from minefile list - treeMeta.Nodes.Remove(treeMeta.SelectedNode);//removes minefile node + var file = treeViewMain.SelectedNode.Tag as PCKFile.FileData; + file.properties.Remove((ValueTuple)treeMeta.SelectedNode.Tag); + treeMeta.Nodes.Remove(treeMeta.SelectedNode); } saved = false; } - #endregion - #region adds metadata entry private void addEntryToolStripMenuItem_Click_1(object sender, EventArgs e) { - mf = (PCKFile.FileData)treeViewMain.SelectedNode.Tag; //Sets minefile to selected node - addMeta add = new addMeta(mf);//sets metadata adding dialog - add.ShowDialog();//displays metadata adding dialog - add.Dispose();//diposes generated metadata adding dialog data + if (treeViewMain.SelectedNode.Tag == null || + !(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) + return; + PCKFile.FileData file = (PCKFile.FileData)treeViewMain.SelectedNode.Tag; + addMeta add = new addMeta(file); + add.ShowDialog(); + add.Dispose(); - //Sets up combobox for metadata entries from main metadatabase treeMeta.Nodes.Clear(); - foreach (var type in currentPCK.meta_data.Keys) + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); - //loads all of selected minefiles metadata into metadata treeview foreach (var entry in file.properties) { TreeNode meta = new TreeNode(entry.Item1); @@ -984,7 +877,6 @@ namespace PckStudio } saved = false; } - #endregion #region moves node up and arranges minefile indexes private void moveUpToolStripMenuItem_Click(object sender, EventArgs e) @@ -1006,7 +898,7 @@ namespace PckStudio treeViewMain.SelectedNode.Remove(); } - treeViewToMineFiles(treeViewMain, currentPCK); + //treeViewToMineFiles(treeViewMain, currentPCK); treeViewMain.SelectedNode = move; @@ -1034,7 +926,7 @@ namespace PckStudio treeViewMain.SelectedNode.Remove(); } - treeViewToMineFiles(treeViewMain, currentPCK); + //treeViewToMineFiles(treeViewMain.top, currentPCK); treeViewMain.SelectedNode = move; @@ -1053,65 +945,6 @@ namespace PckStudio } } - public static string getFullMineFilePath(TreeNode node) - { - try - { - string path = Path.GetDirectoryName(node.FullPath); - string fullNew = path + "/" + Path.GetFileName(node.Text); - fullNew = fullNew.Replace("\\", "/"); - return fullNew.TrimStart('/'); - } - catch (System.ArgumentException e) - { - return node.Text; - } - } - - public static void treeViewToMineFiles(TreeView tree, PCKFile pck) - { - int i = 1; - List children = new List(); - List newMineFiles = new List(); - foreach (TreeNode node in tree.Nodes) - { - string nodePath = getFullMineFilePath(node); - - if(node.Tag == null) - { - getChildren(children, node); - foreach (TreeNode child in children) - { - string childPath = getFullMineFilePath(child); - - if(child.Tag != null) - { - PCKFile.FileData mf = (PCKFile.FileData)child.Tag; - mf.name = childPath; - if (!newMineFiles.Contains(mf)) - { - newMineFiles.Add((PCKFile.FileData)child.Tag); - //Console.WriteLine("Minefile " + i + ": " + childPath); - i++; - } - } - } - } - else - { - PCKFile.FileData mf = (PCKFile.FileData)node.Tag; - mf.name = nodePath; - if (!newMineFiles.Contains(mf)) - { - newMineFiles.Add((PCKFile.FileData)node.Tag); - //Console.WriteLine("Minefile " + i + ": " + nodePath); - i++; - } - } - } - pck.file_entries = newMineFiles; - } - // Most of the code below is modified code from this link: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.itemdrag?view=windowsdesktop-6.0 // - MattNL @@ -1176,14 +1009,14 @@ namespace PckStudio #region opens presets private void addPresetToolStripMenuItem1_Click(object sender, EventArgs e) { - mf = (PCKFile.FileData)treeViewMain.SelectedNode.Tag;//Sets selected minefile from node - PckStudio.presetMeta add = new PckStudio.presetMeta(mf);//sets data for preset adding dialog - add.ShowDialog();//displays preset adding dialog - add.Dispose();//disposes generated preset adding data + PCKFile.FileData file = (PCKFile.FileData)treeViewMain.SelectedNode.Tag; + PckStudio.presetMeta add = new PckStudio.presetMeta(file); + add.ShowDialog(); + add.Dispose(); //reloads treemeta data treeMeta.Nodes.Clear(); - foreach (var type in currentPCK.meta_data.Keys) + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); foreach (var entry in file.properties) @@ -1197,21 +1030,57 @@ namespace PckStudio #endregion #region loads empty pck template + + private void InitializeSkinPack(int packID, int packVersion, string packName) + { + currentPCK = new PCKFile(3); + currentPCK.meta_data.Add("PACKID"); + currentPCK.meta_data.Add("PACKVERSION"); + var zeroFile = new PCKFile.FileData("0", 4); + zeroFile.properties.Add(("PACKID", packID.ToString())); + zeroFile.properties.Add(("PACKVERSION", packVersion.ToString())); + var loc = new PCKFile.FileData("localisation.loc", 6); + var locFile = new LOCFile(); + locFile.InitializeDefault(packName); + using (var stream = new MemoryStream()) + { + LOCFileWriter.Write(stream, locFile); + loc.SetData(stream.ToArray()); + } + currentPCK.file_entries.Add(zeroFile); + currentPCK.file_entries.Add(loc); + } + + private void InitializeTexturePack() + { + InitializeSkinPack(0, 0, "no_name"); + var texturepackInfo = new PCKFile.FileData("x16/x16Info.pck", 5); + texturepackInfo.properties.Add(("PACKID", "0")); + texturepackInfo.properties.Add(("DATAPATH", "x16Data.pck")); + currentPCK.file_entries.Add(texturepackInfo); + } + private void skinPackToolStripMenuItem_Click(object sender, EventArgs e) { - //Loads skin pack template - PCKFilePath = Path.GetFileName(appData + "\\template\\UntitledSkinPCK.pck"); - openPck(appData + "\\template\\UntitledSkinPCK.pck"); - saveLocation = ""; - saved = false; + // make skin pack template + InitializeSkinPack(new Random().Next(8000, 8000000), 0, "no_name"); + isTemplateFile = true; + loadEditor(); } + private void texturePackToolStripMenuItem_Click(object sender, EventArgs e) + { + // make texture pack template + InitializeTexturePack(); + isTemplateFile = true; + loadEditor(); + } #endregion #region open advanced metadata bulk editing window private void advancedMetaAddingToolStripMenuItem_Click(object sender, EventArgs e) { //opens dialog for bulk minefile editing - PckStudio.AdvancedOptions advanced = new PckStudio.AdvancedOptions(currentPCK); + AdvancedOptions advanced = new AdvancedOptions(currentPCK); advanced.ShowDialog(); advanced.Dispose(); saved = false; @@ -1222,7 +1091,7 @@ namespace PckStudio private void programInfoToolStripMenuItem_Click(object sender, EventArgs e) { //open program info dialog - PckStudio.programInfo info = new PckStudio.programInfo(); + programInfo info = new programInfo(); info.ShowDialog(); info.Dispose(); } @@ -1313,15 +1182,16 @@ namespace PckStudio #region deletes metadata entries through the del key private void treeMeta_KeyDown(object sender, KeyEventArgs e) { - if (e.KeyData == Keys.Delete && treeMeta.SelectedNode != null)//makes sure pressed key was del + if (e.KeyData == Keys.Delete && treeMeta.SelectedNode != null && treeViewMain.SelectedNode.Tag is PCKFile.FileData) { //removes selected treemeta entry - file.properties.Remove((Tuple)treeMeta.SelectedNode.Tag); + var file = treeViewMain.SelectedNode.Tag as PCKFile.FileData; + file.properties.Remove((ValueTuple)treeMeta.SelectedNode.Tag); treeMeta.Nodes.Remove(treeMeta.SelectedNode); //reloads treemeta data treeMeta.Nodes.Clear(); - foreach (var type in currentPCK.meta_data.Keys) + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); foreach (var entry in file.properties) @@ -1424,7 +1294,7 @@ namespace PckStudio else { //adds minefiles metadata and presets loc data for minefile - mfNew.properties.Add(new Tuple(entryName, entryValue)); + mfNew.properties.Add(new ValueTuple(entryName, entryValue)); if (entryName == "DISPLAYNAMEID") { @@ -1453,10 +1323,10 @@ namespace PckStudio try { - using (var stream = new MemoryStream(mf.data)) - { - l = LOCFileReader.Read(stream);//sets loc data - } + //using (var stream = new MemoryStream(mf.data)) + //{ + // l = LOCFileReader.Read(stream);//sets loc data + //} } catch { @@ -1464,13 +1334,13 @@ namespace PckStudio return; } - l.AddEntry(locThemeId, locTheme); + //l.AddEntry(locThemeId, locTheme); - using (var stream = new MemoryStream()) - { - LOCFileWriter.Write(stream, l); - mfLoc.SetData(stream.ToArray()); - } + //using (var stream = new MemoryStream()) + //{ + // LOCFileWriter.Write(stream, l); + // mfLoc.SetData(stream.ToArray()); + //} locNameId = ""; locName = ""; } @@ -1493,12 +1363,12 @@ namespace PckStudio return; } - l.AddEntry(locThemeId, locTheme); - using (var stream = new MemoryStream(mf.data)) - { - LOCFileWriter.Write(stream, l); - mfLoc.SetData(stream.ToArray()); - } + //l.AddEntry(locThemeId, locTheme); + //using (var stream = new MemoryStream(mf.data)) + //{ + // LOCFileWriter.Write(stream, l); + // mfLoc.SetData(stream.ToArray()); + //} locThemeId = ""; locTheme = ""; } @@ -1580,7 +1450,6 @@ namespace PckStudio string locThemeId = ""; string locTheme = ""; bool entryStart = true;//assistant for parcing through metadata file data to import - int i = 0; foreach (char entry in File.ReadAllText(contents.FileName).ToList()) { @@ -1599,7 +1468,7 @@ namespace PckStudio } else { - mfNew.properties.Add(new Tuple(entryName, entryValue)); + mfNew.properties.Add(new ValueTuple(entryName, entryValue)); if (entryName == "DISPLAYNAMEID") { @@ -1624,26 +1493,26 @@ namespace PckStudio //creates displayname id in loc file if (locNameId != "" && locName != "") { - LOCFile l; + //LOCFile l; - try - { - using (var stream = new MemoryStream(mf.data)) - { - l = LOCFileReader.Read(stream);//sets loc data - } - } - catch - { - MessageBox.Show("No localization data found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - l.AddEntry(locThemeId, locTheme); - using (var stream = new MemoryStream()) - { - LOCFileWriter.Write(stream, l); - mfLoc.SetData(stream.ToArray()); - } + //try + //{ + // using (var stream = new MemoryStream(mf.data)) + // { + // l = LOCFileReader.Read(stream); //sets loc data + // } + //} + //catch + //{ + // MessageBox.Show("No localization data found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // return; + //} + //l.AddEntry(locThemeId, locTheme); + //using (var stream = new MemoryStream()) + //{ + // LOCFileWriter.Write(stream, l); + // mfLoc.SetData(stream.ToArray()); + //} locNameId = ""; locName = ""; } @@ -1651,27 +1520,27 @@ namespace PckStudio //creates metadata id in loc file if (locThemeId != "" && locTheme != "") { - LOCFile l; + //LOCFile l; - try - { - using (var stream = new MemoryStream(mf.data)) - { - l = LOCFileReader.Read(stream);//sets loc data - } - } - catch - { - MessageBox.Show("No localization data found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - l.AddEntry(locThemeId, locTheme); + //try + //{ + // using (var stream = new MemoryStream(mf.data)) + // { + // l = LOCFileReader.Read(stream);//sets loc data + // } + //} + //catch + //{ + // MessageBox.Show("No localization data found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // return; + //} + //l.AddEntry(locThemeId, locTheme); - using (var stream = new MemoryStream()) - { - LOCFileWriter.Write(stream, l);//sets loc data - mfLoc.SetData(stream.ToArray()); - } + //using (var stream = new MemoryStream()) + //{ + // LOCFileWriter.Write(stream, l);//sets loc data + // mfLoc.SetData(stream.ToArray()); + //} locThemeId = ""; locTheme = ""; } @@ -1730,15 +1599,11 @@ namespace PckStudio System.Diagnostics.Process.Start("https://www.youtube.com/watch?v=v6EYr4zc7rI"); } - private void donateToolStripMenuItem_Click(object sender, EventArgs e) - { - } - private void fAQToolStripMenuItem1_Click(object sender, EventArgs e) { //System.Diagnostics.Process.Start(hosturl + "pckStudio#faq"); } - +// BIG TODO #region converts and ports all skins in pck to mc bedrock format // items class for use in bedrock skin conversion public class Item @@ -3074,8 +2939,8 @@ namespace PckStudio private void addPasswordToolStripMenuItem_Click(object sender, EventArgs e) { treeViewMain.SelectedNode = treeViewMain.Nodes[0]; - mf = (PCKFile.FileData)treeViewMain.Nodes[0].Tag;//Sets minefile to selected node - foreach (var entry in mf.properties) + PCKFile.FileData file = (PCKFile.FileData)treeViewMain.Nodes[0].Tag;//Sets minefile to selected node + foreach (var entry in file.properties) { if (entry.Item1 == "LOCK") { @@ -3083,13 +2948,13 @@ namespace PckStudio return; } } - AddPCKPassword add = new AddPCKPassword(mf, currentPCK);//sets metadata adding dialog - add.ShowDialog();//displays metadata adding dialog - add.Dispose();//diposes generated metadata adding dialog data + AddPCKPassword add = new AddPCKPassword(file, currentPCK); //sets metadata adding dialog + add.ShowDialog(); + add.Dispose(); //Sets up combobox for metadata entries from main metadatabase treeMeta.Nodes.Clear(); - foreach (var type in currentPCK.meta_data.Keys) + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); //loads all of selected minefiles metadata into metadata treeview @@ -3118,15 +2983,18 @@ namespace PckStudio private void buttonEditModel_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.Tag == null || !(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) return; + if (treeViewMain.SelectedNode == null || + treeViewMain.SelectedNode.Tag == null || + !(treeViewMain.SelectedNode.Tag is PCKFile.FileData)) + return; PCKFile.FileData file = treeViewMain.SelectedNode.Tag as PCKFile.FileData; if (file.type == 0 || file.type == 1 || file.type == 2) { if (buttonEdit.Text == "EDIT BOXES") - editModel(mf); + editModel(file); else if (buttonEdit.Text == "View Skin") { - using (var ms = new MemoryStream(mf.data)) + using (var ms = new MemoryStream(file.data)) { SkinPreview frm = new SkinPreview(Image.FromStream(ms)); frm.ShowDialog(this); @@ -3144,14 +3012,14 @@ namespace PckStudio diag.ShowDialog(this); diag.Dispose(); - treeViewToMineFiles(treeViewMain, currentPCK); + //treeViewToMineFiles(treeViewMain, currentPCK); - MemoryStream png = new MemoryStream(mf.data); //Gets image data from minefile data + MemoryStream png = new MemoryStream(file.data); //Gets image data from minefile data Image skinPicture = Image.FromStream(png); //Constructs image data into image pictureBoxImagePreview.Image = skinPicture; treeMeta.Nodes.Clear(); - foreach (var type in currentPCK.meta_data.Keys) + foreach (var type in currentPCK.meta_data) comboBox1.Items.Add(type); //loads all of selected minefiles metadata into metadata treeview @@ -3191,37 +3059,29 @@ namespace PckStudio LOCFile l = null; using (var stream = new MemoryStream(file.data)) { - l = LOCFileReader.Read(stream);//sets loc data + l = LOCFileReader.Read(stream); } - var locEditor = new LOCEditor(l); //Opens LOC Editor + var locEditor = new LOCEditor(l); locEditor.ShowDialog(); using (var stream = new MemoryStream()) { LOCFileWriter.Write(stream, l); - mf.SetData(stream.ToArray()); + file.SetData(stream.ToArray()); } } //Checks to see if selected minefile is a col file if (file.type == 9) // .col file { - //MessageBox.Show(".COL Editor Coming Soon!"); - - if (treeViewMain.SelectedNode.Tag is PCKFile.FileData) + COLFile colFile = new COLFile(); + using (var stream = new MemoryStream(file.data)) { - try - { - Forms.Utilities.COLEditor diag = new Forms.Utilities.COLEditor(mf); - diag.ShowDialog(this); - diag.Dispose(); - } - catch - { - MessageBox.Show("No Color data found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - //mf.data = l.Rebuild();//Rebuilds loc file with locdata in grid view after closing dialog + colFile.Open(stream); } + Forms.Utilities.COLEditor diag = new Forms.Utilities.COLEditor(colFile); + if (diag.ShowDialog(this) == DialogResult.OK && diag.data.Length > 0) + file.SetData(diag.data); + diag.Dispose(); } } @@ -3238,20 +3098,7 @@ namespace PckStudio private void FormMain_FormClosed(object sender, FormClosedEventArgs e) { - if (!saved) - { - if (MessageBox.Show("Save PCK?", "Unsaved PCK", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) - { - if (isTemplateFile) - { - save(); - } - else - { - save(); - } - } - } + checkSaveState(); if (needsUpdate) { Process UPDATE = new Process(); //sets up updater @@ -3261,6 +3108,24 @@ namespace PckStudio } } + private void checkSaveState() + { + if (!saved || isTemplateFile) + { + if (MessageBox.Show("Save PCK?", "Unsaved PCK", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) + { + if (isTemplateFile || string.IsNullOrEmpty(saveLocation)) + { + SaveTemplate(); + } + else + { + Save(saveLocation); + } + } + } + } + private void OpenPck_DragEnter(object sender, DragEventArgs e) { pckOpen.Image = Resources.pckDrop; @@ -3292,12 +3157,12 @@ namespace PckStudio private void savePCK(object sender, EventArgs e) { - save(); + checkSaveState(); } private void saveAsPCK(object sender, EventArgs e) { - save(); + SaveTemplate(); } private void timer1_Tick(object sender, EventArgs e) @@ -3341,9 +3206,9 @@ namespace PckStudio { try { - RPC.SetRPC("Sitting alone", "Program by PhoenixARC", "pcklgo", "PCK Studio", "pcklgo"); - timer1.Start(); - timer1.Enabled = true; + RPC.SetRPC("Sitting alone", "Program by PhoenixARC", "pcklgo", "PCK Studio", "pcklgo"); + timer1.Start(); + timer1.Enabled = true; } catch { } } diff --git a/MinecraftUSkinEditor/Forms/Form1.resx b/MinecraftUSkinEditor/Forms/Form1.resx index 18559649..e1918a19 100644 --- a/MinecraftUSkinEditor/Forms/Form1.resx +++ b/MinecraftUSkinEditor/Forms/Form1.resx @@ -179,18 +179,6 @@ Animated Texture - - 175, 22 - - - Normal Audio.pck - - - 175, 22 - - - Vita/PS4 Audio.pck - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -411,6 +399,24 @@ False + + 151, 22 + + + Skin Pack + + + 151, 22 + + + Texture Pack + + + 151, 22 + + + Mash-Up Pack + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -29736,6 +29742,9 @@ buttonEdit + + False + buttonEdit @@ -29752,7 +29761,7 @@ True - 337, 3 + 691, 178 69, 19 @@ -29785,7 +29794,7 @@ 195, 194 - Zoom + StretchImage 18 @@ -32713,18 +32722,6 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - normalAudiopckToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - vitaPS4AudiopckToolStripMenuItem - - - System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - cloneFileToolStripMenuItem @@ -32803,6 +32800,24 @@ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + skinPackToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + texturePackToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + mashUpPackToolStripMenuItem + + + System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + openToolStripMenuItem diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/AdvancedOptions.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/AdvancedOptions.cs index f88d3d9b..ba30da59 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/AdvancedOptions.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/AdvancedOptions.cs @@ -30,14 +30,9 @@ namespace PckStudio } - private void addPresetToolStripMenuItem1_Click_1(object sender, EventArgs e) - { - - } - private void addEntryToolStripMenuItem_Click(object sender, EventArgs e) { - PckStudio.addMetaAdvanced add = new PckStudio.addMetaAdvanced(treeMeta); + addMetaAdvanced add = new addMetaAdvanced(treeMeta); add.ShowDialog(); add.Dispose(); } @@ -57,7 +52,7 @@ namespace PckStudio { foreach (PCKFile.FileData mf in currentPCK.file_entries) { - mf.properties.Add(new Tuple(node.Text, node.Tag.ToString())); + mf.properties.Add(new ValueTuple(node.Text, node.Tag.ToString())); } } MessageBox.Show("Data Added to All Entries"); @@ -75,7 +70,7 @@ namespace PckStudio { if (Image.FromStream(png).Size.Height == Image.FromStream(png).Size.Width) { - mf.properties.Add(new Tuple(treeMeta.Nodes[i].Text, treeMeta.Nodes[i].Tag.ToString())); + mf.properties.Add(new ValueTuple(treeMeta.Nodes[i].Text, treeMeta.Nodes[i].Tag.ToString())); } } } @@ -98,7 +93,7 @@ namespace PckStudio { if (Image.FromStream(png).Size.Height == Image.FromStream(png).Size.Width / 2) { - mf.properties.Add(new Tuple(treeMeta.Nodes[i].Text, treeMeta.Nodes[i].Tag.ToString() )); + mf.properties.Add(new ValueTuple(treeMeta.Nodes[i].Text, treeMeta.Nodes[i].Tag.ToString() )); } } } @@ -118,7 +113,7 @@ namespace PckStudio { if (Path.GetExtension(mf.name) == ".png") { - mf.properties.Add(new Tuple(treeMeta.Nodes[i].Text, treeMeta.Nodes[i].Tag.ToString() )); + mf.properties.Add(new ValueTuple(treeMeta.Nodes[i].Text, treeMeta.Nodes[i].Tag.ToString() )); } } i += 1; diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/EntryEditor.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/EntryEditor.cs index 4dfd134d..4824e9c8 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/EntryEditor.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/EntryEditor.cs @@ -70,7 +70,7 @@ namespace PckStudio private void addEntryToolStripMenuItem_Click(object sender, EventArgs e) { - file.properties.Add(new Tuple("Replace me", "Or it won't save")); + file.properties.Add(new ValueTuple("Replace me", "Or it won't save")); TreeNode t = new TreeNode("temp name"); treeView1.Nodes.Add(t); renameProperly(); diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addMeta.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addMeta.cs index 162e9f18..edb48930 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addMeta.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addMeta.cs @@ -24,7 +24,8 @@ namespace PckStudio private void button1_Click(object sender, EventArgs e) { - file.properties.Add(new Tuple(textBox1.Text, textBox2.Text )); + file.properties.Add(new ValueTuple(textBox1.Text, textBox2.Text )); + DialogResult = DialogResult.OK; Close(); } } diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.Designer.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.Designer.cs index 48c2bf56..51f2369b 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.Designer.cs @@ -51,20 +51,19 @@ this.radioLOCAL = new System.Windows.Forms.RadioButton(); this.labelSelectTexture = new System.Windows.Forms.Label(); this.radioSERVER = new System.Windows.Forms.RadioButton(); - this.pictureBoxWithInterpolationMode1 = new PckStudio.PictureBoxWithInterpolationMode(); - this.pictureBoxTexture = new PckStudio.PictureBoxWithInterpolationMode(); + this.capePictureBox = new PckStudio.PictureBoxWithInterpolationMode(); + this.skinPictureBoxTexture = new PckStudio.PictureBoxWithInterpolationMode(); this.contextMenuSkin.SuspendLayout(); this.contextMenuCape.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.displayBox)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxTexture)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.capePictureBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.skinPictureBoxTexture)).BeginInit(); this.SuspendLayout(); // // textTheme // resources.ApplyResources(this.textTheme, "textTheme"); this.textTheme.Name = "textTheme"; - this.textTheme.TextChanged += new System.EventHandler(this.textBox1_TextChanged); // // contextMenuSkin // @@ -98,7 +97,7 @@ this.buttonDone.ForeColor = System.Drawing.Color.White; this.buttonDone.Name = "buttonDone"; this.buttonDone.UseVisualStyleBackColor = true; - this.buttonDone.Click += new System.EventHandler(this.button1_Click_1); + this.buttonDone.Click += new System.EventHandler(this.CreateButton_Click); // // buttonModelGen // @@ -106,7 +105,7 @@ this.buttonModelGen.ForeColor = System.Drawing.Color.White; this.buttonModelGen.Name = "buttonModelGen"; this.buttonModelGen.UseVisualStyleBackColor = true; - this.buttonModelGen.Click += new System.EventHandler(this.button2_Click_1); + this.buttonModelGen.Click += new System.EventHandler(this.CreateCustomModel_Click); // // comboBoxSkinType // @@ -152,7 +151,6 @@ resources.ApplyResources(this.textThemeName, "textThemeName"); this.textThemeName.Name = "textThemeName"; this.textThemeName.TextChanged += new System.EventHandler(this.textThemeName_TextChanged); - this.textThemeName.VisibleChanged += new System.EventHandler(this.textThemeName_VisibleChanged); // // label2 // @@ -165,8 +163,6 @@ this.textSkinName.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; resources.ApplyResources(this.textSkinName, "textSkinName"); this.textSkinName.Name = "textSkinName"; - this.textSkinName.TextChanged += new System.EventHandler(this.textSkinName_TextChanged); - this.textSkinName.VisibleChanged += new System.EventHandler(this.textSkinName_VisibleChanged); // // label1 // @@ -204,7 +200,7 @@ resources.ApplyResources(this.labelSelectTexture, "labelSelectTexture"); this.labelSelectTexture.ForeColor = System.Drawing.Color.White; this.labelSelectTexture.Name = "labelSelectTexture"; - this.labelSelectTexture.Click += new System.EventHandler(this.label4_Click); + this.labelSelectTexture.Click += new System.EventHandler(this.pictureBox1_Click); // // radioSERVER // @@ -214,27 +210,26 @@ this.radioSERVER.UseVisualStyleBackColor = true; this.radioSERVER.CheckedChanged += new System.EventHandler(this.radioSERVER_CheckedChanged); // - // pictureBoxWithInterpolationMode1 + // capePictureBox // - resources.ApplyResources(this.pictureBoxWithInterpolationMode1, "pictureBoxWithInterpolationMode1"); - this.pictureBoxWithInterpolationMode1.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; - this.pictureBoxWithInterpolationMode1.Name = "pictureBoxWithInterpolationMode1"; - this.pictureBoxWithInterpolationMode1.TabStop = false; + resources.ApplyResources(this.capePictureBox, "capePictureBox"); + this.capePictureBox.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; + this.capePictureBox.Name = "capePictureBox"; + this.capePictureBox.TabStop = false; // - // pictureBoxTexture + // skinPictureBoxTexture // - resources.ApplyResources(this.pictureBoxTexture, "pictureBoxTexture"); - this.pictureBoxTexture.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pictureBoxTexture.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; - this.pictureBoxTexture.Name = "pictureBoxTexture"; - this.pictureBoxTexture.TabStop = false; - this.pictureBoxTexture.Click += new System.EventHandler(this.pictureBox1_Click); + resources.ApplyResources(this.skinPictureBoxTexture, "skinPictureBoxTexture"); + this.skinPictureBoxTexture.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.skinPictureBoxTexture.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default; + this.skinPictureBoxTexture.Name = "skinPictureBoxTexture"; + this.skinPictureBoxTexture.TabStop = false; + this.skinPictureBoxTexture.Click += new System.EventHandler(this.pictureBox1_Click); // // addnewskin // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BorderStyle = MetroFramework.Forms.MetroFormBorderStyle.FixedSingle; this.Controls.Add(this.radioSERVER); this.Controls.Add(this.labelSelectTexture); this.Controls.Add(this.radioLOCAL); @@ -244,8 +239,8 @@ this.Controls.Add(this.comboBoxSkinType); this.Controls.Add(this.buttonCape); this.Controls.Add(this.buttonSkin); - this.Controls.Add(this.pictureBoxWithInterpolationMode1); - this.Controls.Add(this.pictureBoxTexture); + this.Controls.Add(this.capePictureBox); + this.Controls.Add(this.skinPictureBoxTexture); this.Controls.Add(this.displayBox); this.Controls.Add(this.label3); this.Controls.Add(this.textThemeName); @@ -263,8 +258,8 @@ this.contextMenuSkin.ResumeLayout(false); this.contextMenuCape.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.displayBox)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxTexture)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.capePictureBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.skinPictureBoxTexture)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -283,8 +278,8 @@ private System.Windows.Forms.ComboBox comboBoxSkinType; private System.Windows.Forms.Button buttonCape; private System.Windows.Forms.Button buttonSkin; - private PictureBoxWithInterpolationMode pictureBoxWithInterpolationMode1; - private PictureBoxWithInterpolationMode pictureBoxTexture; + private PictureBoxWithInterpolationMode capePictureBox; + private PictureBoxWithInterpolationMode skinPictureBoxTexture; private System.Windows.Forms.PictureBox displayBox; private System.Windows.Forms.Label label3; private System.Windows.Forms.TextBox textThemeName; diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.cs index 009e99b4..04db1a49 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.cs @@ -1,83 +1,53 @@ using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; using System.Drawing; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; using System.Drawing.Drawing2D; -using MySql.Data.MySqlClient; -using System.Net; -using PckStudio; using PckStudio.Classes.FileTypes; +using System.Drawing.Imaging; namespace PckStudio { public partial class addnewskin : MetroFramework.Forms.MetroForm { - PCKFile currentPCK; - DataTable tbl; LOCFile currentLoc; - PCKFile.FileData mf = null; - PCKFile.FileData mfc = null; - TreeView treeView1; - string skinId = ""; - TreeNode skin = new TreeNode(); - TreeNode cape = new TreeNode(); - TreeNode skinName = new TreeNode(); - TreeNode displayNameId = new TreeNode(); - TreeNode themeName = new TreeNode(); - TreeNode themeNameId = new TreeNode(); - TreeNode anim = new TreeNode(); - TreeNode free = new TreeNode(); - TreeNode theme = new TreeNode(); - TreeNode capePath = new TreeNode(); - string skinType = ""; - string ofd; - bool useCape = false; - string capeID; - string localID; - string serverID; - string skinid; - List generatedModel = new List(); + public PCKFile.FileData skin = new PCKFile.FileData("skin", 0); + public PCKFile.FileData cape = new PCKFile.FileData("cape", 1); + eSkinType skinType; + public bool useCape = false; + string localID = "0"; + PCKProperties generatedModel = new PCKProperties(); - public addnewskin(PCKFile currentPCKIn, TreeView treeView1In, string tempIDIn, LOCFile loc) + enum eSkinType : int + { + Invalid = -1, + _64x64, + _64x32, + _64x64HD, + _64x32HD, + Custom, + } + + public addnewskin(LOCFile loc) { InitializeComponent(); - - mf = new PCKFile.FileData("", 0); - mfc = new PCKFile.FileData("", 0); currentLoc = loc; - tbl = new DataTable(); - tbl.Columns.Add(new DataColumn("Language") { ReadOnly = true }); - tbl.Columns.Add("Display Name"); - - currentPCK = currentPCKIn; - treeView1 = treeView1In; - - localID = tempIDIn; - - textSkinID.Text = localID; FormBorderStyle = FormBorderStyle.None; buttonDone.Enabled = false; } - private void checkImage() + private void checkImage(Image img) { //Checks image dimensions and sets things accordingly - var img = Image.FromFile(ofd); if (img.Height == 64) //If skins is 64x64 { MessageBox.Show("64x64 Skin Detected"); - pictureBoxTexture.Width = pictureBoxTexture.Height; - if (skinType != "64x64" && skinType != "64x64HD") + skinPictureBoxTexture.Width = skinPictureBoxTexture.Height; + if (skinType != eSkinType._64x64 && skinType != eSkinType._64x64HD) { - buttonSkin.Location = new Point(buttonSkin.Location.X - pictureBoxTexture.Width, buttonSkin.Location.Y); + buttonSkin.Location = new Point(buttonSkin.Location.X - skinPictureBoxTexture.Width, buttonSkin.Location.Y); } comboBoxSkinType.Text = "Steve (64x64)"; comboBoxSkinType.Enabled = true; @@ -85,31 +55,31 @@ namespace PckStudio { comboBoxSkinType.Items.RemoveAt(0); } - skinType = "64x64"; + skinType = eSkinType._64x64; } else if (img.Height == 32)//If skins is 64x32 { MessageBox.Show("64x32 Skin Detected"); - pictureBoxTexture.Width = pictureBoxTexture.Height * 2; - if (skinType == "64x64") + skinPictureBoxTexture.Width = skinPictureBoxTexture.Height * 2; + if (skinType == eSkinType._64x64) { - buttonSkin.Location = new Point(buttonSkin.Location.X + pictureBoxTexture.Width / 2, buttonSkin.Location.Y); + buttonSkin.Location = new Point(buttonSkin.Location.X + skinPictureBoxTexture.Width / 2, buttonSkin.Location.Y); } - if (skinType == "64x64HD") + if (skinType == eSkinType._64x64HD) { - buttonSkin.Location = new Point(buttonSkin.Location.X + pictureBoxTexture.Width / 2, buttonSkin.Location.Y); + buttonSkin.Location = new Point(buttonSkin.Location.X + skinPictureBoxTexture.Width / 2, buttonSkin.Location.Y); } comboBoxSkinType.Text = "Default (64x32)"; comboBoxSkinType.Enabled = false; - skinType = "64x32"; + skinType = eSkinType._64x32; } else if (img.Width == img.Height / 1)//If skins is 64x64 HD { MessageBox.Show("64x64 HD Skin Detected"); - pictureBoxTexture.Width = pictureBoxTexture.Height; - if (skinType != "64x64" && skinType != "64x64HD") + skinPictureBoxTexture.Width = skinPictureBoxTexture.Height; + if (skinType != eSkinType._64x64 && skinType != eSkinType._64x64HD) { - buttonSkin.Location = new Point(buttonSkin.Location.X - pictureBoxTexture.Width, buttonSkin.Location.Y); + buttonSkin.Location = new Point(buttonSkin.Location.X - skinPictureBoxTexture.Width, buttonSkin.Location.Y); } comboBoxSkinType.Text = "Steve (64x64)"; comboBoxSkinType.Enabled = true; @@ -117,118 +87,43 @@ namespace PckStudio { comboBoxSkinType.Items.RemoveAt(0); } - skinType = "64x64"; + skinType = eSkinType._64x64HD; } else if (img.Width == img.Height / 2)//If skins is 64x32 HD { MessageBox.Show("64x32 HD Skin Detected"); - pictureBoxTexture.Width = pictureBoxTexture.Height * 2; - if (skinType == "64x64") + skinPictureBoxTexture.Width = skinPictureBoxTexture.Height * 2; + if (skinType == eSkinType._64x64) { - buttonSkin.Location = new Point(buttonSkin.Location.X + pictureBoxTexture.Width / 2, buttonSkin.Location.Y); + buttonSkin.Location = new Point(buttonSkin.Location.X + skinPictureBoxTexture.Width / 2, buttonSkin.Location.Y); } - if (skinType == "64x64HD") + if (skinType == eSkinType._64x64HD) { - buttonSkin.Location = new Point(buttonSkin.Location.X + pictureBoxTexture.Width / 2, buttonSkin.Location.Y); + buttonSkin.Location = new Point(buttonSkin.Location.X + skinPictureBoxTexture.Width / 2, buttonSkin.Location.Y); } comboBoxSkinType.Text = "Default (64x32)"; comboBoxSkinType.Enabled = false; - skinType = "64x32"; + skinType = eSkinType._64x32HD; } else //If dimensions don't fit any skin type //Invalid { MessageBox.Show("Not a Valid Skin File"); - skinType = "unusable"; + skinType = eSkinType.Invalid; return; } - pictureBoxTexture.SizeMode = PictureBoxSizeMode.StretchImage; - pictureBoxTexture.InterpolationMode = InterpolationMode.NearestNeighbor; - pictureBoxTexture.Image = Image.FromFile(ofd); + skinPictureBoxTexture.SizeMode = PictureBoxSizeMode.StretchImage; + skinPictureBoxTexture.InterpolationMode = InterpolationMode.NearestNeighbor; + skinPictureBoxTexture.Image = img; buttonDone.Enabled = true; labelSelectTexture.Visible = false; - mf.SetData(File.ReadAllBytes(ofd)); - } - - public class displayId - { - public string id; - public string defaultName; - } - - private void textSkinName_TextChanged(object sender, EventArgs e) - { - skinName.Text = "DISPLAYNAME"; - skinName.Tag = textSkinName.Text; - } - - private void textSkinID_TextChanged(object sender, EventArgs e) - { - skinId = textSkinID.Text; - - displayNameId.Text = "DISPLAYNAMEID"; - displayNameId.Tag = "IDS_dlcskin" + textSkinID.Text + "_DISPLAYNAME"; - - themeName.Text = "THEMENAME"; - themeName.Tag = "dlcskin" + textSkinID.Text; - } - - private void radioSteveModel_CheckedChanged(object sender, EventArgs e) - { - MessageBox.Show("Skin Model Set to Steve Model"); - } - - private void radioAlexModel_CheckedChanged(object sender, EventArgs e) - { - MessageBox.Show("Skin Model Set to Alex Model"); - - } - - private void button2_Click(object sender, EventArgs e) - { - MessageBox.Show("Must be an 8 digit Number"); - } - - private void button3_Click(object sender, EventArgs e) - { - MessageBox.Show("This is the Skins Name You'll See In-Game"); + //skin.SetData(); } private void addnewskin_Load(object sender, EventArgs e) { - try - { - if (File.Exists(Application.StartupPath + "\\temp.png")) - { - File.Delete(Application.StartupPath + "\\temp.png"); - } - }catch (Exception) - { - - } - if (skinType == "unusable") - { - this.Close(); - } - else if (skinType == "64x64") - { - comboBoxSkinType.Text = "Steve (64x64)"; - } - else if (skinType == "64x64HD") - { - comboBoxSkinType.Text = "Steve (64x64)"; - } - else if (skinType == "64x32") - { - comboBoxSkinType.Text = "Steve (64x32)"; - } - else if (skinType == "64x32HD") - { - comboBoxSkinType.Text = "Steve (64x32)"; - } - Bitmap bmp = new Bitmap(displayBox.Width, displayBox.Height); using (Graphics g = Graphics.FromImage(bmp)) { @@ -254,29 +149,22 @@ namespace PckStudio displayBox.Image = bmp; } - private void textBox1_TextChanged(object sender, EventArgs e) - { - themeName.Text = "THEMENAME"; - themeName.Tag = textTheme.Text; - } - private void buttonSkin_Click(object sender, EventArgs e) { - contextMenuSkin.Show(System.Windows.Forms.Form.ActiveForm.Location.X + buttonSkin.Location.X + 2, System.Windows.Forms.Form.ActiveForm.Location.Y + buttonSkin.Location.Y + 23); + contextMenuSkin.Show(ActiveForm.Location.X + buttonSkin.Location.X + 2, ActiveForm.Location.Y + buttonSkin.Location.Y + 23); } private void buttonCape_Click(object sender, EventArgs e) { - contextMenuCape.Show(System.Windows.Forms.Form.ActiveForm.Location.X + buttonCape.Location.X + 2, System.Windows.Forms.Form.ActiveForm.Location.Y + buttonCape.Location.Y + 23); + contextMenuCape.Show(ActiveForm.Location.X + buttonCape.Location.X + 2, ActiveForm.Location.Y + buttonCape.Location.Y + 23); } private void replaceToolStripMenuItem_Click(object sender, EventArgs e) { - OpenFileDialog ofD = new OpenFileDialog(); - if (ofD.ShowDialog() == DialogResult.OK) + OpenFileDialog ofd = new OpenFileDialog(); + if (ofd.ShowDialog() == DialogResult.OK) { - ofd = ofD.FileName; - checkImage(); + checkImage(Image.FromFile(ofd.FileName)); } } @@ -293,11 +181,11 @@ namespace PckStudio if (img.Width == img.Height * 2) { useCape = true; - pictureBoxWithInterpolationMode1.SizeMode = PictureBoxSizeMode.StretchImage; - pictureBoxWithInterpolationMode1.InterpolationMode = InterpolationMode.NearestNeighbor; - pictureBoxWithInterpolationMode1.Image = Image.FromFile(ofd1.FileName); + capePictureBox.SizeMode = PictureBoxSizeMode.StretchImage; + capePictureBox.InterpolationMode = InterpolationMode.NearestNeighbor; + capePictureBox.Image = Image.FromFile(ofd1.FileName); - mfc.SetData(File.ReadAllBytes(ofd1.FileName)); + cape.SetData(File.ReadAllBytes(ofd1.FileName)); contextMenuCape.Items[0].Text = "Replace"; } @@ -309,59 +197,25 @@ namespace PckStudio } } - private void button1_Click_1(object sender, EventArgs e) + private void CreateButton_Click(object sender, EventArgs e) { try { if (textSkinID.Text.Length / 8 == 1) { bool mashupStructure = false; - int skinsFolder = 0; - - foreach (TreeNode item in treeView1.Nodes) - { - if (item.Text == "Skins") - { - mashupStructure = true; - skinsFolder = item.Index; - } - } - - if (useCape == true) + if (useCape) { try { - capePath.Text = "CAPEPATH"; - capePath.Tag = "dlccape" + textSkinID.Text + ".png"; - - mf.properties.Add(new Tuple(capePath.Text, capePath.Tag.ToString())); - - currentPCK.file_entries.Add(mfc); - - if (mashupStructure == true) + cape.properties.Add(new ValueTuple("CAPEPATH", $"dlccape{textSkinID.Text}.png")); + if (mashupStructure) { - mfc.name = "Skins/" + "dlccape" + textSkinID.Text + ".png"; + cape.name = "Skins/" + "dlccape" + textSkinID.Text + ".png"; } else { - mfc.name = "dlccape" + textSkinID.Text + ".png"; - } - - //mfc.type = 1; - - cape.Text = "dlccape" + textSkinID.Text + ".png"; - cape.Tag = mfc; - - cape.ImageIndex = 2; - cape.SelectedImageIndex = 2; - - if (mashupStructure == true) - { - treeView1.Nodes[skinsFolder].Nodes.Add(cape); - } - else - { - treeView1.Nodes.Add(cape); + cape.name = "dlccape" + textSkinID.Text + ".png"; } } catch (Exception) @@ -369,102 +223,55 @@ namespace PckStudio MessageBox.Show("Cape Could Not be Added"); } } - - currentPCK.file_entries.Add(mf); - free.Text = "FREE"; - free.Tag = "1"; - themeName.Text = "THEMENAME"; - themeName.Tag = textThemeName.Text; - displayNameId.Text = "DISPLAYNAMEID"; - displayNameId.Tag = "IDS_dlcskin" + textSkinID.Text + "_DISPLAYNAME"; - skinName.Text = "DISPLAYNAME"; - skinName.Tag = textSkinName.Text; - anim.Text = "ANIM"; - - mf.properties.Add(new Tuple(skinName.Text, textSkinName.Text)); - - mf.properties.Add(new Tuple(displayNameId.Text, "IDS_dlcskin" + textSkinID.Text + "_DISPLAYNAME" )); - - - if (comboBoxSkinType.Text == "Default (64x32)") + currentLoc.AddLocKey($"IDS_dlcskin{textSkinID.Text}_DISPLAYNAME", textSkinName.Text); + skin.properties.Add(new ValueTuple("DISPLAYNAME", textSkinName.Text)); + skin.properties.Add(new ValueTuple("DISPLAYNAMEID", $"IDS_dlcskin{textSkinID.Text}_DISPLAYNAME")); + using (var stream = new MemoryStream()) { - + skinPictureBoxTexture.Image.Save(stream, ImageFormat.Png); + skin.SetData(stream.ToArray()); } - else if (comboBoxSkinType.Text == "Alex (64x64)" && skinType != "64x32") - { - anim.Tag = "0x80000"; - object[] ANIM = { anim.Text, anim.Tag }; - mf.properties.Add(new Tuple("ANIM", "0x80000")); - } - else if (comboBoxSkinType.Text == "Steve (64x64)" && skinType != "64x32") + if (comboBoxSkinType.Text == "Alex (64x64)" && skinType != eSkinType._64x32) { - mf.properties.Add(new Tuple("ANIM", "0x40000")); + skin.properties.Add(new ValueTuple("ANIM", "0x80000")); + } + else if (comboBoxSkinType.Text == "Steve (64x64)" && skinType != eSkinType._64x32) + { + skin.properties.Add(new ValueTuple("ANIM", "0x40000")); } else if (comboBoxSkinType.Text == "Custom") { - //mf.entries.Add(new object[2] { (object)"BOX", new ListViewItem() { Tag = ((object)(listViewItem.Tag.ToString() + " " + listViewItem.SubItems[1].Text + " " + listViewItem.SubItems[2].Text + " " + listViewItem.SubItems[3].Text + " " + listViewItem.SubItems[4].Text + " " + listViewItem.SubItems[5].Text + " " + listViewItem.SubItems[6].Text + " " + listViewItem.SubItems[7].Text + " " + listViewItem.SubItems[8].Text)) }.Tag }); - //foreach (object[] item in generatedModel) - //{ - // mf.properties.Add((object[])item); - //} - mf.properties.Add(new Tuple("ANIM", "0x7ff5fc10")); + //skin.properties.Add(new ValueTuple( "BOX", listViewItem.Tag.ToString() + " " + listViewItem.SubItems[1].Text + " " + listViewItem.SubItems[2].Text + " " + listViewItem.SubItems[3].Text + " " + listViewItem.SubItems[4].Text + " " + listViewItem.SubItems[5].Text + " " + listViewItem.SubItems[6].Text + " " + listViewItem.SubItems[7].Text + " " + listViewItem.SubItems[8].Text)) }.Tag )); + foreach (var item in generatedModel) + { + skin.properties.Add(item); + } + skin.properties.Add(new ValueTuple("ANIM", "0x7ff5fc10")); } if (generatedModel != null) { generatedModel.Clear(); } - if (themeName.Tag.ToString() != "") + if (!string.IsNullOrEmpty(textThemeName.Text)) { - mf.properties.Add(new Tuple(themeName.Text, themeName.Tag.ToString() )); + skin.properties.Add(new ValueTuple("THEMENAME", textThemeName.Text)); + currentLoc.AddLocKey($"IDS_dlcskin{textSkinID.Text}_THEMENAME", textThemeName.Text); } - mf.properties.Add(new Tuple("GAME_FLAGS", "0x18")); - mf.properties.Add(new Tuple("FREE", "1")); + skin.properties.Add(new ValueTuple("GAME_FLAGS", "0x18")); + skin.properties.Add(new ValueTuple("FREE", "1")); - if (mashupStructure == true) + if (mashupStructure) { - mf.name = "Skins/" + "dlcskin" + textSkinID.Text + ".png"; + skin.name = "Skins/" + "dlcskin" + textSkinID.Text + ".png"; } else { - mf.name = "dlcskin" + textSkinID.Text + ".png"; - } - //mf.type = 0; - - skin.Text = "dlcskin" + textSkinID.Text + ".png"; - skin.Tag = mf; - - skin.ImageIndex = 2; - skin.SelectedImageIndex = 2; - - if (mashupStructure == true) - { - treeView1.Nodes[skinsFolder].Nodes.Add(skin); - } - else - { - treeView1.Nodes.Add(skin); + skin.name = "dlcskin" + textSkinID.Text + ".png"; } - displayId d = new displayId(); - d.id = "IDS_dlcskin" + textSkinID.Text + "_DISPLAYNAME"; - d.defaultName = textSkinName.Text; - - //currentLoc.ids.names.Add(d.id); - - //foreach (LOC.Language l in currentLoc.langs) - // l.names.Add(d.defaultName); - - displayId b = new displayId(); - b.id = "IDS_dlcskin" + textSkinID.Text + "_THEMENAME"; - b.defaultName = textThemeName.Text; - - //currentLoc.ids.names.Add(b.id); - - //foreach (LOC.Language l in currentLoc.langs) - // l.names.Add(b.defaultName); Close(); } else @@ -474,8 +281,8 @@ namespace PckStudio } catch (Exception ex) { + //MessageBox.Show("The Skin ID Must be a Unique 8 Digit Number Thats Not Already in Use"); MessageBox.Show(ex.ToString()); - MessageBox.Show("The Skin ID Must be a Unique 8 Digit Number Thats Not Already in Use"); } } @@ -497,25 +304,12 @@ namespace PckStudio { valid = false; } - - if (valid == false) - { - textSkinID.ForeColor = Color.Red; - } - else if (valid == true) + if (valid) { textSkinID.ForeColor = Color.Green; + return; } - } - - private void textSkinName_VisibleChanged(object sender, EventArgs e) - { - - } - - private void textThemeName_VisibleChanged(object sender, EventArgs e) - { - + textSkinID.ForeColor = Color.Red; } private void textThemeName_TextChanged(object sender, EventArgs e) @@ -523,42 +317,38 @@ namespace PckStudio } - private void button2_Click_1(object sender, EventArgs e) + private void CreateCustomModel_Click(object sender, EventArgs e) { //Prompt for skin model generator if (MessageBox.Show("Create your own custom skin model?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1) != DialogResult.Yes) return; - PictureBox preview = new PictureBox();//Creates new picture for generated model preview + PictureBox preview = new PictureBox(); //Creates new picture for generated model preview generateModel generate = new generateModel(generatedModel, preview); - if (generate.ShowDialog() == DialogResult.OK)//Opens Model Generator Dialog + if (generate.ShowDialog() == DialogResult.OK) //Opens Model Generator Dialog { - comboBoxSkinType.Items.Add((object)"Custom");//Adds skin preset to combobox - comboBoxSkinType.Text = "Custom";//Sets combo to custom preset - displayBox.Image = preview.Image;//Sets displayBox to created model preview + comboBoxSkinType.Items.Add("Custom"); //Adds skin preset to combobox + comboBoxSkinType.Text = "Custom"; //Sets combo to custom preset + displayBox.Image = preview.Image; //Sets displayBox to created model preview try { using (FileStream stream = new FileStream(Application.StartupPath + "\\temp.png", FileMode.Open, FileAccess.Read)) { - pictureBoxTexture.SizeMode = PictureBoxSizeMode.StretchImage; - pictureBoxTexture.InterpolationMode = InterpolationMode.NearestNeighbor; - pictureBoxTexture.Image = Image.FromStream(stream); + skinPictureBoxTexture.SizeMode = PictureBoxSizeMode.StretchImage; + skinPictureBoxTexture.InterpolationMode = InterpolationMode.NearestNeighbor; + skinPictureBoxTexture.Image = Image.FromStream(stream); stream.Close(); stream.Dispose(); } - ofd = Application.StartupPath + "\\temp.png"; - //Sets texture box - pictureBoxTexture.Width = pictureBoxTexture.Height; + skinPictureBoxTexture.Width = skinPictureBoxTexture.Height; buttonDone.Enabled = true; labelSelectTexture.Visible = false; - if (skinType != "64x64" && skinType != "64x64HD") + if (skinType != eSkinType._64x64 && skinType != eSkinType._64x64HD) { - buttonSkin.Location = new Point(buttonSkin.Location.X - pictureBoxTexture.Width, buttonSkin.Location.Y); - skinType = "64x64"; + buttonSkin.Location = new Point(buttonSkin.Location.X - skinPictureBoxTexture.Width, buttonSkin.Location.Y); + skinType = eSkinType._64x64; } - - mf.SetData(File.ReadAllBytes(ofd)); } catch (Exception ex) { @@ -567,25 +357,20 @@ namespace PckStudio } } - private void button3_Click_1(object sender, EventArgs e) - { - MessageBox.Show("Feature not Available in Beta"); - } - private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radioAUTO.Checked == true) { try { - Random random = new Random(); - int num = random.Next(10000000, 99999999); - textSkinID.Text = num.ToString(); - textSkinID.Enabled = false; - + Random random = new Random(); + int num = random.Next(10000000, 99999999); + textSkinID.Text = num.ToString(); + textSkinID.Enabled = false; } - catch + catch(Exception ex) { + Console.WriteLine(ex.Message); } } } @@ -607,22 +392,7 @@ namespace PckStudio ofdd.Title = "Select a PNG File"; if (ofdd.ShowDialog() == DialogResult.OK) { - ofd = ofdd.FileName; - checkImage(); - } - } - } - - private void label4_Click(object sender, EventArgs e) - { - using (var ofdd = new OpenFileDialog()) - { - ofdd.Filter = "PNG Files | *.png"; - ofdd.Title = "Select a PNG File"; - if (ofdd.ShowDialog() == DialogResult.OK) - { - ofd = ofdd.FileName; - checkImage(); + checkImage(Image.FromFile(ofdd.FileName)); } } } @@ -630,7 +400,7 @@ namespace PckStudio private void radioSERVER_CheckedChanged(object sender, EventArgs e) { - if (radioSERVER.Checked == true) + if (radioSERVER.Checked) { } } diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.resx b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.resx index 877b32ec..2923f159 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.resx +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/addnewskin.resx @@ -137,19 +137,10 @@ 17, 17 - - 116, 26 - - - contextMenuSkin - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wgAADsIBFShKgAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAC/SURBVDhPlVHB + vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAC/SURBVDhPlVHB DQMhDEOIfwfoOuzFoPxhAd5c6/SMAgq0tRQFmdgXfA5IKUkBMcbHPxyJCxVCkK7rm+EwaK1dQO9dClzO WfpOTM7hy1oMGNvY4pucxNY2p6cAWzFw2oZuMmiJweGeHM634UdLg50YwD05vQ2fYoaoDTEMrJyIfw3R 4qYQWUZgg6OwlDJyMH8LcwF2T8FZ5kYQb4Lde/9Et8S6Dy1z0LUGi7VpWGvl3Lw2V98ZrtwIUYktwwPn @@ -162,22 +153,22 @@ Replace + + 116, 26 + + + contextMenuSkin + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 172, 17 - - 127, 26 - - - contextMenuCape - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wAAADsABataJCQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAA3SURBVDhPY/j/ + vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAAA3SURBVDhPY/j/ /z9FGKsgGIsCKWSMTQ0QYxUE45FmALpiYvFwMgAbxqIYG8YqCMajBhCJ/zMAAPGwpV/Xje8RAAAAAElF TkSuQmCC @@ -188,6 +179,15 @@ Add Cape + + 127, 26 + + + contextMenuCape + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + False @@ -628,52 +628,52 @@ 2 - + None - + 387, 152 - + 208, 88 - + 109 - - pictureBoxWithInterpolationMode1 + + capePictureBox - + PckStudio.PictureBoxWithInterpolationMode, PCK Studio, Version=5.3.0.0, Culture=neutral, PublicKeyToken=null - + $this - + 11 - + None - + 217, 152 - + 164, 82 - + 108 - - pictureBoxTexture + + skinPictureBoxTexture - + PckStudio.PictureBoxWithInterpolationMode, PCK Studio, Version=5.3.0.0, Culture=neutral, PublicKeyToken=null - + $this - + 12 diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.Designer.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.Designer.cs index dd3018b2..03ec8d2a 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.Designer.cs @@ -106,9 +106,9 @@ this.labelTheme = new System.Windows.Forms.Label(); this.listViewBGs = new System.Windows.Forms.ListView(); this.tableLayoutPanelMain = new System.Windows.Forms.TableLayoutPanel(); + this.OpenJSONButton = new System.Windows.Forms.Button(); this.displayBox = new System.Windows.Forms.PictureBox(); this.texturePreview = new System.Windows.Forms.PictureBox(); - this.OpenJSONButton = new System.Windows.Forms.Button(); this.groupBox1.SuspendLayout(); this.tabBody.SuspendLayout(); this.tabPage1.SuspendLayout(); @@ -766,6 +766,14 @@ this.tableLayoutPanelMain.Controls.Add(this.buttonDone, 8, 19); this.tableLayoutPanelMain.Name = "tableLayoutPanelMain"; // + // OpenJSONButton + // + resources.ApplyResources(this.OpenJSONButton, "OpenJSONButton"); + this.OpenJSONButton.ForeColor = System.Drawing.Color.White; + this.OpenJSONButton.Name = "OpenJSONButton"; + this.OpenJSONButton.UseVisualStyleBackColor = true; + this.OpenJSONButton.Click += new System.EventHandler(this.OpenJSONButton_Click); + // // displayBox // this.displayBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -785,14 +793,6 @@ this.tableLayoutPanelMain.SetRowSpan(this.texturePreview, 5); this.texturePreview.TabStop = false; // - // OpenJSONButton - // - resources.ApplyResources(this.OpenJSONButton, "OpenJSONButton"); - this.OpenJSONButton.ForeColor = System.Drawing.Color.White; - this.OpenJSONButton.Name = "OpenJSONButton"; - this.OpenJSONButton.UseVisualStyleBackColor = true; - this.OpenJSONButton.Click += new System.EventHandler(this.OpenJSONButton_Click); - // // generateModel // resources.ApplyResources(this, "$this"); diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.cs b/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.cs index c16a3f26..b65275f0 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.cs +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.cs @@ -23,7 +23,7 @@ namespace PckStudio string direction; - List boxes; + List> boxes; ListView storeData = new ListView(); @@ -87,10 +87,9 @@ namespace PckStudio //Initialization - public generateModel(List boxesIn, PictureBox preview) + public generateModel(List> boxesIn, PictureBox preview) { InitializeComponent(); - boxes = new List(); boxes = boxesIn; skinPreview = preview; direction = "front"; @@ -125,9 +124,9 @@ namespace PckStudio //loads data from mode list private void loadData() { - foreach (object[] box in boxes) + foreach (var box in boxes) { - if (box[0].ToString() == "BOX") + if (box.Item1 == "BOX") { int space = 0; string modelClass = ""; @@ -140,7 +139,7 @@ namespace PckStudio string xO = ""; string yO = ""; - foreach (char letter in box[1].ToString()) + foreach (char letter in box.Item2) { if (letter.ToString() == " ") { @@ -680,19 +679,19 @@ namespace PckStudio double num = (float)double.Parse(listViewItem.SubItems[6].Text) * 2; double x = (float)double.Parse(listViewItem.SubItems[7].Text) * 2; double y = (float)double.Parse(listViewItem.SubItems[8].Text) * 2; - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x + num), (float)y, (float)(width), (float)(num)); - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x + num + width), (float)y, (float)width, (float)num); - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x), (float)(y) + (float)(num), (float)(num), (float)(height)); - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num), (float)(y) + (float)(num), (float)(width), (float)(height)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x + num), (float)y, (float)(width), (float)(num)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x + num + width), (float)y, (float)width, (float)num); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x), (float)(y) + (float)(num), (float)(num), (float)(height)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num), (float)(y) + (float)(num), (float)(width), (float)(height)); if (listViewItem.Tag.ToString() != "HEAD") { - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width), (float)(y) + (float)(num), (float)(width), (float)(height)); - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width) + (float)(width), (float)(y) + (float)(num), (float)(num), (float)(height)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width), (float)(y) + (float)(num), (float)(width), (float)(height)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width) + (float)(width), (float)(y) + (float)(num), (float)(num), (float)(height)); } else { - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width) + (float)(width), (float)(y) + (float)(num), (float)(num), (float)(height)); - graphics.FillRectangle((Brush)new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width), (float)(y) + (float)(num), (float)(width), (float)(height)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width) + (float)(width), (float)(y) + (float)(num), (float)(num), (float)(height)); + graphics.FillRectangle(new SolidBrush(listViewItem.ForeColor), (float)(x) + (float)(num) + (float)(width), (float)(y) + (float)(num), (float)(width), (float)(height)); } } catch @@ -709,14 +708,11 @@ namespace PckStudio { try { - if (listViewItem.Tag == null) - this.buttonDone.Enabled = false; - else - this.buttonDone.Enabled = true; + buttonDone.Enabled = !(listViewItem.Tag == null); } catch (Exception ex) { - + Console.WriteLine(ex.Message); } } } @@ -1558,7 +1554,8 @@ namespace PckStudio Bitmap bitmap1 = new Bitmap(this.displayBox.Width, this.displayBox.Height); foreach (ListViewItem listViewItem in listViewBoxes.Items) { - boxes.Add(new object[2] { "BOX", listViewItem.Tag.ToString() + " " + listViewItem.SubItems[1].Text + " " + listViewItem.SubItems[2].Text + " " + listViewItem.SubItems[3].Text + " " + listViewItem.SubItems[4].Text + " " + listViewItem.SubItems[5].Text + " " + listViewItem.SubItems[6].Text + " " + listViewItem.SubItems[7].Text + " " + listViewItem.SubItems[8].Text }); + boxes.Add(new ValueTuple("BOX", + listViewItem.Tag.ToString() + " " + listViewItem.SubItems[1].Text + " " + listViewItem.SubItems[2].Text + " " + listViewItem.SubItems[3].Text + " " + listViewItem.SubItems[4].Text + " " + listViewItem.SubItems[5].Text + " " + listViewItem.SubItems[6].Text + " " + listViewItem.SubItems[7].Text + " " + listViewItem.SubItems[8].Text)); //mf.entries.Add(new object[2] { (object) "BOX", new ListViewItem() { Tag = ((object) (listViewItem.Tag.ToString() + " " + listViewItem.SubItems[1].Text + " " + listViewItem.SubItems[2].Text + " " + listViewItem.SubItems[3].Text + " " + listViewItem.SubItems[4].Text + " " + listViewItem.SubItems[5].Text + " " + listViewItem.SubItems[6].Text + " " + listViewItem.SubItems[7].Text + " " + listViewItem.SubItems[8].Text)) }.Tag }); using (Graphics graphics = Graphics.FromImage((Image)bitmap1)) @@ -1607,28 +1604,28 @@ namespace PckStudio } } //Body Offsets - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("HEAD Y " + this.offsetHead.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("BODY Y " + this.offsetBody.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("ARM0 Y " + this.offsetArms.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("ARM1 Y " + this.offsetArms.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("LEG0 Y " + this.offsetLegs.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("LEG1 Y " + this.offsetLegs.Text)) }.Tag }); + boxes.Add(new ValueTuple("OFFSET", "HEAD Y " + offsetHead.Text)); + boxes.Add(new ValueTuple("OFFSET", "BODY Y " + offsetBody.Text)); + boxes.Add(new ValueTuple("OFFSET", "ARM0 Y " + offsetArms.Text)); + boxes.Add(new ValueTuple("OFFSET", "ARM1 Y " + offsetArms.Text)); + boxes.Add(new ValueTuple("OFFSET", "LEG0 Y " + offsetLegs.Text)); + boxes.Add(new ValueTuple("OFFSET", "LEG1 Y " + offsetLegs.Text)); //Armor Offsets - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("HELMET Y " + this.offsetHelmet.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("TOOL0 Y " + this.offsetTool.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("TOOL1 Y " + this.offsetTool.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("PANTS0 Y " + this.offsetPants.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("PANTS1 Y " + this.offsetPants.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("BOOTS0 Y " + this.offsetBoots.Text)) }.Tag }); - boxes.Add(new object[2] { (object)"OFFSET", new ListViewItem() { Tag = ((object)("BOOTS1 Y " + this.offsetBoots.Text)) }.Tag }); + boxes.Add(new ValueTuple("OFFSET", "HELMET Y " + offsetHelmet.Text)); + boxes.Add(new ValueTuple("OFFSET", "TOOL0 Y " + offsetTool.Text)); + boxes.Add(new ValueTuple("OFFSET", "TOOL1 Y " + offsetTool.Text)); + boxes.Add(new ValueTuple("OFFSET", "PANTS0 Y " + offsetPants.Text)); + boxes.Add(new ValueTuple("OFFSET", "PANTS1 Y " + offsetPants.Text)); + boxes.Add(new ValueTuple("OFFSET", "BOOTS0 Y " + offsetBoots.Text)); + boxes.Add(new ValueTuple("OFFSET", "BOOTS1 Y " + offsetBoots.Text)); Bitmap bitmap2 = new Bitmap(64, 64); - using (Graphics graphics = Graphics.FromImage((Image)bitmap2)) + using (Graphics graphics = Graphics.FromImage(bitmap2)) { graphics.DrawImage(texturePreview.Image, 0, 0, 64, 64); graphics.InterpolationMode = InterpolationMode.NearestNeighbor; } - texturePreview.Image = (Image)bitmap2; + texturePreview.Image = bitmap2; try { using (FileStream stream = new FileStream(Application.StartupPath + "\\temp.png", FileMode.Create, FileAccess.Write)) @@ -1656,10 +1653,7 @@ namespace PckStudio //Deciphers wether to auto-generate model texture or not private void checkTextureGenerate_CheckedChanged(object sender, EventArgs e) { - if (this.autoTexture) - this.autoTexture = false; - else - this.autoTexture = true; + autoTexture = checkTextureGenerate.Checked; } @@ -1667,8 +1661,8 @@ namespace PckStudio private void listView1_DoubleClick(object sender, EventArgs e) { ColorDialog colorDialog = new ColorDialog(); - int num = (int)colorDialog.ShowDialog(); - this.selected.ForeColor = colorDialog.Color; + if (colorDialog.ShowDialog() == DialogResult.OK) + selected.ForeColor = colorDialog.Color; render(); } diff --git a/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.resx b/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.resx index 3f3c8f8a..78abcb0a 100644 --- a/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.resx +++ b/MinecraftUSkinEditor/Forms/Skins-And-Textures/generateModel.resx @@ -456,7 +456,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wAAADsABataJCQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x + vwAADr8BOAVTJAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAABSSURBVDhP5c0x DsAgDENRxt7/wmkNSpRGf0CCCZAegxNMM7MlGMp3dIU6dxhKf/QMNxRogeQC8ivw5Vn7C0heJlFA+kL5 jWAohxRkde4wnGftBS90axNmphIGAAAAAElFTkSuQmCC @@ -470,7 +470,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vwAADr8BOAVTJAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAHbSURBVDhPYyjZ + vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAHbSURBVDhPYyjZ 5F622bt8o1fmYpvMxdY5691T5prlrnJq2BsKFM9Z6Zix1DZruX3yAovAPrX8NS4MJZs98la7de2M/I8E khdZJsw3m3IwacL+hIoNPkkLDEpWumYus8tf6cTQuSc6zFZj7slckEIGBhD6/z/WUr1oq0fDvtApB1Mm H0uOtFaNmaKbPM8iykaTIcpGPSs3K8JWHVlDpK1q4gLDcFv1rHXOIfbq1UGmIfZqQJWVoVYgaQSAaYCD @@ -491,7 +491,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wAAADsABataJCQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAACESURBVDhPlY0B + vwAADr8BOAVTJAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAACESURBVDhPlY0B DoAgDAP3Dj7r09WTkqGUgJfUxtrOmHFEnL0U76FBqW8PZXmk/9uONEsIb3gsNRzoL/+R5hWC759mGsbQ DnzdZbhmiSvhLsM1S1wJdxmuWeJKuMtwzRJXwl2Ga5a4Eu4yXLPElXCX4Zol/WCl6YGdI62n2Zv2cSXV byIunLh7mD2ySLcAAAAASUVORK5CYII= @@ -506,7 +506,7 @@ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wAAADsABataJCQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAFhSURBVFhH7ZY/ + vwAADr8BOAVTJAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMkMEa+wAAAFhSURBVFhH7ZY/ S8RAEMXHW23zDexFkNSSTyDYijZyYq2V4BWBmPZaK7/B1fZiK1iIrRxod4r/Gq38N+7L7B5LyFllVuF8 8Mhm55HfZJZAaBq1Zs2yjKx5C+7OiLF223EEYM+CeVaMJlxJXdt1ONZRJuBH/mHo1sPfDY2iwcO39naj 35CUkibBo4z+H/6n4EcdetSGzwHQ79BLHf5q6EYbvgTAmaFhHQ67zy2TaPvaAdy+5XUTHMexSHTpsq1r @@ -2475,9 +2475,6 @@ 45 - - Fill - 20, 60 diff --git a/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.Designer.cs b/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.Designer.cs index e6c4625a..f1762552 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.Designer.cs @@ -28,286 +28,298 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AnimationEditor)); - this.treeView1 = new System.Windows.Forms.TreeView(); - this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); - this.addFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.removeFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.menuStrip = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.bulkAnimationSpeedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.importJavaAnimationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.changeTileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.metroCheckBox1 = new MetroFramework.Controls.MetroCheckBox(); - this.metroButton1 = new MetroFramework.Controls.MetroButton(); - this.timer1 = new System.Windows.Forms.Timer(this.components); - this.metroButton2 = new MetroFramework.Controls.MetroButton(); - this.tileLabel = new MetroFramework.Controls.MetroLabel(); - this.metroCheckBox2 = new MetroFramework.Controls.MetroCheckBox(); - this.metroLabel1 = new MetroFramework.Controls.MetroLabel(); - this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); - this.pictureBoxWithInterpolationMode1 = new PckStudio.PictureBoxWithInterpolationMode(); - this.contextMenuStrip1.SuspendLayout(); - this.menuStrip.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).BeginInit(); - this.SuspendLayout(); - // - // treeView1 - // - this.treeView1.AllowDrop = true; - this.treeView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.treeView1.ContextMenuStrip = this.contextMenuStrip1; - this.treeView1.ForeColor = System.Drawing.Color.White; - this.treeView1.Location = new System.Drawing.Point(20, 84); - this.treeView1.Margin = new System.Windows.Forms.Padding(0); - this.treeView1.MaximumSize = new System.Drawing.Size(205, 350); - this.treeView1.Name = "treeView1"; - this.treeView1.Size = new System.Drawing.Size(165, 196); - this.treeView1.TabIndex = 15; - this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView1_ItemDrag); - this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); - this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_doubleClick); - this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView1_DragDrop); - this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView1_DragEnter); - this.treeView1.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView1_DragOver); - // - // contextMenuStrip1 - // - this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AnimationEditor)); + this.treeView1 = new System.Windows.Forms.TreeView(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.addFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.removeFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.bulkAnimationSpeedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.importJavaAnimationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.changeTileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.metroCheckBox1 = new MetroFramework.Controls.MetroCheckBox(); + this.metroButton1 = new MetroFramework.Controls.MetroButton(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.metroButton2 = new MetroFramework.Controls.MetroButton(); + this.tileLabel = new MetroFramework.Controls.MetroLabel(); + this.metroCheckBox2 = new MetroFramework.Controls.MetroCheckBox(); + this.metroLabel1 = new MetroFramework.Controls.MetroLabel(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.pictureBoxWithInterpolationMode1 = new PckStudio.PictureBoxWithInterpolationMode(); + this.contextMenuStrip1.SuspendLayout(); + this.menuStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).BeginInit(); + this.SuspendLayout(); + // + // treeView1 + // + this.treeView1.AllowDrop = true; + this.treeView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.treeView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.treeView1.ContextMenuStrip = this.contextMenuStrip1; + this.treeView1.ForeColor = System.Drawing.Color.White; + this.treeView1.Location = new System.Drawing.Point(20, 84); + this.treeView1.Margin = new System.Windows.Forms.Padding(0); + this.treeView1.MaximumSize = new System.Drawing.Size(205, 350); + this.treeView1.Name = "treeView1"; + this.treeView1.Size = new System.Drawing.Size(165, 202); + this.treeView1.TabIndex = 15; + this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView1_ItemDrag); + this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect); + this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_doubleClick); + this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView1_DragDrop); + this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView1_DragEnter); + this.treeView1.DragOver += new System.Windows.Forms.DragEventHandler(this.treeView1_DragOver); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.addFrameToolStripMenuItem, this.removeFrameToolStripMenuItem}); - this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(154, 48); - // - // addFrameToolStripMenuItem - // - this.addFrameToolStripMenuItem.Image = global::PckStudio.Properties.Resources.ExportFile; - this.addFrameToolStripMenuItem.Name = "addFrameToolStripMenuItem"; - this.addFrameToolStripMenuItem.Size = new System.Drawing.Size(153, 22); - this.addFrameToolStripMenuItem.Text = "Add Frame"; - this.addFrameToolStripMenuItem.Click += new System.EventHandler(this.addFrameToolStripMenuItem_Click); - // - // removeFrameToolStripMenuItem - // - this.removeFrameToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Del; - this.removeFrameToolStripMenuItem.Name = "removeFrameToolStripMenuItem"; - this.removeFrameToolStripMenuItem.Size = new System.Drawing.Size(153, 22); - this.removeFrameToolStripMenuItem.Text = "Remove Frame"; - this.removeFrameToolStripMenuItem.Click += new System.EventHandler(this.removeFrameToolStripMenuItem_Click); - // - // menuStrip - // - this.menuStrip.AutoSize = false; - this.menuStrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); - this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(154, 48); + // + // addFrameToolStripMenuItem + // + this.addFrameToolStripMenuItem.Image = global::PckStudio.Properties.Resources.ExportFile; + this.addFrameToolStripMenuItem.Name = "addFrameToolStripMenuItem"; + this.addFrameToolStripMenuItem.Size = new System.Drawing.Size(153, 22); + this.addFrameToolStripMenuItem.Text = "Add Frame"; + this.addFrameToolStripMenuItem.Click += new System.EventHandler(this.addFrameToolStripMenuItem_Click); + // + // removeFrameToolStripMenuItem + // + this.removeFrameToolStripMenuItem.Image = global::PckStudio.Properties.Resources.Del; + this.removeFrameToolStripMenuItem.Name = "removeFrameToolStripMenuItem"; + this.removeFrameToolStripMenuItem.Size = new System.Drawing.Size(153, 22); + this.removeFrameToolStripMenuItem.Text = "Remove Frame"; + this.removeFrameToolStripMenuItem.Click += new System.EventHandler(this.removeFrameToolStripMenuItem_Click); + // + // menuStrip + // + this.menuStrip.AutoSize = false; + this.menuStrip.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, this.editToolStripMenuItem, this.helpToolStripMenuItem}); - this.menuStrip.Location = new System.Drawing.Point(20, 60); - this.menuStrip.Name = "menuStrip"; - this.menuStrip.Size = new System.Drawing.Size(360, 24); - this.menuStrip.TabIndex = 14; - this.menuStrip.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menuStrip.Location = new System.Drawing.Point(20, 60); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(372, 24); + this.menuStrip.TabIndex = 14; + this.menuStrip.Text = "menuStrip1"; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.saveToolStripMenuItem1}); - this.fileToolStripMenuItem.ForeColor = System.Drawing.Color.White; - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "File"; - // - // saveToolStripMenuItem1 - // - this.saveToolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem1.Image"))); - this.saveToolStripMenuItem1.Name = "saveToolStripMenuItem1"; - this.saveToolStripMenuItem1.Size = new System.Drawing.Size(98, 22); - this.saveToolStripMenuItem1.Text = "Save"; - this.saveToolStripMenuItem1.Click += new System.EventHandler(this.saveToolStripMenuItem1_Click); - // - // editToolStripMenuItem - // - this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.fileToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + // + // saveToolStripMenuItem1 + // + this.saveToolStripMenuItem1.Image = ((System.Drawing.Image)(resources.GetObject("saveToolStripMenuItem1.Image"))); + this.saveToolStripMenuItem1.Name = "saveToolStripMenuItem1"; + this.saveToolStripMenuItem1.Size = new System.Drawing.Size(98, 22); + this.saveToolStripMenuItem1.Text = "Save"; + this.saveToolStripMenuItem1.Click += new System.EventHandler(this.saveToolStripMenuItem1_Click); + // + // editToolStripMenuItem + // + this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.bulkAnimationSpeedToolStripMenuItem, this.importJavaAnimationToolStripMenuItem, this.changeTileToolStripMenuItem}); - this.editToolStripMenuItem.ForeColor = System.Drawing.Color.White; - this.editToolStripMenuItem.Name = "editToolStripMenuItem"; - this.editToolStripMenuItem.Size = new System.Drawing.Size(46, 20); - this.editToolStripMenuItem.Text = "Tools"; - // - // bulkAnimationSpeedToolStripMenuItem - // - this.bulkAnimationSpeedToolStripMenuItem.Image = global::PckStudio.Properties.Resources.clock; - this.bulkAnimationSpeedToolStripMenuItem.Name = "bulkAnimationSpeedToolStripMenuItem"; - this.bulkAnimationSpeedToolStripMenuItem.Size = new System.Drawing.Size(210, 22); - this.bulkAnimationSpeedToolStripMenuItem.Text = "Set Bulk Animation Speed"; - this.bulkAnimationSpeedToolStripMenuItem.Click += new System.EventHandler(this.bulkAnimationSpeedToolStripMenuItem_Click); - // - // importJavaAnimationToolStripMenuItem - // - this.importJavaAnimationToolStripMenuItem.Image = global::PckStudio.Properties.Resources.ExportFile; - this.importJavaAnimationToolStripMenuItem.Name = "importJavaAnimationToolStripMenuItem"; - this.importJavaAnimationToolStripMenuItem.Size = new System.Drawing.Size(210, 22); - this.importJavaAnimationToolStripMenuItem.Text = "Import Java Animation"; - this.importJavaAnimationToolStripMenuItem.Click += new System.EventHandler(this.importJavaAnimationToolStripMenuItem_Click); - // - // changeTileToolStripMenuItem - // - this.changeTileToolStripMenuItem.Image = global::PckStudio.Properties.Resources.changeTile; - this.changeTileToolStripMenuItem.Name = "changeTileToolStripMenuItem"; - this.changeTileToolStripMenuItem.Size = new System.Drawing.Size(210, 22); - this.changeTileToolStripMenuItem.Text = "Change Tile"; - this.changeTileToolStripMenuItem.Click += new System.EventHandler(this.changeTileToolStripMenuItem_Click); - // - // helpToolStripMenuItem - // - this.helpToolStripMenuItem.ForeColor = System.Drawing.Color.White; - this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; - this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); - this.helpToolStripMenuItem.Text = "Help"; - this.helpToolStripMenuItem.Click += new System.EventHandler(this.helpToolStripMenuItem_Click); - // - // metroCheckBox1 - // - this.metroCheckBox1.AutoSize = true; - this.metroCheckBox1.Location = new System.Drawing.Point(182, 312); - this.metroCheckBox1.Name = "metroCheckBox1"; - this.metroCheckBox1.Size = new System.Drawing.Size(204, 15); - this.metroCheckBox1.TabIndex = 17; - this.metroCheckBox1.Text = "Interpolates (not simulated above)"; - this.metroCheckBox1.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroCheckBox1.UseSelectable = true; - // - // metroButton1 - // - this.metroButton1.Location = new System.Drawing.Point(182, 286); - this.metroButton1.Name = "metroButton1"; - this.metroButton1.Size = new System.Drawing.Size(99, 24); - this.metroButton1.TabIndex = 18; - this.metroButton1.Text = "Play Animation"; - this.metroButton1.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroButton1.UseSelectable = true; - this.metroButton1.Click += new System.EventHandler(this.metroButton1_Click); - // - // timer1 - // - this.timer1.Interval = 1; - this.timer1.Tick += new System.EventHandler(this.animate); - // - // metroButton2 - // - this.metroButton2.Enabled = false; - this.metroButton2.Location = new System.Drawing.Point(287, 286); - this.metroButton2.Name = "metroButton2"; - this.metroButton2.Size = new System.Drawing.Size(99, 24); - this.metroButton2.TabIndex = 19; - this.metroButton2.Text = "Stop Animation"; - this.metroButton2.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroButton2.UseSelectable = true; - this.metroButton2.Click += new System.EventHandler(this.metroButton2_Click); - // - // tileLabel - // - this.tileLabel.AutoSize = true; - this.tileLabel.Location = new System.Drawing.Point(6, 286); - this.tileLabel.MinimumSize = new System.Drawing.Size(170, 19); - this.tileLabel.Name = "tileLabel"; - this.tileLabel.Size = new System.Drawing.Size(57, 19); - this.tileLabel.TabIndex = 20; - this.tileLabel.Text = "tileLabel"; - this.tileLabel.Theme = MetroFramework.MetroThemeStyle.Dark; - // - // metroCheckBox2 - // - this.metroCheckBox2.AutoSize = true; - this.metroCheckBox2.Location = new System.Drawing.Point(6, 308); - this.metroCheckBox2.Name = "metroCheckBox2"; - this.metroCheckBox2.Size = new System.Drawing.Size(128, 15); - this.metroCheckBox2.TabIndex = 21; - this.metroCheckBox2.Text = "Is Mip Map Texture?"; - this.metroCheckBox2.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroCheckBox2.UseSelectable = true; - this.metroCheckBox2.CheckedChanged += new System.EventHandler(this.metroCheckBox2_CheckedChanged); - // - // metroLabel1 - // - this.metroLabel1.AutoSize = true; - this.metroLabel1.Location = new System.Drawing.Point(7, 326); - this.metroLabel1.Name = "metroLabel1"; - this.metroLabel1.Size = new System.Drawing.Size(99, 19); - this.metroLabel1.TabIndex = 22; - this.metroLabel1.Text = "Mip Map Level:"; - this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark; - this.metroLabel1.Visible = false; - // - // numericUpDown1 - // - this.numericUpDown1.BackColor = System.Drawing.Color.Black; - this.numericUpDown1.ForeColor = System.Drawing.SystemColors.Window; - this.numericUpDown1.Location = new System.Drawing.Point(113, 326); - this.numericUpDown1.Maximum = new decimal(new int[] { + this.editToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.editToolStripMenuItem.Name = "editToolStripMenuItem"; + this.editToolStripMenuItem.Size = new System.Drawing.Size(46, 20); + this.editToolStripMenuItem.Text = "Tools"; + // + // bulkAnimationSpeedToolStripMenuItem + // + this.bulkAnimationSpeedToolStripMenuItem.Image = global::PckStudio.Properties.Resources.clock; + this.bulkAnimationSpeedToolStripMenuItem.Name = "bulkAnimationSpeedToolStripMenuItem"; + this.bulkAnimationSpeedToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.bulkAnimationSpeedToolStripMenuItem.Text = "Set Bulk Animation Speed"; + this.bulkAnimationSpeedToolStripMenuItem.Click += new System.EventHandler(this.bulkAnimationSpeedToolStripMenuItem_Click); + // + // importJavaAnimationToolStripMenuItem + // + this.importJavaAnimationToolStripMenuItem.Image = global::PckStudio.Properties.Resources.ExportFile; + this.importJavaAnimationToolStripMenuItem.Name = "importJavaAnimationToolStripMenuItem"; + this.importJavaAnimationToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.importJavaAnimationToolStripMenuItem.Text = "Import Java Animation"; + this.importJavaAnimationToolStripMenuItem.Click += new System.EventHandler(this.importJavaAnimationToolStripMenuItem_Click); + // + // changeTileToolStripMenuItem + // + this.changeTileToolStripMenuItem.Image = global::PckStudio.Properties.Resources.changeTile; + this.changeTileToolStripMenuItem.Name = "changeTileToolStripMenuItem"; + this.changeTileToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.changeTileToolStripMenuItem.Text = "Change Tile"; + this.changeTileToolStripMenuItem.Click += new System.EventHandler(this.changeTileToolStripMenuItem_Click); + // + // helpToolStripMenuItem + // + this.helpToolStripMenuItem.ForeColor = System.Drawing.Color.White; + this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; + this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + this.helpToolStripMenuItem.Text = "Help"; + this.helpToolStripMenuItem.Click += new System.EventHandler(this.helpToolStripMenuItem_Click); + // + // metroCheckBox1 + // + this.metroCheckBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.metroCheckBox1.AutoSize = true; + this.metroCheckBox1.Location = new System.Drawing.Point(188, 317); + this.metroCheckBox1.Name = "metroCheckBox1"; + this.metroCheckBox1.Size = new System.Drawing.Size(204, 15); + this.metroCheckBox1.TabIndex = 17; + this.metroCheckBox1.Text = "Interpolates (not simulated above)"; + this.metroCheckBox1.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroCheckBox1.UseSelectable = true; + // + // metroButton1 + // + this.metroButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.metroButton1.Location = new System.Drawing.Point(188, 291); + this.metroButton1.Name = "metroButton1"; + this.metroButton1.Size = new System.Drawing.Size(99, 24); + this.metroButton1.TabIndex = 18; + this.metroButton1.Text = "Play Animation"; + this.metroButton1.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroButton1.UseSelectable = true; + this.metroButton1.Click += new System.EventHandler(this.metroButton1_Click); + // + // timer1 + // + this.timer1.Interval = 1; + this.timer1.Tick += new System.EventHandler(this.animate); + // + // metroButton2 + // + this.metroButton2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.metroButton2.Enabled = false; + this.metroButton2.Location = new System.Drawing.Point(293, 291); + this.metroButton2.Name = "metroButton2"; + this.metroButton2.Size = new System.Drawing.Size(99, 24); + this.metroButton2.TabIndex = 19; + this.metroButton2.Text = "Stop Animation"; + this.metroButton2.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroButton2.UseSelectable = true; + this.metroButton2.Click += new System.EventHandler(this.metroButton2_Click); + // + // tileLabel + // + this.tileLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.tileLabel.AutoSize = true; + this.tileLabel.Location = new System.Drawing.Point(20, 290); + this.tileLabel.MinimumSize = new System.Drawing.Size(170, 19); + this.tileLabel.Name = "tileLabel"; + this.tileLabel.Size = new System.Drawing.Size(57, 19); + this.tileLabel.TabIndex = 20; + this.tileLabel.Text = "tileLabel"; + this.tileLabel.Theme = MetroFramework.MetroThemeStyle.Dark; + // + // metroCheckBox2 + // + this.metroCheckBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.metroCheckBox2.AutoSize = true; + this.metroCheckBox2.Location = new System.Drawing.Point(20, 312); + this.metroCheckBox2.Name = "metroCheckBox2"; + this.metroCheckBox2.Size = new System.Drawing.Size(128, 15); + this.metroCheckBox2.TabIndex = 21; + this.metroCheckBox2.Text = "Is Mip Map Texture?"; + this.metroCheckBox2.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroCheckBox2.UseSelectable = true; + this.metroCheckBox2.CheckedChanged += new System.EventHandler(this.metroCheckBox2_CheckedChanged); + // + // metroLabel1 + // + this.metroLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.metroLabel1.AutoSize = true; + this.metroLabel1.Location = new System.Drawing.Point(21, 330); + this.metroLabel1.Name = "metroLabel1"; + this.metroLabel1.Size = new System.Drawing.Size(99, 19); + this.metroLabel1.TabIndex = 22; + this.metroLabel1.Text = "Mip Map Level:"; + this.metroLabel1.Theme = MetroFramework.MetroThemeStyle.Dark; + this.metroLabel1.Visible = false; + // + // numericUpDown1 + // + this.numericUpDown1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.numericUpDown1.BackColor = System.Drawing.Color.Black; + this.numericUpDown1.ForeColor = System.Drawing.SystemColors.Window; + this.numericUpDown1.Location = new System.Drawing.Point(127, 330); + this.numericUpDown1.Maximum = new decimal(new int[] { 3, 0, 0, 0}); - this.numericUpDown1.Minimum = new decimal(new int[] { + this.numericUpDown1.Minimum = new decimal(new int[] { 2, 0, 0, 0}); - this.numericUpDown1.Name = "numericUpDown1"; - this.numericUpDown1.Size = new System.Drawing.Size(44, 20); - this.numericUpDown1.TabIndex = 23; - this.numericUpDown1.Value = new decimal(new int[] { + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(44, 20); + this.numericUpDown1.TabIndex = 23; + this.numericUpDown1.Value = new decimal(new int[] { 2, 0, 0, 0}); - this.numericUpDown1.Visible = false; - // - // pictureBoxWithInterpolationMode1 - // - this.pictureBoxWithInterpolationMode1.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; - this.pictureBoxWithInterpolationMode1.Location = new System.Drawing.Point(188, 88); - this.pictureBoxWithInterpolationMode1.Name = "pictureBoxWithInterpolationMode1"; - this.pictureBoxWithInterpolationMode1.Size = new System.Drawing.Size(192, 192); - this.pictureBoxWithInterpolationMode1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBoxWithInterpolationMode1.TabIndex = 16; - this.pictureBoxWithInterpolationMode1.TabStop = false; - // - // AnimationEditor - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(400, 356); - this.Controls.Add(this.metroButton2); - this.Controls.Add(this.metroButton1); - this.Controls.Add(this.numericUpDown1); - this.Controls.Add(this.metroLabel1); - this.Controls.Add(this.metroCheckBox2); - this.Controls.Add(this.tileLabel); - this.Controls.Add(this.metroCheckBox1); - this.Controls.Add(this.pictureBoxWithInterpolationMode1); - this.Controls.Add(this.treeView1); - this.Controls.Add(this.menuStrip); - this.Name = "AnimationEditor"; - this.Style = MetroFramework.MetroColorStyle.Silver; - this.Text = "Animation Editor"; - this.Theme = MetroFramework.MetroThemeStyle.Dark; - this.contextMenuStrip1.ResumeLayout(false); - this.menuStrip.ResumeLayout(false); - this.menuStrip.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + this.numericUpDown1.Visible = false; + // + // pictureBoxWithInterpolationMode1 + // + this.pictureBoxWithInterpolationMode1.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.pictureBoxWithInterpolationMode1.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; + this.pictureBoxWithInterpolationMode1.Location = new System.Drawing.Point(188, 88); + this.pictureBoxWithInterpolationMode1.Name = "pictureBoxWithInterpolationMode1"; + this.pictureBoxWithInterpolationMode1.Size = new System.Drawing.Size(204, 198); + this.pictureBoxWithInterpolationMode1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBoxWithInterpolationMode1.TabIndex = 16; + this.pictureBoxWithInterpolationMode1.TabStop = false; + // + // AnimationEditor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(412, 362); + this.Controls.Add(this.metroButton2); + this.Controls.Add(this.metroButton1); + this.Controls.Add(this.numericUpDown1); + this.Controls.Add(this.metroLabel1); + this.Controls.Add(this.metroCheckBox2); + this.Controls.Add(this.tileLabel); + this.Controls.Add(this.metroCheckBox1); + this.Controls.Add(this.pictureBoxWithInterpolationMode1); + this.Controls.Add(this.treeView1); + this.Controls.Add(this.menuStrip); + this.Name = "AnimationEditor"; + this.Style = MetroFramework.MetroColorStyle.Silver; + this.Text = "Animation Editor"; + this.Theme = MetroFramework.MetroThemeStyle.Dark; + this.contextMenuStrip1.ResumeLayout(false); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxWithInterpolationMode1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); } diff --git a/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs b/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs index 20707f75..83f80ae0 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Animation/AnimationEditor.cs @@ -56,7 +56,7 @@ namespace PckStudio { create = true; PCKFile.FileData newMf = new PCKFile.FileData("", 2); - newMf.properties.Add(new Tuple("ANIM", "")); + newMf.properties.Add(new ValueTuple("ANIM", "")); newMf.SetData(File.ReadAllBytes(createdFileName)); mf = newMf; Forms.Utilities.AnimationEditor.ChangeTile diag = new Forms.Utilities.AnimationEditor.ChangeTile(); @@ -71,15 +71,14 @@ namespace PckStudio List strEntries = new List(); List strEntryData = new List(); - foreach (var entry in mf.properties) //object = metadata entry(name:value) + bool has_anim_tag = false; + foreach (var entry in mf.properties) { - //TreeNode meta = new TreeNode(entry.Item1); + if (entry.Item1 == "ANIM") has_anim_tag = true; strEntries.Add(entry.Item2); strEntryData.Add(entry.Item2); } - //if (strEntries.Find(entry => entry == "ANIM") == null) throw new System.Exception("ANIM tag is missing. No animation code is present."); - MemoryStream textureMem = new MemoryStream(mf.data); texture = Image.FromStream(textureMem); createFrameList(); @@ -88,7 +87,7 @@ namespace PckStudio foreach (Newtonsoft.Json.Linq.JObject content in tileData[isItem ? "Items" : "Blocks"].Children()) { - foreach (Newtonsoft.Json.Linq.JProperty prop in content.Properties()) + foreach (JProperty prop in content.Properties()) { if (prop.Name == newTileName) tileLabel.Text = (string)prop.Value; } @@ -329,49 +328,49 @@ namespace PckStudio if (e.KeyData == Keys.Delete) treeView1.Nodes.Remove(treeView1.SelectedNode); } - private TreeNode FindNode(TreeNode treeNode, string name) + private TreeNode FindNodeByName(TreeNode treeNode, string name) { foreach (TreeNode node in treeNode.Nodes) { if (node.Text.ToLower() == name.ToLower()) return node; else { - TreeNode nodeChild = FindNode(node, name); + TreeNode nodeChild = FindNodeByName(node, name); if (nodeChild != null) { return nodeChild; } } } - return (TreeNode)null; + return null; } - private TreeNode FindNode(TreeView treeView, string name) + private TreeNode FindNodeByName(TreeView treeView, string name) { foreach (TreeNode node in treeView.Nodes) { if (node.Text.ToLower() == name.ToLower()) return node; else { - TreeNode nodeChild = FindNode(node, name); + TreeNode nodeChild = FindNodeByName(node, name); if (nodeChild != null) return nodeChild; } } - return (TreeNode)null; + return null; } private void addNodeToAnimationsFolder(TreeNode newNode) { - TreeNode parent = FindNode(treeViewMain, isItem ? "items" : "blocks"); + TreeNode parent = FindNodeByName(treeViewMain, isItem ? "items" : "blocks"); if (parent != null) { Console.WriteLine("ParentNotNULL"); - TreeNode check = FindNode(treeViewMain, newNode.Text); + TreeNode check = FindNodeByName(treeViewMain, newNode.Text); parent.Nodes.Add(newNode); } else { - TreeNode texturesParent = FindNode(treeViewMain, "textures"); + TreeNode texturesParent = FindNodeByName(treeViewMain, "textures"); if (texturesParent != null) { Console.WriteLine("TextureNotNULL"); @@ -381,7 +380,7 @@ namespace PckStudio } else { - TreeNode resParent = FindNode(treeViewMain, "res"); + TreeNode resParent = FindNodeByName(treeViewMain, "res"); if (resParent != null) { Console.WriteLine("ResNotNULL"); @@ -438,7 +437,7 @@ namespace PckStudio } else { - mf.properties.Add(new Tuple("ANIM", animationData)); + mf.properties.Add(new ValueTuple("ANIM", animationData)); break; } }; diff --git a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs index 5a0faf66..b7d8a0eb 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/Audio/AudioEditor.cs @@ -93,7 +93,7 @@ namespace PckStudio.Forms.Utilities { audioPCK = PCKFileReader.Read(stream, isLittleEndian); } - if (!audioPCK.meta_data.ContainsKey("CUENAME") || audioPCK.type != 1) + if (!audioPCK.meta_data.Contains("CUENAME") || audioPCK.type != 1) { throw new Exception("This is not a valid audio.pck file"); } @@ -132,7 +132,7 @@ namespace PckStudio.Forms.Utilities textBox1.Text = strings.Item2; foreach (var metaType in audioPCK.meta_data) - comboBox1.Items.Add(metaType.Key); + comboBox1.Items.Add(metaType); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) diff --git a/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.Designer.cs b/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.Designer.cs index 24f745f6..5dd4fce5 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.Designer.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.Designer.cs @@ -91,6 +91,8 @@ // // dataGridViewLocEntryData // + this.dataGridViewLocEntryData.AllowUserToAddRows = false; + this.dataGridViewLocEntryData.AllowUserToDeleteRows = false; this.dataGridViewLocEntryData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.locSort.SetColumnSpan(this.dataGridViewLocEntryData, 2); resources.ApplyResources(this.dataGridViewLocEntryData, "dataGridViewLocEntryData"); @@ -121,6 +123,7 @@ this.Style = MetroFramework.MetroColorStyle.Silver; this.Theme = MetroFramework.MetroThemeStyle.Dark; this.Load += new System.EventHandler(this.LOCEditor_Load); + this.Resize += new System.EventHandler(this.LOCEditor_Resize); this.contextMenuStrip1.ResumeLayout(false); this.locSort.ResumeLayout(false); this.locSort.PerformLayout(); diff --git a/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.cs b/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.cs index a09dc6ad..9261c746 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.cs +++ b/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.cs @@ -8,42 +8,46 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using MetroFramework.Forms; namespace PckStudio { - public partial class LOCEditor : MetroFramework.Forms.MetroForm - { - DataTable tbl = new DataTable(); + public partial class LOCEditor : MetroForm + { + DataTable tbl; LOCFile currentLoc; + public bool wasModified { get; private set; } = true; public LOCEditor(LOCFile loc) { InitializeComponent(); currentLoc = loc; + tbl = new DataTable(); tbl.Columns.Add(new DataColumn("Language") { ReadOnly = true }); tbl.Columns.Add("Display Name"); dataGridViewLocEntryData.DataSource = tbl; - DataGridViewColumn column = dataGridViewLocEntryData.Columns[1]; - column.Width = 600; - } + DataGridViewColumn column = dataGridViewLocEntryData.Columns[1]; + column.Width = dataGridViewLocEntryData.Width; + } private void LOCEditor_Load(object sender, EventArgs e) { - foreach(string id in currentLoc.languages.Keys) - treeViewLocEntries.Nodes.Add(id); + foreach(string locKey in currentLoc.keys.Keys) + treeViewLocEntries.Nodes.Add(locKey); } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { - tbl.Rows.Clear(); - if (treeViewLocEntries.SelectedNode == null || - !currentLoc.languages.ContainsKey(treeViewLocEntries.SelectedNode.Text)) + var node = e.Node; + if (node == null || + !currentLoc.keys.ContainsKey(node.Text)) { MessageBox.Show("Selected Node does not seem to be in the loc file"); return; } + tbl.Rows.Clear(); buttonReplaceAll.Enabled = true; - foreach (var l in currentLoc.languages[treeViewLocEntries.SelectedNode.Text]) + foreach (var l in currentLoc.keys[node.Text]) { tbl.Rows.Add(l.Key, l.Value); } @@ -52,90 +56,65 @@ namespace PckStudio private void renameDisplayIDToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = treeViewLocEntries.SelectedNode; - renameLoc diag = new renameLoc(node.Text); + RenamePrompt diag = new RenamePrompt(node.Text); diag.ShowDialog(this); if (diag.DialogResult == DialogResult.OK) - currentLoc.ChangeEntry("TODO", diag.NewText); - diag.Dispose(); //diposes generated metadata adding dialog data + currentLoc.ChangeEntry(node.Text, diag.NewText); + diag.Dispose(); } private void addDisplayIDToolStripMenuItem_Click(object sender, EventArgs e) { - MessageBox.Show("TODO"); - //int index = treeViewLocEntries.SelectedNode.Index; + //foreach (LOCFile.Language l in currentLoc.langs) + // l.names.Insert(index, "NewString"); - //if(index == -1) index = currentLoc.ids.names.Count; + //treeViewLocEntries.Nodes.Insert(index, "NewItem"); + } - //currentLoc.ids.names.Insert(index, "NewItem"); - - //foreach (LOCFile.Language l in currentLoc.langs) - // l.names.Insert(index, "NewString"); - - //treeViewLocEntries.Nodes.Insert(index, "NewItem"); - } - - private void deleteDisplayIDToolStripMenuItem_Click(object sender, EventArgs e) + private void deleteDisplayIDToolStripMenuItem_Click(object sender, EventArgs e) { - if(treeViewLocEntries.SelectedNode != null) + if(treeViewLocEntries.SelectedNode != null && currentLoc.keys.ContainsKey(treeViewLocEntries.SelectedNode.Text)) { - MessageBox.Show("TODO"); - //int index = treeViewLocEntries.SelectedNode.Index; - - //currentLoc.ids.names.RemoveAt(index); - - //foreach (LOCFile.Language l in currentLoc.langs) - // l.names.RemoveAt(index); - - //treeViewLocEntries.Nodes.RemoveAt(index); - } + currentLoc.keys.Remove(treeViewLocEntries.SelectedNode.Text); + treeViewLocEntries.SelectedNode.Remove(); + } } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { - MessageBox.Show("TODO"); - //for (int i = 0; i < tbl.Rows.Count; i++) - //{ - // byte[] data = Encoding.UTF8.GetBytes((string)tbl.Rows[i][1]); + if (e.ColumnIndex != 1) + { + MessageBox.Show("something went wrong"); + return; + } + currentLoc.ChangeSingleEntry(treeViewLocEntries.SelectedNode.Text, tbl.Rows[e.RowIndex][0].ToString(), tbl.Rows[e.RowIndex][1].ToString()); + wasModified = true; + } - // string final = string.Empty; - - // foreach (byte b in data) - // final += (char)b; - - // currentLoc.langs[i].names[treeViewLocEntries.SelectedNode.Index] = final; - //} - } - - private void treeView1_KeyDown(object sender, KeyEventArgs e) + private void treeView1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Delete && treeViewLocEntries.SelectedNode != null) //checks to make sure pressed key was del { - int index = treeViewLocEntries.SelectedNode.Index; - MessageBox.Show("TODO"); - //currentLoc.languages..RemoveAt(index); - - //foreach (var l in currentLoc.languages) - // l.names.RemoveAt(index); - //treeViewLocEntries.Nodes.RemoveAt(index); + currentLoc.keys.Remove(treeViewLocEntries.SelectedNode.Text); + treeViewLocEntries.SelectedNode.Remove(); + wasModified = true; } } private void buttonReplaceAll_Click(object sender, EventArgs e) { - MessageBox.Show("TODO"); - //for (int i = 0; i < tbl.Rows.Count; i++) - //{ - // tbl.Rows[i][1] = ; - //} - //for (int i = 0; i < tbl.Rows.Count; i++) - //{ - // currentLoc.langs[i].names[treeViewLocEntries.SelectedNode.Index] = (string)tbl.Rows[i][1]; - //} + for (int i = 0; i < tbl.Rows.Count; i++) + { + tbl.Rows[i][1] = textBoxReplaceAll.Text; + } + currentLoc.ChangeEntry(treeViewLocEntries.SelectedNode.Text, textBoxReplaceAll.Text); + wasModified = true; } - private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) - { - + private void LOCEditor_Resize(object sender, EventArgs e) + { + DataGridViewColumn column = dataGridViewLocEntryData.Columns[1]; + column.Width = dataGridViewLocEntryData.Width - dataGridViewLocEntryData.Columns[0].Width; } - } + } } diff --git a/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.resx b/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.resx index 46cceab9..76304620 100644 --- a/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.resx +++ b/MinecraftUSkinEditor/Forms/Utilities/LOCEditor.resx @@ -121,6 +121,15 @@ 17, 17 + + 173, 70 + + + contextMenuStrip1 + + + System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 172, 22 @@ -139,15 +148,6 @@ Delete Display ID - - 173, 70 - - - contextMenuStrip1 - - - System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 3 diff --git a/MinecraftUSkinEditor/Forms/Utilities/renameLoc.cs b/MinecraftUSkinEditor/Forms/Utilities/renameLoc.cs deleted file mode 100644 index 8eda9260..00000000 --- a/MinecraftUSkinEditor/Forms/Utilities/renameLoc.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace PckStudio -{ - public partial class renameLoc : MetroFramework.Forms.MetroForm - { - public string NewText = string.Empty; - - public renameLoc(string initialText) - { - InitializeComponent(); - textBox1.Text = initialText; - FormBorderStyle = FormBorderStyle.None; - } - - private void button1_Click(object sender, EventArgs e) - { - NewText = textBox1.Text; - DialogResult = DialogResult.OK; - Close(); - } - } -} diff --git a/MinecraftUSkinEditor/PckStudio.csproj b/MinecraftUSkinEditor/PckStudio.csproj index 04101f26..0324fffb 100644 --- a/MinecraftUSkinEditor/PckStudio.csproj +++ b/MinecraftUSkinEditor/PckStudio.csproj @@ -182,11 +182,11 @@ FakeProgressBar.cs - + Form - - rename.cs + + RenamePrompt.cs Form @@ -362,12 +362,6 @@ Promo.cs - - Form - - - renameLoc.cs - Form @@ -421,8 +415,8 @@ FakeProgressBar.cs - - rename.cs + + RenamePrompt.cs ChangeTile.cs @@ -574,9 +568,6 @@ Promo.cs - - renameLoc.cs - TextureConverterUtility.cs @@ -687,6 +678,9 @@ 12.0.1 + + 4.5.0 +