Commit before update
This commit is contained in:
		
							parent
							
								
									be85aeff52
								
							
						
					
					
						commit
						ab54e937f5
					
				@ -11,9 +11,8 @@ using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public static class Config {
 | 
			
		||||
        private static readonly char[] _equals = new char[] { '=' };
 | 
			
		||||
        private static readonly char[] _brackets = new char[] { '[', ']' };
 | 
			
		||||
        private static readonly string _fileName = "RCM.conf";
 | 
			
		||||
        private static readonly string _dirName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "RCM");
 | 
			
		||||
        private static readonly string _fileName = Path.Combine(_dirName, "RCM.conf");
 | 
			
		||||
 | 
			
		||||
        private static Icon _emptyIcon;
 | 
			
		||||
        public static ImageList IconList { get; } = new ImageList() { ColorDepth = ColorDepth.Depth32Bit, ImageSize = new Size(20, 20) };
 | 
			
		||||
@ -76,6 +75,9 @@ namespace RCM {
 | 
			
		||||
            JArray json = new JArray(DataSources.Select(dataSource => ConfigSerializer.ObjToJson(dataSource))
 | 
			
		||||
                                    .Union(ConfigSections.Values.Select(configSection => ConfigSerializer.ObjToJson(configSection)))
 | 
			
		||||
                                    .Union(_uknownSections));
 | 
			
		||||
            if (!Directory.Exists(_dirName)) {
 | 
			
		||||
                Directory.CreateDirectory(_dirName);
 | 
			
		||||
            }
 | 
			
		||||
            File.WriteAllText(_fileName, ConfigSerializer.JsonToString(json));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								RCM/ConfigForm.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								RCM/ConfigForm.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -23,6 +23,7 @@
 | 
			
		||||
        /// the contents of this method with the code editor.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent() {
 | 
			
		||||
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigForm));
 | 
			
		||||
            this.treeView = new System.Windows.Forms.TreeView();
 | 
			
		||||
            this.tabControl = new System.Windows.Forms.TabControl();
 | 
			
		||||
            this.tabPage1 = new System.Windows.Forms.TabPage();
 | 
			
		||||
@ -103,7 +104,7 @@
 | 
			
		||||
            this.panelDataSource.Location = new System.Drawing.Point(10, 53);
 | 
			
		||||
            this.panelDataSource.Name = "panelDataSource";
 | 
			
		||||
            this.panelDataSource.Size = new System.Drawing.Size(307, 373);
 | 
			
		||||
            this.panelDataSource.TabIndex = 19;
 | 
			
		||||
            this.panelDataSource.TabIndex = 2;
 | 
			
		||||
            // 
 | 
			
		||||
            // buttonSave
 | 
			
		||||
            // 
 | 
			
		||||
@ -112,7 +113,7 @@
 | 
			
		||||
            this.buttonSave.Location = new System.Drawing.Point(131, 432);
 | 
			
		||||
            this.buttonSave.Name = "buttonSave";
 | 
			
		||||
            this.buttonSave.Size = new System.Drawing.Size(175, 23);
 | 
			
		||||
            this.buttonSave.TabIndex = 18;
 | 
			
		||||
            this.buttonSave.TabIndex = 3;
 | 
			
		||||
            this.buttonSave.Text = "Save changes";
 | 
			
		||||
            this.buttonSave.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click);
 | 
			
		||||
@ -123,7 +124,7 @@
 | 
			
		||||
            this.textBoxTitle.Location = new System.Drawing.Point(130, 9);
 | 
			
		||||
            this.textBoxTitle.Name = "textBoxTitle";
 | 
			
		||||
            this.textBoxTitle.Size = new System.Drawing.Size(175, 20);
 | 
			
		||||
            this.textBoxTitle.TabIndex = 17;
 | 
			
		||||
            this.textBoxTitle.TabIndex = 1;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelTitle
 | 
			
		||||
            // 
 | 
			
		||||
@ -140,6 +141,7 @@
 | 
			
		||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 | 
			
		||||
            this.ClientSize = new System.Drawing.Size(574, 496);
 | 
			
		||||
            this.Controls.Add(this.tabControl);
 | 
			
		||||
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
 | 
			
		||||
            this.Name = "ConfigForm";
 | 
			
		||||
            this.Text = "Configuration - Remote Connection Manager";
 | 
			
		||||
            this.tabControl.ResumeLayout(false);
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
@ -24,7 +17,6 @@ namespace RCM {
 | 
			
		||||
            treeView.ImageList = Config.IconList;
 | 
			
		||||
            treeView.ContextMenuStrip = GetNewDataSourceContextMenu();
 | 
			
		||||
            foreach (IDataSource dataSource in Config.DataSources) {
 | 
			
		||||
                string dataSourceType = dataSource.GetType().FullName;
 | 
			
		||||
                treeView.Nodes.Add(CreateTreeNodeFromDataSource(dataSource));
 | 
			
		||||
                SortTreeAndSelectNode(null);
 | 
			
		||||
            }
 | 
			
		||||
@ -39,7 +31,7 @@ namespace RCM {
 | 
			
		||||
        #region TreeView display
 | 
			
		||||
        private TreeNode CreateTreeNodeFromDataSource(IDataSource dataSource) {
 | 
			
		||||
            string imageKey = dataSource.GetType().FullName;
 | 
			
		||||
            return new TreeNode(dataSource.Title) { Tag = dataSource, ImageKey = imageKey, SelectedImageKey = imageKey, ContextMenuStrip = GetContextMenu(dataSource) };
 | 
			
		||||
            return new TreeNode(dataSource.Title) { Tag = dataSource, ImageKey = imageKey, SelectedImageKey = imageKey, ContextMenuStrip = GetContextMenu() };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SortTreeAndSelectNode(TreeNode node) {
 | 
			
		||||
@ -107,7 +99,8 @@ namespace RCM {
 | 
			
		||||
            IDataSource dataSource = (IDataSource)e.Node.Tag;
 | 
			
		||||
            dataSource.Title = e.Label;
 | 
			
		||||
            Config.Save();
 | 
			
		||||
            BeginInvoke(new AfterLabelEditWorkaround(SortTreeAndSelectNode), new object[] { e.Node }); // Workaround for treeView.Sort() triggering relabel on every sorted node. See note in https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.afterlabeledit?view=netframework-4.6
 | 
			
		||||
            // Workaround for treeView.Sort() triggering relabel on every sorted node. See note in https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.afterlabeledit?view=netframework-4.6
 | 
			
		||||
            BeginInvoke(new AfterLabelEditWorkaround(SortTreeAndSelectNode), new object[] { e.Node });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ButtonSave_Click(object sender, EventArgs e) {
 | 
			
		||||
@ -117,6 +110,7 @@ namespace RCM {
 | 
			
		||||
            dataSource.Title = selectedNode.Text = textBoxTitle.Text;
 | 
			
		||||
            Config.Save();
 | 
			
		||||
            SortTreeAndSelectNode(selectedNode);
 | 
			
		||||
            MessageBox.Show("Data source changes saved", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void NewDataSourceContextMenuItem_Click(object sender, EventArgs e) {
 | 
			
		||||
@ -159,7 +153,7 @@ namespace RCM {
 | 
			
		||||
            ContextMenuStrip menu = new ContextMenuStrip();
 | 
			
		||||
            ToolStripMenuItem menuItem = new ToolStripMenuItem("New item");
 | 
			
		||||
            foreach (Type type in Config.DataSourceTypes) {
 | 
			
		||||
                ToolStripMenuItem item = new ToolStripMenuItem(type.GetDisplayName()) { Tag = type };
 | 
			
		||||
                ToolStripMenuItem item = new ToolStripMenuItem(type.GetDisplayName()) { Tag = type, Image = Config.IconList.Images[type.FullName] };
 | 
			
		||||
                item.Click += NewDataSourceContextMenuItem_Click;
 | 
			
		||||
                menuItem.DropDownItems.Add(item);
 | 
			
		||||
            }
 | 
			
		||||
@ -167,7 +161,7 @@ namespace RCM {
 | 
			
		||||
            return menu;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private ContextMenuStrip GetContextMenu(IDataSource dataSource) {
 | 
			
		||||
        private ContextMenuStrip GetContextMenu() {
 | 
			
		||||
            ContextMenuStrip menu = new ContextMenuStrip();
 | 
			
		||||
            ToolStripMenuItem duplicateItem = new ToolStripMenuItem("Duplicate item");
 | 
			
		||||
            duplicateItem.Click += DuplicateDataSourceContextMenuItem_Click;
 | 
			
		||||
 | 
			
		||||
@ -117,4 +117,467 @@
 | 
			
		||||
  <resheader name="writer">
 | 
			
		||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 | 
			
		||||
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
    <value>
 | 
			
		||||
        AAABAAsAMDAQAAEABABoBgAAtgAAACAgEAABAAQA6AIAAB4HAAAYGBAAAQAEAOgBAAAGCgAAEBAQAAEA
 | 
			
		||||
        BAAoAQAA7gsAADAwAAABAAgAqA4AABYNAAAgIAAAAQAIAKgIAAC+GwAAGBgAAAEACADIBgAAZiQAABAQ
 | 
			
		||||
        AAABAAgAaAUAAC4rAAAwMAAAAQAgAKglAACWMAAAICAAAAEAIACoEAAAPlYAABAQAAABACAAaAQAAOZm
 | 
			
		||||
        AAAoAAAAMAAAAGAAAAABAAQAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
 | 
			
		||||
        AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAHAAAAAAAAAA
 | 
			
		||||
        AAAAcAcHBxYWFhYWFhYWEAcAAAAAAAAAAAAAAI//////////////+AYAAAAAAAAAAAAAcP//////////
 | 
			
		||||
        /////wEAAAAAAAAAAAAAcBiIiIiIj/iIiIiIhgcAAAAAAAAAAAAAAAAAAAAAf/cAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAHcHAHAAf/cABwBwABAAAAAAAAAAAAAAAAAAAABwf/cHAAAHAABwAAAAAAAAAAAAAAAAAAAAf/cA
 | 
			
		||||
        AAAACHAAAAAAAABwAAAAAAAAAAAAf/cAAABwf/gAcAAAAAcAcHBxYWcWF2F2j/gWcWAAD/+AAAAAAAAI
 | 
			
		||||
        //////////////////EAB//4AHAAAAAP//////////////////cHAH//gAAAAAAP/4iIiIeIiHiHiHiI
 | 
			
		||||
        eHAAAAf/+ABwAAAP/wAAAAAAAAAAAAAAAABwAAB//4ABAAAP/wABYBYWAWFhBwFgcHAAAAAH//gAcAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAf/+AYAAP/wAAAAAAAAAAAAAAAAAAAAAACP/wAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAj/9wcAAP/wAAAAAAAAAAAAAAAAAAABAP//cAAAAP/wAAAAAAAAAAAAAAAAAABgD//3AAAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAEAj/9wBwAAAP/wAAAAAAAAAAAAAAAAAHAP//cABwAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAACP/3AAAAAAAP/wAAAAAAAAAAAAAAAAAAf/9wAHhwcAAP/wAAAAAAAAAAAAAAAAAAf/cAB4+AAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAeP+AAAAP/wAAAAAAAAAAAAAAAAAAAAAHj/gAcAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAABwB//4AHAAAP/wAAAAAAAAAAAAAAAAAAAAf/+ABwAAAP/wAAAAAAAAAAAAAAAAAAAH//gAEAAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAB//4AHAAAAAP/wBwAAAAAAAAAAAAAAAAf/+AAAAAAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AABwf/9wBwAAAAAP/3B3FncWdxZxZxZxZwAACP/3AAAAAAAP//////////////////cAAI/4cAAAAAAP
 | 
			
		||||
        //////////////////cHAA//9wAAAAcHeIh4h4h4h4iIeIh4iHAABwCP/3AAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AABwAAAP/4cAAAAHcBYBYWBwFgFhYBYWFnAAAAcAj/9wcAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAHAI+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAcAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /////wAA////////AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/wAAAA/8AAP/AAAAD/wAA/+AAAAf/
 | 
			
		||||
        AAD/8AAAB/8AAP//8A+B/wAA///wD4D/AADAAAAAAH8AAIAAAAAAPwAAgAAAAAAfAACAAAAAAA8AAIAA
 | 
			
		||||
        AABgBwAAgAAAAHADAACAAAAB+AEAAID////8AQAAgP////wBAACA////+AEAAID////wAwAAgP///+AH
 | 
			
		||||
        AACA////wAcAAID///+ABwAAgP///4ADAACA////gAEAAID///+AAQAAgP///4ABAACA////wAEAAID/
 | 
			
		||||
        ///gAwAAgP///+AHAACA////wA8AAID///+AHwAAgH///4A/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAAf
 | 
			
		||||
        AACAAAAAAA8AAIAAAABgBwAAwAAAAHADAADgAAAB+AEAAP/////8AQAA//////4BAAD//////wEAAP//
 | 
			
		||||
        ////gwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
 | 
			
		||||
        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAeHh3h3h3h3cAAAAAAAAAAP//
 | 
			
		||||
        ////////AAAAAAAAAAB3d3d/93d3cAAAAAAAAAAAAAAAD/AAAABwAAAAAAAAAAAAAA/wAABwAAAAAAAA
 | 
			
		||||
        AAAHAAAP8AB3CPBwAAAAeHh4d3h4f/d3cAj/AAAAAP////////////AAj/AAAAD/d3d3d3d3d3cABwj/
 | 
			
		||||
        cAAA/wAAAAAAAAAAcAAAj4BwAP8AAAAAAAAAAAAABwj/AAD/AAAAAAAAAAAAAAAP+AAA/wAAAAAAAAAA
 | 
			
		||||
        AAAHj4BwAP8AAAAAAAAAAAAAePgAAAD/AAAAAAAAAAAAcP+ABwAA/wAAAAAAAAAAAAj4AHAAAP8AAAAA
 | 
			
		||||
        AAAAAAAIgAf/AAD/AAAAAAAAAAAAcAB/9wAA/wAAAAAAAAAAAAcHj3AAAP8AAAAAAAAAAAAAf/cAAAD/
 | 
			
		||||
        AAAAAAAAAAAAB/9wAAAA/wAAAAAABwAHBw/3AAAAAP93eHh4eHd4d3AH/3AAAAD////////////wcH/3
 | 
			
		||||
        AAAAd3d3d3d3d3d3AAcH/3AAAAAAAAAAAAAAAHAAcH/3AAAAAAAAAAAAAAAAAAcHjwAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAcHcAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAD//////wAA//4AAH/+AAB//gAAf/8A
 | 
			
		||||
        AH///Dw/wAAAH4AAAA+AAAAHgAACA4AABwGH//+Bh///gYf//wGH//4Dh//8A4f//AGH//wBh//8AYf/
 | 
			
		||||
        /gOH//4Hh//8D4AAAA+AAAAPgAAAB4AAAgPAAAcB////gf///8H////z/////ygAAAAYAAAAMAAAAAEA
 | 
			
		||||
        BAAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA
 | 
			
		||||
        wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAHAAAWAAFgcAAAAAAA////
 | 
			
		||||
        ////AAAAAAAHB3Foh3BwcAAAAAAAAAAIgABwAAAAAHBwcHcIgHcIgAAAAIh4iHeP+HcH+AAAd/j4iPiI
 | 
			
		||||
        iIcAf4AAd/AAAAAWAQcAB/gAd/AAAAAAAAAAAH9wd/AAAAAAAAAAcPgAd4AAAAAAAAAHD4CAd/AAAAAA
 | 
			
		||||
        AAAA+ABwd/AAAAAAAAB4gHgQd4AAAAAAAAAAAI9gd/AAAAAAAAAHD/Bwd/AAAAAAAAAA/2EAd4BxZ3Fn
 | 
			
		||||
        cWd48QAAd/h4d4eHeIcA/wAAAYj4+I+PiIdxb4AABwAAAAAABgEAcP8AAAAAAAAAAAAABw9wAAAAAAAA
 | 
			
		||||
        AAAAAHAAAAAAAAAAAAAAAAAA////APgAHwD4AB8A+AAfAP/DHwDAAA8AgAAHAAAAAwAAAMEAD//hAA//
 | 
			
		||||
        wQAP/4EAD/+BAA//AQAP/4EAD/+BAA//gwAAAAcAAAAHAIAAAwCAAMEA///hAP//8QD///8AKAAAABAA
 | 
			
		||||
        AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
 | 
			
		||||
        AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAHiIiIiHAAAAAHCHcH
 | 
			
		||||
        AAAAAAB3dwBwAHiIiI+IcPcADwdwcHBwD3B/cAAAAAB3hw9wAAAAAHhweHAAAAAHgAAPAAAAAAB3939w
 | 
			
		||||
        AAAAB3gADwAAAAAHgAB/iIiIiHD3AAcHcHcHAHhwAAAAAAAAAIcAAAAAAAAAAP//AADgBwAA8A8AAPwn
 | 
			
		||||
        AAAAAwAAABEAAB/wAAAf8QAAH+EAAB/gAAAf4QAAH+MAAAADAACAEQAA//gAAP//AAAoAAAAMAAAAGAA
 | 
			
		||||
        AAABAAgAAAAAAAAJAAAAAAAAAAAAAAABAAAAAQAAAAAAAAUFBQAICAgADAwMABEREQAVFRUAGBgYAB0d
 | 
			
		||||
        HQAgICAAJSUlACsrKwAtLS0AMjIyADU1NQA5OTkAPj4+AEFBQQBFRUUASkpKAExMTABRUVEAVlZWAFhY
 | 
			
		||||
        WABdXV0AYGBgAGZmZgBpaWkAbGxsAHFxcQB1dXUAenp6AH5+fgCPj48AmJiYAKSkpACtra0AsbGxALW1
 | 
			
		||||
        tQC7u7sAwcHBAMXFxQDJyckAzMzMANDQ0ADZ2dkA6urqAO3t7QD19fUA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBcAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAfAAQRExMTExMTExMTExMTExMTExMTExMTBAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAPACf/
 | 
			
		||||
        ////////////////////////////JwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAMAC7/////////////////
 | 
			
		||||
        ////////////LgALAAAAAAAAAAAAAAAAAAAAAAAAAAAXABMjJCQkJCQkJCQs//8sJCQkJCQkJCQjFAAU
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAf//8fAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAB8TDwwMDAwMBAAf//8fAAQMDAwMDAcAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAFwAf//8fABcAAAAAABcAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAf//8f
 | 
			
		||||
        AAsAAAAAAAQEISEEAA8AAAAAAAAAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAf//8fAAAAAAALEQAc//8n
 | 
			
		||||
        BAAPAAAAAAAAAAAcAAQRExMTExMTExMTExMTExMTExMi//8iExMTEwsAAAAR////KQQADwAAAAAAAAAH
 | 
			
		||||
        ACf///////////////////////////////////8RAAAAGP///ycEAA8AAAAAAAAEAP//////////////
 | 
			
		||||
        //////////////////////8YAA8AABwv//8nBAAPAAAAAAAABC///yQkJCQkJCQkJCQkJCQkJCQkJCQk
 | 
			
		||||
        JCQkJCAEBAAABAAY////KQQADwAAAAAAAC//LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQA
 | 
			
		||||
        GP///ycEAA8AAAAABC//LwQACQwMDAwMDAwMDAwMDAwMDAwMDAwMERgAAAAAAAAEABj///8nBAAdAAAA
 | 
			
		||||
        AP//LgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY////JgAMAAAABC//LwAEAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAELP//LgAJAAAAAP//LwQAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAPAAQp////GAARAAAABC//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwA
 | 
			
		||||
        BCn///8YAAQAAAAAAP//LwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAEJ////xgABAAAAAAA
 | 
			
		||||
        BC//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAQn////GAAEHwAAAAAAAP//LwQAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAABMABCn///8YAAAEHAAAAAAABC//LgQEAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAQEJ////xgAAAAAAAcAAAAAAP//LwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd////
 | 
			
		||||
        GAAAABQkFAATAAAABC//LgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/y8YAAAAGP//LgAJAAAA
 | 
			
		||||
        AP//LwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACwsAAAAY////JwAMAAAABC//LwQAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAABj///8pBAAcAAAAAP//LgAEAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAFwAAGP///ycHAA8AAAAABC//LwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAY
 | 
			
		||||
        ////JwcADAAAAAAAAP//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABf///8pBAAMAAAAAAAA
 | 
			
		||||
        BC//LwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAF////ycHAA8AAAAAAAAAAP//LwAEHQAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAR////KQQACwAAAAAAAAAABC//LwQAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAALEQAd////GAAAGAAAAAAAAAAAAP//LxMTExMTExMTExMTExMTExMTExMTExMTEwsAAAAEK///
 | 
			
		||||
        /xQABAAAAAAAAAAEAC////////////////////////////////////8RAAQABCv///8UAAQAAAAAAAAE
 | 
			
		||||
        AC7///////////////////////////////////8YABwLAAcp//8vFwAEAAAAAAARABMjIyQjJCMkIyQj
 | 
			
		||||
        JCMkIyQjJCMkIyQjJCMkIyAEBAAADAAHKf///xQABAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAHAAAAAsAByv//y8XAAQAAAAAAB8TDwwMDAwMDAwMDAwMDAwMDAwMDAwMDAwPDxgAAAAAAAAL
 | 
			
		||||
        AAcp//8vFAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAHKf//LgALAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAByn/JwALAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQRBAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAFwQABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /////wAA////////AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/wAAAA/8AAP/AAAAD/wAA/+AAAAf/
 | 
			
		||||
        AAD/8AAAB/8AAP//8A+B/wAA///wD4D/AADAAAAAAH8AAIAAAAAAPwAAgAAAAAAfAACAAAAAAA8AAIAA
 | 
			
		||||
        AABgBwAAgAAAAHADAACAAAAB+AEAAID////8AQAAgP////wBAACA////+AEAAID////wAwAAgP///+AH
 | 
			
		||||
        AACA////wAcAAID///+ABwAAgP///4ADAACA////gAEAAID///+AAQAAgP///4ABAACA////wAEAAID/
 | 
			
		||||
        ///gAwAAgP///+AHAACA////wA8AAID///+AHwAAgH///4A/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAAf
 | 
			
		||||
        AACAAAAAAA8AAIAAAABgBwAAwAAAAHADAADgAAAB+AEAAP/////8AQAA//////4BAAD//////wEAAP//
 | 
			
		||||
        ////gwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAB
 | 
			
		||||
        AAAAAAAABQUFAAkJCQANDQ0AERERABUVFQAZGRkAHBwcACIiIgAlJSUAKCgoAC0tLQA3NzcAOTk5AD09
 | 
			
		||||
        PQBBQUEARUVFAElJSQBMTEwAUlJSAFVVVQBiYmIAZWVlAGlpaQBsbGwAcXFxAHZ2dgB5eXkAfX19AIaG
 | 
			
		||||
        hgCJiYkApaWlALKysgC4uLgAv7+/AN7e3gDl5eUA7e3tAPHx8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0GBQUFBQUFBQUFBQUF
 | 
			
		||||
        BQwAAAAAAAAAAAAAAAAAAAAFEx0dHR0dHR0dHR0dHR0dEwUAAAAAAAAAAAAAAAAAAAAmKSkpKSkpKSkp
 | 
			
		||||
        KSkpKSkmAAAAAAAAAAAAAAAAAAAABREaGhoaGhopJhsaGhoaGhEFAAAAAAAAAAAAAAAAAAAAEQoICAgE
 | 
			
		||||
        ACkpAAUGCAgEABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSYAAAAAAAoFBAYAAAAAAAAAAA0GBQUFBQUF
 | 
			
		||||
        BQUFBAApKQAEBg0YACMkCgYAAAAAAAAEEx4dHR0dHR0dHR0dHikmHh4eEwAAICkkCgYAAAAAAAAmKSkp
 | 
			
		||||
        KSkpKSkpKSkpKSkpKSkkAAgEICkkCgYAAAAAACkpGxoaGhoaGhoaGhoaGhoaGxEGAA0EICkkCgYAAAAA
 | 
			
		||||
        KSYEBAgICAgICAgICAgICAgKEQAAABEAISkkCggAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEISkk
 | 
			
		||||
        AAAAACkpAAAAAAAAAAAAAAAAAAAAAAAAAAAABQokKSAAAAAAKSYEAAAAAAAAAAAAAAAAAAAAAAAAAAYK
 | 
			
		||||
        JCkhBBEAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAGCiQpIQANAAAAACkpAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        CAokKSEEAA0AAAAAKSYEAAAAAAAAAAAAAAAAAAAAAAAAJCkhAAAREQUAAAApJgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAfHwQAGCkmAAAAACkpAAAAAAAAAAAAAAAAAAAAAAAAFQQAABUpKRgEAAAAKSYEAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAFQAYKSkYAAAAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAAGCkpGAAAAAAAACkpAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAABBUpKRgAAAAAAAAAKSYEAAYFBQUFBQUFBQUFBQUGDRUAJikfAA0AAAAAAAApKR0d
 | 
			
		||||
        HR0dHR0dHR0dHR0dHR4TAAAaKSkVBAAAAAAAACYpKSkpKSkpKSkpKSkpKSkpKSQAEQAaKSkVAAAAAAAF
 | 
			
		||||
        ERoaGhoaGhoaGhoaGhoaGhobEQYAGwAaKSkVAAAAAAARCggICAgICAgICAgICAgICAoRAAAAGwAaKSkV
 | 
			
		||||
        BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAaKSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        GwAVEwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAP//////AAD//gAAf/4AAH/+AAB//wAAf//8PD/AAAAfgAAAD4AAAAeAAAIDgAAHAYf/
 | 
			
		||||
        /4GH//+Bh///AYf//gOH//wDh//8AYf//AGH//wBh//+A4f//geH//wPgAAAD4AAAA+AAAAHgAACA8AA
 | 
			
		||||
        BwH///+B////wf////P/////KAAAABgAAAAwAAAAAQAIAAAAAABAAgAAAAAAAAAAAAAAAQAAAAEAAAAA
 | 
			
		||||
        AAAEBAQACQkJAAwMDAASEhIAFhYWABkZGQAcHBwAISEhACUlJQAzMzMANDQ0ADo6OgA+Pj4AQUFBAEpK
 | 
			
		||||
        SgBOTk4AUVFRAFVVVQBYWFgAZWVlAGlpaQBsbGwAcXFxAHV1dQB/f38AgICAAIaGhgCUlJQAm5ubAKOj
 | 
			
		||||
        owCkpKQAra2tAL6+vgDAwMAA0dHRANXV1QDY2NgA6enpAOzs7ADx8fEA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcGCQkJCQkJCQkJCQYWAAAAAAAAAAAAAAYnKioq
 | 
			
		||||
        KioqKioqKicGAAAAAAAAAAAAABANExMTEyQkExMTEw0QAAAAAAAAAAAAAAAAAAAABiIiBgAAFAAKAAAA
 | 
			
		||||
        AAAAABEQEA8QEA8QAiIiAhAXDxsdBAAAAAAACh4eHh4eHh4eHiYmHh4TABYqHgQAAAAWGSolJCQkJSQl
 | 
			
		||||
        JSQkJSUbDQkXKh4EAAAUGSoABgYGBgYGBgYGBgYPAAAJFyofBAAUGSkCAAAAAAAAAAAAAAAAAAAAAB0q
 | 
			
		||||
        FgAUGSoAAAAAAAAAAAAAAAAAAAARDSckBgAUGSoCAAAAAAAAAAAAAAAAABENJyUGGwAUGSkCAAAAAAAA
 | 
			
		||||
        AAAAAAAAAA0nJAYAEQAUGSoAAAAAAAAAAAAAAAAAER8lBgYiEQAUGSoCAAAAAAAAAAAAAAAAAAYCBiQp
 | 
			
		||||
        CgAUGSkCAAAAAAAAAAAAAAAAABcGJCkKEQAUGSoAAAAAAAAAAAAAAAAAAAYkJw0QAAAUGSoADxAPEBAP
 | 
			
		||||
        EBAPEBAXDR8qEQkAAAAWGSoeHh4eHh4eHh4eHh4TAA8pIwQAAAAAECQlJCQkJCUkJCQlJCUbEA8NKSMG
 | 
			
		||||
        AAAAEwkGBgYGBgYGBgYGBgYPAAAPDSkjBAAAAAAAAAAAAAAAAAAAAAAAAAAADw0pFgAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAABEGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A+AAfAPgAHwD4AB8A/8MfAMAA
 | 
			
		||||
        DwCAAAcAAAADAAAAwQAP/+EAD//BAA//gQAP/4EAD/8BAA//gQAP/4EAD/+DAAAABwAAAAcAgAADAIAA
 | 
			
		||||
        wQD//+EA///xAP///wAoAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAACkp
 | 
			
		||||
        KQAsLCwAMjIyADU1NQA5OTkAPj4+AEBAQABEREQASEhIAE5OTgBRUVEAWVlZAF5eXgBiYmIAZ2dnAGho
 | 
			
		||||
        aABsbGwAcnJyAHZ2dgB7e3sAf39/AJycnACmpqYAs7OzALS0tADCwsIA1tbWANnZ2QDh4eEA5+fnAOjo
 | 
			
		||||
        6AD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAARGBoaGhoaGhgRAAAAAAAAAAkJCRYWCQkDAAAAAAAAAAAAAA8VFREACQoA
 | 
			
		||||
        AAANGBoaGhoaHR0aCgMdCwAACSAJCQkKCQkJCgoACR0LAAkgCgAAAAAAAAAAABUTHQ8JIAoAAAAAAAAA
 | 
			
		||||
        AAALHwYACSAKAAAAAAAAAAAKHQMDAAkgCgAAAAAAAAAACQETGw8JIAoAAAAAAAAAABURHQMACSABAAAA
 | 
			
		||||
        AAAAAAANHQEAAAogGhoaGhoaGhoKAR0RAAAACQkJCgkJCgkKCgAGHREAAAAAAAAAAAAAAAAAAAMXEQAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAD//wAA4AcAAPAPAAD8JwAAAAMAAAARAAAf8AAAH/EAAB/hAAAf4AAAH+EAAB/j
 | 
			
		||||
        AAAAAwAAgBEAAP/4AAD//wAAKAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA
 | 
			
		||||
        AC8AAABWAAAAawAAAHAAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAA
 | 
			
		||||
        AHIAAAByAAAAcgAAAHIAAAByAAAAcAAAAGsAAABZAAAAMQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAgAAAAngAAAO8AAAD9AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD9AAAA8AAAAKMAAAAjAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAACCAAAA/A4ODv9HR0f/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tL
 | 
			
		||||
        S/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9HR0f/EBAQ/wAA
 | 
			
		||||
        AP0AAACGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAADEAAAA/8PDw/7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+
 | 
			
		||||
        /v7+/v7+yMjI/wAAAP4AAADFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADNAAAA/+7u7v7+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+//7+/v7+/v7+7u7u/wAAAP4AAADOAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAClAAAA/0tL
 | 
			
		||||
        S/+tra3/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf/Y2Nj//v7+///////Y2Nj/sbGx/7Gx
 | 
			
		||||
        sf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+urq7/UFBQ/wAAAP4AAACpAAAABgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAABEAAAA2wAAAP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP9/f3/+/v7+/v7+
 | 
			
		||||
        /v9/f3/+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAOIAAABKAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAGAAAAMwAAAIQAAACzAAAAxwAAAMwAAADMAAAAzAAAAMwAAADNAAAA8wAA
 | 
			
		||||
        AP5/f3/+/v7+/v7+/v9/f3/+AAAA/gAAAPMAAADNAAAAzAAAAMwAAADMAAAAzwAAAOEAAAD7AAAA/QAA
 | 
			
		||||
        AMsAAABrAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAQAAAAEAAAABAAA
 | 
			
		||||
        AAQAAAAGAAAAowAAAP9/f3///v7+//////9/f3//AAAA/gAAAKMAAAAGAAAABAAAAAQAAAAEAAAAGAAA
 | 
			
		||||
        AKUAAAD8AAAA/wAAAP8AAAD7AAAAuQAAAC0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAADQAAAC0AAABTAAAAZAAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAA
 | 
			
		||||
        AGsAAABrAAAAawAAAGsAAABsAAAA0gAAAP5/f3/+/v7+/v7+/v9/f3/+AAAA/gAAANEAAABqAAAAXQAA
 | 
			
		||||
        AD8AAAAaAAAARAAAAPQPDw/+mZmZ/5iYmP4RERH+AAAA/gAAAMQAAAAuAAAAAQAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAlAAAAnwAAAO8AAAD9AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP9/f3///v7+//7+/v9/f3//AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAPoAAADTAAAAugAAAP5wcHD//v7+//7+/v/Gxsb/ERER/wAAAP4AAADEAAAALQAA
 | 
			
		||||
        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAACUAAAA/Q0NDf9GRkb+S0tL/ktLS/9LS0v+S0tL/ktL
 | 
			
		||||
        S/9LS0v+S0tL/0tLS/5LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/+lpaX+/v7+/v//
 | 
			
		||||
        //+kpKT+S0tL/ktLS/9LS0v+S0tL/iwsLP8AAAD+AAAA/gAAAP5GRkb++/v7//7+/v7+/v7+yMjI/xER
 | 
			
		||||
        Ef4AAAD+AAAAxgAAAC0AAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAADfAAAA/sTExP/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/vn5+f9ERET+AAAA/gAAAP4AAAD+ZWVl//z8
 | 
			
		||||
        /P7+/v7+/v7+/8bGxv4SEhL+AAAA/gAAAMQAAAAuAAAAAQAAAAAAAAAAAAAAAAAAACkAAAD2BwcH/vf3
 | 
			
		||||
        9//+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v9oaGj+AAAA/gAA
 | 
			
		||||
        AMgAAAD2AAAA/mdnZ/77+/v+/v7+//7+/v7Gxsb+EhIS/wAAAP4AAADEAAAALgAAAAEAAAAAAAAAAAAA
 | 
			
		||||
        ADMAAAD7CAgI//f39//+/v7/+/v7/7W1tf+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Ky
 | 
			
		||||
        sv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/4+P
 | 
			
		||||
        j/8MDAz/AAAA8QAAAEgAAAB7AAAA9gAAAP9mZmb/+vr6///////+/v7/yMjI/xISEv8AAAD+AAAAxQAA
 | 
			
		||||
        AC4AAAABAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD3AAAAlAAAAA8AAAAMAAAAewAAAPcAAAD+ZmZm//v7+/7+/v7+/v7+/8XF
 | 
			
		||||
        xf4TExP+AAAA/gAAAMEAAAAnAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAAD+AAAA2wAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMsAAADKAAAAvwAAAJ8AAABaAAAAFQAAAAAAAAAAAAAADAAAAH0AAAD2AAAA/mho
 | 
			
		||||
        aP76+vr+/v7+//7+/v7FxcX+EhIS/wAAAP0AAACNAAAABAAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJ
 | 
			
		||||
        Cf8AAAD2AAAALwAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAcAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAwAAAB/AAAA+gAAAP9nZ2f/+vr6///////+/v7/u7u7/wAAAP8AAADOAAAADgAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAEAAABCAAAA8AAAAP4TExP+29vb//7+/v7+/v7+7e3t/wICAv4AAADaAAAAEQAA
 | 
			
		||||
        ADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAADGAAAA/hISEv7FxcX+/v7+//7+/v77+/v+ZGRk/wAA
 | 
			
		||||
        AP4AAAC5AAAACgAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAMgAAAD+ERER/8jIyP/+/v7//v7+//r6
 | 
			
		||||
        +v9nZ2f/AAAA/wAAAPIAAABaAAAAAQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAxgAAAP4SEhL+xsbG//7+
 | 
			
		||||
        /v7+/v7++/v7/2dnZ/4AAAD+AAAA9wAAAHsAAAAMAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAADGAAAA/hER
 | 
			
		||||
        Ef7Gxsb+/v7+//7+/v77+/v+aGho/wAAAP4AAAD4AAAAgAAAAA4AAAAAAAAAAAAAADYAAAD9CAgI//f3
 | 
			
		||||
        9//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAA
 | 
			
		||||
        ALEAAAD+ERER/8nJyf/+/v7//v7+//r6+v9mZmb/AAAA/wAAAP8AAADvAAAAkgAAADkAAAAHAAAAAAAA
 | 
			
		||||
        ADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAPgAAAPYQEBD+xsbG//7+/v7+/v7++/v7/2ZmZv4AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AOEAAABSAAAAAQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAP50dHT+/v7+//7+/v77+/v+Z2dn/wAAAP4AAAD+AAAA/1NT
 | 
			
		||||
        U/6zs7P+UlJS/wAAAP4AAAC1AAAACgAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVgAAAP5MTEz/+vr6//n5+f9lZWX/AAAA/wAA
 | 
			
		||||
        AP8AAAD/X19f//r6+v/+/v7/7e3t/wMDA/8AAADaAAAAEQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAN8AAAD+Li4u/ysr
 | 
			
		||||
        K/4AAAD+AAAA/gAAAP5gYGD++Pj4//7+/v7+/v7+wMDA/wAAAP4AAADQAAAADwAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA
 | 
			
		||||
        AFwAAADQAAAA+QAAAP4AAAD+AAAA/15eXv74+Pj+/v7+//7+/v7Ly8v+FhYW/wAAAP4AAACSAAAABQAA
 | 
			
		||||
        ADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAAAnAAAAqAAAAP8AAAD/Xl5e//r6+v/+/v7//v7+/8vLy/8VFRX/AAAA/gAA
 | 
			
		||||
        AMUAAAApAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAB1AAAA9AAAAP5fX1/++Pj4//7+/v7+/v7+y8vL/xUV
 | 
			
		||||
        Ff4AAAD+AAAAygAAADIAAAABAAAAAAAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAADzAAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAGoAAADzAAAA/15eXv/5+fn//v7+//7+
 | 
			
		||||
        /v/MzMz/FhYW/wAAAP4AAADKAAAAMwAAAAEAAAAAAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAOEAAAD+XV1d//v7
 | 
			
		||||
        +/7+/v7+/v7+/8vLy/4VFRX+AAAA/gAAAMkAAAAyAAAAAQAAAAAAAAAAAAAAAAAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAAD7AAAAjAAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAA
 | 
			
		||||
        AGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABpAAAAXQAAAEAAAAAbAAAAXAAA
 | 
			
		||||
        AP1DQ0P++fn5//7+/v7+/v7+zMzM/xQUFP4AAAD+AAAA0gAAADIAAAABAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        ADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        APoAAADTAAAAvQAAAP53d3f//v7+//7+/v/+/v7/Z2dn/wAAAP8AAAD+AAAAoAAAAAwAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAADUAAAD8CAgI/vf39//+/v7+9/f3/lJSUv9LS0v+S0tL/ktLS/9LS0v+S0tL/0tL
 | 
			
		||||
        S/5LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktL
 | 
			
		||||
        S/9LS0v+S0tL/iwsLP8AAAD+AAAA/gAAAP4UFBT+0dHR//7+/v7+/v7++vr6/1dXV/4AAAD+AAAA9AAA
 | 
			
		||||
        AHAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAD4CAgI/vf39//+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/vn5+f9ERET+AAAA/gAAAPUAAAD+FxcX/9LS0v7+/v7+/v7+//f3
 | 
			
		||||
        9/5YWFj+AAAA/gAAAPIAAABwAAAACwAAAAAAAAAAAAAAAAAAACAAAADtAwMD/+zs7P/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v9paWn/AAAA/gAAAJMAAADQAAAA/hkZ
 | 
			
		||||
        Gf/R0dH//v7+//7+/v/39/f/WFhY/wAAAP8AAADyAAAAcAAAAAoAAAAAAAAAAAAAAAwAAAC7AAAA/ktL
 | 
			
		||||
        S/+urq7+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/7Kysv6ysrL+srKy/rKysv+ysrL+srKy/rKy
 | 
			
		||||
        sv+ysrL+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/o+Pj/8MDAz+AAAA8QAA
 | 
			
		||||
        ADkAAAA0AAAA0AAAAP4YGBj+0NDQ//7+/v7+/v7++fn5/1hYWP4AAAD+AAAA8wAAAG8AAAAKAAAAAAAA
 | 
			
		||||
        AAEAAABMAAAA3QAAAP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD3AAAAlQAAAA8AAAABAAAANAAAANEAAAD+GBgY/9HR0f7+/v7+/v7+//f39/5ZWVn+AAAA/gAA
 | 
			
		||||
        AO4AAABUAAAAAQAAAAAAAAAGAAAANAAAAIQAAAC1AAAAxwAAAMsAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMsAAADKAAAAvwAAAKAAAABbAAAAFQAAAAAAAAAAAAAAAQAAADYAAADRAAAA/hkZGf/R0dH//v7+//7+
 | 
			
		||||
        /v/39/f/VlZW/wAAAP4AAAC0AAAACQAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAHAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAcAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA1AAAA0AAA
 | 
			
		||||
        AP4YGBj+0NDQ//7+/v7+/v7+6urq/wICAv4AAADYAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAABAAAANQAAANEAAAD+GBgY/9DQ0P7+/v7+wsLC/wAAAP4AAADPAAAADwAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAADOAAAA/g4ODv9CQkL/Dg4O/wAAAP0AAACOAAAABQAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAvAAAApwAAAOsAAAD4AAAA6QAA
 | 
			
		||||
        AJ8AAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA
 | 
			
		||||
        ACUAAAA1AAAAJgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA/+AAAAf/AAD/wAAAA/8AAP+A
 | 
			
		||||
        AAAB/wAA/4AAAAH/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAAf8AAP/4AAAAfwAAwAAAAAA/
 | 
			
		||||
        AACAAAAAAB8AAAAAAAAADwAAAAAAAAAHAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAABAAAAAAAAYAAAAAAA
 | 
			
		||||
        AAHwAAAAAH////AAAAAAf///8AAAAAB////gAAAAAH///8ABAAAAf///gAMAAAB///8AAQAAAH///wAA
 | 
			
		||||
        AAAAf///AAAAAAB///8AAAAAAH///wAAAAAAf///AAAAAAB///+AAQAAAH///4ABAAAAf///AAMAAAB/
 | 
			
		||||
        //8ABwAAAAAAAAAPAAAAAAAAAB8AAAAAAAAADwAAAAAAAAAHAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAA
 | 
			
		||||
        AACAAAAAYAAAAPAAAAHwAAAA//////gAAAD//////AAAAP/////+AQAA//////+DAAD///////8AACgA
 | 
			
		||||
        AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAABwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAIAAABYAAAAxgAAAOYAAADsAAAA7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7QAA
 | 
			
		||||
        AO0AAADtAAAA7QAAAOwAAADnAAAAyAAAAFwAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAO9UVFT/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eH
 | 
			
		||||
        h/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/9XV1f/AAAA8AAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAA/vLy8v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//Pz8/8AAAD+AAAAPAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAADrR0dH/3Z2dv92dnb/dnZ2/3Z2
 | 
			
		||||
        dv92dnb/enp6//v7+//7+/v/eXl5/3Z2dv92dnb/dnZ2/3Z2dv92dnb/SUlJ/wAAAO0AAAAgAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEsAAAC2AAAA1wAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAO4GBgb++Pj4//j4+P8GBgb+AAAA7gAAAN0AAADdAAAA3gAAAPAAAAD+AAAArQAA
 | 
			
		||||
        ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAAcAAAAHAAAABwAA
 | 
			
		||||
        AAgAAAAKAAAACwAAAAsAAAALAAAAdQYGBv74+Pj/+Pj4/wYGBv4AAAB1AAAACQAAAAUAAAAWAAAA0g4O
 | 
			
		||||
        Dv4ODg7+AAAA3gAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABaAAAAxAAAAOQAAADpAAAA6QAA
 | 
			
		||||
        AOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAAD1BgYG//j4+P/4+Pj/BgYG/gAAAPUAAADjAAAAwwAA
 | 
			
		||||
        AJQCAgL+3d3d/+Xl5f8pKSn+AAAA5QAAADsAAAAAAAAAAAAAAAAAAAAAAAAALgAAAPNUVFT/hoaG/4aG
 | 
			
		||||
        hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+JiYn/+/v7//v7+/+JiYn/hoaG/4aG
 | 
			
		||||
        hv9SUlL/AAAA/gAAAP6ysrL//v7+/+bm5v8pKSn+AAAA5QAAADwAAAAAAAAAAAAAAAAAAABlAwMD/vb2
 | 
			
		||||
        9v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+/+3t7f8BAQH+AAAA4ggICP64uLj//v7+/+bm5v8pKSn+AAAA5QAAADwAAAAAAAAAAAAA
 | 
			
		||||
        AHYFBQX++fn5//v7+/96enr/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3
 | 
			
		||||
        d/93d3f/d3d3/3d3d/93d3f/RUVF/gAAAOoAAAA2AAAAvgkJCf64uLj//v7+/+bm5v8pKSn+AAAA5QAA
 | 
			
		||||
        ADwAAAAAAAAAeAUFBf75+fn/9/f3/wYGBv4AAADvAAAA3QAAAN0AAADdAAAA3QAAAN0AAADdAAAA3QAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAN0AAADdAAAA3AAAANcAAAC0AAAASgAAAAEAAAAWAAAAvgkJCf64uLj//v7+/+bm
 | 
			
		||||
        5v8pKSn+AAAA2gAAABYAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGsAAAAFAAAABQAAAAUAAAAFAAAABQAA
 | 
			
		||||
        AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAYAAAA1AkJ
 | 
			
		||||
        Cf6/v7///v7+/97e3v8BAQH+AAAAQgAAAHgFBQX++fn5//f39/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        ADsAAADqKSkp/+bm5v/+/v7/srKy/wAAAPwAAAA3AAAAeAUFBf75+fn/9/f3/wYGBv4AAABmAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAA7AAAA5ikpKf/m5ub//v7+/7i4uP8JCQn+AAAAtAAAAAoAAAB4BQUF/vn5+f/39/f/BgYG/gAA
 | 
			
		||||
        AGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAOgAAAOYpKSn/5ubm//7+/v+5ubn/CQkJ/gAAAMAAAAAYAAAAAAAAAHgFBQX++fn5//f3
 | 
			
		||||
        9/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAABMAAADZKSkp/+bm5v/+/v7/uLi4/wgICP4AAAD+AAAAxwAAAFIAAAACAAAAeAUF
 | 
			
		||||
        Bf75+fn/9/f3/wYGBv4AAABmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAOwICAv7f39///v7+/7i4uP8JCQn+AAAA/k1NTf9MTEz/AAAA8AAA
 | 
			
		||||
        ACcAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAA/KWlpf+mpqb/CQkJ/gAAAP9oaGj//Pz8//Hx
 | 
			
		||||
        8f8BAQH+AAAASAAAAHgFBQX++fn5//f39/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAACdAAAA9QAAAP4AAAD/aGho//39
 | 
			
		||||
        /f/9/f3/a2tr/wAAAPMAAAAoAAAAeAUFBf75+fn/9/f3/wYGBv4AAABmAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAACXAAAA/2dn
 | 
			
		||||
        Z//8/Pz//f39/21tbf8AAAD7AAAAeAAAAAMAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGYAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAcwAA
 | 
			
		||||
        APpoaGj//f39//39/f9sbGz/AAAA+wAAAHwAAAAFAAAAAAAAAHgFBQX++fn5//f39/8GBgb+AAAAbgAA
 | 
			
		||||
        AAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAGAAAAAgAA
 | 
			
		||||
        ACIAAADxZmZm//39/f/9/f3/bW1t/wAAAPsAAAB8AAAABQAAAAAAAAAAAAAAeAUFBf75+fn/9/f3/wYG
 | 
			
		||||
        Bv4AAAD1AAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAA
 | 
			
		||||
        AOMAAADDAAAAmwMDA/7y8vL//v7+/6ampv8AAAD+AAAAxAAAAAoAAAAAAAAAAAAAAAAAAAB1BQUF/vn5
 | 
			
		||||
        +f/7+/v/ioqK/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aG
 | 
			
		||||
        hv+Ghob/hoaG/1JSUv8AAAD+AAAA/nBwcP/+/v7//Pz8/2NjY/8AAAD6AAAAdQAAAAQAAAAAAAAAAAAA
 | 
			
		||||
        AGMDAwP+9PT0//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7/7e3t/wEBAf4AAAC5AAAA/HJycv/9/f3//Pz8/2NjY/8AAAD6AAAAdAAA
 | 
			
		||||
        AAQAAAAAAAAAKgAAAO9HR0f+d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3
 | 
			
		||||
        d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9FRUX+AAAA6gAAACMAAACCAAAA/HJycv/9/f3//Pz8/2Nj
 | 
			
		||||
        Y/8AAAD6AAAAcQAAAAIAAAACAAAATQAAALYAAADXAAAA3AAAAN0AAADdAAAA3QAAAN0AAADdAAAA3QAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAN0AAADdAAAA3QAAAN0AAADcAAAA1wAAALUAAABKAAAAAQAAAAUAAACCAAAA/HJy
 | 
			
		||||
        cv/9/f3//Pz8/2JiYv8AAADxAAAAJQAAAAAAAAAAAAAAAAAAAAIAAAAEAAAABQAAAAUAAAAFAAAABQAA
 | 
			
		||||
        AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAQAAAACAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAUAAACCAAAA/HJycv/9/f3/8PDw/wEBAf4AAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAUAAACCAAAA+1ZWVv9UVFT/AAAA8gAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAABgAAAAuwAAALoAAABaAAAAAwAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA/wAA//wA
 | 
			
		||||
        AD/8AAA//AAAP/wAAD/8AAA/wAAAHwAAAA8AAAAHAAAAAwAAAAEAAAAAAAAPAAP//wAD//4AA//8AQP/
 | 
			
		||||
        +AAD//gAA//4AAP/+AAD//wAA//4AQAAAAMAAAAHAAAAAwAAAAEAAAAAAAAAAOAADwD///+A////wP//
 | 
			
		||||
        //MoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAA
 | 
			
		||||
        AG4AAAB6AAAAewAAAHsAAAB7AAAAewAAAHoAAABuAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AJKzs7P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/tLS0/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAABVLy8v4js7O+47OzvynZ2d/pycnP47OzvyOzs77jAwMPsAAAB3AAAAAAAAAAAAAAAAAAAAFwAA
 | 
			
		||||
        AGwAAAB4AAAAeAAAAHkAAAB6AAAAl39/f/5/f3/+AAAAlQAAAF07OzvzR0dH9gAAAFcAAAAAAAAAAAAA
 | 
			
		||||
        AKG0tLT/wsLC/8LCwv/CwsL/wsLC/8LCwv/g4OD/4ODg/8LCwv9QUFD+Ly8v9+fn5/9OTk74AAAAVwAA
 | 
			
		||||
        AAACAgK7+fn5/z4+Pvs7OzvuOzs77js7O+47OzvuOzs77js7O+47OzvsERERugAAAEMyMjLu5+fn/05O
 | 
			
		||||
        TvgAAABLAgICu/j4+P8DAwOzAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAAAAAAAAAAAhHZ2
 | 
			
		||||
        dv7j4+P/AAAAnQICArv4+Pj/AwMDsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV05O
 | 
			
		||||
        Tvjn5+f/MjIy7wAAADUCAgK7+Pj4/wMDA7IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0ND
 | 
			
		||||
        Q/Xn5+f/MjIy/iYmJvEAAABbAgICu/j4+P8DAwOyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AA4pKSnjKysr/nNzc//W1tb/AAAAmAICArv4+Pj/AwMDsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAhHNzc//Z2dn/Gxsb3AAAACACAgK7+Pj4/wMDA9gAAAB4AAAAeAAAAHgAAAB4AAAAeAAA
 | 
			
		||||
        AHgAAAB2AAAAYVdXV/vo6Oj/Gxsb7wAAACMAAAAAAgICtfr6+v/Dw8P/wsLC/8LCwv/CwsL/wsLC/8LC
 | 
			
		||||
        wv/CwsL/wsLC/1BQUP4cHBzs2tra/3BwcP0AAAB6AAAAAQAAAFovLy/jOzs77js7O+47OzvuOzs77js7
 | 
			
		||||
        O+47OzvuOzs77js7O+wRERG6AAAAKxwcHN7a2tr/cHBw/QAAAGMAAAAAAAAAAAAAAAIAAAACAAAAAgAA
 | 
			
		||||
        AAIAAAACAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAjHBwc3qampv8AAACXAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAABeAAAAF+AHAADgBwAA4AcAAAAD
 | 
			
		||||
        AAAAAQAAAAAAAAAwAAAf4AAAH8AAAB/AAAAf4AAAAAEAAAAAAAAAAAAAwDAAAP/4AAA=
 | 
			
		||||
</value>
 | 
			
		||||
  </data>
 | 
			
		||||
</root>
 | 
			
		||||
@ -1,11 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.Data;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
@ -22,6 +15,7 @@ namespace RCM {
 | 
			
		||||
        private void ButtonSave_Click(object sender, EventArgs e) {
 | 
			
		||||
            _configSection.UpdateFromControl();
 | 
			
		||||
            Config.Save();
 | 
			
		||||
            MessageBox.Show(string.Format("{0} changes saved", _configSection.GetType().GetDisplayName()), "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ namespace RCM {
 | 
			
		||||
 | 
			
		||||
        public static string JsonToString(JToken json) {
 | 
			
		||||
            var stringWriter = new StringWriter();
 | 
			
		||||
            var jsonWriter = new JsonTextWriter(stringWriter) { StringEscapeHandling = StringEscapeHandling.EscapeNonAscii };
 | 
			
		||||
            var jsonWriter = new JsonTextWriter(stringWriter) { Formatting = Formatting.Indented };
 | 
			
		||||
            new JsonSerializer().Serialize(jsonWriter, json);
 | 
			
		||||
            return stringWriter.ToString();
 | 
			
		||||
        }
 | 
			
		||||
@ -50,7 +50,7 @@ namespace RCM {
 | 
			
		||||
            Array.Copy(cipherbytes, salt, 16);
 | 
			
		||||
            Array.Copy(cipherbytes, 16, iv, 0, 16);
 | 
			
		||||
            using (AesManaged aes = new AesManaged() { KeySize = 128 })
 | 
			
		||||
            using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, salt, 1024))
 | 
			
		||||
            using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, salt, 16))
 | 
			
		||||
            using (ICryptoTransform decryptor = aes.CreateDecryptor(pbkdf2.GetBytes(16), iv))
 | 
			
		||||
            using (MemoryStream memoryStream = new MemoryStream())
 | 
			
		||||
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Write))
 | 
			
		||||
@ -62,7 +62,7 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static object DecryptObject(byte[] cipherbytes, string password) {
 | 
			
		||||
            return StringToObj(Encoding.ASCII.GetString(Decrypt(cipherbytes, password)));
 | 
			
		||||
        return StringToObj(Encoding.Unicode.GetString(Decrypt(cipherbytes, password)));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static byte[] Encrypt(byte[] plaintext, string password) {
 | 
			
		||||
@ -71,7 +71,7 @@ namespace RCM {
 | 
			
		||||
            }
 | 
			
		||||
            using (AesManaged aes = new AesManaged() { KeySize = 128 }) {
 | 
			
		||||
                aes.GenerateIV();
 | 
			
		||||
                using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, 16, 1024))
 | 
			
		||||
                using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, 16, 16))
 | 
			
		||||
                using (ICryptoTransform encryptor = aes.CreateEncryptor(pbkdf2.GetBytes(16), aes.IV))
 | 
			
		||||
                using (MemoryStream memoryStream = new MemoryStream())
 | 
			
		||||
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
 | 
			
		||||
@ -84,7 +84,7 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static byte[] EncryptObject(object obj, string password) {
 | 
			
		||||
            return Encrypt(Encoding.ASCII.GetBytes(ObjToString(obj)), password);
 | 
			
		||||
        return Encrypt(Encoding.Unicode.GetBytes(ObjToString(obj)), password);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								RCM/DataSource/MySQL/MySQLControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								RCM/DataSource/MySQL/MySQLControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -103,7 +103,7 @@
 | 
			
		||||
            this.buttonUnmaskEncPassword.Location = new System.Drawing.Point(273, 104);
 | 
			
		||||
            this.buttonUnmaskEncPassword.Name = "buttonUnmaskEncPassword";
 | 
			
		||||
            this.buttonUnmaskEncPassword.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonUnmaskEncPassword.TabIndex = 17;
 | 
			
		||||
            this.buttonUnmaskEncPassword.TabIndex = 7;
 | 
			
		||||
            this.buttonUnmaskEncPassword.Text = "●";
 | 
			
		||||
            this.buttonUnmaskEncPassword.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonUnmaskEncPassword.Click += new System.EventHandler(this.ButtonUnmaskEncPassword_Click);
 | 
			
		||||
@ -113,7 +113,7 @@
 | 
			
		||||
            this.textBoxEncPassword.Location = new System.Drawing.Point(120, 105);
 | 
			
		||||
            this.textBoxEncPassword.Name = "textBoxEncPassword";
 | 
			
		||||
            this.textBoxEncPassword.Size = new System.Drawing.Size(147, 20);
 | 
			
		||||
            this.textBoxEncPassword.TabIndex = 16;
 | 
			
		||||
            this.textBoxEncPassword.TabIndex = 6;
 | 
			
		||||
            this.textBoxEncPassword.UseSystemPasswordChar = true;
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxDatabase
 | 
			
		||||
@ -121,7 +121,7 @@
 | 
			
		||||
            this.textBoxDatabase.Location = new System.Drawing.Point(120, 79);
 | 
			
		||||
            this.textBoxDatabase.Name = "textBoxDatabase";
 | 
			
		||||
            this.textBoxDatabase.Size = new System.Drawing.Size(175, 20);
 | 
			
		||||
            this.textBoxDatabase.TabIndex = 15;
 | 
			
		||||
            this.textBoxDatabase.TabIndex = 5;
 | 
			
		||||
            // 
 | 
			
		||||
            // label1
 | 
			
		||||
            // 
 | 
			
		||||
@ -146,7 +146,7 @@
 | 
			
		||||
            this.buttonTestConnection.Location = new System.Drawing.Point(120, 132);
 | 
			
		||||
            this.buttonTestConnection.Name = "buttonTestConnection";
 | 
			
		||||
            this.buttonTestConnection.Size = new System.Drawing.Size(175, 23);
 | 
			
		||||
            this.buttonTestConnection.TabIndex = 20;
 | 
			
		||||
            this.buttonTestConnection.TabIndex = 8;
 | 
			
		||||
            this.buttonTestConnection.Text = "Test connection";
 | 
			
		||||
            this.buttonTestConnection.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonTestConnection.Click += new System.EventHandler(this.ButtonTestConnection_Click);
 | 
			
		||||
@ -156,7 +156,7 @@
 | 
			
		||||
            this.buttonCreateSchema.Location = new System.Drawing.Point(120, 161);
 | 
			
		||||
            this.buttonCreateSchema.Name = "buttonCreateSchema";
 | 
			
		||||
            this.buttonCreateSchema.Size = new System.Drawing.Size(175, 23);
 | 
			
		||||
            this.buttonCreateSchema.TabIndex = 21;
 | 
			
		||||
            this.buttonCreateSchema.TabIndex = 9;
 | 
			
		||||
            this.buttonCreateSchema.Text = "Create schema";
 | 
			
		||||
            this.buttonCreateSchema.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonCreateSchema.Click += new System.EventHandler(this.ButtonCreateSchema_Click);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										120
									
								
								RCM/DataSource/MySQL/MySQLControl.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								RCM/DataSource/MySQL/MySQLControl.resx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,120 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<root>
 | 
			
		||||
  <!-- 
 | 
			
		||||
    Microsoft ResX Schema 
 | 
			
		||||
    
 | 
			
		||||
    Version 2.0
 | 
			
		||||
    
 | 
			
		||||
    The primary goals of this format is to allow a simple XML format 
 | 
			
		||||
    that is mostly human readable. The generation and parsing of the 
 | 
			
		||||
    various data types are done through the TypeConverter classes 
 | 
			
		||||
    associated with the data types.
 | 
			
		||||
    
 | 
			
		||||
    Example:
 | 
			
		||||
    
 | 
			
		||||
    ... ado.net/XML headers & schema ...
 | 
			
		||||
    <resheader name="resmimetype">text/microsoft-resx</resheader>
 | 
			
		||||
    <resheader name="version">2.0</resheader>
 | 
			
		||||
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
 | 
			
		||||
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
 | 
			
		||||
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
 | 
			
		||||
        <value>[base64 mime encoded serialized .NET Framework object]</value>
 | 
			
		||||
    </data>
 | 
			
		||||
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
 | 
			
		||||
        <comment>This is a comment</comment>
 | 
			
		||||
    </data>
 | 
			
		||||
                
 | 
			
		||||
    There are any number of "resheader" rows that contain simple 
 | 
			
		||||
    name/value pairs.
 | 
			
		||||
    
 | 
			
		||||
    Each data row contains a name, and value. The row also contains a 
 | 
			
		||||
    type or mimetype. Type corresponds to a .NET class that support 
 | 
			
		||||
    text/value conversion through the TypeConverter architecture. 
 | 
			
		||||
    Classes that don't support this are serialized and stored with the 
 | 
			
		||||
    mimetype set.
 | 
			
		||||
    
 | 
			
		||||
    The mimetype is used for serialized objects, and tells the 
 | 
			
		||||
    ResXResourceReader how to depersist the object. This is currently not 
 | 
			
		||||
    extensible. For a given mimetype the value must be set accordingly:
 | 
			
		||||
    
 | 
			
		||||
    Note - application/x-microsoft.net.object.binary.base64 is the format 
 | 
			
		||||
    that the ResXResourceWriter will generate, however the reader can 
 | 
			
		||||
    read any of the formats listed below.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.binary.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.soap.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.bytearray.base64
 | 
			
		||||
    value   : The object must be serialized into a byte array 
 | 
			
		||||
            : using a System.ComponentModel.TypeConverter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    -->
 | 
			
		||||
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 | 
			
		||||
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
 | 
			
		||||
    <xsd:element name="root" msdata:IsDataSet="true">
 | 
			
		||||
      <xsd:complexType>
 | 
			
		||||
        <xsd:choice maxOccurs="unbounded">
 | 
			
		||||
          <xsd:element name="metadata">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" use="required" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="assembly">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:attribute name="alias" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="data">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="resheader">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
        </xsd:choice>
 | 
			
		||||
      </xsd:complexType>
 | 
			
		||||
    </xsd:element>
 | 
			
		||||
  </xsd:schema>
 | 
			
		||||
  <resheader name="resmimetype">
 | 
			
		||||
    <value>text/microsoft-resx</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="version">
 | 
			
		||||
    <value>2.0</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="reader">
 | 
			
		||||
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="writer">
 | 
			
		||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
</root>
 | 
			
		||||
							
								
								
									
										12
									
								
								RCM/DataSource/SQLite/SQLiteControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										12
									
								
								RCM/DataSource/SQLite/SQLiteControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -39,7 +39,7 @@
 | 
			
		||||
            this.buttonSelectDatabase.Location = new System.Drawing.Point(273, -1);
 | 
			
		||||
            this.buttonSelectDatabase.Name = "buttonSelectDatabase";
 | 
			
		||||
            this.buttonSelectDatabase.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectDatabase.TabIndex = 4;
 | 
			
		||||
            this.buttonSelectDatabase.TabIndex = 2;
 | 
			
		||||
            this.buttonSelectDatabase.Text = "⋯";
 | 
			
		||||
            this.buttonSelectDatabase.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectDatabase.Click += new System.EventHandler(this.ButtonSelectDatabase_Click);
 | 
			
		||||
@ -49,7 +49,7 @@
 | 
			
		||||
            this.buttonUnmaskEncPassword.Location = new System.Drawing.Point(273, 25);
 | 
			
		||||
            this.buttonUnmaskEncPassword.Name = "buttonUnmaskEncPassword";
 | 
			
		||||
            this.buttonUnmaskEncPassword.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonUnmaskEncPassword.TabIndex = 17;
 | 
			
		||||
            this.buttonUnmaskEncPassword.TabIndex = 4;
 | 
			
		||||
            this.buttonUnmaskEncPassword.Text = "●";
 | 
			
		||||
            this.buttonUnmaskEncPassword.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonUnmaskEncPassword.Click += new System.EventHandler(this.ButtonUnmaskEncPassword_Click);
 | 
			
		||||
@ -59,7 +59,7 @@
 | 
			
		||||
            this.textBoxEncPassword.Location = new System.Drawing.Point(120, 26);
 | 
			
		||||
            this.textBoxEncPassword.Name = "textBoxEncPassword";
 | 
			
		||||
            this.textBoxEncPassword.Size = new System.Drawing.Size(147, 20);
 | 
			
		||||
            this.textBoxEncPassword.TabIndex = 16;
 | 
			
		||||
            this.textBoxEncPassword.TabIndex = 3;
 | 
			
		||||
            this.textBoxEncPassword.UseSystemPasswordChar = true;
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxDatabase
 | 
			
		||||
@ -67,7 +67,7 @@
 | 
			
		||||
            this.textBoxDatabase.Location = new System.Drawing.Point(120, 0);
 | 
			
		||||
            this.textBoxDatabase.Name = "textBoxDatabase";
 | 
			
		||||
            this.textBoxDatabase.Size = new System.Drawing.Size(147, 20);
 | 
			
		||||
            this.textBoxDatabase.TabIndex = 15;
 | 
			
		||||
            this.textBoxDatabase.TabIndex = 1;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelEncPassword
 | 
			
		||||
            // 
 | 
			
		||||
@ -92,7 +92,7 @@
 | 
			
		||||
            this.buttonTestConnection.Location = new System.Drawing.Point(120, 53);
 | 
			
		||||
            this.buttonTestConnection.Name = "buttonTestConnection";
 | 
			
		||||
            this.buttonTestConnection.Size = new System.Drawing.Size(175, 23);
 | 
			
		||||
            this.buttonTestConnection.TabIndex = 20;
 | 
			
		||||
            this.buttonTestConnection.TabIndex = 5;
 | 
			
		||||
            this.buttonTestConnection.Text = "Test connection";
 | 
			
		||||
            this.buttonTestConnection.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonTestConnection.Click += new System.EventHandler(this.ButtonTestConnection_Click);
 | 
			
		||||
@ -102,7 +102,7 @@
 | 
			
		||||
            this.buttonCreateSchema.Location = new System.Drawing.Point(120, 82);
 | 
			
		||||
            this.buttonCreateSchema.Name = "buttonCreateSchema";
 | 
			
		||||
            this.buttonCreateSchema.Size = new System.Drawing.Size(175, 23);
 | 
			
		||||
            this.buttonCreateSchema.TabIndex = 21;
 | 
			
		||||
            this.buttonCreateSchema.TabIndex = 6;
 | 
			
		||||
            this.buttonCreateSchema.Text = "Create schema";
 | 
			
		||||
            this.buttonCreateSchema.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonCreateSchema.Click += new System.EventHandler(this.ButtonCreateSchema_Click);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										123
									
								
								RCM/DataSource/SQLite/SQLiteControl.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								RCM/DataSource/SQLite/SQLiteControl.resx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,123 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<root>
 | 
			
		||||
  <!-- 
 | 
			
		||||
    Microsoft ResX Schema 
 | 
			
		||||
    
 | 
			
		||||
    Version 2.0
 | 
			
		||||
    
 | 
			
		||||
    The primary goals of this format is to allow a simple XML format 
 | 
			
		||||
    that is mostly human readable. The generation and parsing of the 
 | 
			
		||||
    various data types are done through the TypeConverter classes 
 | 
			
		||||
    associated with the data types.
 | 
			
		||||
    
 | 
			
		||||
    Example:
 | 
			
		||||
    
 | 
			
		||||
    ... ado.net/XML headers & schema ...
 | 
			
		||||
    <resheader name="resmimetype">text/microsoft-resx</resheader>
 | 
			
		||||
    <resheader name="version">2.0</resheader>
 | 
			
		||||
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
 | 
			
		||||
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
 | 
			
		||||
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
 | 
			
		||||
        <value>[base64 mime encoded serialized .NET Framework object]</value>
 | 
			
		||||
    </data>
 | 
			
		||||
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
 | 
			
		||||
        <comment>This is a comment</comment>
 | 
			
		||||
    </data>
 | 
			
		||||
                
 | 
			
		||||
    There are any number of "resheader" rows that contain simple 
 | 
			
		||||
    name/value pairs.
 | 
			
		||||
    
 | 
			
		||||
    Each data row contains a name, and value. The row also contains a 
 | 
			
		||||
    type or mimetype. Type corresponds to a .NET class that support 
 | 
			
		||||
    text/value conversion through the TypeConverter architecture. 
 | 
			
		||||
    Classes that don't support this are serialized and stored with the 
 | 
			
		||||
    mimetype set.
 | 
			
		||||
    
 | 
			
		||||
    The mimetype is used for serialized objects, and tells the 
 | 
			
		||||
    ResXResourceReader how to depersist the object. This is currently not 
 | 
			
		||||
    extensible. For a given mimetype the value must be set accordingly:
 | 
			
		||||
    
 | 
			
		||||
    Note - application/x-microsoft.net.object.binary.base64 is the format 
 | 
			
		||||
    that the ResXResourceWriter will generate, however the reader can 
 | 
			
		||||
    read any of the formats listed below.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.binary.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.soap.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.bytearray.base64
 | 
			
		||||
    value   : The object must be serialized into a byte array 
 | 
			
		||||
            : using a System.ComponentModel.TypeConverter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    -->
 | 
			
		||||
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 | 
			
		||||
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
 | 
			
		||||
    <xsd:element name="root" msdata:IsDataSet="true">
 | 
			
		||||
      <xsd:complexType>
 | 
			
		||||
        <xsd:choice maxOccurs="unbounded">
 | 
			
		||||
          <xsd:element name="metadata">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" use="required" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="assembly">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:attribute name="alias" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="data">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="resheader">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
        </xsd:choice>
 | 
			
		||||
      </xsd:complexType>
 | 
			
		||||
    </xsd:element>
 | 
			
		||||
  </xsd:schema>
 | 
			
		||||
  <resheader name="resmimetype">
 | 
			
		||||
    <value>text/microsoft-resx</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="version">
 | 
			
		||||
    <value>2.0</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="reader">
 | 
			
		||||
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="writer">
 | 
			
		||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>17, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
</root>
 | 
			
		||||
@ -1,6 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public class DisplayName : Attribute {
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,10 @@
 | 
			
		||||
using Newtonsoft.Json;
 | 
			
		||||
using System;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [Serializable]
 | 
			
		||||
    [DisplayName("Group")]
 | 
			
		||||
    public class Group : IRecord { // TODO: Prvni v poradi new items
 | 
			
		||||
    public class Group : IRecord {
 | 
			
		||||
        public Guid Id { get; set; }
 | 
			
		||||
        public string Title { get; set; }
 | 
			
		||||
        public Guid GroupId { get; set; }
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,4 @@
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public interface IConfigSection {
 | 
			
		||||
 | 
			
		||||
@ -6,8 +6,6 @@ namespace RCM {
 | 
			
		||||
        Guid Id { get; set; }
 | 
			
		||||
        string Title { get; set; }
 | 
			
		||||
        Guid GroupId { get; set; }
 | 
			
		||||
        // DateTime LastUpdate { get; set; }
 | 
			
		||||
 | 
			
		||||
        IAction[] GetActions();
 | 
			
		||||
        UserControl GetControl();
 | 
			
		||||
        void UpdateFromControl();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										78
									
								
								RCM/MainForm.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										78
									
								
								RCM/MainForm.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -29,6 +29,7 @@
 | 
			
		||||
        private void InitializeComponent()
 | 
			
		||||
        {
 | 
			
		||||
            this.components = new System.ComponentModel.Container();
 | 
			
		||||
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
 | 
			
		||||
            this.treeView = new System.Windows.Forms.TreeView();
 | 
			
		||||
            this.splitContainer = new System.Windows.Forms.SplitContainer();
 | 
			
		||||
            this.buttonConfig = new System.Windows.Forms.Button();
 | 
			
		||||
@ -42,12 +43,17 @@
 | 
			
		||||
            this.timerDataSourceRefresh = new System.Windows.Forms.Timer(this.components);
 | 
			
		||||
            this.statusStrip = new System.Windows.Forms.StatusStrip();
 | 
			
		||||
            this.toolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
 | 
			
		||||
            this.toolStripStatusLastRefresh = new System.Windows.Forms.ToolStripStatusLabel();
 | 
			
		||||
            this.toolStripStatusFailedFlag = new System.Windows.Forms.ToolStripStatusLabel();
 | 
			
		||||
            this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
 | 
			
		||||
            this.contextMenuNotifyIcon = new System.Windows.Forms.ContextMenuStrip(this.components);
 | 
			
		||||
            this.toolStripMenuShowMainForm = new System.Windows.Forms.ToolStripMenuItem();
 | 
			
		||||
            this.toolStripMenuCloseMainForm = new System.Windows.Forms.ToolStripMenuItem();
 | 
			
		||||
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
 | 
			
		||||
            this.splitContainer.Panel1.SuspendLayout();
 | 
			
		||||
            this.splitContainer.Panel2.SuspendLayout();
 | 
			
		||||
            this.splitContainer.SuspendLayout();
 | 
			
		||||
            this.statusStrip.SuspendLayout();
 | 
			
		||||
            this.contextMenuNotifyIcon.SuspendLayout();
 | 
			
		||||
            this.SuspendLayout();
 | 
			
		||||
            // 
 | 
			
		||||
            // treeView
 | 
			
		||||
@ -62,7 +68,7 @@
 | 
			
		||||
            this.treeView.Location = new System.Drawing.Point(3, 30);
 | 
			
		||||
            this.treeView.Name = "treeView";
 | 
			
		||||
            this.treeView.Size = new System.Drawing.Size(244, 440);
 | 
			
		||||
            this.treeView.TabIndex = 0;
 | 
			
		||||
            this.treeView.TabIndex = 3;
 | 
			
		||||
            this.treeView.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.TreeView_AfterLabelEdit);
 | 
			
		||||
            this.treeView.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.TreeView_AfterCollapse);
 | 
			
		||||
            this.treeView.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.TreeView_AfterExpand);
 | 
			
		||||
@ -105,7 +111,7 @@
 | 
			
		||||
            this.buttonConfig.Location = new System.Drawing.Point(3, 1);
 | 
			
		||||
            this.buttonConfig.Name = "buttonConfig";
 | 
			
		||||
            this.buttonConfig.Size = new System.Drawing.Size(24, 24);
 | 
			
		||||
            this.buttonConfig.TabIndex = 2;
 | 
			
		||||
            this.buttonConfig.TabIndex = 1;
 | 
			
		||||
            this.buttonConfig.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonConfig.Click += new System.EventHandler(this.ButtonConfig_Click);
 | 
			
		||||
            // 
 | 
			
		||||
@ -118,7 +124,7 @@
 | 
			
		||||
            this.comboBoxDatabase.Location = new System.Drawing.Point(33, 3);
 | 
			
		||||
            this.comboBoxDatabase.Name = "comboBoxDatabase";
 | 
			
		||||
            this.comboBoxDatabase.Size = new System.Drawing.Size(214, 21);
 | 
			
		||||
            this.comboBoxDatabase.TabIndex = 1;
 | 
			
		||||
            this.comboBoxDatabase.TabIndex = 2;
 | 
			
		||||
            this.comboBoxDatabase.SelectedIndexChanged += new System.EventHandler(this.ComboBoxDatabase_SelectedIndexChanged);
 | 
			
		||||
            // 
 | 
			
		||||
            // panelRecord
 | 
			
		||||
@ -129,7 +135,7 @@
 | 
			
		||||
            this.panelRecord.Location = new System.Drawing.Point(11, 82);
 | 
			
		||||
            this.panelRecord.Name = "panelRecord";
 | 
			
		||||
            this.panelRecord.Size = new System.Drawing.Size(306, 350);
 | 
			
		||||
            this.panelRecord.TabIndex = 15;
 | 
			
		||||
            this.panelRecord.TabIndex = 3;
 | 
			
		||||
            // 
 | 
			
		||||
            // buttonSave
 | 
			
		||||
            // 
 | 
			
		||||
@ -138,7 +144,7 @@
 | 
			
		||||
            this.buttonSave.Location = new System.Drawing.Point(131, 438);
 | 
			
		||||
            this.buttonSave.Name = "buttonSave";
 | 
			
		||||
            this.buttonSave.Size = new System.Drawing.Size(175, 23);
 | 
			
		||||
            this.buttonSave.TabIndex = 14;
 | 
			
		||||
            this.buttonSave.TabIndex = 4;
 | 
			
		||||
            this.buttonSave.Text = "Save changes";
 | 
			
		||||
            this.buttonSave.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click);
 | 
			
		||||
@ -160,7 +166,7 @@
 | 
			
		||||
            this.comboBoxGroup.Location = new System.Drawing.Point(131, 39);
 | 
			
		||||
            this.comboBoxGroup.Name = "comboBoxGroup";
 | 
			
		||||
            this.comboBoxGroup.Size = new System.Drawing.Size(175, 21);
 | 
			
		||||
            this.comboBoxGroup.TabIndex = 12;
 | 
			
		||||
            this.comboBoxGroup.TabIndex = 2;
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxTitle
 | 
			
		||||
            // 
 | 
			
		||||
@ -181,14 +187,14 @@
 | 
			
		||||
            // 
 | 
			
		||||
            // timerDataSourceRefresh
 | 
			
		||||
            // 
 | 
			
		||||
            this.timerDataSourceRefresh.Interval = 30000;
 | 
			
		||||
            this.timerDataSourceRefresh.Interval = 120000;
 | 
			
		||||
            this.timerDataSourceRefresh.Tick += new System.EventHandler(this.TimerDataSourceRefresh_Tick);
 | 
			
		||||
            // 
 | 
			
		||||
            // statusStrip
 | 
			
		||||
            // 
 | 
			
		||||
            this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
 | 
			
		||||
            this.toolStripStatusLabel,
 | 
			
		||||
            this.toolStripStatusLastRefresh});
 | 
			
		||||
            this.toolStripStatusFailedFlag});
 | 
			
		||||
            this.statusStrip.Location = new System.Drawing.Point(0, 474);
 | 
			
		||||
            this.statusStrip.Name = "statusStrip";
 | 
			
		||||
            this.statusStrip.Size = new System.Drawing.Size(574, 22);
 | 
			
		||||
@ -197,15 +203,47 @@
 | 
			
		||||
            // 
 | 
			
		||||
            // toolStripStatusLabel
 | 
			
		||||
            // 
 | 
			
		||||
            this.toolStripStatusLabel.ForeColor = System.Drawing.SystemColors.ControlDark;
 | 
			
		||||
            this.toolStripStatusLabel.Name = "toolStripStatusLabel";
 | 
			
		||||
            this.toolStripStatusLabel.Size = new System.Drawing.Size(134, 17);
 | 
			
		||||
            this.toolStripStatusLabel.Text = "Last data source refresh:";
 | 
			
		||||
            this.toolStripStatusLabel.Size = new System.Drawing.Size(166, 17);
 | 
			
		||||
            this.toolStripStatusLabel.Text = "Last data source refresh: never";
 | 
			
		||||
            // 
 | 
			
		||||
            // toolStripStatusLastRefresh
 | 
			
		||||
            // toolStripStatusFailedFlag
 | 
			
		||||
            // 
 | 
			
		||||
            this.toolStripStatusLastRefresh.Name = "toolStripStatusLastRefresh";
 | 
			
		||||
            this.toolStripStatusLastRefresh.Size = new System.Drawing.Size(36, 17);
 | 
			
		||||
            this.toolStripStatusLastRefresh.Text = "never";
 | 
			
		||||
            this.toolStripStatusFailedFlag.ForeColor = System.Drawing.SystemColors.ControlDark;
 | 
			
		||||
            this.toolStripStatusFailedFlag.Name = "toolStripStatusFailedFlag";
 | 
			
		||||
            this.toolStripStatusFailedFlag.Size = new System.Drawing.Size(136, 17);
 | 
			
		||||
            this.toolStripStatusFailedFlag.Text = "(data source not loaded)";
 | 
			
		||||
            // 
 | 
			
		||||
            // notifyIcon
 | 
			
		||||
            // 
 | 
			
		||||
            this.notifyIcon.ContextMenuStrip = this.contextMenuNotifyIcon;
 | 
			
		||||
            this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon")));
 | 
			
		||||
            this.notifyIcon.Text = "Remote Connection Manager";
 | 
			
		||||
            this.notifyIcon.Visible = true;
 | 
			
		||||
            this.notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.NotifyIcon_MouseClick);
 | 
			
		||||
            // 
 | 
			
		||||
            // contextMenuNotifyIcon
 | 
			
		||||
            // 
 | 
			
		||||
            this.contextMenuNotifyIcon.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
 | 
			
		||||
            this.toolStripMenuShowMainForm,
 | 
			
		||||
            this.toolStripMenuCloseMainForm});
 | 
			
		||||
            this.contextMenuNotifyIcon.Name = "contextMenuNotifyIcon";
 | 
			
		||||
            this.contextMenuNotifyIcon.Size = new System.Drawing.Size(179, 48);
 | 
			
		||||
            // 
 | 
			
		||||
            // toolStripMenuShowMainForm
 | 
			
		||||
            // 
 | 
			
		||||
            this.toolStripMenuShowMainForm.Name = "toolStripMenuShowMainForm";
 | 
			
		||||
            this.toolStripMenuShowMainForm.Size = new System.Drawing.Size(178, 22);
 | 
			
		||||
            this.toolStripMenuShowMainForm.Text = "Show main window";
 | 
			
		||||
            this.toolStripMenuShowMainForm.Click += new System.EventHandler(this.ToolStripMenuShowMainForm_Click);
 | 
			
		||||
            // 
 | 
			
		||||
            // toolStripMenuCloseMainForm
 | 
			
		||||
            // 
 | 
			
		||||
            this.toolStripMenuCloseMainForm.Name = "toolStripMenuCloseMainForm";
 | 
			
		||||
            this.toolStripMenuCloseMainForm.Size = new System.Drawing.Size(178, 22);
 | 
			
		||||
            this.toolStripMenuCloseMainForm.Text = "Exit application";
 | 
			
		||||
            this.toolStripMenuCloseMainForm.Click += new System.EventHandler(this.ToolStripMenuCloseMainForm_Click);
 | 
			
		||||
            // 
 | 
			
		||||
            // MainForm
 | 
			
		||||
            // 
 | 
			
		||||
@ -214,8 +252,11 @@
 | 
			
		||||
            this.ClientSize = new System.Drawing.Size(574, 496);
 | 
			
		||||
            this.Controls.Add(this.statusStrip);
 | 
			
		||||
            this.Controls.Add(this.splitContainer);
 | 
			
		||||
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
 | 
			
		||||
            this.Name = "MainForm";
 | 
			
		||||
            this.Text = "Remote Connection Manager";
 | 
			
		||||
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing);
 | 
			
		||||
            this.Resize += new System.EventHandler(this.MainForm_Resize);
 | 
			
		||||
            this.splitContainer.Panel1.ResumeLayout(false);
 | 
			
		||||
            this.splitContainer.Panel2.ResumeLayout(false);
 | 
			
		||||
            this.splitContainer.Panel2.PerformLayout();
 | 
			
		||||
@ -223,6 +264,7 @@
 | 
			
		||||
            this.splitContainer.ResumeLayout(false);
 | 
			
		||||
            this.statusStrip.ResumeLayout(false);
 | 
			
		||||
            this.statusStrip.PerformLayout();
 | 
			
		||||
            this.contextMenuNotifyIcon.ResumeLayout(false);
 | 
			
		||||
            this.ResumeLayout(false);
 | 
			
		||||
            this.PerformLayout();
 | 
			
		||||
 | 
			
		||||
@ -243,7 +285,11 @@
 | 
			
		||||
        private System.Windows.Forms.Button buttonConfig;
 | 
			
		||||
        private System.Windows.Forms.StatusStrip statusStrip;
 | 
			
		||||
        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel;
 | 
			
		||||
        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLastRefresh;
 | 
			
		||||
        private System.Windows.Forms.ToolStripStatusLabel toolStripStatusFailedFlag;
 | 
			
		||||
        private System.Windows.Forms.NotifyIcon notifyIcon;
 | 
			
		||||
        private System.Windows.Forms.ContextMenuStrip contextMenuNotifyIcon;
 | 
			
		||||
        private System.Windows.Forms.ToolStripMenuItem toolStripMenuShowMainForm;
 | 
			
		||||
        private System.Windows.Forms.ToolStripMenuItem toolStripMenuCloseMainForm;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										240
									
								
								RCM/MainForm.cs
									
									
									
									
									
								
							
							
						
						
									
										240
									
								
								RCM/MainForm.cs
									
									
									
									
									
								
							@ -3,12 +3,14 @@ using System.Collections.Generic;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Collections.Specialized;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public partial class MainForm : Form {
 | 
			
		||||
        #region Form
 | 
			
		||||
        protected override CreateParams CreateParams { // Workaround for control flickering reduction
 | 
			
		||||
        private bool allowClose = false;
 | 
			
		||||
 | 
			
		||||
        protected override CreateParams CreateParams {
 | 
			
		||||
            // Workaround for control flickering reduction
 | 
			
		||||
            get {
 | 
			
		||||
                CreateParams cp = base.CreateParams;
 | 
			
		||||
                cp.ExStyle |= 0x02000000;  // WS_EX_COMPOSITED
 | 
			
		||||
@ -24,6 +26,31 @@ namespace RCM {
 | 
			
		||||
            LoadDataSources(0);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void MainForm_Resize(object sender, EventArgs e) {
 | 
			
		||||
            if (WindowState == FormWindowState.Minimized) {
 | 
			
		||||
                ShowInTaskbar = false;
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            Config.Save();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void NotifyIcon_MouseClick(object sender, MouseEventArgs e) {
 | 
			
		||||
            if (e.Button == MouseButtons.Left) {
 | 
			
		||||
                WindowState = FormWindowState.Normal;
 | 
			
		||||
                ShowInTaskbar = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ToolStripMenuShowMainForm_Click(object sender, EventArgs e) {
 | 
			
		||||
            WindowState = FormWindowState.Normal;
 | 
			
		||||
            ShowInTaskbar = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ToolStripMenuCloseMainForm_Click(object sender, EventArgs e) {
 | 
			
		||||
            allowClose = true;
 | 
			
		||||
            Close();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void LoadDataSources(int selectedIndex) {
 | 
			
		||||
            comboBoxDatabase.Items.Clear();
 | 
			
		||||
            comboBoxDatabase.Items.AddRange(Config.DataSources.ToArray());
 | 
			
		||||
@ -43,9 +70,18 @@ namespace RCM {
 | 
			
		||||
            configForm.Dispose();
 | 
			
		||||
            LoadDataSources(selectedIndex);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {
 | 
			
		||||
            if (e.CloseReason == CloseReason.UserClosing && !allowClose) {
 | 
			
		||||
                e.Cancel = true;
 | 
			
		||||
                WindowState = FormWindowState.Minimized;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region ComboBox & DataSource
 | 
			
		||||
        private IDataSource previouslySelectedDataSource = null;
 | 
			
		||||
 | 
			
		||||
        private void RebuildGroupCombobox(IRecord record) {
 | 
			
		||||
            List<GroupPath> groupPaths = new List<GroupPath>() { new GroupPath(null) };
 | 
			
		||||
            groupPaths.AddRange(RebuildGroupCombobox(treeView.Nodes));
 | 
			
		||||
@ -65,31 +101,66 @@ namespace RCM {
 | 
			
		||||
            return groupPaths;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ReloadDataSource() {
 | 
			
		||||
            RebuildTreeView();
 | 
			
		||||
            timerDataSourceRefresh.Stop();
 | 
			
		||||
            timerDataSourceRefresh.Start();
 | 
			
		||||
        private void ShowDataSourceException(string failedAction, Exception ex) {
 | 
			
		||||
            IDataSource dataSource = (IDataSource)comboBoxDatabase.SelectedItem;
 | 
			
		||||
            string message = String.Format("{0}\n\nData source \"{1}\" exception:\n{2}\n{3}", failedAction, dataSource.Title, ex.GetType().ToString(), ex.Message);
 | 
			
		||||
            MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ComboBoxDatabase_SelectedIndexChanged(object sender, EventArgs e) => ReloadDataSource();
 | 
			
		||||
        private void ComboBoxDatabase_SelectedIndexChanged(object sender, EventArgs e) {
 | 
			
		||||
            if (comboBoxDatabase.SelectedIndex == -1) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            try {
 | 
			
		||||
                treeView.Enabled = true;
 | 
			
		||||
                ReloadTreeView(true);
 | 
			
		||||
                previouslySelectedDataSource = (IDataSource)comboBoxDatabase.SelectedItem;
 | 
			
		||||
                treeView.SelectedNode = null;
 | 
			
		||||
                ChangeSelectedRecord();
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                ShowDataSourceException("Failed to load data source.", ex);
 | 
			
		||||
                if (previouslySelectedDataSource == null) {
 | 
			
		||||
                    treeView.Enabled = false;
 | 
			
		||||
                    treeView.Nodes.Clear();
 | 
			
		||||
                    comboBoxDatabase.SelectedIndex = -1;
 | 
			
		||||
                    toolStripStatusLabel.Text = "Last data source refresh: never";
 | 
			
		||||
                    toolStripStatusFailedFlag.Text = "(data source not loaded)";
 | 
			
		||||
                } else {
 | 
			
		||||
                    comboBoxDatabase.SelectedItem = previouslySelectedDataSource;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RefreshContextMenuItem_Click(object sender, EventArgs e) => ReloadDataSource();
 | 
			
		||||
        private void RefreshContextMenuItem_Click(object sender, EventArgs e) {
 | 
			
		||||
            try {
 | 
			
		||||
                ReloadTreeView(true);
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                ShowDataSourceException("Failed to refresh data source.", ex);
 | 
			
		||||
                toolStripStatusFailedFlag.Text = "(failed to refresh since then)";
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void TimerDataSourceRefresh_Tick(object sender, EventArgs e) {
 | 
			
		||||
            RebuildTreeView();
 | 
			
		||||
            try {
 | 
			
		||||
                ReloadTreeView();
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                if (toolStripStatusFailedFlag.Text == String.Empty) {
 | 
			
		||||
                    ShowDataSourceException("Failed to refresh data source.", ex);
 | 
			
		||||
                    toolStripStatusFailedFlag.Text = "(failed to refresh since then)";
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region TreeView display
 | 
			
		||||
 | 
			
		||||
        /* test */
 | 
			
		||||
        private void RebuildTreeView() {
 | 
			
		||||
        private void ReloadTreeView(bool restartTimer = false) {
 | 
			
		||||
            // Select all records from database
 | 
			
		||||
            IDataSource dataSource = (IDataSource)comboBoxDatabase.SelectedItem;
 | 
			
		||||
            Dictionary<Guid, IRecord> dataSourceRecords = dataSource.SelectAll();
 | 
			
		||||
            Guid selectedGuid = treeView.SelectedNode == null ? Guid.Empty : ((IRecord)treeView.SelectedNode.Tag).Id;
 | 
			
		||||
 | 
			
		||||
            // Flatten tree nodes
 | 
			
		||||
            // Flatten existing tree nodes
 | 
			
		||||
            List<TreeNode> flattenedTreeList = new List<TreeNode>();
 | 
			
		||||
            int lastProcessPosition = 0;
 | 
			
		||||
            flattenedTreeList.AddRange(treeView.Nodes.Cast<TreeNode>());
 | 
			
		||||
@ -99,11 +170,13 @@ namespace RCM {
 | 
			
		||||
            Dictionary<Guid, TreeNode> flattenedTree = flattenedTreeList.ToDictionary(n => ((IRecord)n.Tag).Id, n => n);
 | 
			
		||||
 | 
			
		||||
            // Iterate over existing nodes
 | 
			
		||||
            HashSet<Guid> removeFromFlattenedTree = new HashSet<Guid>();
 | 
			
		||||
            foreach (TreeNode node in flattenedTree.Values) {
 | 
			
		||||
                IRecord record = (IRecord)node.Tag;
 | 
			
		||||
                // Delete node if record no longer present in database
 | 
			
		||||
                if (!dataSourceRecords.ContainsKey(record.Id)) {
 | 
			
		||||
                    node.Remove();
 | 
			
		||||
                    removeFromFlattenedTree.Add(record.Id);
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                // Update existing record if it has changed since the last refresh
 | 
			
		||||
@ -123,17 +196,17 @@ namespace RCM {
 | 
			
		||||
                // Remove processed record
 | 
			
		||||
                dataSourceRecords.Remove(record.Id);
 | 
			
		||||
            }
 | 
			
		||||
            // Remove deleted records from flattened tree
 | 
			
		||||
            foreach (Guid removedId in removeFromFlattenedTree) {
 | 
			
		||||
                flattenedTree.Remove(removedId);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Create nodes from unprocessed (new) records
 | 
			
		||||
            foreach (IRecord record in dataSourceRecords.Values) {
 | 
			
		||||
                TreeNode node = CreateTreeNodeFromRecord(record);
 | 
			
		||||
                if (dataSource.ExpandedNodes.Contains(record.Id)) {
 | 
			
		||||
                    node.Expand();
 | 
			
		||||
                }
 | 
			
		||||
                flattenedTree.Add(record.Id, node);
 | 
			
		||||
                flattenedTree.Add(record.Id, CreateTreeNodeFromRecord(record));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Assign nodes to tree structure
 | 
			
		||||
            // Assign nodes to tree structure (all nodes have to exist first)
 | 
			
		||||
            foreach (IRecord record in dataSourceRecords.Values) {
 | 
			
		||||
                TreeNode node = flattenedTree[record.Id];
 | 
			
		||||
                if (record.GroupId == Guid.Empty) {
 | 
			
		||||
@ -142,48 +215,41 @@ namespace RCM {
 | 
			
		||||
                    flattenedTree[record.GroupId].Nodes.Add(node);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            TreeNode selectedNode = flattenedTree.ContainsKey(selectedGuid) ? flattenedTree[selectedGuid] : null;
 | 
			
		||||
            SortTreeAndSelectNode(selectedNode);
 | 
			
		||||
            toolStripStatusLastRefresh.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
 | 
			
		||||
        }
 | 
			
		||||
        /* test end */
 | 
			
		||||
 | 
			
		||||
        /*private void RebuildTreeView() {
 | 
			
		||||
            IDataSource dataSource = (IDataSource)comboBoxDatabase.SelectedItem;
 | 
			
		||||
            Dictionary<Guid, TreeNode> nodes = new Dictionary<Guid, TreeNode>();
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
                foreach (IRecord record in dataSource.SelectAll()) {
 | 
			
		||||
                    nodes.Add(record.Id, CreateTreeNodeFromRecord(record));
 | 
			
		||||
                }
 | 
			
		||||
            } catch {
 | 
			
		||||
                MessageBox.Show("Failed to retieve records from data source", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Guid selectedGuid = treeView.SelectedNode == null ? Guid.Empty : ((IRecord)treeView.SelectedNode.Tag).Id;
 | 
			
		||||
            TreeNode selectedNode = null;
 | 
			
		||||
            treeView.Nodes.Clear();
 | 
			
		||||
            foreach (TreeNode node in nodes.Values) {
 | 
			
		||||
                IRecord record = (IRecord)node.Tag;
 | 
			
		||||
                if (record.GroupId == Guid.Empty) {
 | 
			
		||||
                    treeView.Nodes.Add(node);
 | 
			
		||||
                } else {
 | 
			
		||||
                    nodes[record.GroupId].Nodes.Add(node);
 | 
			
		||||
                }
 | 
			
		||||
                if (record.Id == selectedGuid) {
 | 
			
		||||
                    selectedNode = node;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            SortTreeAndSelectNode(selectedNode);
 | 
			
		||||
            foreach (TreeNode node in nodes.Values) {
 | 
			
		||||
                if (dataSource.ExpandedNodes.Contains(((IRecord)node.Tag).Id)) {
 | 
			
		||||
            // Expand nodes (all nodes have to be placed in tree first)
 | 
			
		||||
            foreach (IRecord record in dataSourceRecords.Values) {
 | 
			
		||||
                if (dataSource.ExpandedNodes.Contains(record.Id)) {
 | 
			
		||||
                    TreeNode node = flattenedTree[record.Id];
 | 
			
		||||
                    node.Expand();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            toolStripStatusLastRefresh.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
 | 
			
		||||
        }*/
 | 
			
		||||
 | 
			
		||||
            // Remove controls if selected node has been deleted
 | 
			
		||||
            if (!flattenedTree.ContainsKey(selectedGuid)) {
 | 
			
		||||
                SortTreeAndSelectNode(null);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Restart timer
 | 
			
		||||
            toolStripStatusLabel.Text = String.Format("Last data source refresh: {0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
 | 
			
		||||
            toolStripStatusFailedFlag.Text = String.Empty;
 | 
			
		||||
            if (restartTimer) {
 | 
			
		||||
                timerDataSourceRefresh.Stop();
 | 
			
		||||
                timerDataSourceRefresh.Start();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Delete expanded nodes which no longer exist
 | 
			
		||||
            HashSet<Guid> removeFromExpandedNodes = new HashSet<Guid>();
 | 
			
		||||
            foreach (Guid recordId in dataSource.ExpandedNodes) {
 | 
			
		||||
                if (!flattenedTree.ContainsKey(recordId)) {
 | 
			
		||||
                    removeFromExpandedNodes.Add(recordId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            foreach (Guid recordId in removeFromExpandedNodes) {
 | 
			
		||||
                dataSource.ExpandedNodes.Remove(recordId);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Save expanded nodes
 | 
			
		||||
            Config.Save();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private TreeNode CreateTreeNodeFromRecord(IRecord record) {
 | 
			
		||||
            string imageKey = record.GetType().FullName;
 | 
			
		||||
@ -191,6 +257,9 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void SortTreeAndSelectNode(TreeNode node) {
 | 
			
		||||
            /*if (node == null) {
 | 
			
		||||
                return;
 | 
			
		||||
            }*/
 | 
			
		||||
            treeView.Sort();
 | 
			
		||||
            if (treeView.SelectedNode == node) {
 | 
			
		||||
                ChangeSelectedRecord();
 | 
			
		||||
@ -253,7 +322,11 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void TreeView_KeyDown(object sender, KeyEventArgs e) {
 | 
			
		||||
            if (e.KeyCode == Keys.Delete) {
 | 
			
		||||
            if (e.KeyCode == Keys.Return) {
 | 
			
		||||
                if (treeView.SelectedNode != null) {
 | 
			
		||||
                    RunDefaultNodeAction(treeView.SelectedNode);
 | 
			
		||||
                }
 | 
			
		||||
            } else if (e.KeyCode == Keys.Delete) {
 | 
			
		||||
                if (treeView.SelectedNode != null) {
 | 
			
		||||
                    DeleteSelectedNode();
 | 
			
		||||
                }
 | 
			
		||||
@ -262,18 +335,22 @@ namespace RCM {
 | 
			
		||||
                    treeView.SelectedNode.BeginEdit();
 | 
			
		||||
                }
 | 
			
		||||
            } else if (e.KeyCode == Keys.F5) {
 | 
			
		||||
                ReloadDataSource();
 | 
			
		||||
                ReloadTreeView(true);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void TreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
 | 
			
		||||
            IAction[] actions = ((IRecord)e.Node.Tag).GetActions();
 | 
			
		||||
        private void RunDefaultNodeAction(TreeNode node) {
 | 
			
		||||
            IAction[] actions = ((IRecord)node.Tag).GetActions();
 | 
			
		||||
            if (actions.Length == 0) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            actions[0].Run();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void TreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
 | 
			
		||||
            RunDefaultNodeAction(e.Node);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ChangeSelectedRecord() {
 | 
			
		||||
            bool isSelected = treeView.SelectedNode != null;
 | 
			
		||||
            textBoxTitle.Enabled = isSelected;
 | 
			
		||||
@ -291,6 +368,8 @@ namespace RCM {
 | 
			
		||||
            }
 | 
			
		||||
            if (treeView.SelectedNode != null) {
 | 
			
		||||
                IRecord record = (IRecord)treeView.SelectedNode.Tag;
 | 
			
		||||
                // Prevent refresh of currently selected node (which is possibly being edited)
 | 
			
		||||
                //if (record.Id == panelRecord.
 | 
			
		||||
                textBoxTitle.Text = record.Title;
 | 
			
		||||
                RebuildGroupCombobox(record);
 | 
			
		||||
                panelRecord.Controls.Add(record.GetControl());
 | 
			
		||||
@ -315,9 +394,10 @@ namespace RCM {
 | 
			
		||||
                record.Title = e.Label;
 | 
			
		||||
                try {
 | 
			
		||||
                    ((IDataSource)comboBoxDatabase.SelectedItem).Update(record);
 | 
			
		||||
                    BeginInvoke(new AfterLabelEditWorkaround(SortTreeAndSelectNode), new object[] { e.Node }); // Workaround for treeView.Sort() triggering relabel on every sorted node. See note in https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.afterlabeledit?view=netframework-4.6
 | 
			
		||||
                    // Workaround for treeView.Sort() triggering relabel on every sorted node. See note in https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.listview.afterlabeledit?view=netframework-4.6
 | 
			
		||||
                    BeginInvoke(new AfterLabelEditWorkaround(SortTreeAndSelectNode), new object[] { e.Node });
 | 
			
		||||
                } catch {
 | 
			
		||||
                    MessageBox.Show("Failed to update record in data source", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                    MessageBox.Show("Failed to update record in data source.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                e.CancelEdit = true;
 | 
			
		||||
@ -335,7 +415,7 @@ namespace RCM {
 | 
			
		||||
            try {
 | 
			
		||||
                ((IDataSource)comboBoxDatabase.SelectedItem).Update(record);
 | 
			
		||||
            } catch {
 | 
			
		||||
                MessageBox.Show("Failed to update record in data source", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                MessageBox.Show("Failed to update record in data source.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (groupChanged) {
 | 
			
		||||
@ -359,8 +439,8 @@ namespace RCM {
 | 
			
		||||
            try {
 | 
			
		||||
                TreeNode node = InsertNewRecord(record, parentNode);
 | 
			
		||||
                SortTreeAndSelectNode(node);
 | 
			
		||||
            } catch {
 | 
			
		||||
                MessageBox.Show("Failed to insert record into data source", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                ShowDataSourceException("Failed to insert record into data source.", ex);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -368,8 +448,8 @@ namespace RCM {
 | 
			
		||||
            try {
 | 
			
		||||
                TreeNode node = DuplicateRecord(treeView.SelectedNode, treeView.SelectedNode.Parent);
 | 
			
		||||
                SortTreeAndSelectNode(node);
 | 
			
		||||
            } catch {
 | 
			
		||||
                MessageBox.Show("Failed to insert record into data source", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                ShowDataSourceException("Failed to insert record into data source.", ex);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -405,8 +485,8 @@ namespace RCM {
 | 
			
		||||
            if (MessageBox.Show(message, "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
 | 
			
		||||
                try {
 | 
			
		||||
                    ((IDataSource)comboBoxDatabase.SelectedItem).Delete(record);
 | 
			
		||||
                } catch {
 | 
			
		||||
                    MessageBox.Show("Failed to remove record from data source", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                } catch (Exception ex) {
 | 
			
		||||
                    ShowDataSourceException("Failed to remove record from data source.", ex);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                treeView.SelectedNode.Remove();
 | 
			
		||||
@ -421,8 +501,18 @@ namespace RCM {
 | 
			
		||||
        private ContextMenuStrip GetNewRecordContextMenu() {
 | 
			
		||||
            ContextMenuStrip menu = new ContextMenuStrip();
 | 
			
		||||
            ToolStripMenuItem menuItemNew = new ToolStripMenuItem("New item");
 | 
			
		||||
            // Add group as the first type
 | 
			
		||||
            Type groupType = typeof(Group);
 | 
			
		||||
            ToolStripMenuItem groupItem = new ToolStripMenuItem(groupType.GetDisplayName()) { Tag = groupType, Image = Config.IconList.Images[groupType.FullName] };
 | 
			
		||||
            groupItem.Click += NewRecordContextMenuItem_Click;
 | 
			
		||||
            menuItemNew.DropDownItems.Add(groupItem);
 | 
			
		||||
            menuItemNew.DropDownItems.Add(new ToolStripSeparator());
 | 
			
		||||
            // Add all the rest
 | 
			
		||||
            foreach (Type type in Config.RecordTypes) {
 | 
			
		||||
                ToolStripMenuItem item = new ToolStripMenuItem(type.GetDisplayName()) { Tag = type };
 | 
			
		||||
                if (type == groupType) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                ToolStripMenuItem item = new ToolStripMenuItem(type.GetDisplayName()) { Tag = type, Image = Config.IconList.Images[type.FullName] };
 | 
			
		||||
                item.Click += NewRecordContextMenuItem_Click;
 | 
			
		||||
                menuItemNew.DropDownItems.Add(item);
 | 
			
		||||
            }
 | 
			
		||||
@ -459,5 +549,13 @@ namespace RCM {
 | 
			
		||||
            ((IAction)((ToolStripMenuItem)sender).Tag).Run();
 | 
			
		||||
        }
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        /*private void button1_Click(object sender, EventArgs e) {
 | 
			
		||||
            List<IRecord> records = Importer.GetRecordsFromRDM();
 | 
			
		||||
            IDataSource dataSource = ((IDataSource)comboBoxDatabase.SelectedItem);
 | 
			
		||||
            foreach (IRecord record in records) {
 | 
			
		||||
                dataSource.Insert(record);
 | 
			
		||||
            }
 | 
			
		||||
        }*/
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -123,7 +123,938 @@
 | 
			
		||||
  <metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>201, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="notifyIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>310, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="contextMenuNotifyIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>416, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 | 
			
		||||
  <data name="notifyIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
    <value>
 | 
			
		||||
        AAABAAsAMDAQAAEABABoBgAAtgAAACAgEAABAAQA6AIAAB4HAAAYGBAAAQAEAOgBAAAGCgAAEBAQAAEA
 | 
			
		||||
        BAAoAQAA7gsAADAwAAABAAgAqA4AABYNAAAgIAAAAQAIAKgIAAC+GwAAGBgAAAEACADIBgAAZiQAABAQ
 | 
			
		||||
        AAABAAgAaAUAAC4rAAAwMAAAAQAgAKglAACWMAAAICAAAAEAIACoEAAAPlYAABAQAAABACAAaAQAAOZm
 | 
			
		||||
        AAAoAAAAMAAAAGAAAAABAAQAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
 | 
			
		||||
        AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAHAAAAAAAAAA
 | 
			
		||||
        AAAAcAcHBxYWFhYWFhYWEAcAAAAAAAAAAAAAAI//////////////+AYAAAAAAAAAAAAAcP//////////
 | 
			
		||||
        /////wEAAAAAAAAAAAAAcBiIiIiIj/iIiIiIhgcAAAAAAAAAAAAAAAAAAAAAf/cAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAHcHAHAAf/cABwBwABAAAAAAAAAAAAAAAAAAAABwf/cHAAAHAABwAAAAAAAAAAAAAAAAAAAAf/cA
 | 
			
		||||
        AAAACHAAAAAAAABwAAAAAAAAAAAAf/cAAABwf/gAcAAAAAcAcHBxYWcWF2F2j/gWcWAAD/+AAAAAAAAI
 | 
			
		||||
        //////////////////EAB//4AHAAAAAP//////////////////cHAH//gAAAAAAP/4iIiIeIiHiHiHiI
 | 
			
		||||
        eHAAAAf/+ABwAAAP/wAAAAAAAAAAAAAAAABwAAB//4ABAAAP/wABYBYWAWFhBwFgcHAAAAAH//gAcAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAf/+AYAAP/wAAAAAAAAAAAAAAAAAAAAAACP/wAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAj/9wcAAP/wAAAAAAAAAAAAAAAAAAABAP//cAAAAP/wAAAAAAAAAAAAAAAAAABgD//3AAAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAEAj/9wBwAAAP/wAAAAAAAAAAAAAAAAAHAP//cABwAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAACP/3AAAAAAAP/wAAAAAAAAAAAAAAAAAAf/9wAHhwcAAP/wAAAAAAAAAAAAAAAAAAf/cAB4+AAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAeP+AAAAP/wAAAAAAAAAAAAAAAAAAAAAHj/gAcAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAABwB//4AHAAAP/wAAAAAAAAAAAAAAAAAAAAf/+ABwAAAP/wAAAAAAAAAAAAAAAAAAAH//gAEAAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAB//4AHAAAAAP/wBwAAAAAAAAAAAAAAAAf/+AAAAAAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AABwf/9wBwAAAAAP/3B3FncWdxZxZxZxZwAACP/3AAAAAAAP//////////////////cAAI/4cAAAAAAP
 | 
			
		||||
        //////////////////cHAA//9wAAAAcHeIh4h4h4h4iIeIh4iHAABwCP/3AAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AABwAAAP/4cAAAAHcBYBYWBwFgFhYBYWFnAAAAcAj/9wcAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAHAI+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAcAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /////wAA////////AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/wAAAA/8AAP/AAAAD/wAA/+AAAAf/
 | 
			
		||||
        AAD/8AAAB/8AAP//8A+B/wAA///wD4D/AADAAAAAAH8AAIAAAAAAPwAAgAAAAAAfAACAAAAAAA8AAIAA
 | 
			
		||||
        AABgBwAAgAAAAHADAACAAAAB+AEAAID////8AQAAgP////wBAACA////+AEAAID////wAwAAgP///+AH
 | 
			
		||||
        AACA////wAcAAID///+ABwAAgP///4ADAACA////gAEAAID///+AAQAAgP///4ABAACA////wAEAAID/
 | 
			
		||||
        ///gAwAAgP///+AHAACA////wA8AAID///+AHwAAgH///4A/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAAf
 | 
			
		||||
        AACAAAAAAA8AAIAAAABgBwAAwAAAAHADAADgAAAB+AEAAP/////8AQAA//////4BAAD//////wEAAP//
 | 
			
		||||
        ////gwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
 | 
			
		||||
        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAeHh3h3h3h3cAAAAAAAAAAP//
 | 
			
		||||
        ////////AAAAAAAAAAB3d3d/93d3cAAAAAAAAAAAAAAAD/AAAABwAAAAAAAAAAAAAA/wAABwAAAAAAAA
 | 
			
		||||
        AAAHAAAP8AB3CPBwAAAAeHh4d3h4f/d3cAj/AAAAAP////////////AAj/AAAAD/d3d3d3d3d3cABwj/
 | 
			
		||||
        cAAA/wAAAAAAAAAAcAAAj4BwAP8AAAAAAAAAAAAABwj/AAD/AAAAAAAAAAAAAAAP+AAA/wAAAAAAAAAA
 | 
			
		||||
        AAAHj4BwAP8AAAAAAAAAAAAAePgAAAD/AAAAAAAAAAAAcP+ABwAA/wAAAAAAAAAAAAj4AHAAAP8AAAAA
 | 
			
		||||
        AAAAAAAIgAf/AAD/AAAAAAAAAAAAcAB/9wAA/wAAAAAAAAAAAAcHj3AAAP8AAAAAAAAAAAAAf/cAAAD/
 | 
			
		||||
        AAAAAAAAAAAAB/9wAAAA/wAAAAAABwAHBw/3AAAAAP93eHh4eHd4d3AH/3AAAAD////////////wcH/3
 | 
			
		||||
        AAAAd3d3d3d3d3d3AAcH/3AAAAAAAAAAAAAAAHAAcH/3AAAAAAAAAAAAAAAAAAcHjwAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAcHcAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAD//////wAA//4AAH/+AAB//gAAf/8A
 | 
			
		||||
        AH///Dw/wAAAH4AAAA+AAAAHgAACA4AABwGH//+Bh///gYf//wGH//4Dh//8A4f//AGH//wBh//8AYf/
 | 
			
		||||
        /gOH//4Hh//8D4AAAA+AAAAPgAAAB4AAAgPAAAcB////gf///8H////z/////ygAAAAYAAAAMAAAAAEA
 | 
			
		||||
        BAAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA
 | 
			
		||||
        wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAHAAAWAAFgcAAAAAAA////
 | 
			
		||||
        ////AAAAAAAHB3Foh3BwcAAAAAAAAAAIgABwAAAAAHBwcHcIgHcIgAAAAIh4iHeP+HcH+AAAd/j4iPiI
 | 
			
		||||
        iIcAf4AAd/AAAAAWAQcAB/gAd/AAAAAAAAAAAH9wd/AAAAAAAAAAcPgAd4AAAAAAAAAHD4CAd/AAAAAA
 | 
			
		||||
        AAAA+ABwd/AAAAAAAAB4gHgQd4AAAAAAAAAAAI9gd/AAAAAAAAAHD/Bwd/AAAAAAAAAA/2EAd4BxZ3Fn
 | 
			
		||||
        cWd48QAAd/h4d4eHeIcA/wAAAYj4+I+PiIdxb4AABwAAAAAABgEAcP8AAAAAAAAAAAAABw9wAAAAAAAA
 | 
			
		||||
        AAAAAHAAAAAAAAAAAAAAAAAA////APgAHwD4AB8A+AAfAP/DHwDAAA8AgAAHAAAAAwAAAMEAD//hAA//
 | 
			
		||||
        wQAP/4EAD/+BAA//AQAP/4EAD/+BAA//gwAAAAcAAAAHAIAAAwCAAMEA///hAP//8QD///8AKAAAABAA
 | 
			
		||||
        AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
 | 
			
		||||
        AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAHiIiIiHAAAAAHCHcH
 | 
			
		||||
        AAAAAAB3dwBwAHiIiI+IcPcADwdwcHBwD3B/cAAAAAB3hw9wAAAAAHhweHAAAAAHgAAPAAAAAAB3939w
 | 
			
		||||
        AAAAB3gADwAAAAAHgAB/iIiIiHD3AAcHcHcHAHhwAAAAAAAAAIcAAAAAAAAAAP//AADgBwAA8A8AAPwn
 | 
			
		||||
        AAAAAwAAABEAAB/wAAAf8QAAH+EAAB/gAAAf4QAAH+MAAAADAACAEQAA//gAAP//AAAoAAAAMAAAAGAA
 | 
			
		||||
        AAABAAgAAAAAAAAJAAAAAAAAAAAAAAABAAAAAQAAAAAAAAUFBQAICAgADAwMABEREQAVFRUAGBgYAB0d
 | 
			
		||||
        HQAgICAAJSUlACsrKwAtLS0AMjIyADU1NQA5OTkAPj4+AEFBQQBFRUUASkpKAExMTABRUVEAVlZWAFhY
 | 
			
		||||
        WABdXV0AYGBgAGZmZgBpaWkAbGxsAHFxcQB1dXUAenp6AH5+fgCPj48AmJiYAKSkpACtra0AsbGxALW1
 | 
			
		||||
        tQC7u7sAwcHBAMXFxQDJyckAzMzMANDQ0ADZ2dkA6urqAO3t7QD19fUA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBcAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAfAAQRExMTExMTExMTExMTExMTExMTExMTBAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAPACf/
 | 
			
		||||
        ////////////////////////////JwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAMAC7/////////////////
 | 
			
		||||
        ////////////LgALAAAAAAAAAAAAAAAAAAAAAAAAAAAXABMjJCQkJCQkJCQs//8sJCQkJCQkJCQjFAAU
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAf//8fAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAB8TDwwMDAwMBAAf//8fAAQMDAwMDAcAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAFwAf//8fABcAAAAAABcAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAf//8f
 | 
			
		||||
        AAsAAAAAAAQEISEEAA8AAAAAAAAAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAf//8fAAAAAAALEQAc//8n
 | 
			
		||||
        BAAPAAAAAAAAAAAcAAQRExMTExMTExMTExMTExMTExMi//8iExMTEwsAAAAR////KQQADwAAAAAAAAAH
 | 
			
		||||
        ACf///////////////////////////////////8RAAAAGP///ycEAA8AAAAAAAAEAP//////////////
 | 
			
		||||
        //////////////////////8YAA8AABwv//8nBAAPAAAAAAAABC///yQkJCQkJCQkJCQkJCQkJCQkJCQk
 | 
			
		||||
        JCQkJCAEBAAABAAY////KQQADwAAAAAAAC//LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQA
 | 
			
		||||
        GP///ycEAA8AAAAABC//LwQACQwMDAwMDAwMDAwMDAwMDAwMDAwMERgAAAAAAAAEABj///8nBAAdAAAA
 | 
			
		||||
        AP//LgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY////JgAMAAAABC//LwAEAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAELP//LgAJAAAAAP//LwQAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAPAAQp////GAARAAAABC//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwA
 | 
			
		||||
        BCn///8YAAQAAAAAAP//LwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAEJ////xgABAAAAAAA
 | 
			
		||||
        BC//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAQn////GAAEHwAAAAAAAP//LwQAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAABMABCn///8YAAAEHAAAAAAABC//LgQEAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAQEJ////xgAAAAAAAcAAAAAAP//LwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd////
 | 
			
		||||
        GAAAABQkFAATAAAABC//LgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/y8YAAAAGP//LgAJAAAA
 | 
			
		||||
        AP//LwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACwsAAAAY////JwAMAAAABC//LwQAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAABj///8pBAAcAAAAAP//LgAEAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAFwAAGP///ycHAA8AAAAABC//LwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAY
 | 
			
		||||
        ////JwcADAAAAAAAAP//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABf///8pBAAMAAAAAAAA
 | 
			
		||||
        BC//LwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAF////ycHAA8AAAAAAAAAAP//LwAEHQAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAR////KQQACwAAAAAAAAAABC//LwQAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAALEQAd////GAAAGAAAAAAAAAAAAP//LxMTExMTExMTExMTExMTExMTExMTExMTEwsAAAAEK///
 | 
			
		||||
        /xQABAAAAAAAAAAEAC////////////////////////////////////8RAAQABCv///8UAAQAAAAAAAAE
 | 
			
		||||
        AC7///////////////////////////////////8YABwLAAcp//8vFwAEAAAAAAARABMjIyQjJCMkIyQj
 | 
			
		||||
        JCMkIyQjJCMkIyQjJCMkIyAEBAAADAAHKf///xQABAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAHAAAAAsAByv//y8XAAQAAAAAAB8TDwwMDAwMDAwMDAwMDAwMDAwMDAwMDAwPDxgAAAAAAAAL
 | 
			
		||||
        AAcp//8vFAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAHKf//LgALAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAByn/JwALAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQRBAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAFwQABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /////wAA////////AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/wAAAA/8AAP/AAAAD/wAA/+AAAAf/
 | 
			
		||||
        AAD/8AAAB/8AAP//8A+B/wAA///wD4D/AADAAAAAAH8AAIAAAAAAPwAAgAAAAAAfAACAAAAAAA8AAIAA
 | 
			
		||||
        AABgBwAAgAAAAHADAACAAAAB+AEAAID////8AQAAgP////wBAACA////+AEAAID////wAwAAgP///+AH
 | 
			
		||||
        AACA////wAcAAID///+ABwAAgP///4ADAACA////gAEAAID///+AAQAAgP///4ABAACA////wAEAAID/
 | 
			
		||||
        ///gAwAAgP///+AHAACA////wA8AAID///+AHwAAgH///4A/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAAf
 | 
			
		||||
        AACAAAAAAA8AAIAAAABgBwAAwAAAAHADAADgAAAB+AEAAP/////8AQAA//////4BAAD//////wEAAP//
 | 
			
		||||
        ////gwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAB
 | 
			
		||||
        AAAAAAAABQUFAAkJCQANDQ0AERERABUVFQAZGRkAHBwcACIiIgAlJSUAKCgoAC0tLQA3NzcAOTk5AD09
 | 
			
		||||
        PQBBQUEARUVFAElJSQBMTEwAUlJSAFVVVQBiYmIAZWVlAGlpaQBsbGwAcXFxAHZ2dgB5eXkAfX19AIaG
 | 
			
		||||
        hgCJiYkApaWlALKysgC4uLgAv7+/AN7e3gDl5eUA7e3tAPHx8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0GBQUFBQUFBQUFBQUF
 | 
			
		||||
        BQwAAAAAAAAAAAAAAAAAAAAFEx0dHR0dHR0dHR0dHR0dEwUAAAAAAAAAAAAAAAAAAAAmKSkpKSkpKSkp
 | 
			
		||||
        KSkpKSkmAAAAAAAAAAAAAAAAAAAABREaGhoaGhopJhsaGhoaGhEFAAAAAAAAAAAAAAAAAAAAEQoICAgE
 | 
			
		||||
        ACkpAAUGCAgEABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSYAAAAAAAoFBAYAAAAAAAAAAA0GBQUFBQUF
 | 
			
		||||
        BQUFBAApKQAEBg0YACMkCgYAAAAAAAAEEx4dHR0dHR0dHR0dHikmHh4eEwAAICkkCgYAAAAAAAAmKSkp
 | 
			
		||||
        KSkpKSkpKSkpKSkpKSkkAAgEICkkCgYAAAAAACkpGxoaGhoaGhoaGhoaGhoaGxEGAA0EICkkCgYAAAAA
 | 
			
		||||
        KSYEBAgICAgICAgICAgICAgKEQAAABEAISkkCggAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEISkk
 | 
			
		||||
        AAAAACkpAAAAAAAAAAAAAAAAAAAAAAAAAAAABQokKSAAAAAAKSYEAAAAAAAAAAAAAAAAAAAAAAAAAAYK
 | 
			
		||||
        JCkhBBEAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAGCiQpIQANAAAAACkpAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        CAokKSEEAA0AAAAAKSYEAAAAAAAAAAAAAAAAAAAAAAAAJCkhAAAREQUAAAApJgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAfHwQAGCkmAAAAACkpAAAAAAAAAAAAAAAAAAAAAAAAFQQAABUpKRgEAAAAKSYEAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAFQAYKSkYAAAAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAAGCkpGAAAAAAAACkpAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAABBUpKRgAAAAAAAAAKSYEAAYFBQUFBQUFBQUFBQUGDRUAJikfAA0AAAAAAAApKR0d
 | 
			
		||||
        HR0dHR0dHR0dHR0dHR4TAAAaKSkVBAAAAAAAACYpKSkpKSkpKSkpKSkpKSkpKSQAEQAaKSkVAAAAAAAF
 | 
			
		||||
        ERoaGhoaGhoaGhoaGhoaGhobEQYAGwAaKSkVAAAAAAARCggICAgICAgICAgICAgICAoRAAAAGwAaKSkV
 | 
			
		||||
        BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAaKSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        GwAVEwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAP//////AAD//gAAf/4AAH/+AAB//wAAf//8PD/AAAAfgAAAD4AAAAeAAAIDgAAHAYf/
 | 
			
		||||
        /4GH//+Bh///AYf//gOH//wDh//8AYf//AGH//wBh//+A4f//geH//wPgAAAD4AAAA+AAAAHgAACA8AA
 | 
			
		||||
        BwH///+B////wf////P/////KAAAABgAAAAwAAAAAQAIAAAAAABAAgAAAAAAAAAAAAAAAQAAAAEAAAAA
 | 
			
		||||
        AAAEBAQACQkJAAwMDAASEhIAFhYWABkZGQAcHBwAISEhACUlJQAzMzMANDQ0ADo6OgA+Pj4AQUFBAEpK
 | 
			
		||||
        SgBOTk4AUVFRAFVVVQBYWFgAZWVlAGlpaQBsbGwAcXFxAHV1dQB/f38AgICAAIaGhgCUlJQAm5ubAKOj
 | 
			
		||||
        owCkpKQAra2tAL6+vgDAwMAA0dHRANXV1QDY2NgA6enpAOzs7ADx8fEA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcGCQkJCQkJCQkJCQYWAAAAAAAAAAAAAAYnKioq
 | 
			
		||||
        KioqKioqKicGAAAAAAAAAAAAABANExMTEyQkExMTEw0QAAAAAAAAAAAAAAAAAAAABiIiBgAAFAAKAAAA
 | 
			
		||||
        AAAAABEQEA8QEA8QAiIiAhAXDxsdBAAAAAAACh4eHh4eHh4eHiYmHh4TABYqHgQAAAAWGSolJCQkJSQl
 | 
			
		||||
        JSQkJSUbDQkXKh4EAAAUGSoABgYGBgYGBgYGBgYPAAAJFyofBAAUGSkCAAAAAAAAAAAAAAAAAAAAAB0q
 | 
			
		||||
        FgAUGSoAAAAAAAAAAAAAAAAAAAARDSckBgAUGSoCAAAAAAAAAAAAAAAAABENJyUGGwAUGSkCAAAAAAAA
 | 
			
		||||
        AAAAAAAAAA0nJAYAEQAUGSoAAAAAAAAAAAAAAAAAER8lBgYiEQAUGSoCAAAAAAAAAAAAAAAAAAYCBiQp
 | 
			
		||||
        CgAUGSkCAAAAAAAAAAAAAAAAABcGJCkKEQAUGSoAAAAAAAAAAAAAAAAAAAYkJw0QAAAUGSoADxAPEBAP
 | 
			
		||||
        EBAPEBAXDR8qEQkAAAAWGSoeHh4eHh4eHh4eHh4TAA8pIwQAAAAAECQlJCQkJCUkJCQlJCUbEA8NKSMG
 | 
			
		||||
        AAAAEwkGBgYGBgYGBgYGBgYPAAAPDSkjBAAAAAAAAAAAAAAAAAAAAAAAAAAADw0pFgAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAABEGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A+AAfAPgAHwD4AB8A/8MfAMAA
 | 
			
		||||
        DwCAAAcAAAADAAAAwQAP/+EAD//BAA//gQAP/4EAD/8BAA//gQAP/4EAD/+DAAAABwAAAAcAgAADAIAA
 | 
			
		||||
        wQD//+EA///xAP///wAoAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAACkp
 | 
			
		||||
        KQAsLCwAMjIyADU1NQA5OTkAPj4+AEBAQABEREQASEhIAE5OTgBRUVEAWVlZAF5eXgBiYmIAZ2dnAGho
 | 
			
		||||
        aABsbGwAcnJyAHZ2dgB7e3sAf39/AJycnACmpqYAs7OzALS0tADCwsIA1tbWANnZ2QDh4eEA5+fnAOjo
 | 
			
		||||
        6AD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAARGBoaGhoaGhgRAAAAAAAAAAkJCRYWCQkDAAAAAAAAAAAAAA8VFREACQoA
 | 
			
		||||
        AAANGBoaGhoaHR0aCgMdCwAACSAJCQkKCQkJCgoACR0LAAkgCgAAAAAAAAAAABUTHQ8JIAoAAAAAAAAA
 | 
			
		||||
        AAALHwYACSAKAAAAAAAAAAAKHQMDAAkgCgAAAAAAAAAACQETGw8JIAoAAAAAAAAAABURHQMACSABAAAA
 | 
			
		||||
        AAAAAAANHQEAAAogGhoaGhoaGhoKAR0RAAAACQkJCgkJCgkKCgAGHREAAAAAAAAAAAAAAAAAAAMXEQAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAD//wAA4AcAAPAPAAD8JwAAAAMAAAARAAAf8AAAH/EAAB/hAAAf4AAAH+EAAB/j
 | 
			
		||||
        AAAAAwAAgBEAAP/4AAD//wAAKAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA
 | 
			
		||||
        AC8AAABWAAAAawAAAHAAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAA
 | 
			
		||||
        AHIAAAByAAAAcgAAAHIAAAByAAAAcAAAAGsAAABZAAAAMQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAgAAAAngAAAO8AAAD9AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD9AAAA8AAAAKMAAAAjAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAACCAAAA/A4ODv9HR0f/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tL
 | 
			
		||||
        S/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9HR0f/EBAQ/wAA
 | 
			
		||||
        AP0AAACGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAADEAAAA/8PDw/7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+
 | 
			
		||||
        /v7+/v7+yMjI/wAAAP4AAADFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADNAAAA/+7u7v7+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+//7+/v7+/v7+7u7u/wAAAP4AAADOAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAClAAAA/0tL
 | 
			
		||||
        S/+tra3/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf/Y2Nj//v7+///////Y2Nj/sbGx/7Gx
 | 
			
		||||
        sf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+urq7/UFBQ/wAAAP4AAACpAAAABgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAABEAAAA2wAAAP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP9/f3/+/v7+/v7+
 | 
			
		||||
        /v9/f3/+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAOIAAABKAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAGAAAAMwAAAIQAAACzAAAAxwAAAMwAAADMAAAAzAAAAMwAAADNAAAA8wAA
 | 
			
		||||
        AP5/f3/+/v7+/v7+/v9/f3/+AAAA/gAAAPMAAADNAAAAzAAAAMwAAADMAAAAzwAAAOEAAAD7AAAA/QAA
 | 
			
		||||
        AMsAAABrAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAQAAAAEAAAABAAA
 | 
			
		||||
        AAQAAAAGAAAAowAAAP9/f3///v7+//////9/f3//AAAA/gAAAKMAAAAGAAAABAAAAAQAAAAEAAAAGAAA
 | 
			
		||||
        AKUAAAD8AAAA/wAAAP8AAAD7AAAAuQAAAC0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAADQAAAC0AAABTAAAAZAAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAA
 | 
			
		||||
        AGsAAABrAAAAawAAAGsAAABsAAAA0gAAAP5/f3/+/v7+/v7+/v9/f3/+AAAA/gAAANEAAABqAAAAXQAA
 | 
			
		||||
        AD8AAAAaAAAARAAAAPQPDw/+mZmZ/5iYmP4RERH+AAAA/gAAAMQAAAAuAAAAAQAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAlAAAAnwAAAO8AAAD9AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP9/f3///v7+//7+/v9/f3//AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAPoAAADTAAAAugAAAP5wcHD//v7+//7+/v/Gxsb/ERER/wAAAP4AAADEAAAALQAA
 | 
			
		||||
        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAACUAAAA/Q0NDf9GRkb+S0tL/ktLS/9LS0v+S0tL/ktL
 | 
			
		||||
        S/9LS0v+S0tL/0tLS/5LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/+lpaX+/v7+/v//
 | 
			
		||||
        //+kpKT+S0tL/ktLS/9LS0v+S0tL/iwsLP8AAAD+AAAA/gAAAP5GRkb++/v7//7+/v7+/v7+yMjI/xER
 | 
			
		||||
        Ef4AAAD+AAAAxgAAAC0AAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAADfAAAA/sTExP/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/vn5+f9ERET+AAAA/gAAAP4AAAD+ZWVl//z8
 | 
			
		||||
        /P7+/v7+/v7+/8bGxv4SEhL+AAAA/gAAAMQAAAAuAAAAAQAAAAAAAAAAAAAAAAAAACkAAAD2BwcH/vf3
 | 
			
		||||
        9//+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v9oaGj+AAAA/gAA
 | 
			
		||||
        AMgAAAD2AAAA/mdnZ/77+/v+/v7+//7+/v7Gxsb+EhIS/wAAAP4AAADEAAAALgAAAAEAAAAAAAAAAAAA
 | 
			
		||||
        ADMAAAD7CAgI//f39//+/v7/+/v7/7W1tf+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Ky
 | 
			
		||||
        sv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/4+P
 | 
			
		||||
        j/8MDAz/AAAA8QAAAEgAAAB7AAAA9gAAAP9mZmb/+vr6///////+/v7/yMjI/xISEv8AAAD+AAAAxQAA
 | 
			
		||||
        AC4AAAABAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD3AAAAlAAAAA8AAAAMAAAAewAAAPcAAAD+ZmZm//v7+/7+/v7+/v7+/8XF
 | 
			
		||||
        xf4TExP+AAAA/gAAAMEAAAAnAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAAD+AAAA2wAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMsAAADKAAAAvwAAAJ8AAABaAAAAFQAAAAAAAAAAAAAADAAAAH0AAAD2AAAA/mho
 | 
			
		||||
        aP76+vr+/v7+//7+/v7FxcX+EhIS/wAAAP0AAACNAAAABAAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJ
 | 
			
		||||
        Cf8AAAD2AAAALwAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAcAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAwAAAB/AAAA+gAAAP9nZ2f/+vr6///////+/v7/u7u7/wAAAP8AAADOAAAADgAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAEAAABCAAAA8AAAAP4TExP+29vb//7+/v7+/v7+7e3t/wICAv4AAADaAAAAEQAA
 | 
			
		||||
        ADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAADGAAAA/hISEv7FxcX+/v7+//7+/v77+/v+ZGRk/wAA
 | 
			
		||||
        AP4AAAC5AAAACgAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAMgAAAD+ERER/8jIyP/+/v7//v7+//r6
 | 
			
		||||
        +v9nZ2f/AAAA/wAAAPIAAABaAAAAAQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAxgAAAP4SEhL+xsbG//7+
 | 
			
		||||
        /v7+/v7++/v7/2dnZ/4AAAD+AAAA9wAAAHsAAAAMAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAADGAAAA/hER
 | 
			
		||||
        Ef7Gxsb+/v7+//7+/v77+/v+aGho/wAAAP4AAAD4AAAAgAAAAA4AAAAAAAAAAAAAADYAAAD9CAgI//f3
 | 
			
		||||
        9//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAA
 | 
			
		||||
        ALEAAAD+ERER/8nJyf/+/v7//v7+//r6+v9mZmb/AAAA/wAAAP8AAADvAAAAkgAAADkAAAAHAAAAAAAA
 | 
			
		||||
        ADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAPgAAAPYQEBD+xsbG//7+/v7+/v7++/v7/2ZmZv4AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AOEAAABSAAAAAQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAP50dHT+/v7+//7+/v77+/v+Z2dn/wAAAP4AAAD+AAAA/1NT
 | 
			
		||||
        U/6zs7P+UlJS/wAAAP4AAAC1AAAACgAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVgAAAP5MTEz/+vr6//n5+f9lZWX/AAAA/wAA
 | 
			
		||||
        AP8AAAD/X19f//r6+v/+/v7/7e3t/wMDA/8AAADaAAAAEQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAN8AAAD+Li4u/ysr
 | 
			
		||||
        K/4AAAD+AAAA/gAAAP5gYGD++Pj4//7+/v7+/v7+wMDA/wAAAP4AAADQAAAADwAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA
 | 
			
		||||
        AFwAAADQAAAA+QAAAP4AAAD+AAAA/15eXv74+Pj+/v7+//7+/v7Ly8v+FhYW/wAAAP4AAACSAAAABQAA
 | 
			
		||||
        ADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAAAnAAAAqAAAAP8AAAD/Xl5e//r6+v/+/v7//v7+/8vLy/8VFRX/AAAA/gAA
 | 
			
		||||
        AMUAAAApAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAB1AAAA9AAAAP5fX1/++Pj4//7+/v7+/v7+y8vL/xUV
 | 
			
		||||
        Ff4AAAD+AAAAygAAADIAAAABAAAAAAAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAADzAAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAGoAAADzAAAA/15eXv/5+fn//v7+//7+
 | 
			
		||||
        /v/MzMz/FhYW/wAAAP4AAADKAAAAMwAAAAEAAAAAAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAOEAAAD+XV1d//v7
 | 
			
		||||
        +/7+/v7+/v7+/8vLy/4VFRX+AAAA/gAAAMkAAAAyAAAAAQAAAAAAAAAAAAAAAAAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAAD7AAAAjAAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAA
 | 
			
		||||
        AGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABpAAAAXQAAAEAAAAAbAAAAXAAA
 | 
			
		||||
        AP1DQ0P++fn5//7+/v7+/v7+zMzM/xQUFP4AAAD+AAAA0gAAADIAAAABAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        ADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        APoAAADTAAAAvQAAAP53d3f//v7+//7+/v/+/v7/Z2dn/wAAAP8AAAD+AAAAoAAAAAwAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAADUAAAD8CAgI/vf39//+/v7+9/f3/lJSUv9LS0v+S0tL/ktLS/9LS0v+S0tL/0tL
 | 
			
		||||
        S/5LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktL
 | 
			
		||||
        S/9LS0v+S0tL/iwsLP8AAAD+AAAA/gAAAP4UFBT+0dHR//7+/v7+/v7++vr6/1dXV/4AAAD+AAAA9AAA
 | 
			
		||||
        AHAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAD4CAgI/vf39//+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/vn5+f9ERET+AAAA/gAAAPUAAAD+FxcX/9LS0v7+/v7+/v7+//f3
 | 
			
		||||
        9/5YWFj+AAAA/gAAAPIAAABwAAAACwAAAAAAAAAAAAAAAAAAACAAAADtAwMD/+zs7P/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v9paWn/AAAA/gAAAJMAAADQAAAA/hkZ
 | 
			
		||||
        Gf/R0dH//v7+//7+/v/39/f/WFhY/wAAAP8AAADyAAAAcAAAAAoAAAAAAAAAAAAAAAwAAAC7AAAA/ktL
 | 
			
		||||
        S/+urq7+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/7Kysv6ysrL+srKy/rKysv+ysrL+srKy/rKy
 | 
			
		||||
        sv+ysrL+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/o+Pj/8MDAz+AAAA8QAA
 | 
			
		||||
        ADkAAAA0AAAA0AAAAP4YGBj+0NDQ//7+/v7+/v7++fn5/1hYWP4AAAD+AAAA8wAAAG8AAAAKAAAAAAAA
 | 
			
		||||
        AAEAAABMAAAA3QAAAP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD3AAAAlQAAAA8AAAABAAAANAAAANEAAAD+GBgY/9HR0f7+/v7+/v7+//f39/5ZWVn+AAAA/gAA
 | 
			
		||||
        AO4AAABUAAAAAQAAAAAAAAAGAAAANAAAAIQAAAC1AAAAxwAAAMsAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMsAAADKAAAAvwAAAKAAAABbAAAAFQAAAAAAAAAAAAAAAQAAADYAAADRAAAA/hkZGf/R0dH//v7+//7+
 | 
			
		||||
        /v/39/f/VlZW/wAAAP4AAAC0AAAACQAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAHAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAcAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA1AAAA0AAA
 | 
			
		||||
        AP4YGBj+0NDQ//7+/v7+/v7+6urq/wICAv4AAADYAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAABAAAANQAAANEAAAD+GBgY/9DQ0P7+/v7+wsLC/wAAAP4AAADPAAAADwAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAADOAAAA/g4ODv9CQkL/Dg4O/wAAAP0AAACOAAAABQAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAvAAAApwAAAOsAAAD4AAAA6QAA
 | 
			
		||||
        AJ8AAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA
 | 
			
		||||
        ACUAAAA1AAAAJgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA/+AAAAf/AAD/wAAAA/8AAP+A
 | 
			
		||||
        AAAB/wAA/4AAAAH/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAAf8AAP/4AAAAfwAAwAAAAAA/
 | 
			
		||||
        AACAAAAAAB8AAAAAAAAADwAAAAAAAAAHAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAABAAAAAAAAYAAAAAAA
 | 
			
		||||
        AAHwAAAAAH////AAAAAAf///8AAAAAB////gAAAAAH///8ABAAAAf///gAMAAAB///8AAQAAAH///wAA
 | 
			
		||||
        AAAAf///AAAAAAB///8AAAAAAH///wAAAAAAf///AAAAAAB///+AAQAAAH///4ABAAAAf///AAMAAAB/
 | 
			
		||||
        //8ABwAAAAAAAAAPAAAAAAAAAB8AAAAAAAAADwAAAAAAAAAHAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAA
 | 
			
		||||
        AACAAAAAYAAAAPAAAAHwAAAA//////gAAAD//////AAAAP/////+AQAA//////+DAAD///////8AACgA
 | 
			
		||||
        AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAABwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAIAAABYAAAAxgAAAOYAAADsAAAA7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7QAA
 | 
			
		||||
        AO0AAADtAAAA7QAAAOwAAADnAAAAyAAAAFwAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAO9UVFT/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eH
 | 
			
		||||
        h/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/9XV1f/AAAA8AAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAA/vLy8v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//Pz8/8AAAD+AAAAPAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAADrR0dH/3Z2dv92dnb/dnZ2/3Z2
 | 
			
		||||
        dv92dnb/enp6//v7+//7+/v/eXl5/3Z2dv92dnb/dnZ2/3Z2dv92dnb/SUlJ/wAAAO0AAAAgAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEsAAAC2AAAA1wAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAO4GBgb++Pj4//j4+P8GBgb+AAAA7gAAAN0AAADdAAAA3gAAAPAAAAD+AAAArQAA
 | 
			
		||||
        ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAAcAAAAHAAAABwAA
 | 
			
		||||
        AAgAAAAKAAAACwAAAAsAAAALAAAAdQYGBv74+Pj/+Pj4/wYGBv4AAAB1AAAACQAAAAUAAAAWAAAA0g4O
 | 
			
		||||
        Dv4ODg7+AAAA3gAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABaAAAAxAAAAOQAAADpAAAA6QAA
 | 
			
		||||
        AOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAAD1BgYG//j4+P/4+Pj/BgYG/gAAAPUAAADjAAAAwwAA
 | 
			
		||||
        AJQCAgL+3d3d/+Xl5f8pKSn+AAAA5QAAADsAAAAAAAAAAAAAAAAAAAAAAAAALgAAAPNUVFT/hoaG/4aG
 | 
			
		||||
        hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+JiYn/+/v7//v7+/+JiYn/hoaG/4aG
 | 
			
		||||
        hv9SUlL/AAAA/gAAAP6ysrL//v7+/+bm5v8pKSn+AAAA5QAAADwAAAAAAAAAAAAAAAAAAABlAwMD/vb2
 | 
			
		||||
        9v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+/+3t7f8BAQH+AAAA4ggICP64uLj//v7+/+bm5v8pKSn+AAAA5QAAADwAAAAAAAAAAAAA
 | 
			
		||||
        AHYFBQX++fn5//v7+/96enr/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3
 | 
			
		||||
        d/93d3f/d3d3/3d3d/93d3f/RUVF/gAAAOoAAAA2AAAAvgkJCf64uLj//v7+/+bm5v8pKSn+AAAA5QAA
 | 
			
		||||
        ADwAAAAAAAAAeAUFBf75+fn/9/f3/wYGBv4AAADvAAAA3QAAAN0AAADdAAAA3QAAAN0AAADdAAAA3QAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAN0AAADdAAAA3AAAANcAAAC0AAAASgAAAAEAAAAWAAAAvgkJCf64uLj//v7+/+bm
 | 
			
		||||
        5v8pKSn+AAAA2gAAABYAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGsAAAAFAAAABQAAAAUAAAAFAAAABQAA
 | 
			
		||||
        AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAYAAAA1AkJ
 | 
			
		||||
        Cf6/v7///v7+/97e3v8BAQH+AAAAQgAAAHgFBQX++fn5//f39/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        ADsAAADqKSkp/+bm5v/+/v7/srKy/wAAAPwAAAA3AAAAeAUFBf75+fn/9/f3/wYGBv4AAABmAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAA7AAAA5ikpKf/m5ub//v7+/7i4uP8JCQn+AAAAtAAAAAoAAAB4BQUF/vn5+f/39/f/BgYG/gAA
 | 
			
		||||
        AGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAOgAAAOYpKSn/5ubm//7+/v+5ubn/CQkJ/gAAAMAAAAAYAAAAAAAAAHgFBQX++fn5//f3
 | 
			
		||||
        9/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAABMAAADZKSkp/+bm5v/+/v7/uLi4/wgICP4AAAD+AAAAxwAAAFIAAAACAAAAeAUF
 | 
			
		||||
        Bf75+fn/9/f3/wYGBv4AAABmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAOwICAv7f39///v7+/7i4uP8JCQn+AAAA/k1NTf9MTEz/AAAA8AAA
 | 
			
		||||
        ACcAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAA/KWlpf+mpqb/CQkJ/gAAAP9oaGj//Pz8//Hx
 | 
			
		||||
        8f8BAQH+AAAASAAAAHgFBQX++fn5//f39/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAACdAAAA9QAAAP4AAAD/aGho//39
 | 
			
		||||
        /f/9/f3/a2tr/wAAAPMAAAAoAAAAeAUFBf75+fn/9/f3/wYGBv4AAABmAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAACXAAAA/2dn
 | 
			
		||||
        Z//8/Pz//f39/21tbf8AAAD7AAAAeAAAAAMAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGYAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAcwAA
 | 
			
		||||
        APpoaGj//f39//39/f9sbGz/AAAA+wAAAHwAAAAFAAAAAAAAAHgFBQX++fn5//f39/8GBgb+AAAAbgAA
 | 
			
		||||
        AAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAGAAAAAgAA
 | 
			
		||||
        ACIAAADxZmZm//39/f/9/f3/bW1t/wAAAPsAAAB8AAAABQAAAAAAAAAAAAAAeAUFBf75+fn/9/f3/wYG
 | 
			
		||||
        Bv4AAAD1AAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAA
 | 
			
		||||
        AOMAAADDAAAAmwMDA/7y8vL//v7+/6ampv8AAAD+AAAAxAAAAAoAAAAAAAAAAAAAAAAAAAB1BQUF/vn5
 | 
			
		||||
        +f/7+/v/ioqK/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aG
 | 
			
		||||
        hv+Ghob/hoaG/1JSUv8AAAD+AAAA/nBwcP/+/v7//Pz8/2NjY/8AAAD6AAAAdQAAAAQAAAAAAAAAAAAA
 | 
			
		||||
        AGMDAwP+9PT0//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7/7e3t/wEBAf4AAAC5AAAA/HJycv/9/f3//Pz8/2NjY/8AAAD6AAAAdAAA
 | 
			
		||||
        AAQAAAAAAAAAKgAAAO9HR0f+d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3
 | 
			
		||||
        d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9FRUX+AAAA6gAAACMAAACCAAAA/HJycv/9/f3//Pz8/2Nj
 | 
			
		||||
        Y/8AAAD6AAAAcQAAAAIAAAACAAAATQAAALYAAADXAAAA3AAAAN0AAADdAAAA3QAAAN0AAADdAAAA3QAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAN0AAADdAAAA3QAAAN0AAADcAAAA1wAAALUAAABKAAAAAQAAAAUAAACCAAAA/HJy
 | 
			
		||||
        cv/9/f3//Pz8/2JiYv8AAADxAAAAJQAAAAAAAAAAAAAAAAAAAAIAAAAEAAAABQAAAAUAAAAFAAAABQAA
 | 
			
		||||
        AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAQAAAACAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAUAAACCAAAA/HJycv/9/f3/8PDw/wEBAf4AAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAUAAACCAAAA+1ZWVv9UVFT/AAAA8gAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAABgAAAAuwAAALoAAABaAAAAAwAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA/wAA//wA
 | 
			
		||||
        AD/8AAA//AAAP/wAAD/8AAA/wAAAHwAAAA8AAAAHAAAAAwAAAAEAAAAAAAAPAAP//wAD//4AA//8AQP/
 | 
			
		||||
        +AAD//gAA//4AAP/+AAD//wAA//4AQAAAAMAAAAHAAAAAwAAAAEAAAAAAAAAAOAADwD///+A////wP//
 | 
			
		||||
        //MoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAA
 | 
			
		||||
        AG4AAAB6AAAAewAAAHsAAAB7AAAAewAAAHoAAABuAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AJKzs7P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/tLS0/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAABVLy8v4js7O+47OzvynZ2d/pycnP47OzvyOzs77jAwMPsAAAB3AAAAAAAAAAAAAAAAAAAAFwAA
 | 
			
		||||
        AGwAAAB4AAAAeAAAAHkAAAB6AAAAl39/f/5/f3/+AAAAlQAAAF07OzvzR0dH9gAAAFcAAAAAAAAAAAAA
 | 
			
		||||
        AKG0tLT/wsLC/8LCwv/CwsL/wsLC/8LCwv/g4OD/4ODg/8LCwv9QUFD+Ly8v9+fn5/9OTk74AAAAVwAA
 | 
			
		||||
        AAACAgK7+fn5/z4+Pvs7OzvuOzs77js7O+47OzvuOzs77js7O+47OzvsERERugAAAEMyMjLu5+fn/05O
 | 
			
		||||
        TvgAAABLAgICu/j4+P8DAwOzAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAAAAAAAAAAAhHZ2
 | 
			
		||||
        dv7j4+P/AAAAnQICArv4+Pj/AwMDsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV05O
 | 
			
		||||
        Tvjn5+f/MjIy7wAAADUCAgK7+Pj4/wMDA7IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0ND
 | 
			
		||||
        Q/Xn5+f/MjIy/iYmJvEAAABbAgICu/j4+P8DAwOyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AA4pKSnjKysr/nNzc//W1tb/AAAAmAICArv4+Pj/AwMDsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAhHNzc//Z2dn/Gxsb3AAAACACAgK7+Pj4/wMDA9gAAAB4AAAAeAAAAHgAAAB4AAAAeAAA
 | 
			
		||||
        AHgAAAB2AAAAYVdXV/vo6Oj/Gxsb7wAAACMAAAAAAgICtfr6+v/Dw8P/wsLC/8LCwv/CwsL/wsLC/8LC
 | 
			
		||||
        wv/CwsL/wsLC/1BQUP4cHBzs2tra/3BwcP0AAAB6AAAAAQAAAFovLy/jOzs77js7O+47OzvuOzs77js7
 | 
			
		||||
        O+47OzvuOzs77js7O+wRERG6AAAAKxwcHN7a2tr/cHBw/QAAAGMAAAAAAAAAAAAAAAIAAAACAAAAAgAA
 | 
			
		||||
        AAIAAAACAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAjHBwc3qampv8AAACXAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAABeAAAAF+AHAADgBwAA4AcAAAAD
 | 
			
		||||
        AAAAAQAAAAAAAAAwAAAf4AAAH8AAAB/AAAAf4AAAAAEAAAAAAAAAAAAAwDAAAP/4AAA=
 | 
			
		||||
</value>
 | 
			
		||||
  </data>
 | 
			
		||||
  <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
 | 
			
		||||
    <value>39</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
    <value>
 | 
			
		||||
        AAABAAsAMDAQAAEABABoBgAAtgAAACAgEAABAAQA6AIAAB4HAAAYGBAAAQAEAOgBAAAGCgAAEBAQAAEA
 | 
			
		||||
        BAAoAQAA7gsAADAwAAABAAgAqA4AABYNAAAgIAAAAQAIAKgIAAC+GwAAGBgAAAEACADIBgAAZiQAABAQ
 | 
			
		||||
        AAABAAgAaAUAAC4rAAAwMAAAAQAgAKglAACWMAAAICAAAAEAIACoEAAAPlYAABAQAAABACAAaAQAAOZm
 | 
			
		||||
        AAAoAAAAMAAAAGAAAAABAAQAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
 | 
			
		||||
        AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAHAAAAAAAAAA
 | 
			
		||||
        AAAAcAcHBxYWFhYWFhYWEAcAAAAAAAAAAAAAAI//////////////+AYAAAAAAAAAAAAAcP//////////
 | 
			
		||||
        /////wEAAAAAAAAAAAAAcBiIiIiIj/iIiIiIhgcAAAAAAAAAAAAAAAAAAAAAf/cAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAHcHAHAAf/cABwBwABAAAAAAAAAAAAAAAAAAAABwf/cHAAAHAABwAAAAAAAAAAAAAAAAAAAAf/cA
 | 
			
		||||
        AAAACHAAAAAAAABwAAAAAAAAAAAAf/cAAABwf/gAcAAAAAcAcHBxYWcWF2F2j/gWcWAAD/+AAAAAAAAI
 | 
			
		||||
        //////////////////EAB//4AHAAAAAP//////////////////cHAH//gAAAAAAP/4iIiIeIiHiHiHiI
 | 
			
		||||
        eHAAAAf/+ABwAAAP/wAAAAAAAAAAAAAAAABwAAB//4ABAAAP/wABYBYWAWFhBwFgcHAAAAAH//gAcAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAf/+AYAAP/wAAAAAAAAAAAAAAAAAAAAAACP/wAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAj/9wcAAP/wAAAAAAAAAAAAAAAAAAABAP//cAAAAP/wAAAAAAAAAAAAAAAAAABgD//3AAAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAEAj/9wBwAAAP/wAAAAAAAAAAAAAAAAAHAP//cABwAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAACP/3AAAAAAAP/wAAAAAAAAAAAAAAAAAAf/9wAHhwcAAP/wAAAAAAAAAAAAAAAAAAf/cAB4+AAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAeP+AAAAP/wAAAAAAAAAAAAAAAAAAAAAHj/gAcAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AAAABwB//4AHAAAP/wAAAAAAAAAAAAAAAAAAAAf/+ABwAAAP/wAAAAAAAAAAAAAAAAAAAH//gAEAAAAP
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAB//4AHAAAAAP/wBwAAAAAAAAAAAAAAAAf/+AAAAAAAAP/wAAAAAAAAAAAAAA
 | 
			
		||||
        AABwf/9wBwAAAAAP/3B3FncWdxZxZxZxZwAACP/3AAAAAAAP//////////////////cAAI/4cAAAAAAP
 | 
			
		||||
        //////////////////cHAA//9wAAAAcHeIh4h4h4h4iIeIh4iHAABwCP/3AAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AABwAAAP/4cAAAAHcBYBYWBwFgFhYBYWFnAAAAcAj/9wcAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+AAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAHAI+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAcAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /////wAA////////AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/wAAAA/8AAP/AAAAD/wAA/+AAAAf/
 | 
			
		||||
        AAD/8AAAB/8AAP//8A+B/wAA///wD4D/AADAAAAAAH8AAIAAAAAAPwAAgAAAAAAfAACAAAAAAA8AAIAA
 | 
			
		||||
        AABgBwAAgAAAAHADAACAAAAB+AEAAID////8AQAAgP////wBAACA////+AEAAID////wAwAAgP///+AH
 | 
			
		||||
        AACA////wAcAAID///+ABwAAgP///4ADAACA////gAEAAID///+AAQAAgP///4ABAACA////wAEAAID/
 | 
			
		||||
        ///gAwAAgP///+AHAACA////wA8AAID///+AHwAAgH///4A/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAAf
 | 
			
		||||
        AACAAAAAAA8AAIAAAABgBwAAwAAAAHADAADgAAAB+AEAAP/////8AQAA//////4BAAD//////wEAAP//
 | 
			
		||||
        ////gwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
 | 
			
		||||
        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAeHh3h3h3h3cAAAAAAAAAAP//
 | 
			
		||||
        ////////AAAAAAAAAAB3d3d/93d3cAAAAAAAAAAAAAAAD/AAAABwAAAAAAAAAAAAAA/wAABwAAAAAAAA
 | 
			
		||||
        AAAHAAAP8AB3CPBwAAAAeHh4d3h4f/d3cAj/AAAAAP////////////AAj/AAAAD/d3d3d3d3d3cABwj/
 | 
			
		||||
        cAAA/wAAAAAAAAAAcAAAj4BwAP8AAAAAAAAAAAAABwj/AAD/AAAAAAAAAAAAAAAP+AAA/wAAAAAAAAAA
 | 
			
		||||
        AAAHj4BwAP8AAAAAAAAAAAAAePgAAAD/AAAAAAAAAAAAcP+ABwAA/wAAAAAAAAAAAAj4AHAAAP8AAAAA
 | 
			
		||||
        AAAAAAAIgAf/AAD/AAAAAAAAAAAAcAB/9wAA/wAAAAAAAAAAAAcHj3AAAP8AAAAAAAAAAAAAf/cAAAD/
 | 
			
		||||
        AAAAAAAAAAAAB/9wAAAA/wAAAAAABwAHBw/3AAAAAP93eHh4eHd4d3AH/3AAAAD////////////wcH/3
 | 
			
		||||
        AAAAd3d3d3d3d3d3AAcH/3AAAAAAAAAAAAAAAHAAcH/3AAAAAAAAAAAAAAAAAAcHjwAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAcHcAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAD//////wAA//4AAH/+AAB//gAAf/8A
 | 
			
		||||
        AH///Dw/wAAAH4AAAA+AAAAHgAACA4AABwGH//+Bh///gYf//wGH//4Dh//8A4f//AGH//wBh//8AYf/
 | 
			
		||||
        /gOH//4Hh//8D4AAAA+AAAAPgAAAB4AAAgPAAAcB////gf///8H////z/////ygAAAAYAAAAMAAAAAEA
 | 
			
		||||
        BAAAAAAAIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA
 | 
			
		||||
        wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAHAAAWAAFgcAAAAAAA////
 | 
			
		||||
        ////AAAAAAAHB3Foh3BwcAAAAAAAAAAIgABwAAAAAHBwcHcIgHcIgAAAAIh4iHeP+HcH+AAAd/j4iPiI
 | 
			
		||||
        iIcAf4AAd/AAAAAWAQcAB/gAd/AAAAAAAAAAAH9wd/AAAAAAAAAAcPgAd4AAAAAAAAAHD4CAd/AAAAAA
 | 
			
		||||
        AAAA+ABwd/AAAAAAAAB4gHgQd4AAAAAAAAAAAI9gd/AAAAAAAAAHD/Bwd/AAAAAAAAAA/2EAd4BxZ3Fn
 | 
			
		||||
        cWd48QAAd/h4d4eHeIcA/wAAAYj4+I+PiIdxb4AABwAAAAAABgEAcP8AAAAAAAAAAAAABw9wAAAAAAAA
 | 
			
		||||
        AAAAAHAAAAAAAAAAAAAAAAAA////APgAHwD4AB8A+AAfAP/DHwDAAA8AgAAHAAAAAwAAAMEAD//hAA//
 | 
			
		||||
        wQAP/4EAD/+BAA//AQAP/4EAD/+BAA//gwAAAAcAAAAHAIAAAwCAAMEA///hAP//8QD///8AKAAAABAA
 | 
			
		||||
        AAAgAAAAAQAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
 | 
			
		||||
        AACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAHiIiIiHAAAAAHCHcH
 | 
			
		||||
        AAAAAAB3dwBwAHiIiI+IcPcADwdwcHBwD3B/cAAAAAB3hw9wAAAAAHhweHAAAAAHgAAPAAAAAAB3939w
 | 
			
		||||
        AAAAB3gADwAAAAAHgAB/iIiIiHD3AAcHcHcHAHhwAAAAAAAAAIcAAAAAAAAAAP//AADgBwAA8A8AAPwn
 | 
			
		||||
        AAAAAwAAABEAAB/wAAAf8QAAH+EAAB/gAAAf4QAAH+MAAAADAACAEQAA//gAAP//AAAoAAAAMAAAAGAA
 | 
			
		||||
        AAABAAgAAAAAAAAJAAAAAAAAAAAAAAABAAAAAQAAAAAAAAUFBQAICAgADAwMABEREQAVFRUAGBgYAB0d
 | 
			
		||||
        HQAgICAAJSUlACsrKwAtLS0AMjIyADU1NQA5OTkAPj4+AEFBQQBFRUUASkpKAExMTABRUVEAVlZWAFhY
 | 
			
		||||
        WABdXV0AYGBgAGZmZgBpaWkAbGxsAHFxcQB1dXUAenp6AH5+fgCPj48AmJiYAKSkpACtra0AsbGxALW1
 | 
			
		||||
        tQC7u7sAwcHBAMXFxQDJyckAzMzMANDQ0ADZ2dkA6urqAO3t7QD19fUA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBcAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAfAAQRExMTExMTExMTExMTExMTExMTExMTBAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAPACf/
 | 
			
		||||
        ////////////////////////////JwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAMAC7/////////////////
 | 
			
		||||
        ////////////LgALAAAAAAAAAAAAAAAAAAAAAAAAAAAXABMjJCQkJCQkJCQs//8sJCQkJCQkJCQjFAAU
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAf//8fAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAB8TDwwMDAwMBAAf//8fAAQMDAwMDAcAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAFwAf//8fABcAAAAAABcAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAf//8f
 | 
			
		||||
        AAsAAAAAAAQEISEEAA8AAAAAAAAAAAAAGAQAAAAAAAAAAAAAAAAAAAAAAAAf//8fAAAAAAALEQAc//8n
 | 
			
		||||
        BAAPAAAAAAAAAAAcAAQRExMTExMTExMTExMTExMTExMi//8iExMTEwsAAAAR////KQQADwAAAAAAAAAH
 | 
			
		||||
        ACf///////////////////////////////////8RAAAAGP///ycEAA8AAAAAAAAEAP//////////////
 | 
			
		||||
        //////////////////////8YAA8AABwv//8nBAAPAAAAAAAABC///yQkJCQkJCQkJCQkJCQkJCQkJCQk
 | 
			
		||||
        JCQkJCAEBAAABAAY////KQQADwAAAAAAAC//LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQA
 | 
			
		||||
        GP///ycEAA8AAAAABC//LwQACQwMDAwMDAwMDAwMDAwMDAwMDAwMERgAAAAAAAAEABj///8nBAAdAAAA
 | 
			
		||||
        AP//LgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY////JgAMAAAABC//LwAEAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAELP//LgAJAAAAAP//LwQAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAPAAQp////GAARAAAABC//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwA
 | 
			
		||||
        BCn///8YAAQAAAAAAP//LwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAEJ////xgABAAAAAAA
 | 
			
		||||
        BC//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAQn////GAAEHwAAAAAAAP//LwQAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAABMABCn///8YAAAEHAAAAAAABC//LgQEAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAQEJ////xgAAAAAAAcAAAAAAP//LwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd////
 | 
			
		||||
        GAAAABQkFAATAAAABC//LgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/y8YAAAAGP//LgAJAAAA
 | 
			
		||||
        AP//LwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACwsAAAAY////JwAMAAAABC//LwQAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAABj///8pBAAcAAAAAP//LgAEAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAFwAAGP///ycHAA8AAAAABC//LwQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAY
 | 
			
		||||
        ////JwcADAAAAAAAAP//LgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEABf///8pBAAMAAAAAAAA
 | 
			
		||||
        BC//LwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAF////ycHAA8AAAAAAAAAAP//LwAEHQAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAR////KQQACwAAAAAAAAAABC//LwQAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAALEQAd////GAAAGAAAAAAAAAAAAP//LxMTExMTExMTExMTExMTExMTExMTExMTEwsAAAAEK///
 | 
			
		||||
        /xQABAAAAAAAAAAEAC////////////////////////////////////8RAAQABCv///8UAAQAAAAAAAAE
 | 
			
		||||
        AC7///////////////////////////////////8YABwLAAcp//8vFwAEAAAAAAARABMjIyQjJCMkIyQj
 | 
			
		||||
        JCMkIyQjJCMkIyQjJCMkIyAEBAAADAAHKf///xQABAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAHAAAAAsAByv//y8XAAQAAAAAAB8TDwwMDAwMDAwMDAwMDAwMDAwMDAwMDAwPDxgAAAAAAAAL
 | 
			
		||||
        AAcp//8vFAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAHKf//LgALAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAByn/JwALAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQRBAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAFwQABBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /////wAA////////AAD/4AAAB/8AAP/AAAAD/wAA/8AAAAP/AAD/wAAAA/8AAP/AAAAD/wAA/+AAAAf/
 | 
			
		||||
        AAD/8AAAB/8AAP//8A+B/wAA///wD4D/AADAAAAAAH8AAIAAAAAAPwAAgAAAAAAfAACAAAAAAA8AAIAA
 | 
			
		||||
        AABgBwAAgAAAAHADAACAAAAB+AEAAID////8AQAAgP////wBAACA////+AEAAID////wAwAAgP///+AH
 | 
			
		||||
        AACA////wAcAAID///+ABwAAgP///4ADAACA////gAEAAID///+AAQAAgP///4ABAACA////wAEAAID/
 | 
			
		||||
        ///gAwAAgP///+AHAACA////wA8AAID///+AHwAAgH///4A/AACAAAAAAD8AAIAAAAAAPwAAgAAAAAAf
 | 
			
		||||
        AACAAAAAAA8AAIAAAABgBwAAwAAAAHADAADgAAAB+AEAAP/////8AQAA//////4BAAD//////wEAAP//
 | 
			
		||||
        ////gwAA////////AAD///////8AACgAAAAgAAAAQAAAAAEACAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAB
 | 
			
		||||
        AAAAAAAABQUFAAkJCQANDQ0AERERABUVFQAZGRkAHBwcACIiIgAlJSUAKCgoAC0tLQA3NzcAOTk5AD09
 | 
			
		||||
        PQBBQUEARUVFAElJSQBMTEwAUlJSAFVVVQBiYmIAZWVlAGlpaQBsbGwAcXFxAHZ2dgB5eXkAfX19AIaG
 | 
			
		||||
        hgCJiYkApaWlALKysgC4uLgAv7+/AN7e3gDl5eUA7e3tAPHx8QD29vYA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0GBQUFBQUFBQUFBQUF
 | 
			
		||||
        BQwAAAAAAAAAAAAAAAAAAAAFEx0dHR0dHR0dHR0dHR0dEwUAAAAAAAAAAAAAAAAAAAAmKSkpKSkpKSkp
 | 
			
		||||
        KSkpKSkmAAAAAAAAAAAAAAAAAAAABREaGhoaGhopJhsaGhoaGhEFAAAAAAAAAAAAAAAAAAAAEQoICAgE
 | 
			
		||||
        ACkpAAUGCAgEABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSYAAAAAAAoFBAYAAAAAAAAAAA0GBQUFBQUF
 | 
			
		||||
        BQUFBAApKQAEBg0YACMkCgYAAAAAAAAEEx4dHR0dHR0dHR0dHikmHh4eEwAAICkkCgYAAAAAAAAmKSkp
 | 
			
		||||
        KSkpKSkpKSkpKSkpKSkkAAgEICkkCgYAAAAAACkpGxoaGhoaGhoaGhoaGhoaGxEGAA0EICkkCgYAAAAA
 | 
			
		||||
        KSYEBAgICAgICAgICAgICAgKEQAAABEAISkkCggAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAoEISkk
 | 
			
		||||
        AAAAACkpAAAAAAAAAAAAAAAAAAAAAAAAAAAABQokKSAAAAAAKSYEAAAAAAAAAAAAAAAAAAAAAAAAAAYK
 | 
			
		||||
        JCkhBBEAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAGCiQpIQANAAAAACkpAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        CAokKSEEAA0AAAAAKSYEAAAAAAAAAAAAAAAAAAAAAAAAJCkhAAAREQUAAAApJgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAfHwQAGCkmAAAAACkpAAAAAAAAAAAAAAAAAAAAAAAAFQQAABUpKRgEAAAAKSYEAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAFQAYKSkYAAAAAAApJgAAAAAAAAAAAAAAAAAAAAAAAAAAGCkpGAAAAAAAACkpAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAABBUpKRgAAAAAAAAAKSYEAAYFBQUFBQUFBQUFBQUGDRUAJikfAA0AAAAAAAApKR0d
 | 
			
		||||
        HR0dHR0dHR0dHR0dHR4TAAAaKSkVBAAAAAAAACYpKSkpKSkpKSkpKSkpKSkpKSQAEQAaKSkVAAAAAAAF
 | 
			
		||||
        ERoaGhoaGhoaGhoaGhoaGhobEQYAGwAaKSkVAAAAAAARCggICAgICAgICAgICAgICAoRAAAAGwAaKSkV
 | 
			
		||||
        BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAaKSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        GwAVEwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAP//////AAD//gAAf/4AAH/+AAB//wAAf//8PD/AAAAfgAAAD4AAAAeAAAIDgAAHAYf/
 | 
			
		||||
        /4GH//+Bh///AYf//gOH//wDh//8AYf//AGH//wBh//+A4f//geH//wPgAAAD4AAAA+AAAAHgAACA8AA
 | 
			
		||||
        BwH///+B////wf////P/////KAAAABgAAAAwAAAAAQAIAAAAAABAAgAAAAAAAAAAAAAAAQAAAAEAAAAA
 | 
			
		||||
        AAAEBAQACQkJAAwMDAASEhIAFhYWABkZGQAcHBwAISEhACUlJQAzMzMANDQ0ADo6OgA+Pj4AQUFBAEpK
 | 
			
		||||
        SgBOTk4AUVFRAFVVVQBYWFgAZWVlAGlpaQBsbGwAcXFxAHV1dQB/f38AgICAAIaGhgCUlJQAm5ubAKOj
 | 
			
		||||
        owCkpKQAra2tAL6+vgDAwMAA0dHRANXV1QDY2NgA6enpAOzs7ADx8fEA+fn5AP7+/gAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
 | 
			
		||||
        /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcGCQkJCQkJCQkJCQYWAAAAAAAAAAAAAAYnKioq
 | 
			
		||||
        KioqKioqKicGAAAAAAAAAAAAABANExMTEyQkExMTEw0QAAAAAAAAAAAAAAAAAAAABiIiBgAAFAAKAAAA
 | 
			
		||||
        AAAAABEQEA8QEA8QAiIiAhAXDxsdBAAAAAAACh4eHh4eHh4eHiYmHh4TABYqHgQAAAAWGSolJCQkJSQl
 | 
			
		||||
        JSQkJSUbDQkXKh4EAAAUGSoABgYGBgYGBgYGBgYPAAAJFyofBAAUGSkCAAAAAAAAAAAAAAAAAAAAAB0q
 | 
			
		||||
        FgAUGSoAAAAAAAAAAAAAAAAAAAARDSckBgAUGSoCAAAAAAAAAAAAAAAAABENJyUGGwAUGSkCAAAAAAAA
 | 
			
		||||
        AAAAAAAAAA0nJAYAEQAUGSoAAAAAAAAAAAAAAAAAER8lBgYiEQAUGSoCAAAAAAAAAAAAAAAAAAYCBiQp
 | 
			
		||||
        CgAUGSkCAAAAAAAAAAAAAAAAABcGJCkKEQAUGSoAAAAAAAAAAAAAAAAAAAYkJw0QAAAUGSoADxAPEBAP
 | 
			
		||||
        EBAPEBAXDR8qEQkAAAAWGSoeHh4eHh4eHh4eHh4TAA8pIwQAAAAAECQlJCQkJCUkJCQlJCUbEA8NKSMG
 | 
			
		||||
        AAAAEwkGBgYGBgYGBgYGBgYPAAAPDSkjBAAAAAAAAAAAAAAAAAAAAAAAAAAADw0pFgAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAABEGBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A+AAfAPgAHwD4AB8A/8MfAMAA
 | 
			
		||||
        DwCAAAcAAAADAAAAwQAP/+EAD//BAA//gQAP/4EAD/8BAA//gQAP/4EAD/+DAAAABwAAAAcAgAADAIAA
 | 
			
		||||
        wQD//+EA///xAP///wAoAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAACkp
 | 
			
		||||
        KQAsLCwAMjIyADU1NQA5OTkAPj4+AEBAQABEREQASEhIAE5OTgBRUVEAWVlZAF5eXgBiYmIAZ2dnAGho
 | 
			
		||||
        aABsbGwAcnJyAHZ2dgB7e3sAf39/AJycnACmpqYAs7OzALS0tADCwsIA1tbWANnZ2QDh4eEA5+fnAOjo
 | 
			
		||||
        6AD4+PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAARGBoaGhoaGhgRAAAAAAAAAAkJCRYWCQkDAAAAAAAAAAAAAA8VFREACQoA
 | 
			
		||||
        AAANGBoaGhoaHR0aCgMdCwAACSAJCQkKCQkJCgoACR0LAAkgCgAAAAAAAAAAABUTHQ8JIAoAAAAAAAAA
 | 
			
		||||
        AAALHwYACSAKAAAAAAAAAAAKHQMDAAkgCgAAAAAAAAAACQETGw8JIAoAAAAAAAAAABURHQMACSABAAAA
 | 
			
		||||
        AAAAAAANHQEAAAogGhoaGhoaGhoKAR0RAAAACQkJCgkJCgkKCgAGHREAAAAAAAAAAAAAAAAAAAMXEQAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAD//wAA4AcAAPAPAAD8JwAAAAMAAAARAAAf8AAAH/EAAB/hAAAf4AAAH+EAAB/j
 | 
			
		||||
        AAAAAwAAgBEAAP/4AAD//wAAKAAAADAAAABgAAAAAQAgAAAAAACAJQAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAA
 | 
			
		||||
        AC8AAABWAAAAawAAAHAAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAAAHIAAAByAAAAcgAA
 | 
			
		||||
        AHIAAAByAAAAcgAAAHIAAAByAAAAcAAAAGsAAABZAAAAMQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAgAAAAngAAAO8AAAD9AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD9AAAA8AAAAKMAAAAjAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAACCAAAA/A4ODv9HR0f/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tL
 | 
			
		||||
        S/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9LS0v/S0tL/0tLS/9HR0f/EBAQ/wAA
 | 
			
		||||
        AP0AAACGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAADEAAAA/8PDw/7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+
 | 
			
		||||
        /v7+/v7+yMjI/wAAAP4AAADFAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADNAAAA/+7u7v7+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+//7+/v7+/v7+7u7u/wAAAP4AAADOAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAClAAAA/0tL
 | 
			
		||||
        S/+tra3/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf/Y2Nj//v7+///////Y2Nj/sbGx/7Gx
 | 
			
		||||
        sf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+urq7/UFBQ/wAAAP4AAACpAAAABgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAABEAAAA2wAAAP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP9/f3/+/v7+/v7+
 | 
			
		||||
        /v9/f3/+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAAAOIAAABKAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAGAAAAMwAAAIQAAACzAAAAxwAAAMwAAADMAAAAzAAAAMwAAADNAAAA8wAA
 | 
			
		||||
        AP5/f3/+/v7+/v7+/v9/f3/+AAAA/gAAAPMAAADNAAAAzAAAAMwAAADMAAAAzwAAAOEAAAD7AAAA/QAA
 | 
			
		||||
        AMsAAABrAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAQAAAAEAAAABAAA
 | 
			
		||||
        AAQAAAAGAAAAowAAAP9/f3///v7+//////9/f3//AAAA/gAAAKMAAAAGAAAABAAAAAQAAAAEAAAAGAAA
 | 
			
		||||
        AKUAAAD8AAAA/wAAAP8AAAD7AAAAuQAAAC0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAADQAAAC0AAABTAAAAZAAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAA
 | 
			
		||||
        AGsAAABrAAAAawAAAGsAAABsAAAA0gAAAP5/f3/+/v7+/v7+/v9/f3/+AAAA/gAAANEAAABqAAAAXQAA
 | 
			
		||||
        AD8AAAAaAAAARAAAAPQPDw/+mZmZ/5iYmP4RERH+AAAA/gAAAMQAAAAuAAAAAQAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAlAAAAnwAAAO8AAAD9AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP9/f3///v7+//7+/v9/f3//AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAPoAAADTAAAAugAAAP5wcHD//v7+//7+/v/Gxsb/ERER/wAAAP4AAADEAAAALQAA
 | 
			
		||||
        AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAACUAAAA/Q0NDf9GRkb+S0tL/ktLS/9LS0v+S0tL/ktL
 | 
			
		||||
        S/9LS0v+S0tL/0tLS/5LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/+lpaX+/v7+/v//
 | 
			
		||||
        //+kpKT+S0tL/ktLS/9LS0v+S0tL/iwsLP8AAAD+AAAA/gAAAP5GRkb++/v7//7+/v7+/v7+yMjI/xER
 | 
			
		||||
        Ef4AAAD+AAAAxgAAAC0AAAABAAAAAAAAAAAAAAAAAAAAAAAAABcAAADfAAAA/sTExP/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/vn5+f9ERET+AAAA/gAAAP4AAAD+ZWVl//z8
 | 
			
		||||
        /P7+/v7+/v7+/8bGxv4SEhL+AAAA/gAAAMQAAAAuAAAAAQAAAAAAAAAAAAAAAAAAACkAAAD2BwcH/vf3
 | 
			
		||||
        9//+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v9oaGj+AAAA/gAA
 | 
			
		||||
        AMgAAAD2AAAA/mdnZ/77+/v+/v7+//7+/v7Gxsb+EhIS/wAAAP4AAADEAAAALgAAAAEAAAAAAAAAAAAA
 | 
			
		||||
        ADMAAAD7CAgI//f39//+/v7/+/v7/7W1tf+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Ky
 | 
			
		||||
        sv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/7Kysv+ysrL/srKy/4+P
 | 
			
		||||
        j/8MDAz/AAAA8QAAAEgAAAB7AAAA9gAAAP9mZmb/+vr6///////+/v7/yMjI/xISEv8AAAD+AAAAxQAA
 | 
			
		||||
        AC4AAAABAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD3AAAAlAAAAA8AAAAMAAAAewAAAPcAAAD+ZmZm//v7+/7+/v7+/v7+/8XF
 | 
			
		||||
        xf4TExP+AAAA/gAAAMEAAAAnAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAAD+AAAA2wAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMsAAADKAAAAvwAAAJ8AAABaAAAAFQAAAAAAAAAAAAAADAAAAH0AAAD2AAAA/mho
 | 
			
		||||
        aP76+vr+/v7+//7+/v7FxcX+EhIS/wAAAP0AAACNAAAABAAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJ
 | 
			
		||||
        Cf8AAAD2AAAALwAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAcAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAwAAAB/AAAA+gAAAP9nZ2f/+vr6///////+/v7/u7u7/wAAAP8AAADOAAAADgAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAEAAABCAAAA8AAAAP4TExP+29vb//7+/v7+/v7+7e3t/wICAv4AAADaAAAAEQAA
 | 
			
		||||
        ADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAADGAAAA/hISEv7FxcX+/v7+//7+/v77+/v+ZGRk/wAA
 | 
			
		||||
        AP4AAAC5AAAACgAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAMgAAAD+ERER/8jIyP/+/v7//v7+//r6
 | 
			
		||||
        +v9nZ2f/AAAA/wAAAPIAAABaAAAAAQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAxgAAAP4SEhL+xsbG//7+
 | 
			
		||||
        /v7+/v7++/v7/2dnZ/4AAAD+AAAA9wAAAHsAAAAMAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAADGAAAA/hER
 | 
			
		||||
        Ef7Gxsb+/v7+//7+/v77+/v+aGho/wAAAP4AAAD4AAAAgAAAAA4AAAAAAAAAAAAAADYAAAD9CAgI//f3
 | 
			
		||||
        9//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAA
 | 
			
		||||
        ALEAAAD+ERER/8nJyf/+/v7//v7+//r6+v9mZmb/AAAA/wAAAP8AAADvAAAAkgAAADkAAAAHAAAAAAAA
 | 
			
		||||
        ADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAPgAAAPYQEBD+xsbG//7+/v7+/v7++/v7/2ZmZv4AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AOEAAABSAAAAAQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAP50dHT+/v7+//7+/v77+/v+Z2dn/wAAAP4AAAD+AAAA/1NT
 | 
			
		||||
        U/6zs7P+UlJS/wAAAP4AAAC1AAAACgAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVgAAAP5MTEz/+vr6//n5+f9lZWX/AAAA/wAA
 | 
			
		||||
        AP8AAAD/X19f//r6+v/+/v7/7e3t/wMDA/8AAADaAAAAEQAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAN8AAAD+Li4u/ysr
 | 
			
		||||
        K/4AAAD+AAAA/gAAAP5gYGD++Pj4//7+/v7+/v7+wMDA/wAAAP4AAADQAAAADwAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA
 | 
			
		||||
        AFwAAADQAAAA+QAAAP4AAAD+AAAA/15eXv74+Pj+/v7+//7+/v7Ly8v+FhYW/wAAAP4AAACSAAAABQAA
 | 
			
		||||
        ADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAAAnAAAAqAAAAP8AAAD/Xl5e//r6+v/+/v7//v7+/8vLy/8VFRX/AAAA/gAA
 | 
			
		||||
        AMUAAAApAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJCf8AAADzAAAAJAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAB1AAAA9AAAAP5fX1/++Pj4//7+/v7+/v7+y8vL/xUV
 | 
			
		||||
        Ff4AAAD+AAAAygAAADIAAAABAAAAAAAAADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAADzAAAAJAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAGoAAADzAAAA/15eXv/5+fn//v7+//7+
 | 
			
		||||
        /v/MzMz/FhYW/wAAAP4AAADKAAAAMwAAAAEAAAAAAAAAAAAAADYAAAD9CAgI/vf39//+/v7+9PT0/gkJ
 | 
			
		||||
        Cf8AAAD0AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAOEAAAD+XV1d//v7
 | 
			
		||||
        +/7+/v7+/v7+/8vLy/4VFRX+AAAA/gAAAMkAAAAyAAAAAQAAAAAAAAAAAAAAAAAAADYAAAD9CAgI/vf3
 | 
			
		||||
        9//+/v7+9PT0/gkJCf8AAAD7AAAAjAAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAA
 | 
			
		||||
        AGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABrAAAAawAAAGsAAABpAAAAXQAAAEAAAAAbAAAAXAAA
 | 
			
		||||
        AP1DQ0P++fn5//7+/v7+/v7+zMzM/xQUFP4AAAD+AAAA0gAAADIAAAABAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        ADYAAAD9CAgI//f39//+/v7/9PT0/wkJCf8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        APoAAADTAAAAvQAAAP53d3f//v7+//7+/v/+/v7/Z2dn/wAAAP8AAAD+AAAAoAAAAAwAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAADUAAAD8CAgI/vf39//+/v7+9/f3/lJSUv9LS0v+S0tL/ktLS/9LS0v+S0tL/0tL
 | 
			
		||||
        S/5LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktLS/9LS0v+S0tL/ktL
 | 
			
		||||
        S/9LS0v+S0tL/iwsLP8AAAD+AAAA/gAAAP4UFBT+0dHR//7+/v7+/v7++vr6/1dXV/4AAAD+AAAA9AAA
 | 
			
		||||
        AHAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAD4CAgI/vf39//+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+//7+/v7+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+/v/+/v7+/v7+/v7+
 | 
			
		||||
        /v/+/v7+/v7+/v7+/v/+/v7+/v7+/vn5+f9ERET+AAAA/gAAAPUAAAD+FxcX/9LS0v7+/v7+/v7+//f3
 | 
			
		||||
        9/5YWFj+AAAA/gAAAPIAAABwAAAACwAAAAAAAAAAAAAAAAAAACAAAADtAwMD/+zs7P/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v9paWn/AAAA/gAAAJMAAADQAAAA/hkZ
 | 
			
		||||
        Gf/R0dH//v7+//7+/v/39/f/WFhY/wAAAP8AAADyAAAAcAAAAAoAAAAAAAAAAAAAAAwAAAC7AAAA/ktL
 | 
			
		||||
        S/+urq7+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/7Kysv6ysrL+srKy/rKysv+ysrL+srKy/rKy
 | 
			
		||||
        sv+ysrL+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/rKysv+ysrL+srKy/o+Pj/8MDAz+AAAA8QAA
 | 
			
		||||
        ADkAAAA0AAAA0AAAAP4YGBj+0NDQ//7+/v7+/v7++fn5/1hYWP4AAAD+AAAA8wAAAG8AAAAKAAAAAAAA
 | 
			
		||||
        AAEAAABMAAAA3QAAAP4AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP4AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAAAP8AAAD+AAAA/gAA
 | 
			
		||||
        AP8AAAD3AAAAlQAAAA8AAAABAAAANAAAANEAAAD+GBgY/9HR0f7+/v7+/v7+//f39/5ZWVn+AAAA/gAA
 | 
			
		||||
        AO4AAABUAAAAAQAAAAAAAAAGAAAANAAAAIQAAAC1AAAAxwAAAMsAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAA
 | 
			
		||||
        AMsAAADKAAAAvwAAAKAAAABbAAAAFQAAAAAAAAAAAAAAAQAAADYAAADRAAAA/hkZGf/R0dH//v7+//7+
 | 
			
		||||
        /v/39/f/VlZW/wAAAP4AAAC0AAAACQAAAAAAAAAAAAAAAAAAAAAAAAACAAAABAAAAAYAAAAHAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAACAAAAAcAAAAGAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAA1AAAA0AAA
 | 
			
		||||
        AP4YGBj+0NDQ//7+/v7+/v7+6urq/wICAv4AAADYAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAABAAAANQAAANEAAAD+GBgY/9DQ0P7+/v7+wsLC/wAAAP4AAADPAAAADwAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAADOAAAA/g4ODv9CQkL/Dg4O/wAAAP0AAACOAAAABQAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAvAAAApwAAAOsAAAD4AAAA6QAA
 | 
			
		||||
        AJ8AAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA
 | 
			
		||||
        ACUAAAA1AAAAJgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA/+AAAAf/AAD/wAAAA/8AAP+A
 | 
			
		||||
        AAAB/wAA/4AAAAH/AAD/gAAAAf8AAP+AAAAB/wAA/8AAAAP/AAD/wAAAAf8AAP/4AAAAfwAAwAAAAAA/
 | 
			
		||||
        AACAAAAAAB8AAAAAAAAADwAAAAAAAAAHAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAABAAAAAAAAYAAAAAAA
 | 
			
		||||
        AAHwAAAAAH////AAAAAAf///8AAAAAB////gAAAAAH///8ABAAAAf///gAMAAAB///8AAQAAAH///wAA
 | 
			
		||||
        AAAAf///AAAAAAB///8AAAAAAH///wAAAAAAf///AAAAAAB///+AAQAAAH///4ABAAAAf///AAMAAAB/
 | 
			
		||||
        //8ABwAAAAAAAAAPAAAAAAAAAB8AAAAAAAAADwAAAAAAAAAHAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAA
 | 
			
		||||
        AACAAAAAYAAAAPAAAAHwAAAA//////gAAAD//////AAAAP/////+AQAA//////+DAAD///////8AACgA
 | 
			
		||||
        AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAMAAAAHAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAA
 | 
			
		||||
        AAgAAAAIAAAABwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAIAAABYAAAAxgAAAOYAAADsAAAA7QAAAO0AAADtAAAA7QAAAO0AAADtAAAA7QAA
 | 
			
		||||
        AO0AAADtAAAA7QAAAOwAAADnAAAAyAAAAFwAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAO9UVFT/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eH
 | 
			
		||||
        h/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/9XV1f/AAAA8AAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAA/vLy8v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//Pz8/8AAAD+AAAAPAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAADrR0dH/3Z2dv92dnb/dnZ2/3Z2
 | 
			
		||||
        dv92dnb/enp6//v7+//7+/v/eXl5/3Z2dv92dnb/dnZ2/3Z2dv92dnb/SUlJ/wAAAO0AAAAgAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEsAAAC2AAAA1wAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAO4GBgb++Pj4//j4+P8GBgb+AAAA7gAAAN0AAADdAAAA3gAAAPAAAAD+AAAArQAA
 | 
			
		||||
        ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAAcAAAAHAAAABwAA
 | 
			
		||||
        AAgAAAAKAAAACwAAAAsAAAALAAAAdQYGBv74+Pj/+Pj4/wYGBv4AAAB1AAAACQAAAAUAAAAWAAAA0g4O
 | 
			
		||||
        Dv4ODg7+AAAA3gAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABaAAAAxAAAAOQAAADpAAAA6QAA
 | 
			
		||||
        AOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAAD1BgYG//j4+P/4+Pj/BgYG/gAAAPUAAADjAAAAwwAA
 | 
			
		||||
        AJQCAgL+3d3d/+Xl5f8pKSn+AAAA5QAAADsAAAAAAAAAAAAAAAAAAAAAAAAALgAAAPNUVFT/hoaG/4aG
 | 
			
		||||
        hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+JiYn/+/v7//v7+/+JiYn/hoaG/4aG
 | 
			
		||||
        hv9SUlL/AAAA/gAAAP6ysrL//v7+/+bm5v8pKSn+AAAA5QAAADwAAAAAAAAAAAAAAAAAAABlAwMD/vb2
 | 
			
		||||
        9v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+/+3t7f8BAQH+AAAA4ggICP64uLj//v7+/+bm5v8pKSn+AAAA5QAAADwAAAAAAAAAAAAA
 | 
			
		||||
        AHYFBQX++fn5//v7+/96enr/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3
 | 
			
		||||
        d/93d3f/d3d3/3d3d/93d3f/RUVF/gAAAOoAAAA2AAAAvgkJCf64uLj//v7+/+bm5v8pKSn+AAAA5QAA
 | 
			
		||||
        ADwAAAAAAAAAeAUFBf75+fn/9/f3/wYGBv4AAADvAAAA3QAAAN0AAADdAAAA3QAAAN0AAADdAAAA3QAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAN0AAADdAAAA3AAAANcAAAC0AAAASgAAAAEAAAAWAAAAvgkJCf64uLj//v7+/+bm
 | 
			
		||||
        5v8pKSn+AAAA2gAAABYAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGsAAAAFAAAABQAAAAUAAAAFAAAABQAA
 | 
			
		||||
        AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAYAAAA1AkJ
 | 
			
		||||
        Cf6/v7///v7+/97e3v8BAQH+AAAAQgAAAHgFBQX++fn5//f39/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        ADsAAADqKSkp/+bm5v/+/v7/srKy/wAAAPwAAAA3AAAAeAUFBf75+fn/9/f3/wYGBv4AAABmAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAA7AAAA5ikpKf/m5ub//v7+/7i4uP8JCQn+AAAAtAAAAAoAAAB4BQUF/vn5+f/39/f/BgYG/gAA
 | 
			
		||||
        AGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAOgAAAOYpKSn/5ubm//7+/v+5ubn/CQkJ/gAAAMAAAAAYAAAAAAAAAHgFBQX++fn5//f3
 | 
			
		||||
        9/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAABMAAADZKSkp/+bm5v/+/v7/uLi4/wgICP4AAAD+AAAAxwAAAFIAAAACAAAAeAUF
 | 
			
		||||
        Bf75+fn/9/f3/wYGBv4AAABmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAOwICAv7f39///v7+/7i4uP8JCQn+AAAA/k1NTf9MTEz/AAAA8AAA
 | 
			
		||||
        ACcAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyAAAA/KWlpf+mpqb/CQkJ/gAAAP9oaGj//Pz8//Hx
 | 
			
		||||
        8f8BAQH+AAAASAAAAHgFBQX++fn5//f39/8GBgb+AAAAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAACdAAAA9QAAAP4AAAD/aGho//39
 | 
			
		||||
        /f/9/f3/a2tr/wAAAPMAAAAoAAAAeAUFBf75+fn/9/f3/wYGBv4AAABmAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAACXAAAA/2dn
 | 
			
		||||
        Z//8/Pz//f39/21tbf8AAAD7AAAAeAAAAAMAAAB4BQUF/vn5+f/39/f/BgYG/gAAAGYAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAcwAA
 | 
			
		||||
        APpoaGj//f39//39/f9sbGz/AAAA+wAAAHwAAAAFAAAAAAAAAHgFBQX++fn5//f39/8GBgb+AAAAbgAA
 | 
			
		||||
        AAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAGAAAAAgAA
 | 
			
		||||
        ACIAAADxZmZm//39/f/9/f3/bW1t/wAAAPsAAAB8AAAABQAAAAAAAAAAAAAAeAUFBf75+fn/9/f3/wYG
 | 
			
		||||
        Bv4AAAD1AAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAAAOkAAADpAAAA6QAA
 | 
			
		||||
        AOMAAADDAAAAmwMDA/7y8vL//v7+/6ampv8AAAD+AAAAxAAAAAoAAAAAAAAAAAAAAAAAAAB1BQUF/vn5
 | 
			
		||||
        +f/7+/v/ioqK/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4aG
 | 
			
		||||
        hv+Ghob/hoaG/1JSUv8AAAD+AAAA/nBwcP/+/v7//Pz8/2NjY/8AAAD6AAAAdQAAAAQAAAAAAAAAAAAA
 | 
			
		||||
        AGMDAwP+9PT0//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
 | 
			
		||||
        /v/+/v7//v7+//7+/v/+/v7/7e3t/wEBAf4AAAC5AAAA/HJycv/9/f3//Pz8/2NjY/8AAAD6AAAAdAAA
 | 
			
		||||
        AAQAAAAAAAAAKgAAAO9HR0f+d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3
 | 
			
		||||
        d/93d3f/d3d3/3d3d/93d3f/d3d3/3d3d/9FRUX+AAAA6gAAACMAAACCAAAA/HJycv/9/f3//Pz8/2Nj
 | 
			
		||||
        Y/8AAAD6AAAAcQAAAAIAAAACAAAATQAAALYAAADXAAAA3AAAAN0AAADdAAAA3QAAAN0AAADdAAAA3QAA
 | 
			
		||||
        AN0AAADdAAAA3QAAAN0AAADdAAAA3QAAAN0AAADcAAAA1wAAALUAAABKAAAAAQAAAAUAAACCAAAA/HJy
 | 
			
		||||
        cv/9/f3//Pz8/2JiYv8AAADxAAAAJQAAAAAAAAAAAAAAAAAAAAIAAAAEAAAABQAAAAUAAAAFAAAABQAA
 | 
			
		||||
        AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAQAAAACAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAUAAACCAAAA/HJycv/9/f3/8PDw/wEBAf4AAABGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAUAAACCAAAA+1ZWVv9UVFT/AAAA8gAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAABgAAAAuwAAALoAAABaAAAAAwAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA/wAA//wA
 | 
			
		||||
        AD/8AAA//AAAP/wAAD/8AAA/wAAAHwAAAA8AAAAHAAAAAwAAAAEAAAAAAAAPAAP//wAD//4AA//8AQP/
 | 
			
		||||
        +AAD//gAA//4AAP/+AAD//wAA//4AQAAAAMAAAAHAAAAAwAAAAEAAAAAAAAAAOAADwD///+A////wP//
 | 
			
		||||
        //MoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAA
 | 
			
		||||
        AG4AAAB6AAAAewAAAHsAAAB7AAAAewAAAHoAAABuAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AJKzs7P/w8PD/8PDw//Dw8P/w8PD/8PDw//Dw8P/tLS0/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAABVLy8v4js7O+47OzvynZ2d/pycnP47OzvyOzs77jAwMPsAAAB3AAAAAAAAAAAAAAAAAAAAFwAA
 | 
			
		||||
        AGwAAAB4AAAAeAAAAHkAAAB6AAAAl39/f/5/f3/+AAAAlQAAAF07OzvzR0dH9gAAAFcAAAAAAAAAAAAA
 | 
			
		||||
        AKG0tLT/wsLC/8LCwv/CwsL/wsLC/8LCwv/g4OD/4ODg/8LCwv9QUFD+Ly8v9+fn5/9OTk74AAAAVwAA
 | 
			
		||||
        AAACAgK7+fn5/z4+Pvs7OzvuOzs77js7O+47OzvuOzs77js7O+47OzvsERERugAAAEMyMjLu5+fn/05O
 | 
			
		||||
        TvgAAABLAgICu/j4+P8DAwOzAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAQAAAAAAAAAAAAAAhHZ2
 | 
			
		||||
        dv7j4+P/AAAAnQICArv4+Pj/AwMDsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV05O
 | 
			
		||||
        Tvjn5+f/MjIy7wAAADUCAgK7+Pj4/wMDA7IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0ND
 | 
			
		||||
        Q/Xn5+f/MjIy/iYmJvEAAABbAgICu/j4+P8DAwOyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AA4pKSnjKysr/nNzc//W1tb/AAAAmAICArv4+Pj/AwMDsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAhHNzc//Z2dn/Gxsb3AAAACACAgK7+Pj4/wMDA9gAAAB4AAAAeAAAAHgAAAB4AAAAeAAA
 | 
			
		||||
        AHgAAAB2AAAAYVdXV/vo6Oj/Gxsb7wAAACMAAAAAAgICtfr6+v/Dw8P/wsLC/8LCwv/CwsL/wsLC/8LC
 | 
			
		||||
        wv/CwsL/wsLC/1BQUP4cHBzs2tra/3BwcP0AAAB6AAAAAQAAAFovLy/jOzs77js7O+47OzvuOzs77js7
 | 
			
		||||
        O+47OzvuOzs77js7O+wRERG6AAAAKxwcHN7a2tr/cHBw/QAAAGMAAAAAAAAAAAAAAAIAAAACAAAAAgAA
 | 
			
		||||
        AAIAAAACAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAjHBwc3qampv8AAACXAAAAAAAAAAAAAAAAAAAAAAAA
 | 
			
		||||
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAABeAAAAF+AHAADgBwAA4AcAAAAD
 | 
			
		||||
        AAAAAQAAAAAAAAAwAAAf4AAAH8AAAB/AAAAf4AAAAAEAAAAAAAAAAAAAwDAAAP/4AAA=
 | 
			
		||||
</value>
 | 
			
		||||
  </data>
 | 
			
		||||
</root>
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
using Newtonsoft.Json.Linq;
 | 
			
		||||
using System;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Drawing;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
using System.Security.AccessControl;
 | 
			
		||||
using System.Security.Principal;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
@ -13,9 +13,30 @@ namespace RCM {
 | 
			
		||||
            Application.EnableVisualStyles();
 | 
			
		||||
            Application.SetCompatibleTextRenderingDefault(false);
 | 
			
		||||
 | 
			
		||||
            Config.LoadModules();
 | 
			
		||||
            Config.LoadConfiguration();
 | 
			
		||||
            Application.Run(new MainForm());
 | 
			
		||||
            string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();
 | 
			
		||||
            string mutexId = string.Format("Local\\{{{0}}}", appGuid);
 | 
			
		||||
 | 
			
		||||
            using (Mutex mutex = new Mutex(false, mutexId)) {
 | 
			
		||||
                bool hasHandle = false;
 | 
			
		||||
                try {
 | 
			
		||||
                    try {
 | 
			
		||||
                        hasHandle = mutex.WaitOne(0, false);
 | 
			
		||||
                        if (hasHandle == false) {
 | 
			
		||||
                            MessageBox.Show("An instance of the application is already running", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (AbandonedMutexException) {
 | 
			
		||||
                        hasHandle = true;
 | 
			
		||||
                    }
 | 
			
		||||
                    Config.LoadModules();
 | 
			
		||||
                    Config.LoadConfiguration();
 | 
			
		||||
                    Application.Run(new MainForm());
 | 
			
		||||
                } finally {
 | 
			
		||||
                    if (hasHandle) {
 | 
			
		||||
                        mutex.ReleaseMutex();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								RCM/Program.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								RCM/Program.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 27 KiB  | 
@ -54,16 +54,20 @@
 | 
			
		||||
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
 | 
			
		||||
    <Prefer32Bit>true</Prefer32Bit>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <ApplicationIcon>Program.ico</ApplicationIcon>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Reference Include="CredentialManagement, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\CredentialManagement.1.0.2\lib\net35\CredentialManagement.dll</HintPath>
 | 
			
		||||
    <Reference Include="Google.Protobuf">
 | 
			
		||||
      <HintPath>..\packages\Google.Protobuf.3.10.1\lib\net45\Google.Protobuf.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="Microsoft.CSharp" />
 | 
			
		||||
    <Reference Include="MySql.Data, Version=8.0.16.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\MySql.Data.8.0.16\lib\net452\MySql.Data.dll</HintPath>
 | 
			
		||||
    <Reference Include="Microsoft.VisualBasic" />
 | 
			
		||||
    <Reference Include="MySql.Data, Version=8.0.15.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\MySql.Data.8.0.15\lib\net452\MySql.Data.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
 | 
			
		||||
      <HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
 | 
			
		||||
      <HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System" />
 | 
			
		||||
    <Reference Include="System.Data" />
 | 
			
		||||
@ -71,7 +75,8 @@
 | 
			
		||||
      <HintPath>..\packages\System.Data.SQLite.Core.1.0.110.0\lib\net46\System.Data.SQLite.dll</HintPath>
 | 
			
		||||
    </Reference>
 | 
			
		||||
    <Reference Include="System.Drawing" />
 | 
			
		||||
    <Reference Include="System.Management" />
 | 
			
		||||
    <Reference Include="System.Drawing.Design" />
 | 
			
		||||
    <Reference Include="System.Windows" />
 | 
			
		||||
    <Reference Include="System.Windows.Forms" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
@ -96,9 +101,17 @@
 | 
			
		||||
    <Compile Include="DataSource\SQLite\SQLiteControl.Designer.cs">
 | 
			
		||||
      <DependentUpon>SQLiteControl.cs</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="ZZImporter.cs" />
 | 
			
		||||
    <Compile Include="Record\RDP\RDP.cs" />
 | 
			
		||||
    <Compile Include="Record\RDP\RDPAction.cs" />
 | 
			
		||||
    <Compile Include="Record\RDP\SMBAction.cs" />
 | 
			
		||||
    <Compile Include="Record\RDP\RDPConfigControl.cs">
 | 
			
		||||
      <SubType>UserControl</SubType>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Record\RDP\RDPConfigControl.Designer.cs">
 | 
			
		||||
      <DependentUpon>RDPConfigControl.cs</DependentUpon>
 | 
			
		||||
    </Compile>
 | 
			
		||||
    <Compile Include="Record\RDP\RDPConfig.cs" />
 | 
			
		||||
    <Compile Include="Record\SSH\SCPAction.cs" />
 | 
			
		||||
    <Compile Include="Record\SSH\SSH.cs" />
 | 
			
		||||
    <Compile Include="Record\SSH\SSHAction.cs" />
 | 
			
		||||
@ -137,10 +150,16 @@
 | 
			
		||||
      <DependentUpon>MySQL.cs</DependentUpon>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="DataSource\MySQL\MySQLControl.resx">
 | 
			
		||||
      <DependentUpon>MySQLControl.cs</DependentUpon>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="DataSource\SQLite\SQLite.resx">
 | 
			
		||||
      <DependentUpon>SQLite.cs</DependentUpon>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="DataSource\SQLite\SQLiteControl.resx">
 | 
			
		||||
      <DependentUpon>SQLiteControl.cs</DependentUpon>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="MainForm.resx">
 | 
			
		||||
      <DependentUpon>MainForm.cs</DependentUpon>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
@ -191,10 +210,16 @@
 | 
			
		||||
      <DependentUpon>RDP.cs</DependentUpon>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="Record\RDP\RDPConfigControl.resx">
 | 
			
		||||
      <DependentUpon>RDPConfigControl.cs</DependentUpon>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="Record\SSH\SSH.resx">
 | 
			
		||||
      <DependentUpon>SSH.cs</DependentUpon>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="Record\SSH\SSHConfigControl.resx">
 | 
			
		||||
      <DependentUpon>SSHConfigControl.cs</DependentUpon>
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
    <EmbeddedResource Include="Record\WebSite\WebSite.resx">
 | 
			
		||||
      <DependentUpon>WebSite.cs</DependentUpon>
 | 
			
		||||
      <SubType>Designer</SubType>
 | 
			
		||||
@ -215,9 +240,12 @@
 | 
			
		||||
    </EmbeddedResource>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <None Include="app.config" />
 | 
			
		||||
    <None Include="packages.config" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup />
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Content Include="Program.ico" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 | 
			
		||||
  <Import Project="..\packages\System.Data.SQLite.Core.1.0.110.0\build\net46\System.Data.SQLite.Core.targets" Condition="Exists('..\packages\System.Data.SQLite.Core.1.0.110.0\build\net46\System.Data.SQLite.Core.targets')" />
 | 
			
		||||
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using CredentialManagement;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [Serializable]
 | 
			
		||||
 | 
			
		||||
@ -1,20 +1,22 @@
 | 
			
		||||
using CredentialManagement;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System;
 | 
			
		||||
using System.ComponentModel;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Runtime.InteropServices;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [DisplayName("Start Remote Desktop")]
 | 
			
		||||
    [@DisplayName("Start Remote Desktop")]
 | 
			
		||||
    public class RDPAction : IAction {
 | 
			
		||||
        private RDP _rdp;
 | 
			
		||||
        private RDPConfig _config;
 | 
			
		||||
 | 
			
		||||
        public RDPAction(RDP rdp) {
 | 
			
		||||
            _rdp = rdp;
 | 
			
		||||
            _config = (RDPConfig)Config.ConfigSections[typeof(RDPConfig)];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public async void Run() {
 | 
			
		||||
@ -27,29 +29,104 @@ namespace RCM {
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunWin() {
 | 
			
		||||
            string[] host = _rdp.Host.Split(new char[] { ':' });
 | 
			
		||||
            string[] username = _rdp.Username.Split(new char[] { '\\' });
 | 
			
		||||
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
 | 
			
		||||
        private struct DATA_BLOB {
 | 
			
		||||
            public int cbData;
 | 
			
		||||
            public IntPtr pbData;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [DllImport("crypt32.dll", SetLastError = true, CharSet = CharSet.Auto)]
 | 
			
		||||
        private static extern bool CryptProtectData(ref DATA_BLOB pDataIn, string szDataDescr, IntPtr pOptionalEntropy, IntPtr pvReserved, IntPtr pPromptStruct, int dwFlags, ref DATA_BLOB pDataOut);
 | 
			
		||||
 | 
			
		||||
        public static string EncryptPassword(string plainText) {
 | 
			
		||||
            if (plainText == null) {
 | 
			
		||||
                plainText = String.Empty;
 | 
			
		||||
            }
 | 
			
		||||
            byte[] plainBytes = Encoding.Unicode.GetBytes(plainText);
 | 
			
		||||
 | 
			
		||||
            DATA_BLOB plainBlob = new DATA_BLOB();
 | 
			
		||||
            DATA_BLOB cipherBlob = new DATA_BLOB();
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
                plainBlob.pbData = Marshal.AllocHGlobal(plainBytes.Length);
 | 
			
		||||
                if (plainBlob.pbData == IntPtr.Zero) {
 | 
			
		||||
                    throw new Exception("Plaintext DATA_BLOB allocation exception");
 | 
			
		||||
                }
 | 
			
		||||
                plainBlob.cbData = plainBytes.Length;
 | 
			
		||||
                Marshal.Copy(plainBytes, 0, plainBlob.pbData, plainBytes.Length);
 | 
			
		||||
 | 
			
		||||
                bool result = CryptProtectData(ref plainBlob, String.Empty, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, 1, ref cipherBlob);
 | 
			
		||||
                if (!result) {
 | 
			
		||||
                    throw new Exception("CryptProtectData exception", new Win32Exception(Marshal.GetLastWin32Error()));
 | 
			
		||||
                }
 | 
			
		||||
                byte[] cipherBytes = new byte[cipherBlob.cbData];
 | 
			
		||||
                Marshal.Copy(cipherBlob.pbData, cipherBytes, 0, cipherBlob.cbData);
 | 
			
		||||
                return BitConverter.ToString(cipherBytes).Replace("-", "");
 | 
			
		||||
            } catch (Exception ex) {
 | 
			
		||||
                throw new Exception("DPAPI encryption exception", ex);
 | 
			
		||||
            } finally {
 | 
			
		||||
                if (plainBlob.pbData != IntPtr.Zero) {
 | 
			
		||||
                    Marshal.FreeHGlobal(plainBlob.pbData);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (cipherBlob.pbData != IntPtr.Zero) {
 | 
			
		||||
                    Marshal.FreeHGlobal(cipherBlob.pbData);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private string CreateRdpFile() {
 | 
			
		||||
            string domain = null;
 | 
			
		||||
            string username;
 | 
			
		||||
            string[] splitname = _rdp.Username.Split("\\".ToCharArray());
 | 
			
		||||
            if (splitname.Length == 2) {
 | 
			
		||||
                domain = splitname[0];
 | 
			
		||||
                username = splitname[1];
 | 
			
		||||
            } else {
 | 
			
		||||
                username = _rdp.Username;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            string rdpName = string.Format("{0}.{1}", _rdp.Title, Guid.NewGuid().ToString());
 | 
			
		||||
            foreach (var c in Path.GetInvalidFileNameChars()) {
 | 
			
		||||
                rdpName = rdpName.Replace(c, '_');
 | 
			
		||||
            }
 | 
			
		||||
            string rdpFile = Path.Combine(Path.GetTempPath(), string.Format("{0}.rdp", rdpName));
 | 
			
		||||
            // https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ff393699(v%3dws.10)
 | 
			
		||||
            string rdpFile = Path.GetTempPath() + Guid.NewGuid().ToString() + ".rdp";
 | 
			
		||||
            using (StreamWriter sw = new StreamWriter(rdpFile)) {
 | 
			
		||||
                sw.Write("drivestoredirect:s:*\r\nredirectprinters:i:0\r\nredirectcomports:i:0\r\nredirectsmartcards:i:0\r\nredirectposdevices:i:0\r\nnetworkautodetect:i:0\r\nauthentication level:i:0\r\nprompt for credentials:i:0\r\nnegotiate security layer:i:1\r\npromptcredentialonce:i:0\r\nsmart sizing:i:0\r\nuse multimon:i:0\r\nbandwidthautodetect:i:1\r\n");
 | 
			
		||||
                sw.Write(string.Format("full address:s:{0}\r\n", _rdp.Host));
 | 
			
		||||
                sw.Write(string.Format("username:s:{0}\r\n", _rdp.Username));
 | 
			
		||||
                if (username.Length == 2) {
 | 
			
		||||
                    sw.Write(string.Format("domain:s:{0}\r\n", username[0]));
 | 
			
		||||
                sw.Write(string.Format("username:s:{0}\r\n", username));
 | 
			
		||||
                if (!string.IsNullOrEmpty(domain)) {
 | 
			
		||||
                    sw.Write(string.Format("domain:s:{0}\r\n", domain));
 | 
			
		||||
                }
 | 
			
		||||
                if (Environment.OSVersion.Platform == PlatformID.Unix) {
 | 
			
		||||
                    sw.Write(string.Format("password:s:{0}\r\n", _rdp.Password));
 | 
			
		||||
                } else {
 | 
			
		||||
                    sw.Write(string.Format("password 51:b:{0}\r\n", EncryptPassword(_rdp.Password)));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            Credential credential = new Credential(_rdp.Username, _rdp.Password, string.Format("TERMSRV/{0}", host[0]));
 | 
			
		||||
            credential.Save();
 | 
			
		||||
            Process p = Process.Start("mstsc", string.Format("\"{0}\"", rdpFile));
 | 
			
		||||
            return rdpFile;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunWin() {
 | 
			
		||||
            string rdpFile = CreateRdpFile();
 | 
			
		||||
            Process.Start("mstsc", string.Format("\"{0}\"", rdpFile));
 | 
			
		||||
            Thread.Sleep(1000);
 | 
			
		||||
            File.Delete(rdpFile);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunUnix() {
 | 
			
		||||
            // TODO
 | 
			
		||||
            string rdpFile = CreateRdpFile();
 | 
			
		||||
            string[] cmd = _config.LinuxRDPCommand.Replace("$RDP", rdpFile).Split(" ".ToCharArray(), 2);
 | 
			
		||||
            if (cmd.Length == 0) {
 | 
			
		||||
                MessageBox.Show("No RDP command was set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
            } else if (cmd.Length == 1) {
 | 
			
		||||
                Process.Start(cmd[0]);
 | 
			
		||||
            } else {
 | 
			
		||||
                Process.Start(cmd[0], cmd[1]);
 | 
			
		||||
            }
 | 
			
		||||
            Thread.Sleep(1000);
 | 
			
		||||
            File.Delete(rdpFile);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										23
									
								
								RCM/Record/RDP/RDPConfig.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								RCM/Record/RDP/RDPConfig.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [DisplayName("RDP")]
 | 
			
		||||
    [Serializable]
 | 
			
		||||
    public class RDPConfig : IConfigSection {
 | 
			
		||||
        public string LinuxRDPCommand { get; set; }
 | 
			
		||||
        [NonSerialized]
 | 
			
		||||
        private RDPConfigControl _control;
 | 
			
		||||
 | 
			
		||||
        public UserControl GetControl() {
 | 
			
		||||
            if (_control == null || _control.IsDisposed) {
 | 
			
		||||
                _control = new RDPConfigControl(this);
 | 
			
		||||
            }
 | 
			
		||||
            return _control;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void UpdateFromControl() {
 | 
			
		||||
            LinuxRDPCommand = _control.textBoxLinuxRDPCommand.Text;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										89
									
								
								RCM/Record/RDP/RDPConfigControl.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								RCM/Record/RDP/RDPConfigControl.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							@ -0,0 +1,89 @@
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    partial class RDPConfigControl {
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// Required designer variable.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private System.ComponentModel.IContainer components = null;
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// Clean up any resources being used.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
 | 
			
		||||
        protected override void Dispose(bool disposing) {
 | 
			
		||||
            if (disposing && (components != null)) {
 | 
			
		||||
                components.Dispose();
 | 
			
		||||
            }
 | 
			
		||||
            base.Dispose(disposing);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #region Component Designer generated code
 | 
			
		||||
 | 
			
		||||
        /// <summary> 
 | 
			
		||||
        /// Required method for Designer support - do not modify 
 | 
			
		||||
        /// the contents of this method with the code editor.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private void InitializeComponent() {
 | 
			
		||||
            this.groupBox1 = new System.Windows.Forms.GroupBox();
 | 
			
		||||
            this.labelLinuxRDPCommandHelp = new System.Windows.Forms.Label();
 | 
			
		||||
            this.textBoxLinuxRDPCommand = new System.Windows.Forms.TextBox();
 | 
			
		||||
            this.labelLinuxSSHCommand = new System.Windows.Forms.Label();
 | 
			
		||||
            this.groupBox1.SuspendLayout();
 | 
			
		||||
            this.SuspendLayout();
 | 
			
		||||
            // 
 | 
			
		||||
            // groupBox1
 | 
			
		||||
            // 
 | 
			
		||||
            this.groupBox1.Controls.Add(this.labelLinuxRDPCommandHelp);
 | 
			
		||||
            this.groupBox1.Controls.Add(this.textBoxLinuxRDPCommand);
 | 
			
		||||
            this.groupBox1.Controls.Add(this.labelLinuxSSHCommand);
 | 
			
		||||
            this.groupBox1.Location = new System.Drawing.Point(3, 6);
 | 
			
		||||
            this.groupBox1.Name = "groupBox1";
 | 
			
		||||
            this.groupBox1.Size = new System.Drawing.Size(487, 68);
 | 
			
		||||
            this.groupBox1.TabIndex = 10;
 | 
			
		||||
            this.groupBox1.TabStop = false;
 | 
			
		||||
            this.groupBox1.Text = "Linux";
 | 
			
		||||
            // 
 | 
			
		||||
            // labelLinuxRDPCommandHelp
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelLinuxRDPCommandHelp.AutoSize = true;
 | 
			
		||||
            this.labelLinuxRDPCommandHelp.Location = new System.Drawing.Point(129, 42);
 | 
			
		||||
            this.labelLinuxRDPCommandHelp.Name = "labelLinuxRDPCommandHelp";
 | 
			
		||||
            this.labelLinuxRDPCommandHelp.Size = new System.Drawing.Size(194, 13);
 | 
			
		||||
            this.labelLinuxRDPCommandHelp.TabIndex = 7;
 | 
			
		||||
            this.labelLinuxRDPCommandHelp.Text = "Use $RDP to inject the path to RDP file";
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxLinuxRDPCommand
 | 
			
		||||
            // 
 | 
			
		||||
            this.textBoxLinuxRDPCommand.Location = new System.Drawing.Point(132, 19);
 | 
			
		||||
            this.textBoxLinuxRDPCommand.Name = "textBoxLinuxRDPCommand";
 | 
			
		||||
            this.textBoxLinuxRDPCommand.Size = new System.Drawing.Size(342, 20);
 | 
			
		||||
            this.textBoxLinuxRDPCommand.TabIndex = 1;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelLinuxSSHCommand
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelLinuxSSHCommand.AutoSize = true;
 | 
			
		||||
            this.labelLinuxSSHCommand.Location = new System.Drawing.Point(19, 22);
 | 
			
		||||
            this.labelLinuxSSHCommand.Name = "labelLinuxSSHCommand";
 | 
			
		||||
            this.labelLinuxSSHCommand.Size = new System.Drawing.Size(113, 13);
 | 
			
		||||
            this.labelLinuxSSHCommand.TabIndex = 0;
 | 
			
		||||
            this.labelLinuxSSHCommand.Text = "Command to run RDP:";
 | 
			
		||||
            // 
 | 
			
		||||
            // RDPConfigControl
 | 
			
		||||
            // 
 | 
			
		||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 | 
			
		||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 | 
			
		||||
            this.Controls.Add(this.groupBox1);
 | 
			
		||||
            this.Name = "RDPConfigControl";
 | 
			
		||||
            this.Size = new System.Drawing.Size(499, 99);
 | 
			
		||||
            this.groupBox1.ResumeLayout(false);
 | 
			
		||||
            this.groupBox1.PerformLayout();
 | 
			
		||||
            this.ResumeLayout(false);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
        private System.Windows.Forms.GroupBox groupBox1;
 | 
			
		||||
        private System.Windows.Forms.Label labelLinuxRDPCommandHelp;
 | 
			
		||||
        public System.Windows.Forms.TextBox textBoxLinuxRDPCommand;
 | 
			
		||||
        private System.Windows.Forms.Label labelLinuxSSHCommand;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								RCM/Record/RDP/RDPConfigControl.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								RCM/Record/RDP/RDPConfigControl.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public partial class RDPConfigControl : UserControl {
 | 
			
		||||
        public RDPConfigControl(RDPConfig rdpConfig) {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            textBoxLinuxRDPCommand.Text = rdpConfig.LinuxRDPCommand;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										120
									
								
								RCM/Record/RDP/RDPConfigControl.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								RCM/Record/RDP/RDPConfigControl.resx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,120 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<root>
 | 
			
		||||
  <!-- 
 | 
			
		||||
    Microsoft ResX Schema 
 | 
			
		||||
    
 | 
			
		||||
    Version 2.0
 | 
			
		||||
    
 | 
			
		||||
    The primary goals of this format is to allow a simple XML format 
 | 
			
		||||
    that is mostly human readable. The generation and parsing of the 
 | 
			
		||||
    various data types are done through the TypeConverter classes 
 | 
			
		||||
    associated with the data types.
 | 
			
		||||
    
 | 
			
		||||
    Example:
 | 
			
		||||
    
 | 
			
		||||
    ... ado.net/XML headers & schema ...
 | 
			
		||||
    <resheader name="resmimetype">text/microsoft-resx</resheader>
 | 
			
		||||
    <resheader name="version">2.0</resheader>
 | 
			
		||||
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
 | 
			
		||||
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
 | 
			
		||||
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
 | 
			
		||||
        <value>[base64 mime encoded serialized .NET Framework object]</value>
 | 
			
		||||
    </data>
 | 
			
		||||
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
 | 
			
		||||
        <comment>This is a comment</comment>
 | 
			
		||||
    </data>
 | 
			
		||||
                
 | 
			
		||||
    There are any number of "resheader" rows that contain simple 
 | 
			
		||||
    name/value pairs.
 | 
			
		||||
    
 | 
			
		||||
    Each data row contains a name, and value. The row also contains a 
 | 
			
		||||
    type or mimetype. Type corresponds to a .NET class that support 
 | 
			
		||||
    text/value conversion through the TypeConverter architecture. 
 | 
			
		||||
    Classes that don't support this are serialized and stored with the 
 | 
			
		||||
    mimetype set.
 | 
			
		||||
    
 | 
			
		||||
    The mimetype is used for serialized objects, and tells the 
 | 
			
		||||
    ResXResourceReader how to depersist the object. This is currently not 
 | 
			
		||||
    extensible. For a given mimetype the value must be set accordingly:
 | 
			
		||||
    
 | 
			
		||||
    Note - application/x-microsoft.net.object.binary.base64 is the format 
 | 
			
		||||
    that the ResXResourceWriter will generate, however the reader can 
 | 
			
		||||
    read any of the formats listed below.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.binary.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.soap.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.bytearray.base64
 | 
			
		||||
    value   : The object must be serialized into a byte array 
 | 
			
		||||
            : using a System.ComponentModel.TypeConverter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    -->
 | 
			
		||||
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 | 
			
		||||
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
 | 
			
		||||
    <xsd:element name="root" msdata:IsDataSet="true">
 | 
			
		||||
      <xsd:complexType>
 | 
			
		||||
        <xsd:choice maxOccurs="unbounded">
 | 
			
		||||
          <xsd:element name="metadata">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" use="required" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="assembly">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:attribute name="alias" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="data">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="resheader">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
        </xsd:choice>
 | 
			
		||||
      </xsd:complexType>
 | 
			
		||||
    </xsd:element>
 | 
			
		||||
  </xsd:schema>
 | 
			
		||||
  <resheader name="resmimetype">
 | 
			
		||||
    <value>text/microsoft-resx</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="version">
 | 
			
		||||
    <value>2.0</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="reader">
 | 
			
		||||
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="writer">
 | 
			
		||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
</root>
 | 
			
		||||
@ -1,9 +1,6 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [DisplayName("Browse via SMB")]
 | 
			
		||||
@ -15,12 +12,19 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Run() {
 | 
			
		||||
            string[] host = _rdp.Host.Split(new char[] { ':' });
 | 
			
		||||
            string[] host = _rdp.Host.Split(":".ToCharArray());
 | 
			
		||||
 | 
			
		||||
            if (Environment.OSVersion.Platform == PlatformID.Unix) {
 | 
			
		||||
                // TODO
 | 
			
		||||
                MessageBox.Show("This feature is not yet implemented", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
			
		||||
                // TODO: Implement
 | 
			
		||||
            } else {
 | 
			
		||||
                Process.Start("explorer.exe", string.Format("\\\\{0}", host[0])); // TODO: net use credentials?
 | 
			
		||||
                Process netUse = Process.Start("net", string.Format("use \\\\{0} \"/USER:{1}\" \"{2}\"", host[0], _rdp.Username, _rdp.Password));
 | 
			
		||||
                netUse.WaitForExit();
 | 
			
		||||
                if (netUse.ExitCode == 0) {
 | 
			
		||||
                    Process.Start("explorer.exe", string.Format("\\\\{0}", host[0]));
 | 
			
		||||
                } else {
 | 
			
		||||
                    MessageBox.Show("Unable to open the SMB share path", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
@ -36,11 +35,11 @@ namespace RCM {
 | 
			
		||||
                MessageBox.Show("WinSCP path does not exist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(_config.SSHKeys) && string.IsNullOrWhiteSpace(_ssh.Password)) {
 | 
			
		||||
            if ((_config.SSHKeys == null || _config.SSHKeys.Length == 0) && string.IsNullOrWhiteSpace(_ssh.Password)) {
 | 
			
		||||
                MessageBox.Show("No authentication method was set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_config.SSHKeys)) {
 | 
			
		||||
            if (_config.SSHKeys != null && _config.SSHKeys.Length != 0) {
 | 
			
		||||
                if (string.IsNullOrWhiteSpace(_config.PageantPath)) {
 | 
			
		||||
                    MessageBox.Show("Pageant path is not set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                    return;
 | 
			
		||||
@ -52,16 +51,23 @@ namespace RCM {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            StringBuilder scpParams = new StringBuilder();
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_config.SSHKeys)) {
 | 
			
		||||
                Process.Start(_config.PageantPath, _config.SSHKeys);
 | 
			
		||||
                scpParams.Append(string.Format("/privatekey={0} ", _config.SSHKeys)); //TODO: Zvlada vic klicu?
 | 
			
		||||
            if (_config.SSHKeys != null && _config.SSHKeys.Length != 0) {
 | 
			
		||||
                StringBuilder pageantParams = new StringBuilder();
 | 
			
		||||
                foreach (string sshKey in _config.SSHKeys) {
 | 
			
		||||
                    pageantParams.AppendFormat("\"{0}\" ", sshKey);
 | 
			
		||||
                }
 | 
			
		||||
                Process.Start(_config.PageantPath, pageantParams.ToString());
 | 
			
		||||
            }
 | 
			
		||||
            scpParams.AppendFormat("sftp://{0}@{1}", _ssh.Username, _ssh.Host);
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_ssh.Password)) {
 | 
			
		||||
                scpParams.AppendFormat(" \"/password={0}\"", _ssh.Password);
 | 
			
		||||
            }
 | 
			
		||||
            scpParams.AppendFormat("scp://{0}@{1}", _ssh.Username, _ssh.Host); // TODO: password?
 | 
			
		||||
            Process.Start(_config.WinSCPPath, scpParams.ToString());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunUnix() {
 | 
			
		||||
            // TOOD
 | 
			
		||||
            MessageBox.Show("This feature is not yet implemented", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
			
		||||
            // TODO: Implement
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
 | 
			
		||||
@ -35,11 +35,11 @@ namespace RCM {
 | 
			
		||||
                MessageBox.Show("PuTTY path does not exist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (string.IsNullOrWhiteSpace(_config.SSHKeys) && string.IsNullOrWhiteSpace(_ssh.Password)) {
 | 
			
		||||
            if ((_config.SSHKeys == null || _config.SSHKeys.Length == 0) && string.IsNullOrWhiteSpace(_ssh.Password)) {
 | 
			
		||||
                MessageBox.Show("No authentication method was set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_config.SSHKeys)) {
 | 
			
		||||
            if (_config.SSHKeys != null && _config.SSHKeys.Length != 0) {
 | 
			
		||||
                if (string.IsNullOrWhiteSpace(_config.PageantPath)) {
 | 
			
		||||
                    MessageBox.Show("Pageant path is not set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                    return;
 | 
			
		||||
@ -50,23 +50,47 @@ namespace RCM {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            string[] host = _ssh.Host.Split(new char[] { ':' });
 | 
			
		||||
            string[] host = _ssh.Host.Split(":".ToCharArray());
 | 
			
		||||
            StringBuilder puttyParams = new StringBuilder();
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_config.SSHKeys)) {
 | 
			
		||||
                Process.Start(_config.PageantPath, _config.SSHKeys);
 | 
			
		||||
                puttyParams.AppendFormat("-i {0} ", _config.SSHKeys);
 | 
			
		||||
            } else {
 | 
			
		||||
            if (_config.SSHKeys != null && _config.SSHKeys.Length != 0) {
 | 
			
		||||
                StringBuilder pageantParams = new StringBuilder();
 | 
			
		||||
                foreach (string sshKey in _config.SSHKeys) {
 | 
			
		||||
                    pageantParams.AppendFormat("\"{0}\" ", sshKey);
 | 
			
		||||
                }
 | 
			
		||||
                Process.Start(_config.PageantPath, pageantParams.ToString());
 | 
			
		||||
            }
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_ssh.Password)) {
 | 
			
		||||
                puttyParams.AppendFormat("-pw {0} ", _ssh.Password);
 | 
			
		||||
            }
 | 
			
		||||
            if (host.Length > 1) {
 | 
			
		||||
                puttyParams.AppendFormat("-P {0} ", host[1]);
 | 
			
		||||
            }
 | 
			
		||||
            puttyParams.AppendFormat("{0}@{1}", _ssh.Username, host[0]);
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_ssh.Username)) {
 | 
			
		||||
                puttyParams.AppendFormat("{0}@", _ssh.Username);
 | 
			
		||||
            }
 | 
			
		||||
            puttyParams.Append(host[0]);
 | 
			
		||||
            Process.Start(_config.PuttyPath, puttyParams.ToString());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunUnix() {
 | 
			
		||||
            // TODO
 | 
			
		||||
            string[] host = _ssh.Host.Split(":".ToCharArray());
 | 
			
		||||
            StringBuilder sshParams = new StringBuilder("ssh ");
 | 
			
		||||
            if (host.Length > 1) {
 | 
			
		||||
                sshParams.AppendFormat("-p {0} ", host[1]);
 | 
			
		||||
            }
 | 
			
		||||
            if (!string.IsNullOrWhiteSpace(_ssh.Username)) {
 | 
			
		||||
                sshParams.AppendFormat("{0}@", _ssh.Username);
 | 
			
		||||
            }
 | 
			
		||||
            sshParams.Append(host[0]);
 | 
			
		||||
 | 
			
		||||
            string[] cmd = _config.LinuxSSHCommand.Replace("$SSH", sshParams.ToString()).Split(" ".ToCharArray(), 2);
 | 
			
		||||
            if (cmd.Length == 0) {
 | 
			
		||||
                MessageBox.Show("No SSH command was set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
            } else if (cmd.Length == 1) {
 | 
			
		||||
                Process.Start(cmd[0]);
 | 
			
		||||
            } else {
 | 
			
		||||
                Process.Start(cmd[0], cmd[1]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,18 +1,15 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [DisplayName("SSH")]
 | 
			
		||||
    [Serializable]
 | 
			
		||||
    public class SSHConfig : IConfigSection {
 | 
			
		||||
        public string SSHKeys { get; set; }
 | 
			
		||||
        public string[] SSHKeys { get; set; }
 | 
			
		||||
        public string PuttyPath { get; set; }
 | 
			
		||||
        public string PageantPath { get; set; }
 | 
			
		||||
        public string WinSCPPath { get; set; }
 | 
			
		||||
        public string LinuxSSHCommand { get; set; }
 | 
			
		||||
        [NonSerialized]
 | 
			
		||||
        private SSHConfigControl _control;
 | 
			
		||||
 | 
			
		||||
@ -24,10 +21,11 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void UpdateFromControl() {
 | 
			
		||||
            SSHKeys = _control.textBoxSshKeys.Text;
 | 
			
		||||
            SSHKeys = _control.SSHKeys;
 | 
			
		||||
            PuttyPath = _control.textBoxPutty.Text;
 | 
			
		||||
            PageantPath = _control.textBoxPageant.Text;
 | 
			
		||||
            WinSCPPath = _control.textBoxWinSCP.Text;
 | 
			
		||||
            LinuxSSHCommand = _control.textBoxLinuxSSHCommand.Text;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										138
									
								
								RCM/Record/SSH/SSHConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										138
									
								
								RCM/Record/SSH/SSHConfigControl.Designer.cs
									
									
									
										generated
									
									
									
								
							@ -25,6 +25,9 @@
 | 
			
		||||
        private void InitializeComponent() {
 | 
			
		||||
            this.labelPutty = new System.Windows.Forms.Label();
 | 
			
		||||
            this.groupBoxWindows = new System.Windows.Forms.GroupBox();
 | 
			
		||||
            this.buttonSelectWinSCP = new System.Windows.Forms.Button();
 | 
			
		||||
            this.textBoxWinSCP = new System.Windows.Forms.TextBox();
 | 
			
		||||
            this.labelWinSCP = new System.Windows.Forms.Label();
 | 
			
		||||
            this.buttonSelectPageant = new System.Windows.Forms.Button();
 | 
			
		||||
            this.buttonSelectPutty = new System.Windows.Forms.Button();
 | 
			
		||||
            this.textBoxPageant = new System.Windows.Forms.TextBox();
 | 
			
		||||
@ -36,11 +39,13 @@
 | 
			
		||||
            this.openFileDialogSshKeys = new System.Windows.Forms.OpenFileDialog();
 | 
			
		||||
            this.openFileDialogPutty = new System.Windows.Forms.OpenFileDialog();
 | 
			
		||||
            this.openFileDialogPageant = new System.Windows.Forms.OpenFileDialog();
 | 
			
		||||
            this.buttonSelectWinSCP = new System.Windows.Forms.Button();
 | 
			
		||||
            this.textBoxWinSCP = new System.Windows.Forms.TextBox();
 | 
			
		||||
            this.labelWinSCP = new System.Windows.Forms.Label();
 | 
			
		||||
            this.openFileDialogWinSCP = new System.Windows.Forms.OpenFileDialog();
 | 
			
		||||
            this.groupBox1 = new System.Windows.Forms.GroupBox();
 | 
			
		||||
            this.labelLinuxSSHCommandHelp = new System.Windows.Forms.Label();
 | 
			
		||||
            this.textBoxLinuxSSHCommand = new System.Windows.Forms.TextBox();
 | 
			
		||||
            this.labelLinuxSSHCommand = new System.Windows.Forms.Label();
 | 
			
		||||
            this.groupBoxWindows.SuspendLayout();
 | 
			
		||||
            this.groupBox1.SuspendLayout();
 | 
			
		||||
            this.SuspendLayout();
 | 
			
		||||
            // 
 | 
			
		||||
            // labelPutty
 | 
			
		||||
@ -55,27 +60,56 @@
 | 
			
		||||
            // groupBoxWindows
 | 
			
		||||
            // 
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.buttonSelectWinSCP);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.buttonSelectSshKeys);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.textBoxWinSCP);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.textBoxSshKeys);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.labelWinSCP);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.labelSshKey);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.buttonSelectPageant);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.buttonSelectPutty);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.textBoxPageant);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.textBoxPutty);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.labelPageant);
 | 
			
		||||
            this.groupBoxWindows.Controls.Add(this.labelPutty);
 | 
			
		||||
            this.groupBoxWindows.Location = new System.Drawing.Point(3, 39);
 | 
			
		||||
            this.groupBoxWindows.Location = new System.Drawing.Point(3, 3);
 | 
			
		||||
            this.groupBoxWindows.Name = "groupBoxWindows";
 | 
			
		||||
            this.groupBoxWindows.Size = new System.Drawing.Size(487, 108);
 | 
			
		||||
            this.groupBoxWindows.Size = new System.Drawing.Size(487, 130);
 | 
			
		||||
            this.groupBoxWindows.TabIndex = 1;
 | 
			
		||||
            this.groupBoxWindows.TabStop = false;
 | 
			
		||||
            this.groupBoxWindows.Text = "Windows";
 | 
			
		||||
            // 
 | 
			
		||||
            // buttonSelectWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.buttonSelectWinSCP.Location = new System.Drawing.Point(452, 70);
 | 
			
		||||
            this.buttonSelectWinSCP.Name = "buttonSelectWinSCP";
 | 
			
		||||
            this.buttonSelectWinSCP.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectWinSCP.TabIndex = 6;
 | 
			
		||||
            this.buttonSelectWinSCP.Text = "⋯";
 | 
			
		||||
            this.buttonSelectWinSCP.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectWinSCP.Click += new System.EventHandler(this.ButtonSelectWinSCP_Click);
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.textBoxWinSCP.Location = new System.Drawing.Point(132, 71);
 | 
			
		||||
            this.textBoxWinSCP.Name = "textBoxWinSCP";
 | 
			
		||||
            this.textBoxWinSCP.Size = new System.Drawing.Size(314, 20);
 | 
			
		||||
            this.textBoxWinSCP.TabIndex = 5;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelWinSCP.AutoSize = true;
 | 
			
		||||
            this.labelWinSCP.Location = new System.Drawing.Point(19, 74);
 | 
			
		||||
            this.labelWinSCP.Name = "labelWinSCP";
 | 
			
		||||
            this.labelWinSCP.Size = new System.Drawing.Size(107, 13);
 | 
			
		||||
            this.labelWinSCP.TabIndex = 7;
 | 
			
		||||
            this.labelWinSCP.Text = "Path to WinSCP.exe:";
 | 
			
		||||
            // 
 | 
			
		||||
            // buttonSelectPageant
 | 
			
		||||
            // 
 | 
			
		||||
            this.buttonSelectPageant.Location = new System.Drawing.Point(452, 44);
 | 
			
		||||
            this.buttonSelectPageant.Name = "buttonSelectPageant";
 | 
			
		||||
            this.buttonSelectPageant.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectPageant.TabIndex = 6;
 | 
			
		||||
            this.buttonSelectPageant.TabIndex = 4;
 | 
			
		||||
            this.buttonSelectPageant.Text = "⋯";
 | 
			
		||||
            this.buttonSelectPageant.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectPageant.Click += new System.EventHandler(this.ButtonSelectPageant_Click);
 | 
			
		||||
@ -85,7 +119,7 @@
 | 
			
		||||
            this.buttonSelectPutty.Location = new System.Drawing.Point(452, 18);
 | 
			
		||||
            this.buttonSelectPutty.Name = "buttonSelectPutty";
 | 
			
		||||
            this.buttonSelectPutty.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectPutty.TabIndex = 6;
 | 
			
		||||
            this.buttonSelectPutty.TabIndex = 2;
 | 
			
		||||
            this.buttonSelectPutty.Text = "⋯";
 | 
			
		||||
            this.buttonSelectPutty.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectPutty.Click += new System.EventHandler(this.ButtonSelectPutty_Click);
 | 
			
		||||
@ -102,7 +136,7 @@
 | 
			
		||||
            this.textBoxPutty.Location = new System.Drawing.Point(132, 19);
 | 
			
		||||
            this.textBoxPutty.Name = "textBoxPutty";
 | 
			
		||||
            this.textBoxPutty.Size = new System.Drawing.Size(314, 20);
 | 
			
		||||
            this.textBoxPutty.TabIndex = 2;
 | 
			
		||||
            this.textBoxPutty.TabIndex = 1;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelPageant
 | 
			
		||||
            // 
 | 
			
		||||
@ -116,7 +150,7 @@
 | 
			
		||||
            // labelSshKey
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelSshKey.AutoSize = true;
 | 
			
		||||
            this.labelSshKey.Location = new System.Drawing.Point(8, 10);
 | 
			
		||||
            this.labelSshKey.Location = new System.Drawing.Point(19, 100);
 | 
			
		||||
            this.labelSshKey.Name = "labelSshKey";
 | 
			
		||||
            this.labelSshKey.Size = new System.Drawing.Size(99, 13);
 | 
			
		||||
            this.labelSshKey.TabIndex = 4;
 | 
			
		||||
@ -124,24 +158,24 @@
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxSshKeys
 | 
			
		||||
            // 
 | 
			
		||||
            this.textBoxSshKeys.Location = new System.Drawing.Point(135, 7);
 | 
			
		||||
            this.textBoxSshKeys.Location = new System.Drawing.Point(132, 97);
 | 
			
		||||
            this.textBoxSshKeys.Name = "textBoxSshKeys";
 | 
			
		||||
            this.textBoxSshKeys.Size = new System.Drawing.Size(314, 20);
 | 
			
		||||
            this.textBoxSshKeys.TabIndex = 4;
 | 
			
		||||
            this.textBoxSshKeys.TabIndex = 7;
 | 
			
		||||
            // 
 | 
			
		||||
            // buttonSelectSshKeys
 | 
			
		||||
            // 
 | 
			
		||||
            this.buttonSelectSshKeys.Location = new System.Drawing.Point(455, 6);
 | 
			
		||||
            this.buttonSelectSshKeys.Location = new System.Drawing.Point(452, 96);
 | 
			
		||||
            this.buttonSelectSshKeys.Name = "buttonSelectSshKeys";
 | 
			
		||||
            this.buttonSelectSshKeys.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectSshKeys.TabIndex = 5;
 | 
			
		||||
            this.buttonSelectSshKeys.TabIndex = 8;
 | 
			
		||||
            this.buttonSelectSshKeys.Text = "⋯";
 | 
			
		||||
            this.buttonSelectSshKeys.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectSshKeys.Click += new System.EventHandler(this.ButtonSelectSshKeys_Click);
 | 
			
		||||
            // 
 | 
			
		||||
            // openFileDialogSshKeys
 | 
			
		||||
            // 
 | 
			
		||||
            this.openFileDialogSshKeys.Filter = "OpenSSH keys (*.pub)|*.pub|PuTTY keys (*.ppk)|*.ppk|All files (*.*)|*.*";
 | 
			
		||||
            this.openFileDialogSshKeys.Filter = "PuTTY keys (*.ppk)|*.ppk|All files (*.*)|*.*";
 | 
			
		||||
            this.openFileDialogSshKeys.Multiselect = true;
 | 
			
		||||
            // 
 | 
			
		||||
            // openFileDialogPutty
 | 
			
		||||
@ -152,50 +186,60 @@
 | 
			
		||||
            // 
 | 
			
		||||
            this.openFileDialogPageant.Filter = "Pageant.exe|Pageant.exe";
 | 
			
		||||
            // 
 | 
			
		||||
            // buttonSelectWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.buttonSelectWinSCP.Location = new System.Drawing.Point(452, 70);
 | 
			
		||||
            this.buttonSelectWinSCP.Name = "buttonSelectWinSCP";
 | 
			
		||||
            this.buttonSelectWinSCP.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectWinSCP.TabIndex = 9;
 | 
			
		||||
            this.buttonSelectWinSCP.Text = "⋯";
 | 
			
		||||
            this.buttonSelectWinSCP.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectWinSCP.Click += new System.EventHandler(this.ButtonSelectWinSCP_Click);
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.textBoxWinSCP.Location = new System.Drawing.Point(132, 71);
 | 
			
		||||
            this.textBoxWinSCP.Name = "textBoxWinSCP";
 | 
			
		||||
            this.textBoxWinSCP.Size = new System.Drawing.Size(314, 20);
 | 
			
		||||
            this.textBoxWinSCP.TabIndex = 8;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelWinSCP.AutoSize = true;
 | 
			
		||||
            this.labelWinSCP.Location = new System.Drawing.Point(19, 74);
 | 
			
		||||
            this.labelWinSCP.Name = "labelWinSCP";
 | 
			
		||||
            this.labelWinSCP.Size = new System.Drawing.Size(107, 13);
 | 
			
		||||
            this.labelWinSCP.TabIndex = 7;
 | 
			
		||||
            this.labelWinSCP.Text = "Path to WinSCP.exe:";
 | 
			
		||||
            // 
 | 
			
		||||
            // openFileDialogWinSCP
 | 
			
		||||
            // 
 | 
			
		||||
            this.openFileDialogWinSCP.Filter = "WinSCP.exe|WinSCP.exe";
 | 
			
		||||
            // 
 | 
			
		||||
            // groupBox1
 | 
			
		||||
            // 
 | 
			
		||||
            this.groupBox1.Controls.Add(this.labelLinuxSSHCommandHelp);
 | 
			
		||||
            this.groupBox1.Controls.Add(this.textBoxLinuxSSHCommand);
 | 
			
		||||
            this.groupBox1.Controls.Add(this.labelLinuxSSHCommand);
 | 
			
		||||
            this.groupBox1.Location = new System.Drawing.Point(3, 139);
 | 
			
		||||
            this.groupBox1.Name = "groupBox1";
 | 
			
		||||
            this.groupBox1.Size = new System.Drawing.Size(487, 68);
 | 
			
		||||
            this.groupBox1.TabIndex = 10;
 | 
			
		||||
            this.groupBox1.TabStop = false;
 | 
			
		||||
            this.groupBox1.Text = "Linux";
 | 
			
		||||
            // 
 | 
			
		||||
            // labelLinuxSSHCommandHelp
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelLinuxSSHCommandHelp.AutoSize = true;
 | 
			
		||||
            this.labelLinuxSSHCommandHelp.Location = new System.Drawing.Point(129, 42);
 | 
			
		||||
            this.labelLinuxSSHCommandHelp.Name = "labelLinuxSSHCommandHelp";
 | 
			
		||||
            this.labelLinuxSSHCommandHelp.Size = new System.Drawing.Size(189, 13);
 | 
			
		||||
            this.labelLinuxSSHCommandHelp.TabIndex = 7;
 | 
			
		||||
            this.labelLinuxSSHCommandHelp.Text = "Use $SSH to inject the SSH command";
 | 
			
		||||
            // 
 | 
			
		||||
            // textBoxLinuxSSHCommand
 | 
			
		||||
            // 
 | 
			
		||||
            this.textBoxLinuxSSHCommand.Location = new System.Drawing.Point(132, 19);
 | 
			
		||||
            this.textBoxLinuxSSHCommand.Name = "textBoxLinuxSSHCommand";
 | 
			
		||||
            this.textBoxLinuxSSHCommand.Size = new System.Drawing.Size(342, 20);
 | 
			
		||||
            this.textBoxLinuxSSHCommand.TabIndex = 9;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelLinuxSSHCommand
 | 
			
		||||
            // 
 | 
			
		||||
            this.labelLinuxSSHCommand.AutoSize = true;
 | 
			
		||||
            this.labelLinuxSSHCommand.Location = new System.Drawing.Point(19, 22);
 | 
			
		||||
            this.labelLinuxSSHCommand.Name = "labelLinuxSSHCommand";
 | 
			
		||||
            this.labelLinuxSSHCommand.Size = new System.Drawing.Size(112, 13);
 | 
			
		||||
            this.labelLinuxSSHCommand.TabIndex = 0;
 | 
			
		||||
            this.labelLinuxSSHCommand.Text = "Command to run SSH:";
 | 
			
		||||
            // 
 | 
			
		||||
            // SSHConfigControl
 | 
			
		||||
            // 
 | 
			
		||||
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
 | 
			
		||||
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
 | 
			
		||||
            this.Controls.Add(this.buttonSelectSshKeys);
 | 
			
		||||
            this.Controls.Add(this.textBoxSshKeys);
 | 
			
		||||
            this.Controls.Add(this.labelSshKey);
 | 
			
		||||
            this.Controls.Add(this.groupBox1);
 | 
			
		||||
            this.Controls.Add(this.groupBoxWindows);
 | 
			
		||||
            this.Name = "SSHConfigControl";
 | 
			
		||||
            this.Size = new System.Drawing.Size(499, 172);
 | 
			
		||||
            this.Size = new System.Drawing.Size(499, 220);
 | 
			
		||||
            this.groupBoxWindows.ResumeLayout(false);
 | 
			
		||||
            this.groupBoxWindows.PerformLayout();
 | 
			
		||||
            this.groupBox1.ResumeLayout(false);
 | 
			
		||||
            this.groupBox1.PerformLayout();
 | 
			
		||||
            this.ResumeLayout(false);
 | 
			
		||||
            this.PerformLayout();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -218,5 +262,9 @@
 | 
			
		||||
        public System.Windows.Forms.TextBox textBoxWinSCP;
 | 
			
		||||
        private System.Windows.Forms.Label labelWinSCP;
 | 
			
		||||
        private System.Windows.Forms.OpenFileDialog openFileDialogWinSCP;
 | 
			
		||||
        private System.Windows.Forms.GroupBox groupBox1;
 | 
			
		||||
        private System.Windows.Forms.Label labelLinuxSSHCommandHelp;
 | 
			
		||||
        public System.Windows.Forms.TextBox textBoxLinuxSSHCommand;
 | 
			
		||||
        private System.Windows.Forms.Label labelLinuxSSHCommand;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -3,15 +3,22 @@ using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public partial class SSHConfigControl : UserControl {
 | 
			
		||||
        public string[] SSHKeys { get; private set; }
 | 
			
		||||
 | 
			
		||||
        public SSHConfigControl(SSHConfig sshConfig) {
 | 
			
		||||
            InitializeComponent();
 | 
			
		||||
            textBoxPutty.Text = sshConfig.PuttyPath;
 | 
			
		||||
            textBoxPageant.Text = sshConfig.PageantPath;
 | 
			
		||||
            textBoxSshKeys.Text = sshConfig.SSHKeys;
 | 
			
		||||
            SSHKeys = sshConfig.SSHKeys;
 | 
			
		||||
            if (SSHKeys != null) {
 | 
			
		||||
                textBoxSshKeys.Text = string.Join(",", SSHKeys);
 | 
			
		||||
            }
 | 
			
		||||
            textBoxLinuxSSHCommand.Text = sshConfig.LinuxSSHCommand;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void ButtonSelectSshKeys_Click(object sender, EventArgs e) {
 | 
			
		||||
            if (openFileDialogSshKeys.ShowDialog() == DialogResult.OK) {
 | 
			
		||||
                SSHKeys = openFileDialogSshKeys.FileNames;
 | 
			
		||||
                textBoxSshKeys.Text = string.Join(",", openFileDialogSshKeys.FileNames);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										132
									
								
								RCM/Record/SSH/SSHConfigControl.resx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								RCM/Record/SSH/SSHConfigControl.resx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,132 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<root>
 | 
			
		||||
  <!-- 
 | 
			
		||||
    Microsoft ResX Schema 
 | 
			
		||||
    
 | 
			
		||||
    Version 2.0
 | 
			
		||||
    
 | 
			
		||||
    The primary goals of this format is to allow a simple XML format 
 | 
			
		||||
    that is mostly human readable. The generation and parsing of the 
 | 
			
		||||
    various data types are done through the TypeConverter classes 
 | 
			
		||||
    associated with the data types.
 | 
			
		||||
    
 | 
			
		||||
    Example:
 | 
			
		||||
    
 | 
			
		||||
    ... ado.net/XML headers & schema ...
 | 
			
		||||
    <resheader name="resmimetype">text/microsoft-resx</resheader>
 | 
			
		||||
    <resheader name="version">2.0</resheader>
 | 
			
		||||
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
 | 
			
		||||
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
 | 
			
		||||
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
 | 
			
		||||
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
 | 
			
		||||
        <value>[base64 mime encoded serialized .NET Framework object]</value>
 | 
			
		||||
    </data>
 | 
			
		||||
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
 | 
			
		||||
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
 | 
			
		||||
        <comment>This is a comment</comment>
 | 
			
		||||
    </data>
 | 
			
		||||
                
 | 
			
		||||
    There are any number of "resheader" rows that contain simple 
 | 
			
		||||
    name/value pairs.
 | 
			
		||||
    
 | 
			
		||||
    Each data row contains a name, and value. The row also contains a 
 | 
			
		||||
    type or mimetype. Type corresponds to a .NET class that support 
 | 
			
		||||
    text/value conversion through the TypeConverter architecture. 
 | 
			
		||||
    Classes that don't support this are serialized and stored with the 
 | 
			
		||||
    mimetype set.
 | 
			
		||||
    
 | 
			
		||||
    The mimetype is used for serialized objects, and tells the 
 | 
			
		||||
    ResXResourceReader how to depersist the object. This is currently not 
 | 
			
		||||
    extensible. For a given mimetype the value must be set accordingly:
 | 
			
		||||
    
 | 
			
		||||
    Note - application/x-microsoft.net.object.binary.base64 is the format 
 | 
			
		||||
    that the ResXResourceWriter will generate, however the reader can 
 | 
			
		||||
    read any of the formats listed below.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.binary.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.soap.base64
 | 
			
		||||
    value   : The object must be serialized with 
 | 
			
		||||
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
 | 
			
		||||
    mimetype: application/x-microsoft.net.object.bytearray.base64
 | 
			
		||||
    value   : The object must be serialized into a byte array 
 | 
			
		||||
            : using a System.ComponentModel.TypeConverter
 | 
			
		||||
            : and then encoded with base64 encoding.
 | 
			
		||||
    -->
 | 
			
		||||
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
 | 
			
		||||
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
 | 
			
		||||
    <xsd:element name="root" msdata:IsDataSet="true">
 | 
			
		||||
      <xsd:complexType>
 | 
			
		||||
        <xsd:choice maxOccurs="unbounded">
 | 
			
		||||
          <xsd:element name="metadata">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" use="required" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="assembly">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:attribute name="alias" type="xsd:string" />
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="data">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
 | 
			
		||||
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
 | 
			
		||||
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
 | 
			
		||||
              <xsd:attribute ref="xml:space" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
          <xsd:element name="resheader">
 | 
			
		||||
            <xsd:complexType>
 | 
			
		||||
              <xsd:sequence>
 | 
			
		||||
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
 | 
			
		||||
              </xsd:sequence>
 | 
			
		||||
              <xsd:attribute name="name" type="xsd:string" use="required" />
 | 
			
		||||
            </xsd:complexType>
 | 
			
		||||
          </xsd:element>
 | 
			
		||||
        </xsd:choice>
 | 
			
		||||
      </xsd:complexType>
 | 
			
		||||
    </xsd:element>
 | 
			
		||||
  </xsd:schema>
 | 
			
		||||
  <resheader name="resmimetype">
 | 
			
		||||
    <value>text/microsoft-resx</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="version">
 | 
			
		||||
    <value>2.0</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="reader">
 | 
			
		||||
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <resheader name="writer">
 | 
			
		||||
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
 | 
			
		||||
  </resheader>
 | 
			
		||||
  <metadata name="openFileDialogSshKeys.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>17, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="openFileDialogPutty.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>194, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="openFileDialogPageant.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>356, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
  <metadata name="openFileDialogWinSCP.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
 | 
			
		||||
    <value>534, 17</value>
 | 
			
		||||
  </metadata>
 | 
			
		||||
</root>
 | 
			
		||||
@ -1,8 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
@ -16,8 +13,13 @@ namespace RCM {
 | 
			
		||||
 | 
			
		||||
        public async void Run() {
 | 
			
		||||
            await Task.Run(() => {
 | 
			
		||||
                if (_website.URL.StartsWith("http://") || _website.URL.StartsWith("https://"))
 | 
			
		||||
                    Process.Start(_website.URL); // TODO: vyplnovat hesla
 | 
			
		||||
                if (_website.URL.StartsWith("http://") || _website.URL.StartsWith("https://")) {
 | 
			
		||||
                    if (Environment.OSVersion.Platform == PlatformID.Unix) {
 | 
			
		||||
                        Process.Start("xdg-open", _website.URL);
 | 
			
		||||
                    } else {
 | 
			
		||||
                        Process.Start(_website.URL); // TODO: vyplnovat hesla
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,4 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Diagnostics;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,7 @@ using System.IO;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    [DisplayName("Start WinBox")]
 | 
			
		||||
@ -19,6 +20,14 @@ namespace RCM {
 | 
			
		||||
 | 
			
		||||
        public async void Run() {
 | 
			
		||||
            await Task.Run(() => {
 | 
			
		||||
                if (string.IsNullOrWhiteSpace(_config.WinBoxPath)) {
 | 
			
		||||
                    MessageBox.Show("WinBox path is not set", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (!File.Exists(_config.WinBoxPath)) {
 | 
			
		||||
                    MessageBox.Show("WinBox path does not exist", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                if (Environment.OSVersion.Platform == PlatformID.Unix) {
 | 
			
		||||
                    RunUnix();
 | 
			
		||||
                } else {
 | 
			
		||||
@ -28,12 +37,12 @@ namespace RCM {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunWin() {
 | 
			
		||||
            string winboxParam = string.Format("{0} \"{1}\" \"{2}\"", _winbox.Host, _winbox.Username, _winbox.Password);
 | 
			
		||||
            string winboxParam = string.Format("\"{0}\" \"{1}\" \"{2}\"", _winbox.Host, _winbox.Username, _winbox.Password);
 | 
			
		||||
            Process.Start(_config.WinBoxPath, winboxParam);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void RunUnix() {
 | 
			
		||||
            string winboxParam = string.Format("{0} {1} \"{2}\" \"{3}\"", _config.WinBoxPath, _winbox.Host, _winbox.Username, _winbox.Password);
 | 
			
		||||
            string winboxParam = string.Format("\"{0}\" \"{1}\" \"{2}\" \"{3}\"", _config.WinBoxPath, _winbox.Host, _winbox.Username, _winbox.Password);
 | 
			
		||||
            Process.Start("wine", winboxParam);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -34,7 +34,7 @@
 | 
			
		||||
            this.buttonSelectWinBox.Location = new System.Drawing.Point(455, 6);
 | 
			
		||||
            this.buttonSelectWinBox.Name = "buttonSelectWinBox";
 | 
			
		||||
            this.buttonSelectWinBox.Size = new System.Drawing.Size(22, 22);
 | 
			
		||||
            this.buttonSelectWinBox.TabIndex = 9;
 | 
			
		||||
            this.buttonSelectWinBox.TabIndex = 2;
 | 
			
		||||
            this.buttonSelectWinBox.Text = "⋯";
 | 
			
		||||
            this.buttonSelectWinBox.UseVisualStyleBackColor = true;
 | 
			
		||||
            this.buttonSelectWinBox.Click += new System.EventHandler(this.ButtonSelectWinBox_Click);
 | 
			
		||||
@ -44,7 +44,7 @@
 | 
			
		||||
            this.textBoxWinBox.Location = new System.Drawing.Point(135, 7);
 | 
			
		||||
            this.textBoxWinBox.Name = "textBoxWinBox";
 | 
			
		||||
            this.textBoxWinBox.Size = new System.Drawing.Size(314, 20);
 | 
			
		||||
            this.textBoxWinBox.TabIndex = 8;
 | 
			
		||||
            this.textBoxWinBox.TabIndex = 1;
 | 
			
		||||
            // 
 | 
			
		||||
            // labelWinBox
 | 
			
		||||
            // 
 | 
			
		||||
@ -57,7 +57,7 @@
 | 
			
		||||
            // 
 | 
			
		||||
            // openFileDialogWinBox
 | 
			
		||||
            // 
 | 
			
		||||
            this.openFileDialogWinBox.Filter = "WinBox.exe|WinBox.exe";
 | 
			
		||||
            this.openFileDialogWinBox.Filter = "WinBox*.exe|WinBox*.exe";
 | 
			
		||||
            // 
 | 
			
		||||
            // WinBoxConfigControl
 | 
			
		||||
            // 
 | 
			
		||||
 | 
			
		||||
@ -7,7 +7,7 @@ namespace RCM {
 | 
			
		||||
            IRecord record1 = (IRecord)((TreeNode)o1).Tag;
 | 
			
		||||
            IRecord record2 = (IRecord)((TreeNode)o2).Tag;
 | 
			
		||||
 | 
			
		||||
            int result = 0;
 | 
			
		||||
            int result;
 | 
			
		||||
 | 
			
		||||
            if (record1 is Group) {
 | 
			
		||||
                if (record2 is Group) {
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public static class TypeExtensions {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										82
									
								
								RCM/ZZImporter.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								RCM/ZZImporter.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
			
		||||
/*using Microsoft.VisualBasic.FileIO;
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using System.Windows.Forms;
 | 
			
		||||
 | 
			
		||||
namespace RCM {
 | 
			
		||||
    public static class Importer {
 | 
			
		||||
        public static List<IRecord> GetRecordsFromRDM() {
 | 
			
		||||
            Dictionary<string, Guid> groups = new Dictionary<string, Guid>();
 | 
			
		||||
            List<IRecord> records = new List<IRecord>();
 | 
			
		||||
            string previousGroup = null;
 | 
			
		||||
 | 
			
		||||
            using (TextFieldParser parser = new TextFieldParser("EntryList.csv", Encoding.UTF8)) {
 | 
			
		||||
                parser.TextFieldType = FieldType.Delimited;
 | 
			
		||||
                parser.SetDelimiters(",");
 | 
			
		||||
                parser.ReadFields(); // Skip headers
 | 
			
		||||
                while (!parser.EndOfData) {
 | 
			
		||||
                    string[] fields = parser.ReadFields();
 | 
			
		||||
                    string type = fields[0];
 | 
			
		||||
                    string name = fields[3];
 | 
			
		||||
                    string group = fields[4];
 | 
			
		||||
                    string parent = fields[7];
 | 
			
		||||
                    string host = fields[8];
 | 
			
		||||
                    string port = fields[9];
 | 
			
		||||
                    string username = fields[10];
 | 
			
		||||
                    string domain = fields[11];
 | 
			
		||||
                    string password = fields[12];
 | 
			
		||||
                    string url = fields[14];
 | 
			
		||||
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(parent)) {
 | 
			
		||||
                        // Naive identification of subconnections ownership
 | 
			
		||||
                        group = previousGroup;
 | 
			
		||||
                    }
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(port)) {
 | 
			
		||||
                        host = string.Format("{0}:{1}", host, port);
 | 
			
		||||
                    }
 | 
			
		||||
                    if (!string.IsNullOrWhiteSpace(domain)) {
 | 
			
		||||
                        username = string.Format("{0}\\{1}", domain, username);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    IRecord record = null;
 | 
			
		||||
                    if (type == "Folder" || type == "Site") {
 | 
			
		||||
                        string[] splitGroup = group.Split("\\".ToCharArray());
 | 
			
		||||
                        group = string.Join("\\", splitGroup.Take(splitGroup.Length - 1));
 | 
			
		||||
                    } else if (type == "Winbox") {
 | 
			
		||||
                        record = new WinBox() { Id = Guid.NewGuid(), Title = name, Host = host, Username = username, Password = password };
 | 
			
		||||
                    } else if (type == "Microsoft Remote Desktop (RDP)") {
 | 
			
		||||
                        record = new RDP() { Id = Guid.NewGuid(), Title = name, Host = host, Username = username, Password = password };
 | 
			
		||||
                    } else if (type == "Putty") {
 | 
			
		||||
                        record = new SSH() { Id = Guid.NewGuid(), Title = name, Host = host, Username = username, Password = password };
 | 
			
		||||
                    } else if (type == "Web Browser (http/https)") {
 | 
			
		||||
                        record = new WebSite() { Id = Guid.NewGuid(), Title = name, URL = url, Username = username, Password = password };
 | 
			
		||||
                    } else if (type == "FTP (Third Party)") {
 | 
			
		||||
                        // skip
 | 
			
		||||
                    } else {
 | 
			
		||||
                        MessageBox.Show(string.Format("Type: {0}, Title: {1}", type, name));
 | 
			
		||||
                    }
 | 
			
		||||
                    if (record != null) {
 | 
			
		||||
                        string[] splitGroup = group.Split("\\".ToCharArray());
 | 
			
		||||
                        for (int i = 0; i < splitGroup.Length; i++) {
 | 
			
		||||
                            string level = string.Join("\\", splitGroup.Take(i+1));
 | 
			
		||||
                            if (!groups.ContainsKey(level)) {
 | 
			
		||||
                                Group g = new Group() { Id = Guid.NewGuid(), Title = splitGroup[i], GroupId = i == 0 ? Guid.Empty : groups[string.Join("\\", splitGroup.Take(i))] };
 | 
			
		||||
                                records.Add(g);
 | 
			
		||||
                                groups.Add(level, g.Id);
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        record.GroupId = groups[group];
 | 
			
		||||
                        records.Add(record);
 | 
			
		||||
                    }
 | 
			
		||||
                    previousGroup = group;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return records;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
							
								
								
									
										11
									
								
								RCM/app.config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								RCM/app.config
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<configuration>
 | 
			
		||||
  <runtime>
 | 
			
		||||
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 | 
			
		||||
      <dependentAssembly>
 | 
			
		||||
        <assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral" />
 | 
			
		||||
        <bindingRedirect oldVersion="0.0.0.0-3.10.1.0" newVersion="3.10.1.0" />
 | 
			
		||||
      </dependentAssembly>
 | 
			
		||||
    </assemblyBinding>
 | 
			
		||||
  </runtime>
 | 
			
		||||
</configuration>
 | 
			
		||||
@ -1,9 +1,7 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<packages>
 | 
			
		||||
  <package id="BouncyCastle" version="1.8.3.1" targetFramework="net461" />
 | 
			
		||||
  <package id="CredentialManagement" version="1.0.2" targetFramework="net461" />
 | 
			
		||||
  <package id="Google.Protobuf" version="3.6.1" targetFramework="net461" />
 | 
			
		||||
  <package id="MySql.Data" version="8.0.16" targetFramework="net461" />
 | 
			
		||||
  <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net461" />
 | 
			
		||||
  <package id="Google.Protobuf" version="3.10.1" targetFramework="net461" />
 | 
			
		||||
  <package id="MySql.Data" version="8.0.15" targetFramework="net461" />
 | 
			
		||||
  <package id="Newtonsoft.Json" version="12.0.3" targetFramework="net461" />
 | 
			
		||||
  <package id="System.Data.SQLite.Core" version="1.0.110.0" targetFramework="net461" />
 | 
			
		||||
</packages>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Resources/Program.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Resources/Program.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 27 KiB  | 
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user