From 2d0dbc5ca722bb57b4ae7532ccec322194026ee8 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 4 Mar 2018 20:19:26 +0100 Subject: [PATCH 01/24] Merged create connection dialog usage into one. --- Src/SwqlStudio/QueryTab.cs | 30 ++++++--- Src/SwqlStudio/TabsFactory.cs | 117 ++++++++++++++++------------------ 2 files changed, 76 insertions(+), 71 deletions(-) diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 5a8e8c1b9..0d7a5a062 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -245,16 +245,13 @@ public void RunPlayback() if (openFileDialog1.ShowDialog() == DialogResult.OK) { var pbi = new PlaybackItem() { FileName = openFileDialog1.FileName, MultiThread = false, QueryTab = this }; - using (var nc = new NewConnection()) - { - if (nc.ShowDialog(this) != DialogResult.OK) - return; - - var info = nc.ConnectionInfo; - info.Connect(); - pbi.ConnectionInfo = info; - PlaybackManager.StartPlayback(pbi); - } + ConnectionInfo info = CreateConnection(); + if (info == null) + return; + + info.Connect(); + pbi.ConnectionInfo = info; + PlaybackManager.StartPlayback(pbi); logTextbox.Text = "Started Playback...\r\n"; } } @@ -265,6 +262,19 @@ public void RunPlayback() } } + public static ConnectionInfo CreateConnection() + { + using (var nc = new NewConnection()) + { + if (nc.ShowDialog() == DialogResult.OK) + { + return nc.ConnectionInfo; + } + } + + return null; + } + private delegate void AppendLogDelegate(string s); public void AppendLogTabLine(string line) { diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index b9c87fa9a..b46efd9d7 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -17,7 +17,7 @@ internal class TabsFactory : ITabsFactory private readonly Dictionary metadataProviders = new Dictionary(); - + private readonly ServerList serverList = new ServerList(); private readonly QueriesDockPanel dockPanel; @@ -45,7 +45,7 @@ public void OpenActivityMonitor(string title, ConnectionInfo info) { var activityMonitorTab = new ActivityMonitorTab { - ConnectionInfo = info, + ConnectionInfo = info, Dock = DockStyle.Fill, ApplicationService = this.applicationService }; @@ -58,9 +58,9 @@ public void OpenInvokeTab(string title, ConnectionInfo info, Verb verb) { var invokeVerbTab = new InvokeVerbTab { - ConnectionInfo = info, + ConnectionInfo = info, Dock = DockStyle.Fill, - ApplicationService = this.applicationService, + ApplicationService = this.applicationService, Verb = verb }; AddNewTab(invokeVerbTab, title); @@ -88,74 +88,69 @@ public void OpenCrudTab(CrudOperation operation, ConnectionInfo info, Entity ent internal void AddNewQueryTab() { - using (NewConnection nc = new NewConnection()) + string msg = null; + + try { - if (nc.ShowDialog() != DialogResult.OK) + ConnectionInfo info = QueryTab.CreateConnection(); + if (info == null) return; - string msg = null; - - try - { - ConnectionInfo info; - bool alreadyExists = false; - alreadyExists = serverList.TryGet(nc.ConnectionInfo.ServerType, nc.ConnectionInfo.Server, nc.ConnectionInfo.UserName, out info); - if (!alreadyExists) - { - info = nc.ConnectionInfo; - info.Connect(); - serverList.Add(info); - - info.ConnectionClosed += (sender, args) => serverList.Remove(info); - } - - if (!alreadyExists) - { - var provider = new SwisMetaDataProvider(info); - this.dockPanel.AddServer(provider, info); - metadataProviders[info] = provider; - } - - this.CreateQueryTab(info.Title, info, metadataProviders[info]); - } - catch (FaultException ex) - { - log.Error("Failed to connect", ex); - msg = ex.Detail.Message; - } - catch (SecurityNegotiationException ex) - { - log.Error("Failed to connect", ex); - msg = ex.Message; - } - catch (FaultException ex) + bool alreadyExists = false; + ConnectionInfo found; + alreadyExists = serverList.TryGet(info.ServerType, info.Server, info.UserName, out found); + if (!alreadyExists) { - log.Error("Failed to connect", ex); - msg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message; + info.Connect(); + serverList.Add(info); + + info.ConnectionClosed += (sender, args) => serverList.Remove(info); + + var provider = new SwisMetaDataProvider(info); + this.dockPanel.AddServer(provider, info); + metadataProviders[info] = provider; + found = info; } - catch (MessageSecurityException ex) + + this.CreateQueryTab(found.Title, found, metadataProviders[found]); + } + catch (FaultException ex) + { + log.Error("Failed to connect", ex); + msg = ex.Detail.Message; + } + catch (SecurityNegotiationException ex) + { + log.Error("Failed to connect", ex); + msg = ex.Message; + } + catch (FaultException ex) + { + log.Error("Failed to connect", ex); + msg = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message; + } + catch (MessageSecurityException ex) + { + log.Error("Failed to connect", ex); + if (ex.InnerException != null && ex.InnerException is FaultException) { - log.Error("Failed to connect", ex); - if (ex.InnerException != null && ex.InnerException is FaultException) - { - msg = (ex.InnerException as FaultException).Message; - } - else - { - msg = ex.Message; - } + msg = (ex.InnerException as FaultException).Message; } - catch (Exception ex) + else { - log.Error("Failed to connect", ex); msg = ex.Message; } + } + catch (Exception ex) + { + log.Error("Failed to connect", ex); + msg = ex.Message; + } - if (msg != null) - { - msg = string.Format("Unable to connect to Information Service. {0}", msg); - MessageBox.Show(msg, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } + if (msg != null) + { + msg = string.Format("Unable to connect to Information Service. {0}", msg); + MessageBox.Show(msg, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } From 83bc6ea9813311c898d3a9d0ca8c2911d3ed8d8f Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 4 Mar 2018 22:55:55 +0100 Subject: [PATCH 02/24] Added toolbar to main window with base buttons --- Src/SwqlStudio/MainForm.Designer.cs | 113 +++++++- Src/SwqlStudio/MainForm.resx | 412 ++++++++++++++-------------- 2 files changed, 310 insertions(+), 215 deletions(-) diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index e07c54fcd..22af49124 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -62,6 +62,7 @@ private void InitializeComponent() this.byHierarchyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.noGroupingToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.enableAutocompleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.discoverQueryParametersMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutSWQLStudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openFileDialog = new System.Windows.Forms.OpenFileDialog(); @@ -70,9 +71,16 @@ private void InitializeComponent() this.filesDock = new SwqlStudio.QueriesDockPanel(); this.ObjectExplorerImageList = new System.Windows.Forms.ImageList(this.components); this.startTimer = new System.Windows.Forms.Timer(this.components); - this.discoverQueryParametersMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mainToolbar = new System.Windows.Forms.ToolStrip(); + this.undoToolButton = new System.Windows.Forms.ToolStripButton(); + this.redoToolButton = new System.Windows.Forms.ToolStripButton(); + this.newFileToolButton = new System.Windows.Forms.ToolStripButton(); + this.saveToolButton = new System.Windows.Forms.ToolStripButton(); + this.executeToolButton = new System.Windows.Forms.ToolStripButton(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.menu.SuspendLayout(); + this.mainToolbar.SuspendLayout(); this.SuspendLayout(); // // toolStripSeparator1 @@ -365,6 +373,16 @@ private void InitializeComponent() this.enableAutocompleteToolStripMenuItem.Text = "Enable Autocomplete"; this.enableAutocompleteToolStripMenuItem.CheckedChanged += new System.EventHandler(this.enableAutocompleteToolStripMenuItem_CheckedChanged); // + // discoverQueryParametersMenuItem + // + this.discoverQueryParametersMenuItem.Checked = true; + this.discoverQueryParametersMenuItem.CheckOnClick = true; + this.discoverQueryParametersMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.discoverQueryParametersMenuItem.Name = "discoverQueryParametersMenuItem"; + this.discoverQueryParametersMenuItem.Size = new System.Drawing.Size(214, 22); + this.discoverQueryParametersMenuItem.Text = "Discover query parameters"; + this.discoverQueryParametersMenuItem.CheckedChanged += new System.EventHandler(this.discoverQueryParametersToolStripMenuItem_CheckedChanged); + // // helpToolStripMenuItem // this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -419,15 +437,80 @@ private void InitializeComponent() // this.startTimer.Tick += new System.EventHandler(this.startTimer_Tick); // - // discoverQueryParametersMenuItem - // - this.discoverQueryParametersMenuItem.Checked = true; - this.discoverQueryParametersMenuItem.CheckOnClick = true; - this.discoverQueryParametersMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; - this.discoverQueryParametersMenuItem.Name = "discoverQueryParametersMenuItem"; - this.discoverQueryParametersMenuItem.Size = new System.Drawing.Size(214, 22); - this.discoverQueryParametersMenuItem.Text = "Discover query parameters"; - this.discoverQueryParametersMenuItem.CheckedChanged += new System.EventHandler(this.discoverQueryParametersToolStripMenuItem_CheckedChanged); + // mainToolbar + // + this.mainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.executeToolButton, + this.undoToolButton, + this.redoToolButton, + this.newFileToolButton, + this.toolStripButton1, + this.saveToolButton}); + this.mainToolbar.Location = new System.Drawing.Point(0, 24); + this.mainToolbar.Name = "mainToolbar"; + this.mainToolbar.Size = new System.Drawing.Size(827, 25); + this.mainToolbar.TabIndex = 5; + this.mainToolbar.Text = "toolStrip1"; + // + // undoToolButton + // + this.undoToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.undoToolButton.Image = global::SwqlStudio.Properties.Resources.Undo_16x; + this.undoToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.undoToolButton.Name = "undoToolButton"; + this.undoToolButton.Size = new System.Drawing.Size(23, 22); + this.undoToolButton.Text = "toolStripButton1"; + this.undoToolButton.Click += new System.EventHandler(this.undoToolStripMenuItem_Click); + // + // redoToolButton + // + this.redoToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.redoToolButton.Image = global::SwqlStudio.Properties.Resources.Redo_16x; + this.redoToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.redoToolButton.Name = "redoToolButton"; + this.redoToolButton.Size = new System.Drawing.Size(23, 22); + this.redoToolButton.Text = "toolStripButton1"; + this.redoToolButton.Click += new System.EventHandler(this.redoToolStripMenuItem_Click); + // + // newFileToolButton + // + this.newFileToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.newFileToolButton.Image = global::SwqlStudio.Properties.Resources.NewFile_16x; + this.newFileToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.newFileToolButton.Name = "newFileToolButton"; + this.newFileToolButton.Size = new System.Drawing.Size(23, 22); + this.newFileToolButton.Text = "toolStripButton1"; + this.newFileToolButton.Click += new System.EventHandler(this.menuFileNew_Click); + // + // saveToolButton + // + this.saveToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.saveToolButton.Image = global::SwqlStudio.Properties.Resources.Save_16x; + this.saveToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.saveToolButton.Name = "saveToolButton"; + this.saveToolButton.Size = new System.Drawing.Size(23, 22); + this.saveToolButton.Text = "toolStripButton1"; + this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); + // + // executeToolButton + // + this.executeToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.executeToolButton.Image = global::SwqlStudio.Properties.Resources.Run_16x; + this.executeToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.executeToolButton.Name = "executeToolButton"; + this.executeToolButton.Size = new System.Drawing.Size(23, 22); + this.executeToolButton.Text = "toolStripButton1"; + this.executeToolButton.Click += new System.EventHandler(this.menuQueryExecute_Click); + // + // toolStripButton1 + // + this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.toolStripButton1.Image = global::SwqlStudio.Properties.Resources.OpenFolder_16x; + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(23, 22); + this.toolStripButton1.Text = "toolStripButton1"; + this.toolStripButton1.Click += new System.EventHandler(this.menuFileOpen_Click); // // MainForm // @@ -435,6 +518,7 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(827, 595); + this.Controls.Add(this.mainToolbar); this.Controls.Add(this.filesDock); this.Controls.Add(this.menu); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); @@ -447,6 +531,8 @@ private void InitializeComponent() this.DragEnter += new System.Windows.Forms.DragEventHandler(this.TextEditorForm_DragEnter); this.menu.ResumeLayout(false); this.menu.PerformLayout(); + this.mainToolbar.ResumeLayout(false); + this.mainToolbar.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -494,6 +580,13 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem undoToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem redoToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem discoverQueryParametersMenuItem; + private System.Windows.Forms.ToolStrip mainToolbar; + private System.Windows.Forms.ToolStripButton undoToolButton; + private System.Windows.Forms.ToolStripButton redoToolButton; + private System.Windows.Forms.ToolStripButton newFileToolButton; + private System.Windows.Forms.ToolStripButton saveToolButton; + private System.Windows.Forms.ToolStripButton executeToolButton; + private System.Windows.Forms.ToolStripButton toolStripButton1; } } diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index 923a3e81f..fac6d0be2 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -160,219 +160,221 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABM - MAAAAk1TRnQBSQFMAgEBDgEAAfwBAQH8AQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A1IB/wPAAf8D9AH/A9YB/wM9Tf8DAAH/AwAB/wFLAW4BuRH/ - gAAE/wO0Af8DGwH/AxsB/wMbAf8Dok3/AwAB/wMAAf8BSwFuAbkB/wMADf+AAAT/A/IB/wM0Af8D6AH/ - AzYB/wPoAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAEf8BtwGi - AZMB/wFXAT0BKQH/AVcBPQEpAf8BVwE9ASkB/wFXAT0BKQn/AwAB/wFLAW4BuQH/AUsBbgG5Af8BVwE9 - ASkB/wMACf+AAAT/A/kB/wONAf8DWwH/A2UB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEYAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DcwH/AVcBPQEpAf8BVwE9ASkB/wMABf+AAAT/A/0B/wPb - Af8DGwH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BMwH/AZoBgwEnAf8B9gHWAcIB/wGIASYBEwH/AYMBIAEN - Af8BzwG0AaMB/wEYAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BcgH/ - AZoBgwFmCf8DAAH/A3MB/wFXAT0BKQH/AVcBPQEpAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BGAIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNz - Af8BVwE9ASkB/wFXAT0BKQH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEz - Af8BmgGDAScB/wH7AewB4wH/AYkBJgEUAf8BgwEgAQ0B/wHRAcEBtgH/ARgCABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAXIB/wGaAYMBZgH/AfsB7AHjAf8BiQFlAVMJ/wMAAf8DcwH/ - AVcBPQEpAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BGAIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A3MB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BMwH/AZkBhAEnAf8B/QH3AfMB/wGIASYBEwH/AYMBIAENAf8B0QHBAbYB/wEY - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFyAf8BmQGEAWYB/wH9AfcB8wH/ - AYgBZQFSAf8BgwFfAUwB/wHRAcEBtgn/AVcBPQEpAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEYAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BVwE9ASkJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBIwH/AeYBjgEXAf8B4wEyAQAB/wHj - ASsBAAH/AeIBJwEAAf8B4gEnAQAB/wHiAScBAAH/AcgBFwEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBYgH/AeYBjgFWAf8B4wFxAT4B/wHjAWoBNAH/AeIBZgEtAf8B4gFmAS0B/wHi - AWYBLQH/AcgBVgEjCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBMgH/AfYBogEsAf8B9QGdASYB/wH1AZkBHwH/AfMBlQEaAf8BzQEaAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAXEB/wH2AaIBawH/AfUBnQFl - Af8B9QGZAV4B/wHzAZUBWQH/Ac0BWQElCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhATQB/wHoAZsBKwH/AeYBjgEXAf8B5QGHAQ0B/wHkAYEBAwH/AeQBMAEAAf8B4wErAQAB/wHi - AScBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAXMB/wHoAZsBagH/AeYBjgFW - Af8B5QGHAUwB/wHkAYEBQgH/AeQBbwE6Af8B4wFqATIB/wHiAWYBLQn/gACA/4AAgP//ACkAAdMB3wHr + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABC + MAAAAk1TRnQBSQFMAgEBDgEAARQBAgEUAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A08B/wPAAf8D9AH/A9YB/wM6Tf8DAAH/AwAB/wFIAWsBuRH/ + gAAE/wO0Af8DGAH/AxgB/wMYAf8Dok3/AwAB/wMAAf8BSAFrAbkB/wMADf+AAAT/A/IB/wMxAf8D6AH/ + AzMB/wPoAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAEf8BtwGi + AZMB/wFUAToBJgH/AVQBOgEmAf8BVAE6ASYB/wFUAToBJgn/AwAB/wFIAWsBuQH/AUgBawG5Af8BVAE6 + ASYB/wMACf+AAAT/A/kB/wONAf8DWAH/A2IB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEVAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DcAH/AVQBOgEmAf8BVAE6ASYB/wMABf+AAAT/A/0B/wPb + Af8DGAH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BMAH/AZoBgwEkAf8B9gHWAcIB/wGIASMBEAH/AYMBHQEK + Af8BzwG0AaMB/wEVAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BbwH/ + AZoBgwFjCf8DAAH/A3AB/wFUAToBJgH/AVQBOgEmAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BFQIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNw + Af8BVAE6ASYB/wFUAToBJgH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEw + Af8BmgGDASQB/wH7AewB4wH/AYkBIwERAf8BgwEdAQoB/wHRAcEBtgH/ARUCABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAW8B/wGaAYMBYwH/AfsB7AHjAf8BiQFiAVAJ/wMAAf8DcAH/ + AVQBOgEmAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BFQIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A3AB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BMAH/AZkBhAEkAf8B/QH3AfMB/wGIASMBEAH/AYMBHQEKAf8B0QHBAbYB/wEV + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFvAf8BmQGEAWMB/wH9AfcB8wH/ + AYgBYgFPAf8BgwFcAUkB/wHRAcEBtgn/AVQBOgEmAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEVAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BVAE6ASYJ/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBIAH/AeYBjgEUAf8B4wEvAQAB/wHj + ASgBAAH/AeIBJAEAAf8B4gEkAQAB/wHiASQBAAH/AcgBFAEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBXwH/AeYBjgFTAf8B4wFuATsB/wHjAWcBMQH/AeIBYwEqAf8B4gFjASoB/wHi + AWMBKgH/AcgBUwEgCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBLwH/AfYBogEpAf8B9QGdASMB/wH1AZkBHAH/AfMBlQEXAf8BzQEXAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAW4B/wH2AaIBaAH/AfUBnQFi + Af8B9QGZAVsB/wHzAZUBVgH/Ac0BVgEiCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhATEB/wHoAZsBKAH/AeYBjgEUAf8B5QGHAQoB/wHkAYEBAAH/AeQBLQEAAf8B4wEoAQAB/wHi + ASQBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAXAB/wHoAZsBZwH/AeYBjgFT + Af8B5QGHAUkB/wHkAYEBPwH/AeQBbAE3Af8B4wFnAS8B/wHiAWMBKgn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBMwH/AbIBiAEhAf8BuAGSATIB/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNRAf8DwAH/A/QB/wPW - Af8DPAH/A/UJ/wP+Af8D9gH/AWIBrgHbAf8BYgGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBQgEAAf8BnQE8AQAB/wGcAToBAAH/AaQBSAEAAf8BnQE7AQAB/wGdATsBAAH/AZ8BQQEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/Aw8B/wwAAw8B/wOGAf80AAPfAf8D9AH/AT8BqAHmAf8BDwFdAbYB/wEH - AV0BvgH/ATcBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxoB/wMaAf8DGgH/A6IB/wP6Bf8D/gH/ - A/YB/wFiAa4B2wH/AQIBYAHHAf8BAgFgAccB/wFiAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgE4 - Af8BoAE/AQAB/wGhAUABAAH/AZ4BOwEAAf8BygGqAUkB/wH2AfEB6AH/Ac0BrwFTAf8BngE7AQAB/wGh - AUABAAH/AaEBPwEAAf8BugGUATQB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABPwGoAeYB/wEP - AV0BtgH/AQcBXQG+Af8BBwFdAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DMwH/A+gB/wM1Af8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQIBYAHHAf8BAgFgAccB/wECAWABxwH/AWIBrgHbAf8D9QH/ - BAABzAGvAYgB/wGlAUQBAAH/AaUBRAEAAf8BpQFFAQAB/wGiAT8BAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - AUEBAAH/AaUBRAEAAf8BpQFEAQAB/wGlAUQBAAH/AcoBrQGEAf8UAAMpAf8DAAH/FwAB/wMpAf8wAAEY - AV0BrgH/ARgBXQGuAf8BMAFZAZ0B/wEwAVkBnQH/AQ8BXQG2Af8BDwFdAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DWgH/A2QB/wP3Bf8D9AH/AQIBYAHHAf8BAgFgAccB/wECAWABxwH/AZQBvQHgAf8BAgFg - AccB/wECAWABxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFLAQAB/wGqAUkBAAH/AaoBSQEAAf8BqgFJ - AQAB/wGnAUQBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUYBAAH/AaoBSAEAAf8BqgFJAQAB/wGqAUkBAAH/ - AakBSgEAAf8B8AHpAd4B/xAAAykB/wMAAf8XAAH/AykB/xwAA98B/wPfAf8MAAEYAV0BrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/AT8BqAHmAf8BPwGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DGgH/A8kB/wP7 - Bf8D9AH/AQIBYAHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AVABAAH/Aa4BTQEAAf8BrwFOAQAB/wGvAU4BAAH/AawBSQEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BSwEA - Af8BrwFNAQAB/wGvAU4BAAH/Aa4BTgEAAf8BrwFNAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABMAFZAZ0B/wHNAfYC/wHJAfYC/wFcAaQB0QH/ - AVwBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQIBYAHHAf8D9AH/A/YB/wFi - Aa4B2wH/AWIBrgHbAf8D9AH/A/wF/wHKAakBUAH/AcABjgEMAf8BtQFVAQAB/wGzAVEBAAH/AbQBUwEA - Af8BsgFPAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFQAQAB/wG0AVIBAAH/AbQBUwEAAf8BtAFTAQAB/wG1 - AVMBAAH/AcQBnwE9Af8PAAH/A0IB/xwAA0IB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAATABWQGdAf8BzQH2Av8BXAGkAdEB/wEsAVkBoQH/ASwBWQGhAf8BXAGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BYgGuAdsB/wFiAa4B2wH/A/UB/wP9Af8D9AH/AQIBYAHHAf8D9AH/AWIBrgHb - Af8BAgFgAccB/wECAWABxwH/AWIBrgHbAf8D9QH/A/0B/wHJAaYBRwH/AckBmwEeAf8BxQGUARcB/wG+ - AYkBAgH/AboBgAEAAf8BtwFTAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFVAQAB/wG5AVcBAAH/AbkBVwEA - Af8BuQFXAQAB/wG6AVcBAAH/AcMBmgExAf8QAAMPAf8DwAH/FAADwAH/Aw8B/xAAAdMB3wHrAf8B6AH0 - Av8BNwGoAe4B/wEHAV0BvgH/AQcBXQG+Af8BNwGoAe4B/wHNAfYC/wHNAfYC/wEYAV0BrgH/AbUB+gL/ - ATcBqAHuAf8BBwFdAb4B/wEAAV0BxwH/AQABXQHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AWIBrgHb - Af8BAgFgAccB/wECAWABxwH/AWIBrgHbAf8D9AH/A/QB/wECAWABxwH/A/QB/wGUAb0B4AH/AQIBYAHH - Af8BAgFgAccB/wECAWABxwH/AWIBrgHbAf8D9QH/AdABrwGBAf8BzgGgASMB/wHLAZwBIgH/AcwBnAEi - Af8BygGZARoB/wHDAY0BBgH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAEFAf8BzAGoAUoB/xAAAykB/wMPAf8UAAMPAf8DKQH/EAAB6AH0Av8BmAGkAbAB/wEH - AV0BvgH/AQcBXQG+Af8BBwFdAb4B/wEHAV0BvgH/ATABWQGdAf8BMAFZAZ0B/wEYAV0BrgH/ARgBXQGu - Af8BBwFdAb4B/wEHAV0BvgH/AQABXQHHAf8BAAFdAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFiAa4B2wH/ - AQIBYAHHAf8BAgFgAccB/wECAWABxwH/AQIBYAHHAf8BYgGuAdsB/wECAWABxwH/AQIBYAHHAf8BAgFg - AccB/wECAWABxwH/AZQBvQHgAf8BAgFgAccB/wECAWABxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - ASwB/wHQAaIBJQH/AdABoQEmAf8B0AGhASYB/wHQAZ8BIQH/AcsBpAE2Af8B1AHDAaUB/wHKAaQBNgH/ - Ac0BmwEZAf8BzgGcARwB/wHOAZwBHAH/Ac4BnAEbAf8BzwGdARsB/wHaAcMBogH/EAADKQH/Aw8B/xQA - Aw8B/wMpAf8QAAHoAfQC/wGYAaQBsAH/AQcBXQG+Af8BBwFdAb4B/wEAAV0BxwH/AQABXQHHAf8BBwFd - Ab4B/wE3AagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAgFgAccB/wECAWABxwH/AQIBYAHHAf8BAgFgAccB/wECAWABxwH/AWIBrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoAToB/wHYAakBLAH/ - AdUBpgEsAf8B1QGmASoB/wHUAaMBJQH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEhAf8B0wGi - ASQB/wHTAaEBIgH/AdUBowEhAf8BzQGdASUB/wH0Ae0B5AH/EAADhgH/Aw8B/xQAAw8B/wOGAf8QAAHT - Ad8B6wH/AegB9AL/ATcBqAHuAf8BBwFdAb4B/wEAAV0BxwH/AQABXQHHAf8BBwFdAb4B/wEHAV0BvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAgFg - AccB/wECAWABxwH/AQIBYAHHAf8BAgFgAccB/wECAWABxwH/AWIBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE7Af8B2gGrAS8B/wHZAasBMAH/AdcBpwEpAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEpAf8B1wGnASkB/wHYAacBJwH/AdkBqgEsAf8B2wHBAZ4B/xgAA4YB/wMPAf8MAAMP - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BBwFdAb4B/wEHAV0BvgH/AQcBXQG+Af8BBwFdAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wECAWABxwH/AQIBYAHH - Af8BAgFgAccB/wECAWABxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBQQH/Ad8BsQE0Af8B3AGtAS8B/wHXAbUBUgH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBKwH/Ad4BrgEu - Af8B3gGxATYB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATcBqAHuAf8BBwFdAb4B/wEH - AV0BvgH/ATcBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQIBYAHHAf8BAgFg - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFSAf8B4wG4AUMB/wHjAbQBNwH/Ad0BrgEv - Af8B4QGyATMB/wHiAbYBPQH/AdsBswFJAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBMAH/AbIBiAEeAf8BuAGSAS8B/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNOAf8DwAH/A/QB/wPW + Af8DOQH/A/UJ/wP+Af8D9gH/AV8BrgHbAf8BXwGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBPwEAAf8BnQE5AQAB/wGcATcBAAH/AaQBRQEAAf8BnQE4AQAB/wGdATgBAAH/AZ8BPgEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwwB/wwAAwwB/wOGAf80AAPfAf8D9AH/ATwBqAHmAf8BDAFaAbYB/wEE + AVoBvgH/ATQBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxcB/wMXAf8DFwH/A6IB/wP6Bf8D/gH/ + A/YB/wFfAa4B2wH/AQABXQHHAf8BAAFdAccB/wFfAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgE1 + Af8BoAE8AQAB/wGhAT0BAAH/AZ4BOAEAAf8BygGqAUYB/wH2AfEB6AH/Ac0BrwFQAf8BngE4AQAB/wGh + AT0BAAH/AaEBPAEAAf8BugGUATEB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABPAGoAeYB/wEM + AVoBtgH/AQQBWgG+Af8BBAFaAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DMAH/A+gB/wMyAf8D6AH/ + A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/ + BAABzAGvAYgB/wGlAUEBAAH/AaUBQQEAAf8BpQFCAQAB/wGiATwBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj + AT4BAAH/AaUBQQEAAf8BpQFBAQAB/wGlAUEBAAH/AcoBrQGEAf8UAAMmAf8DAAH/FwAB/wMmAf8wAAEV + AVoBrgH/ARUBWgGuAf8BLQFWAZ0B/wEtAVYBnQH/AQwBWgG2Af8BDAFaAbYB/wGYAaQBsAH/AegB9Ab/ + A/kB/wONAf8DVwH/A2EB/wP3Bf8D9AH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AZQBvQHgAf8BAAFd + AccB/wEAAV0BxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFIAQAB/wGqAUYBAAH/AaoBRgEAAf8BqgFG + AQAB/wGnAUEBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUMBAAH/AaoBRQEAAf8BqgFGAQAB/wGqAUYBAAH/ + AakBRwEAAf8B8AHpAd4B/xAAAyYB/wMAAf8XAAH/AyYB/xwAA98B/wPfAf8MAAEVAVoBrgH/AbUB+gL/ + Ac0B9gL/Ac0B9gL/ATwBqAHmAf8BPAGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DFwH/A8kB/wP7 + Bf8D9AH/AQABXQHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw + AU0BAAH/Aa4BSgEAAf8BrwFLAQAB/wGvAUsBAAH/AawBRgEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BSAEA + Af8BrwFKAQAB/wGvAUsBAAH/Aa4BSwEAAf8BrwFKAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ + GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABLQFWAZ0B/wHNAfYC/wHJAfYC/wFZAaQB0QH/ + AVkBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABXQHHAf8D9AH/A/YB/wFf + Aa4B2wH/AV8BrgHbAf8D9AH/A/wF/wHKAakBTQH/AcABjgEJAf8BtQFSAQAB/wGzAU4BAAH/AbQBUAEA + Af8BsgFMAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFNAQAB/wG0AU8BAAH/AbQBUAEAAf8BtAFQAQAB/wG1 + AVABAAH/AcQBnwE6Af8PAAH/Az8B/xwAAz8B/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ + AegB9AL/A98B/wQAAS0BVgGdAf8BzQH2Av8BWQGkAdEB/wEpAVYBoQH/ASkBVgGhAf8BWQGkAdEB/wP0 + Af8D3wX/A/4B/wP2Af8BXwGuAdsB/wFfAa4B2wH/A/UB/wP9Af8D9AH/AQABXQHHAf8D9AH/AV8BrgHb + Af8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/A/0B/wHJAaYBRAH/AckBmwEbAf8BxQGUARQB/wG+ + AYkBAAH/AboBgAEAAf8BtwFQAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFSAQAB/wG5AVQBAAH/AbkBVAEA + Af8BuQFUAQAB/wG6AVQBAAH/AcMBmgEuAf8QAAMMAf8DwAH/FAADwAH/AwwB/xAAAdMB3wHrAf8B6AH0 + Av8BNAGoAe4B/wEEAVoBvgH/AQQBWgG+Af8BNAGoAe4B/wHNAfYC/wHNAfYC/wEVAVoBrgH/AbUB+gL/ + ATQBqAHuAf8BBAFaAb4B/wEAAVoBxwH/AQABWgHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AV8BrgHb + Af8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9AH/A/QB/wEAAV0BxwH/A/QB/wGUAb0B4AH/AQABXQHH + Af8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/AdABrwGBAf8BzgGgASAB/wHLAZwBHwH/AcwBnAEf + Af8BygGZARcB/wHDAY0BAwH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC + AYoBAAH/AcYBkAECAf8BzAGoAUcB/xAAAyYB/wMMAf8UAAMMAf8DJgH/EAAB6AH0Av8BmAGkAbAB/wEE + AVoBvgH/AQQBWgG+Af8BBAFaAb4B/wEEAVoBvgH/AS0BVgGdAf8BLQFWAZ0B/wEVAVoBrgH/ARUBWgGu + Af8BBAFaAb4B/wEEAVoBvgH/AQABWgHHAf8BAAFaAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFfAa4B2wH/ + AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AQABXQHHAf8BXwGuAdsB/wEAAV0BxwH/AQABXQHHAf8BAAFd + AccB/wEAAV0BxwH/AZQBvQHgAf8BAAFdAccB/wEAAV0BxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm + ASkB/wHQAaIBIgH/AdABoQEjAf8B0AGhASMB/wHQAZ8BHgH/AcsBpAEzAf8B1AHDAaUB/wHKAaQBMwH/ + Ac0BmwEWAf8BzgGcARkB/wHOAZwBGQH/Ac4BnAEYAf8BzwGdARgB/wHaAcMBogH/EAADJgH/AwwB/xQA + AwwB/wMmAf8QAAHoAfQC/wGYAaQBsAH/AQQBWgG+Af8BBAFaAb4B/wEAAVoBxwH/AQABWgHHAf8BBAFa + Ab4B/wE0AagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ + AZQBvQHgAf8BAAFdAccB/wEAAV0BxwH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9AH/ + A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATcB/wHYAakBKQH/ + AdUBpgEpAf8B1QGmAScB/wHUAaMBIgH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEeAf8B0wGi + ASEB/wHTAaEBHwH/AdUBowEeAf8BzQGdASIB/wH0Ae0B5AH/EAADhgH/AwwB/xQAAwwB/wOGAf8QAAHT + Ad8B6wH/AegB9AL/ATQBqAHuAf8BBAFaAb4B/wEAAVoBxwH/AQABWgHHAf8BBAFaAb4B/wEEAVoBvgH/ + AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFd + AccB/wEAAV0BxwH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/A/0B/wP+Af8D9wH/ + A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE4Af8B2gGrASwB/wHZAasBLQH/AdcBpwEmAf8B8QHmAdMF/wH1 + Ae4B4QH/AdcBpgEmAf8B1wGnASYB/wHYAacBJAH/AdkBqgEpAf8B2wHBAZ4B/xgAA4YB/wMMAf8MAAMM + Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BBAFaAb4B/wEEAVoBvgH/AQQBWgG+Af8BBAFaAb4B/wGY + AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAV0BxwH/AQABXQHH + Af8BAAFdAccB/wEAAV0BxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg + AbYBPgH/Ad8BsQExAf8B3AGtASwB/wHXAbUBTwH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBKAH/Ad4BrgEr + Af8B3gGxATMB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATQBqAHuAf8BBAFaAb4B/wEE + AVoBvgH/ATQBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABXQHHAf8BAAFd + AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFPAf8B4wG4AUAB/wHjAbQBNAH/Ad0BrgEs + Af8B4QGyATAB/wHiAbYBOgH/AdsBswFGAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABHwG5Af8BAAERAUAB/wED - AQwBIgH/9QABQAHHAf8BCgHNAfwB/wEAASEBhwH/tAADOwFlAQABFgEAAf8DOgFgNQABQAHHAf8BAwGg - AdIB/wEAARcBNwH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagERAacBAwH/AQABGgEA - Af8BAAEWAQAB/wM2AVgxAAFAAccB/wEMAdEB/AH/AQABIQGHAf8zAAEBAwABARAAAewB0gHsAf8BNwEA - ATYB/wHmAcwB5gH/AwIBAwMSARkQAAE0AT4BQAH/ASoBMgE1Af8BIQEmASkB/wEXARoBHQH/Ag0BEgH/ - AQQBAgEIAf8DAAH/AwAB/wMAAf8cAAM+AWoBEQGnAQMB/wEuAbsBIgH/AQABHgEAAf8BAAEbAQAB/wEA - ARYBAAH/AzUBVy0AAUABxwH/AQUBoQHRAf8BAAEXATcB/z8AAQEEAAHtAdgB7QH/AakBFQGoAf8BgAEA - AUQB/wE6AQABOgH/AesB0QHrAf8UAAE9AYIBgwH/AZcB2wH1Af8BIAGpAcoB/wEgAakBygH/AR8BpwHJ - Af8BFwGfAcIB/wEOAZYBuQH/AQYBjQGwAf8DAAH/HAABEAGkAQIB/wEuAbsBIgH/AS4BuwEiAf8BAAEd - AQAB/wEAAR4BAAH/AQABGwEAAf8BAAEWAQAB/wMwAUwpAAFAAccB/wEWAeIB/QH/AQABHQGAAf8jAAEB - AwABAQMAAQEDAAEBAwABAQMAAQEDAAEBBAAB6AHRAegB/wGqARUBqQH/AcwBLAHLAf8BQwEAAUMB/wGW - AQABlQH/AUABAAE/Af8B8AHVAfAB/xAAAUUCjAH/AaAB4AH3Af8BNgHNAfEB/wEpAccB7gH/AR0BwQHr - Af8BEgG8AegB/wEHAbcB5gH/AQwBkgG2Af8DAAH/HAABEQGnAQMB/wEuAbsBIgH/AS4BuwEiAf8BqgHU - AaIB/wENAaABAAH/AQABHgEAAf8BAAEbAQAB/wEAARUBAAH/KQABQAHHAf8BHQHXAfwB/wEAAR0BgAH/ - JAABqwHwAfcB/wGrAeIB5QH/AawBzgHMAf8BrQG7AbUB/wGuAacBnAH/BAAB5AHKAeQB/wGpARUBqAH/ - AdMBMAHSAf8B1AEzAdMB/wFEAQABQwH/AZ8BAQGfAf8BjgEAAY0B/wFCAQABQQH/EAABhQKUAf8BpwHj - AfgB/wFBAdMB9AH/ATYBzgHxAf8BKgHIAe4B/wEdAcIB6wH/ARIBvAHoAf8BEQGZAbwB/wEBAQABAwH/ - GAADAgEDARMBqwEFAf8BLgG7ASIB/wGqAdQBogH/AbcB2gGwAf8BqgHUAaIB/wEGAZMBAAH/AQABHgEA - Af8BAAEWAQAB/yUAASUBkAH/AQABQAHHAf8BMwHeAfwB/wEAAR0BgAH/AQABEwE/Af84AAGqARcBqQH/ - AdIBLwHRAf8B1QE0AdUB/wG9ATUBvAH/Ad4BmAHdAf8BjwELAY4B/wGdAQEBnAH/AUMBAAFDAf8QAAGM - ApsB/wGuAeYB+gH/AYYB2AH2Af8BQQHUAfQB/wE2Ac0B8QH/ASoBxwHuAf8BHQHCAesB/wEYAaABwQH/ - AggBDQH/GAADBAEFASgBuAEbAf8BtAHZAa0B/wHFAeIBwAH/AbcB2gGwAf8BtwHaAbAB/wGqAdQBogH/ - AQABiAEAAf8BAAEWAQAB/yEAATQBoAH/AQABhwHHAf8BIAHAAfAB/wEVAcsB/gH/ARYBswHdAf8BAQES - ASsB/wEAARMBPwH/GAABqwHwAfcB/wGrAeUB6QH/AawC1QH/AawBxAHBAf8BrQG1AawB/wGuAaQBmAH/ - BAABqAEUAacB/wHSATIB0QH/AbwBNAG7Af8B7wGlAe4B/wH7AZ8B+gH/Ae8BnQHuAf8BlwEXAZYB/wFB - AQABQQH/EAABkQGiAaEB/wGyAegB/AH/AaAB4gH6Af8BhgHYAfYB/wFCAdMB8wH/ATYBzgHxAf8BKQHI - Ae4B/wEcAaUBxwH/AREBEgEXAf8YAAMCAQMDRAF6AY4BxgGEAf8BuQHcAbMB/wHDAeEBvgH/AcMB4QG+ - Af8BtwHaAbAB/wGqAdQBogH/AQABLAEAAf8dAAGAAbEB/wEAAYcByAH/ARcBugH3Af8BGQHCAfkB/wEP - AbcB+QH/AS0B1gH7Af8BCgGmAegB/wEBAREBKQH/AQABFgGDAf8wAAGnARUBpgH/AbwBNAG7Af8B7wGl - Ae4B/wH7AZsB+gH/AfsBmAH6Af8B+wGZAfoB/wHnAZgB5gH/AZEBEwGQAf8QAAGUAaYBpQH/Ab0B7AH8 - Af8BpQHlAfsB/wGfAeIB+gH/AYYB2AH2Af8BQgHUAfQB/wE2Ac0B8QH/ASABqQHKAf8BGQEdASAB/yAA - A0YBfgGQAccBhgH/Ab4B3gG4Af8BwwHhAb4B/wGzAdkBrAH/AZABxwGGAf8DPQFpHQABQAG4Af8BGQHB - AfkB/wEVAbcB+QH/AZMB7gH+Af8BjwHsAf4B/wEXAbQB8wH/AY0B4wH+Af8BFAG6AeIB/wEAARMBMAH/ - HAABqwHwAfcB/wGsAtUB/wGuAbQBrAH/Aa4BmQGKAf8D/QH/Ac8BiAHPAf8B4gGvAeIB/wH7AasB+gH/ - AfsBmAH6Af8B+wGYAfoB/wHqAZAB6QH/Ac8BiAHPAf8B9AHmAfQB/xAAAZQBpgGlAf8BvQHsAfwB/wG9 - AewB/AH/AbIB6AH8Af8BrgHmAfoB/wGnAeQB+QH/AaAB4AH3Af8BlwHbAfUB/wEiAScBKwH/JAADRwGB - AZQByQGKAf8BvQHeAbcB/wGOAcYBhAH/AzABSyEAAYMBuwH/AR4BxgH5Af8BLgGKAawB/wEuAYoBrAH/ - AS4BigGsAf8BLgGKAawB/wEuAYoBrAH/AScB1QH6Af8BAAESAS0B/zAAAfAB1AHwAf8BzwGIAc8B/wHu - Ab4B7gH/AfsBrgH6Af8B7AGRAesB/wHPAYgBzwH/AfMB4AHyAf8UAAGUAaYBpQH/AZQBpgGlAf8BkwKl - Af8BjwGfAZ4B/wGIApcB/wGBAo4B/wE+AoQB/wE0AT4BQAH/ASsBMgE0Af8oAAM8AWYBlAHJAYoB/wMl - ATclAAGDAbwB/wEhAdIB+gH/AQ8BKQGEAf8MAAESAZABwQH/ARgBuwHhAf8BAAEQASoB/zQAAfIB2wHy - Af8BzwGIAc8B/wHjAawB4wH/Ac8BiAHPAf8B8wHjAfMB/2AAAwEBAgQAAwEBAigAAQcBiAHBAf8BCwGd - AdAB/wE/AeMB+gH/AQ8BhQGeAf8BFgEpAYcB/wEWATsBnAH/ARcBvwH0Af8BDQGMAaoB/wEAAR0BPwH/ - OAAB8gHbAfIB/wHPAYgBzwH/AfAB4wHwAf+YAAEOAZQBxgH/AQkBigHBAf8BCwGaAc0B/wEzAdUB9QH/ - ATYB6QH+Af8BMgHUAfMB/wEPAZIBsgH/AQABKQGMAf8BAAE1AaIB/zwAAf4B+wH+Af+gAAEOAZQBxgH/ - AQoBjQHDAf8BBQGLAboB/wEFAYsBugH/AQIBiAG3Af8BAwE4AaAB/wEAAYIBsgH//wCpAAM2AVgBmQIA - Af8DMwFT8AADOAFdAdcBmgEPAf8BmQIAAf8BmQIAAf8DLwFKLAADHgErA1QBrgFZAmQB7AESAYMBlgH/ - AQABKwGNAf8BAAEiAYwB/wFOAl0B8ANWAbMDJQE3mAADOgFhAdcBmgEPAf8B2AGbARAB/wGZAgAB/wGZ - AgAB/wGZAgAB/wMvAUooAAFbAl4B0AEGAbAB0QH/AYQB1QHoAf8BoQHrAfYB/wEoAeQC/wEAAb4B8wH/ - AQABnwHeAf8BAAGLAb4B/wFbAl4B2VQAAbcBogGTAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIA - Af8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8BGAIAAf8UAAHYAZsBEQH/AdgBmwEQAf8B2AGb - ARAB/wGZAgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUokAAEIAY8BqgH/AQIB1wL/AZAB6gH6Af8BoQHr - AfYB/wEmAdkB9AH/AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABGAGEAf8UAAMxAU0CUgFRAaEBXwJY - AeMBXwJYAeMBUgJRAaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3 - AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGn - Af8B2wG7AacB/wHbAbsBpwH/Ac8BtAGjAf8BGAIAAf8UAAHYAZsBEAH/AdgBmwEQAf8B6QG0ATEB/wH8 - AdYBrwH/AbUBGAEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABCQGRAa4B/wEBAdIB+gH/AY0B5AH2 - Af8BoQHrAfYB/wElAdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABGgGGAf8QAAM1AVUDZAHn - Ac8BuAGpAf8B6wHWAcgB/wHlAcsBuwH/AbMBlQE0Af8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHI - Af8B5QHLAbsB/wGzAZUBNAH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/ - AfsB7AHjAf8BpAGNATMB/wGaAYMBJwH/AfYB1gHCAf8BiAEmARMB/wGDASABDQH/Ac8BtAGjAf8BGAIA - Af8UAAHYAZsBEAH/AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEMAQAB/wGZAgAB/wGZ - AgAB/wGZAgAB/wMqAUEcAAEMAZUBsAH/AQMB0gH6Af8BjQHkAfQB/wGhAesB9gH/ASUB1wHyAf8BAAG5 - Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEdAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEq - ASEB+wMAAf8DAAH/AwAB/wFhAlgB5gJgAVwB1ANgAdQDWQHCAbkBnAGIAf8DVQGyCAABugGlAZYB/wP+ - Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wH/AfgB4QHSAf8B9wHbAckB/wHQ - AbkBqwH/ARgCAAH/FAAB5wGzATEB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/ - AakBAwEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DBAEFGAABDgGZAbUB/wEEAdEB+wH/AY4B5AH1Af8BoQHr - AfYB/wElAdcB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABIAGKAf8QAANlAfQE/wNXAd8DHQEq - A1wBzQX/Af4B9wL/AfEB5gH/AfoB4wHUAf8B8wHXAccB/wNKAY0DHQEqA1wB3wHvAdYBxwH/AWQCUgH0 - CAABvgGpAZoB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGjAY4BMwH/AZoBgwEnAf8B+wHsAeMB/wGJ - ASYBFAH/AYMBIAENAf8B0QHBAbYB/wEYAgAB/xQAA0UBfAHlAbIBMAH/AfQBwAGLAv8BzQGZAv8BzQGZ - Af8B/gHQAaEB/wH7AdgBsgH/AakBAwEAAf8BmQIAAf8BmQIAAf8cAAERAZsBtwH/AQQB0AH5Af8BjQHj - AfUB/wGhAesB9gH/AScB2QHyAf8BAAG5Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEiAY0B/xAAA1UBsgHy - AeYB3gH/A1kBwgNcAdQBYAJcAdQDYQHiAdMBtQGiAf8DTQH6AdoBwAGvAf8DXwHzA1sB1gFgAlwB1ANZ - AcIBywGxAaEB/wNVAbIIAAHDAa4BngH/A/4B/wP+Af8D/gH/A/4B/wP+Af8B/QH3AfMB/wH8AfIB7AH/ - AfsB7AHjAf8B+gHnAdsB/wHRAcEBtgH/ARgCAAH/GAADRgF/AeQBsAEuAf8B9gHEAZAC/wHNAZkC/wHN - AZkB/wH+AdABoQH/AfsB2AGyAf8BqQEDAQAB/wGZAgAB/xwAARMBngG6Af8BAgHQAfkB/wGNAeMB9AH/ - AaEB6wH2Af8BJAHXAfIB/wEAAbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAASQBjwH/EAADNQFVA2QB5wHt - AeEB1wP/Af0C/wH3AfEB/wHYAcQBtwH/A2QB5wNLAY4DZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3 - Af8DZAHnAzUBVQgAAcgBsgGjAf8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOATMB/wGZAYQBJwH/ - Af0B9wHzAf8BiAEmARMB/wGDASABDQH/AdEBwQG2Af8BGAIAAf8cAANJAYcB4wGvAS0B/wH2AcQBkAL/ - Ac0BmQL/Ac0BmQH/Af4B0AGhAf8B8gHJAZ0B/wGwAQ8BAAH/HAABFAGiAbwB/wEAAc4B9wH/AYsB4wH0 - Af8BoQHrAfYB/wEjAdYB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABJQGSAf8UAAMxAU0DUgGh - A18B4wNfAeMDUgGhAzEBTQQAAzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+Af8D/gH/ - A/4B/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARgCAAH/IAADSQGH - AeMBrwEtAf8B9gHEAZAC/wHNAZkB/wHzAcIBjgH/AeMBsAEuAf8DQwF4HAABIAGpAcAB/wELAdQB+gH/ - AZwB7AH6Af8BqwHvAfoB/wGmAe0B+AH/AZQB5wH4Af8BJgHZAfYB/wEAAb0B6QH/AQABMQGXAf9UAAHq - AaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHpAaUBhAH/AecBlwEjAf8B5gGOARcB/wHjATIBAAH/AeMBKwEA - Af8B4gEnAQAB/wHiAScBAAH/AeIBJwEAAf8ByAEXAQAB/yQAA0kBhwHjAa8BLQH/Ae4BvQGKAf8B4wGw - AS4B/wM0AVQgAAGAAbMBxQH/AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHF - AfkB/QH/AaAB3wHqAf8BGwGRAaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQ - Af8B+gGwAYsB/wH4AacBMgH/AfYBogEsAf8B9QGdASYB/wH1AZkBHwH/AfMBlQEaAf8BzQEaAQAB/ygA - A0ABbgHlAbIBMgH/AyYBOCQAAzsBYwNgAdYBKwGrAboB/wElAaMBswH/ASEBnQGvAf8BIAGbAa4B/wEk - AaIBtAH/A14B2QNAAW9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQE0Af8B6AGb - ASsB/wHmAY4BFwH/AeUBhwENAf8B5AGBAQMB/wHkATABAAH/AeMBKwEAAf8B4gEnAQAB//8A/wAKAAFC - AU0BPgcAAT4DAAEoAwABQAMAAUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIAAcABBwHz - AZ8B/wMAAYABAwHnAc8B/wHAAgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMAAQEBzwHn - AYEEAAEBAecBzwUAAQEB5wHPBQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIAAYABAwL/ - AcABPwIAAeABBwL/AeABfwIAAfABHwL/AfAB/wIAAv8B/AF/Bv8B/AF/BP8B/AF/AfwBfwE/AXMC/wH4 - AT8B/AF/AfkB4AHwAQcB8AEfAfwBfwH/AUEB8AEHAfABDwH8AX8CgAHwAQcB8AEPAfwBfwHBAQAB8AEH - AeABDwH4AT8B/wEAAfABBwHgAQ8B8AEfAYEBAAHwAQcB4AEPAeABDwH/AQAB8AEHAfgBDwHgAQ8B4AEA - AfABBwH8AR8B4AEPAf8BAQHwAQcB/gE/AeMBjwH/AYMC/wH9AX8B4AEPAf8BxwT/AeABDwH/Ae8E/wHw - AR8M/wH4B/8B8AF/AfABBwT/AeABPwHwAQcC/wHAAQMB4AEfAfABBwHAAYEBwAEDAeABDwHwAQcBgAEA - AcABAwHgAQcB8AEHAYABAAHAAQMB4AEDAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHwAQcB8AEH - AYABAAHAAQMB+AEHAfABBwHAAYEBwAEDAfwBBwHwAQcC/wHAAQMB/gEPAfABBwL/AcABAwH/AR8B8AEH - Av8BwAEDEP8L + Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABHAG5Af8BAAEOAT0B/wEA + AQkBHwH/9QABPQHHAf8BBwHNAfwB/wEAAR4BhwH/tAADOwFlAQABEwEAAf8DOgFgNQABPQHHAf8BAAGg + AdIB/wEAARQBNAH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEOAacBAAH/AQABFwEA + Af8BAAETAQAB/wM2AVgxAAE9AccB/wEJAdEB/AH/AQABHgGHAf8zAAEBAwABARAAAewB0gHsAf8BNAEA + ATMB/wHmAcwB5gH/AwIBAwMSARkQAAExATsBPQH/AScBLwEyAf8BHgEjASYB/wEUARcBGgH/AgoBDwH/ + AQEBAAEFAf8DAAH/AwAB/wMAAf8cAAM+AWoBDgGnAQAB/wErAbsBHwH/AQABGwEAAf8BAAEYAQAB/wEA + ARMBAAH/AzUBVy0AAT0BxwH/AQIBoQHRAf8BAAEUATQB/z8AAQEEAAHtAdgB7QH/AakBEgGoAf8BgAEA + AUEB/wE3AQABNwH/AesB0QHrAf8UAAE6AYIBgwH/AZcB2wH1Af8BHQGpAcoB/wEdAakBygH/ARwBpwHJ + Af8BFAGfAcIB/wELAZYBuQH/AQMBjQGwAf8DAAH/HAABDQGkAQAB/wErAbsBHwH/ASsBuwEfAf8BAAEa + AQAB/wEAARsBAAH/AQABGAEAAf8BAAETAQAB/wMwAUwpAAE9AccB/wETAeIB/QH/AQABGgGAAf8jAAEB + AwABAQMAAQEDAAEBAwABAQMAAQEDAAEBBAAB6AHRAegB/wGqARIBqQH/AcwBKQHLAf8BQAEAAUAB/wGW + AQABlQH/AT0BAAE8Af8B8AHVAfAB/xAAAUICjAH/AaAB4AH3Af8BMwHNAfEB/wEmAccB7gH/ARoBwQHr + Af8BDwG8AegB/wEEAbcB5gH/AQkBkgG2Af8DAAH/HAABDgGnAQAB/wErAbsBHwH/ASsBuwEfAf8BqgHU + AaIB/wEKAaABAAH/AQABGwEAAf8BAAEYAQAB/wEAARIBAAH/KQABPQHHAf8BGgHXAfwB/wEAARoBgAH/ + JAABqwHwAfcB/wGrAeIB5QH/AawBzgHMAf8BrQG7AbUB/wGuAacBnAH/BAAB5AHKAeQB/wGpARIBqAH/ + AdMBLQHSAf8B1AEwAdMB/wFBAQABQAH/AZ8BAAGfAf8BjgEAAY0B/wE/AQABPgH/EAABhQKUAf8BpwHj + AfgB/wE+AdMB9AH/ATMBzgHxAf8BJwHIAe4B/wEaAcIB6wH/AQ8BvAHoAf8BDgGZAbwB/wMAAf8YAAMC + AQMBEAGrAQIB/wErAbsBHwH/AaoB1AGiAf8BtwHaAbAB/wGqAdQBogH/AQMBkwEAAf8BAAEbAQAB/wEA + ARMBAAH/JQABIgGQAf8BAAE9AccB/wEwAd4B/AH/AQABGgGAAf8BAAEQATwB/zgAAaoBFAGpAf8B0gEs + AdEB/wHVATEB1QH/Ab0BMgG8Af8B3gGYAd0B/wGPAQgBjgH/AZ0BAAGcAf8BQAEAAUAB/xAAAYwCmwH/ + Aa4B5gH6Af8BhgHYAfYB/wE+AdQB9AH/ATMBzQHxAf8BJwHHAe4B/wEaAcIB6wH/ARUBoAHBAf8CBQEK + Af8YAAMEAQUBJQG4ARgB/wG0AdkBrQH/AcUB4gHAAf8BtwHaAbAB/wG3AdoBsAH/AaoB1AGiAf8BAAGI + AQAB/wEAARMBAAH/IQABMQGgAf8BAAGHAccB/wEdAcAB8AH/ARIBywH+Af8BEwGzAd0B/wEAAQ8BKAH/ + AQABEAE8Af8YAAGrAfAB9wH/AasB5QHpAf8BrALVAf8BrAHEAcEB/wGtAbUBrAH/Aa4BpAGYAf8EAAGo + AREBpwH/AdIBLwHRAf8BvAExAbsB/wHvAaUB7gH/AfsBnwH6Af8B7wGdAe4B/wGXARQBlgH/AT4BAAE+ + Af8QAAGRAaIBoQH/AbIB6AH8Af8BoAHiAfoB/wGGAdgB9gH/AT8B0wHzAf8BMwHOAfEB/wEmAcgB7gH/ + ARkBpQHHAf8BDgEPARQB/xgAAwIBAwNEAXoBjgHGAYQB/wG5AdwBswH/AcMB4QG+Af8BwwHhAb4B/wG3 + AdoBsAH/AaoB1AGiAf8BAAEpAQAB/x0AAYABsQH/AQABhwHIAf8BFAG6AfcB/wEWAcIB+QH/AQwBtwH5 + Af8BKgHWAfsB/wEHAaYB6AH/AQABDgEmAf8BAAETAYMB/zAAAacBEgGmAf8BvAExAbsB/wHvAaUB7gH/ + AfsBmwH6Af8B+wGYAfoB/wH7AZkB+gH/AecBmAHmAf8BkQEQAZAB/xAAAZQBpgGlAf8BvQHsAfwB/wGl + AeUB+wH/AZ8B4gH6Af8BhgHYAfYB/wE/AdQB9AH/ATMBzQHxAf8BHQGpAcoB/wEWARoBHQH/IAADRgF+ + AZABxwGGAf8BvgHeAbgB/wHDAeEBvgH/AbMB2QGsAf8BkAHHAYYB/wM9AWkdAAE9AbgB/wEWAcEB+QH/ + ARIBtwH5Af8BkwHuAf4B/wGPAewB/gH/ARQBtAHzAf8BjQHjAf4B/wERAboB4gH/AQABEAEtAf8cAAGr + AfAB9wH/AawC1QH/Aa4BtAGsAf8BrgGZAYoB/wP9Af8BzwGIAc8B/wHiAa8B4gH/AfsBqwH6Af8B+wGY + AfoB/wH7AZgB+gH/AeoBkAHpAf8BzwGIAc8B/wH0AeYB9AH/EAABlAGmAaUB/wG9AewB/AH/Ab0B7AH8 + Af8BsgHoAfwB/wGuAeYB+gH/AacB5AH5Af8BoAHgAfcB/wGXAdsB9QH/AR8BJAEoAf8kAANHAYEBlAHJ + AYoB/wG9Ad4BtwH/AY4BxgGEAf8DMAFLIQABgwG7Af8BGwHGAfkB/wErAYoBrAH/ASsBigGsAf8BKwGK + AawB/wErAYoBrAH/ASsBigGsAf8BJAHVAfoB/wEAAQ8BKgH/MAAB8AHUAfAB/wHPAYgBzwH/Ae4BvgHu + Af8B+wGuAfoB/wHsAZEB6wH/Ac8BiAHPAf8B8wHgAfIB/xQAAZQBpgGlAf8BlAGmAaUB/wGTAqUB/wGP + AZ8BngH/AYgClwH/AYECjgH/ATsChAH/ATEBOwE9Af8BKAEvATEB/ygAAzwBZgGUAckBigH/AyUBNyUA + AYMBvAH/AR4B0gH6Af8BDAEmAYQB/wwAAQ8BkAHBAf8BFQG7AeEB/wEAAQ0BJwH/NAAB8gHbAfIB/wHP + AYgBzwH/AeMBrAHjAf8BzwGIAc8B/wHzAeMB8wH/YAADAQECBAADAQECKAABBAGIAcEB/wEIAZ0B0AH/ + ATwB4wH6Af8BDAGFAZ4B/wETASYBhwH/ARMBOAGcAf8BFAG/AfQB/wEKAYwBqgH/AQABGgE8Af84AAHy + AdsB8gH/Ac8BiAHPAf8B8AHjAfAB/5gAAQsBlAHGAf8BBgGKAcEB/wEIAZoBzQH/ATAB1QH1Af8BMwHp + Af4B/wEvAdQB8wH/AQwBkgGyAf8BAAEmAYwB/wEAATIBogH/PAAB/gH7Af4B/6AAAQsBlAHGAf8BBwGN + AcMB/wECAYsBugH/AQIBiwG6Af8BAAGIAbcB/wEAATUBoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMz + AVPwAAM4AV0B1wGaAQwB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQ8BgwGWAf8BAAEo + AY0B/wEAAR8BjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQwB/wHYAZsBDQH/AZkCAAH/AZkCAAH/ + AZkCAAH/Ay8BSigAAVsCXgHQAQMBsAHRAf8BhAHVAegB/wGhAesB9gH/ASUB5AL/AQABvgHzAf8BAAGf + Ad4B/wEAAYsBvgH/AVsCXgHZVAABtwGiAZMB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEV + AgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/xQAAdgBmwEOAf8B2AGbAQ0B/wHYAZsBDQH/ + AZkCAAH/AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiQAAQUBjwGqAf8BAAHXAv8BkAHqAfoB/wGhAesB9gH/ + ASMB2QH0Af8BAAG8AfIB/wEAAacB6AH/AQABnAHaAf8BAAEVAYQB/xQAAzEBTQJSAVEBoQFfAlgB4wFf + AlgB4wFSAlEBoQExAjABTQQAAzEBTQJSAVEBoQFfAlgB4wFfAlgB4wFSAlEBoQExAjABTQwAAbcBogGT + Af8B/QH7AfkB/wHhAdwB2AH/AeAB1wHSAf8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7AacB/wHb + AbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEVAgAB/xQAAdgBmwENAf8B2AGbAQ0B/wHpAbQBLgH/AfwB1gGv + Af8BtQEVAQAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUogAAEGAZEBrgH/AQAB0gH6Af8BjQHkAfYB/wGh + AesB9gH/ASIB1wHzAf8BAAG5Ae8B/wEAAacB6AH/AQABnAHaAf8BAAEXAYYB/xAAAzUBVQNkAecBzwG4 + AakB/wHrAdYByAH/AeUBywG7Af8BswGVATEB/wFkAlwB5wNLAY4DZAHnAc8BuAGpAf8B6wHWAcgB/wHl + AcsBuwH/AbMBlQExAf8BZAJcAecBNQI0AVUIAAG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHs + AeMB/wGkAY0BMAH/AZoBgwEkAf8B9gHWAcIB/wGIASMBEAH/AYMBHQEKAf8BzwG0AaMB/wEVAgAB/xQA + AdgBmwENAf8B6gG3AYIB/wH7AdgBsgH/Af4B0QGjAf8B+wHYAbIB/wGvAQkBAAH/AZkCAAH/AZkCAAH/ + AZkCAAH/AyoBQRwAAQkBlQGwAf8BAAHSAfoB/wGNAeQB9AH/AaEB6wH2Af8BIgHXAfIB/wEAAbkB7gH/ + AQABpwHoAf8BAAGcAdoB/wEAARoBiAH/EAADVQGyAeYB1gHLAf8DWQHCAmABXAHUA2AB1AFMASoBIQH7 + AwAB/wMAAf8DAAH/AWECWAHmAmABXAHUA2AB1ANZAcIBuQGcAYgB/wNVAbIIAAG6AaUBlgH/A/4B/wP+ + Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGr + Af8BFQIAAf8UAAHnAbMBLgH/AfEBwwGRAf8B/gHPAZ0C/wHNAZkB/wH+AdABnwH/AfsB2AGyAf8BqQIA + Af8BmQIAAf8BmQIAAf8BmQIAAf8DBAEFGAABCwGZAbUB/wEBAdEB+wH/AY4B5AH1Af8BoQHrAfYB/wEi + AdcB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABHQGKAf8QAANlAfQE/wNXAd8DHQEqA1wBzQX/ + Af4B9wL/AfEB5gH/AfoB4wHUAf8B8wHXAccB/wNKAY0DHQEqA1wB3wHvAdYBxwH/AWQCUgH0CAABvgGp + AZoB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGjAY4BMAH/AZoBgwEkAf8B+wHsAeMB/wGJASMBEQH/ + AYMBHQEKAf8B0QHBAbYB/wEVAgAB/xQAA0UBfAHlAbIBLQH/AfQBwAGLAv8BzQGZAv8BzQGZAf8B/gHQ + AaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/AZkCAAH/HAABDgGbAbcB/wEBAdAB+QH/AY0B4wH1Af8BoQHr + AfYB/wEkAdkB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABHwGNAf8QAANVAbIB8gHmAd4B/wNZ + AcIDXAHUAWACXAHUA2EB4gHTAbUBogH/A00B+gHaAcABrwH/A18B8wNbAdYBYAJcAdQDWQHCAcsBsQGh + Af8DVQGyCAABwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ + AfoB5wHbAf8B0QHBAbYB/wEVAgAB/xgAA0YBfwHkAbABKwH/AfYBxAGQAv8BzQGZAv8BzQGZAf8B/gHQ + AaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/HAABEAGeAboB/wEAAdAB+QH/AY0B4wH0Af8BoQHrAfYB/wEh + AdcB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABIQGPAf8QAAM1AVUDZAHnAe0B4QHXA/8B/QL/ + AfcB8QH/AdgBxAG3Af8DZAHnA0sBjgNkAecB7QHhAdcD/wH9Av8B9wHxAf8B2AHEAbcB/wNkAecDNQFV + CAAByAGyAaMB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGkAY4BMAH/AZkBhAEkAf8B/QH3AfMB/wGI + ASMBEAH/AYMBHQEKAf8B0QHBAbYB/wEVAgAB/xwAA0kBhwHjAa8BKgH/AfYBxAGQAv8BzQGZAv8BzQGZ + Af8B/gHQAaEB/wHyAckBnQH/AbABDAEAAf8cAAERAaIBvAH/AQABzgH3Af8BiwHjAfQB/wGhAesB9gH/ + ASAB1gHyAf8BAAG3Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEiAZIB/xQAAzEBTQNSAaEDXwHjA18B4wNS + AaEDMQFNBAADMQFNA1IBoQNfAeMDXwHjA1IBoQMxAU0MAAHMAbYBpwH/A/4B/wP+Af8D/gH/A/4B/wP+ + Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BFQIAAf8gAANJAYcB4wGvASoB/wH2 + AcQBkAL/Ac0BmQH/AfMBwgGOAf8B4wGwASsB/wNDAXgcAAEdAakBwAH/AQgB1AH6Af8BnAHsAfoB/wGr + Ae8B+gH/AaYB7QH4Af8BlAHnAfgB/wEjAdkB9gH/AQABvQHpAf8BAAEuAZcB/1QAAeoBqgGLAf8B6gGq + AYsB/wHqAaoBiwH/AekBpQGEAf8B5wGXASAB/wHmAY4BFAH/AeMBLwEAAf8B4wEoAQAB/wHiASQBAAH/ + AeIBJAEAAf8B4gEkAQAB/wHIARQBAAH/JAADSQGHAeMBrwEqAf8B7gG9AYoB/wHjAbABKwH/AzQBVCAA + AYABswHFAf8BmwHeAesB/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BoAHf + AeoB/wEYAZEBogH/VAAB6gGqAYsC/wHCAaIB/wH+AcABnwH/Af0BvQGaAf8B+wG1AZAB/wH6AbABiwH/ + AfgBpwEvAf8B9gGiASkB/wH1AZ0BIwH/AfUBmQEcAf8B8wGVARcB/wHNARcBAAH/KAADQAFuAeUBsgEv + Af8DJgE4JAADOwFjA2AB1gEoAasBugH/ASIBowGzAf8BHgGdAa8B/wEdAZsBrgH/ASEBogG0Af8DXgHZ + A0ABb1QAAeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhATEB/wHoAZsBKAH/AeYBjgEU + Af8B5QGHAQoB/wHkAYEBAAH/AeQBLQEAAf8B4wEoAQAB/wHiASQBAAH//wD/AAoAAUIBTQE+BwABPgMA + ASgDAAFAAwABQAMAAQEBAAEBBgABAhYAA/+BAAX/AcMCAAHwAR8D/wGBAgABwAEHAfMBnwH/AwABgAED + AecBzwH/AcACAAGAAQMB5wHPAf8EAAEBAecBzwHnBAABAQHnAc8BwwEBAwABAQHPAecBgQQAAQEB5wHP + BQABAQHnAc8FAAEBAecBzwUAAQEB5wHPAQABAQIAAYABAwHzAZ8BgAETAgABgAEDAv8BwAE/AgAB4AEH + Av8B4AF/AgAB8AEfAv8B8AH/AgAC/wH8AX8G/wH8AX8E/wH8AX8B/AF/AT8BcwL/AfgBPwH8AX8B+QHg + AfABBwHwAR8B/AF/Af8BQQHwAQcB8AEPAfwBfwKAAfABBwHwAQ8B/AF/AcEBAAHwAQcB4AEPAfgBPwH/ + AQAB8AEHAeABDwHwAR8BgQEAAfABBwHgAQ8B4AEPAf8BAAHwAQcB+AEPAeABDwHgAQAB8AEHAfwBHwHg + AQ8B/wEBAfABBwH+AT8B4wGPAf8BgwL/Af0BfwHgAQ8B/wHHBP8B4AEPAf8B7wT/AfABHwz/AfgH/wHw + AX8B8AEHBP8B4AE/AfABBwL/AcABAwHgAR8B8AEHAcABgQHAAQMB4AEPAfABBwGAAQABwAEDAeABBwHw + AQcBgAEAAcABAwHgAQMB8AEHAYABAAHAAQMB4AEHAfABBwGAAQABwAEDAfABBwHwAQcBgAEAAcABAwH4 + AQcB8AEHAcABgQHAAQMB/AEHAfABBwL/AcABAwH+AQ8B8AEHAv8BwAEDAf8BHwHwAQcC/wHAAQMQ/ws= 651, 17 + + 758, 17 + AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA From 3cc625e2b86759378585eda9664dd72ed001c043 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 5 Mar 2018 00:20:40 +0100 Subject: [PATCH 03/24] Fixed null key error in get query parameters --- Src/SwqlStudio/QueryParameters.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Src/SwqlStudio/QueryParameters.cs b/Src/SwqlStudio/QueryParameters.cs index bc4a73b52..e3f2fdbaa 100644 --- a/Src/SwqlStudio/QueryParameters.cs +++ b/Src/SwqlStudio/QueryParameters.cs @@ -24,7 +24,7 @@ public PropertyBag Parameters get { var bag = new PropertyBag(); - foreach (QueryVariable pair in ((BindingList)parametersGrid.DataSource).Where(v => v.Key != null)) + foreach (QueryVariable pair in GetBoundQueryVariables()) bag[pair.Key] = pair.Value; return bag; @@ -36,7 +36,7 @@ public PropertyBag Parameters return; UpdateFromLastKnown(value); - var currentVariables = (BindingList)parametersGrid.DataSource; + var currentVariables = GetBoundQueryVariables(); UpdateWithCurrentValues(value, currentVariables); var pairs = value.Select(pair => new QueryVariable(pair.Key, pair.Value?.ToString())); QuessRenamedParameter(value); @@ -57,9 +57,15 @@ private void QuessRenamedParameter(PropertyBag propertyBag) } } - private void UpdateWithCurrentValues(PropertyBag propertyBag, BindingList currentVariables) + private IEnumerable GetBoundQueryVariables() { - foreach (QueryVariable variable in currentVariables.Where(v => v.Key != null)) + return ((BindingList)parametersGrid.DataSource) + .Where(v => v.Key != null); + } + + private void UpdateWithCurrentValues(PropertyBag propertyBag, IEnumerable currentVariables) + { + foreach (QueryVariable variable in currentVariables) { if (propertyBag.ContainsKey(variable.Key)) { From 638d940d14bd7a6f38246dd26d8002c672b742c0 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 5 Mar 2018 01:14:30 +0100 Subject: [PATCH 04/24] Fixed memory leak, where connectionmaners were never removed from memory --- Src/SwqlStudio/ServerList.cs | 25 ++++++++++++++++++++----- Src/SwqlStudio/TabsFactory.cs | 21 ++++++++------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Src/SwqlStudio/ServerList.cs b/Src/SwqlStudio/ServerList.cs index 3e3626a11..bbe862bb2 100644 --- a/Src/SwqlStudio/ServerList.cs +++ b/Src/SwqlStudio/ServerList.cs @@ -7,24 +7,35 @@ internal class ServerList { private readonly Dictionary connections = new Dictionary(); - public void Add(ConnectionInfo connection) + private readonly Dictionary metadataProviders = + new Dictionary(); + + public IMetadataProvider Add(ConnectionInfo connection) { - connections.Add(GetKey(connection), connection); + string key = GetKey(connection); + connections.Add(key, connection); + var provider = new SwisMetaDataProvider(connection); + metadataProviders[connection] = provider; + return provider; } public void Remove(ConnectionInfo connection) { - connections.Remove(GetKey(connection)); + string key = GetKey(connection); + connections.Remove(key); + metadataProviders.Remove(connection); } public bool Exists(ConnectionInfo connection) { - return connections.ContainsKey(GetKey(connection)); + string key = GetKey(connection); + return connections.ContainsKey(key); } public bool TryGet(string serverType, string server, string username, out ConnectionInfo connection) { - return connections.TryGetValue(GetKey(serverType, server, username), out connection); + string key = GetKey(serverType, server, username); + return connections.TryGetValue(key, out connection); } private string GetKey(ConnectionInfo connection) @@ -35,7 +46,11 @@ private string GetKey(ConnectionInfo connection) private string GetKey(string serverType, string server, string username) { return String.Format("{0},{1},{2}", serverType, server, username); + } + public bool TryGetProvider(ConnectionInfo connection, out IMetadataProvider provider) + { + return metadataProviders.TryGetValue(connection, out provider); } } } diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index b46efd9d7..aefc23545 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -15,9 +15,6 @@ internal class TabsFactory : ITabsFactory { private static readonly SolarWinds.Logging.Log log = new SolarWinds.Logging.Log(); - private readonly Dictionary metadataProviders = - new Dictionary(); - private readonly ServerList serverList = new ServerList(); private readonly QueriesDockPanel dockPanel; @@ -35,7 +32,7 @@ public void AddTextToEditor(string text, ConnectionInfo info) info = this.dockPanel.ActiveConnectionInfo; IMetadataProvider metadataProvider; - this.metadataProviders.TryGetValue(info, out metadataProvider); + this.serverList.TryGetProvider(info, out metadataProvider); CreateQueryTab(info.Title, info, metadataProvider); this.dockPanel.ActiveQueryTab.QueryText = text; @@ -102,17 +99,16 @@ internal void AddNewQueryTab() if (!alreadyExists) { info.Connect(); - serverList.Add(info); + var provider = serverList.Add(info); info.ConnectionClosed += (sender, args) => serverList.Remove(info); - - var provider = new SwisMetaDataProvider(info); this.dockPanel.AddServer(provider, info); - metadataProviders[info] = provider; found = info; } - this.CreateQueryTab(found.Title, found, metadataProviders[found]); + IMetadataProvider foundProvider; + serverList.TryGetProvider(found, out foundProvider); + this.CreateQueryTab(found.Title, found, foundProvider); } catch (FaultException ex) { @@ -156,8 +152,8 @@ internal void AddNewQueryTab() internal void OpenFiles(string[] files) { - var originalConnection = this.dockPanel.ActiveConnectionInfo; - if (originalConnection == null) + var connectionInfo = this.dockPanel.ActiveConnectionInfo; + if (connectionInfo == null) return; this.dockPanel.ColoseInitialDocument(); @@ -168,11 +164,10 @@ internal void OpenFiles(string[] files) QueryTab queryTab = null; try { - var connectionInfo = originalConnection.Copy(); connectionInfo.Connect(); IMetadataProvider metadataProvider; - metadataProviders.TryGetValue(connectionInfo, out metadataProvider); + this.serverList.TryGetProvider(connectionInfo, out metadataProvider); queryTab = this.CreateQueryTab(Path.GetFileName(fn), connectionInfo, metadataProvider); queryTab.QueryText = File.ReadAllText(fn); From 3da5c7abd7c125064d84c6871e2780c997c4beda Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 5 Mar 2018 22:01:37 +0100 Subject: [PATCH 05/24] Merged usages of metadata provider in tabsfactory --- Src/SwqlStudio/TabsFactory.cs | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index aefc23545..80a1b778c 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.IO; using System.ServiceModel; using System.ServiceModel.Security; @@ -31,10 +30,7 @@ public void AddTextToEditor(string text, ConnectionInfo info) if (info == null) info = this.dockPanel.ActiveConnectionInfo; - IMetadataProvider metadataProvider; - this.serverList.TryGetProvider(info, out metadataProvider); - - CreateQueryTab(info.Title, info, metadataProvider); + CreateQueryTab(info.Title, info); this.dockPanel.ActiveQueryTab.QueryText = text; } @@ -50,7 +46,6 @@ public void OpenActivityMonitor(string title, ConnectionInfo info) activityMonitorTab.Start(); } - public void OpenInvokeTab(string title, ConnectionInfo info, Verb verb) { var invokeVerbTab = new InvokeVerbTab @@ -106,9 +101,7 @@ internal void AddNewQueryTab() found = info; } - IMetadataProvider foundProvider; - serverList.TryGetProvider(found, out foundProvider); - this.CreateQueryTab(found.Title, found, foundProvider); + this.CreateQueryTab(found.Title, found); } catch (FaultException ex) { @@ -157,19 +150,15 @@ internal void OpenFiles(string[] files) return; this.dockPanel.ColoseInitialDocument(); - + connectionInfo.Connect(); + // Open file(s) foreach (string fn in files) { QueryTab queryTab = null; try { - connectionInfo.Connect(); - - IMetadataProvider metadataProvider; - this.serverList.TryGetProvider(connectionInfo, out metadataProvider); - - queryTab = this.CreateQueryTab(Path.GetFileName(fn), connectionInfo, metadataProvider); + queryTab = this.CreateQueryTab(Path.GetFileName(fn), connectionInfo); queryTab.QueryText = File.ReadAllText(fn); // Modified flag is set during loading because the document // "changes" (from nothing to something). So, clear it again. @@ -207,7 +196,7 @@ internal void CreateTabFromPrevious() } } - private QueryTab CreateQueryTab(string title, ConnectionInfo info, IMetadataProvider provider) + private QueryTab CreateQueryTab(string title, ConnectionInfo info) { var queryTab = new QueryTab { @@ -215,7 +204,9 @@ private QueryTab CreateQueryTab(string title, ConnectionInfo info, IMetadataProv Dock = DockStyle.Fill, ApplicationService = this.applicationService }; - + + IMetadataProvider provider; + this.serverList.TryGetProvider(info, out provider); queryTab.SetMetadataProvider(provider); AddNewTab(queryTab, title); From 638cc1bc77ef972193a4a6af448bfd4e201681e6 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 5 Mar 2018 22:44:12 +0100 Subject: [PATCH 06/24] Added Loading of connections into main form connections toolbar --- Src/SwqlStudio/MainForm.Designer.cs | 54 ++-- Src/SwqlStudio/MainForm.cs | 17 +- Src/SwqlStudio/MainForm.resx | 408 ++++++++++++++-------------- Src/SwqlStudio/QueriesDockPanel.cs | 6 +- Src/SwqlStudio/ServerList.cs | 10 + Src/SwqlStudio/TabsFactory.cs | 6 +- 6 files changed, 268 insertions(+), 233 deletions(-) diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index 22af49124..6b1ac5e95 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -72,12 +72,13 @@ private void InitializeComponent() this.ObjectExplorerImageList = new System.Windows.Forms.ImageList(this.components); this.startTimer = new System.Windows.Forms.Timer(this.components); this.mainToolbar = new System.Windows.Forms.ToolStrip(); + this.connectionsCombobox = new System.Windows.Forms.ToolStripComboBox(); + this.executeToolButton = new System.Windows.Forms.ToolStripButton(); this.undoToolButton = new System.Windows.Forms.ToolStripButton(); this.redoToolButton = new System.Windows.Forms.ToolStripButton(); this.newFileToolButton = new System.Windows.Forms.ToolStripButton(); - this.saveToolButton = new System.Windows.Forms.ToolStripButton(); - this.executeToolButton = new System.Windows.Forms.ToolStripButton(); this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.saveToolButton = new System.Windows.Forms.ToolStripButton(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.menu.SuspendLayout(); this.mainToolbar.SuspendLayout(); @@ -440,6 +441,7 @@ private void InitializeComponent() // mainToolbar // this.mainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.connectionsCombobox, this.executeToolButton, this.undoToolButton, this.redoToolButton, @@ -452,6 +454,23 @@ private void InitializeComponent() this.mainToolbar.TabIndex = 5; this.mainToolbar.Text = "toolStrip1"; // + // connectionsCombobox + // + this.connectionsCombobox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.connectionsCombobox.DropDownWidth = 300; + this.connectionsCombobox.Name = "connectionsCombobox"; + this.connectionsCombobox.Size = new System.Drawing.Size(250, 25); + // + // executeToolButton + // + this.executeToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.executeToolButton.Image = global::SwqlStudio.Properties.Resources.Run_16x; + this.executeToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.executeToolButton.Name = "executeToolButton"; + this.executeToolButton.Size = new System.Drawing.Size(23, 22); + this.executeToolButton.Text = "toolStripButton1"; + this.executeToolButton.Click += new System.EventHandler(this.menuQueryExecute_Click); + // // undoToolButton // this.undoToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -482,26 +501,6 @@ private void InitializeComponent() this.newFileToolButton.Text = "toolStripButton1"; this.newFileToolButton.Click += new System.EventHandler(this.menuFileNew_Click); // - // saveToolButton - // - this.saveToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.saveToolButton.Image = global::SwqlStudio.Properties.Resources.Save_16x; - this.saveToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.saveToolButton.Name = "saveToolButton"; - this.saveToolButton.Size = new System.Drawing.Size(23, 22); - this.saveToolButton.Text = "toolStripButton1"; - this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); - // - // executeToolButton - // - this.executeToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.executeToolButton.Image = global::SwqlStudio.Properties.Resources.Run_16x; - this.executeToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.executeToolButton.Name = "executeToolButton"; - this.executeToolButton.Size = new System.Drawing.Size(23, 22); - this.executeToolButton.Text = "toolStripButton1"; - this.executeToolButton.Click += new System.EventHandler(this.menuQueryExecute_Click); - // // toolStripButton1 // this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -512,6 +511,16 @@ private void InitializeComponent() this.toolStripButton1.Text = "toolStripButton1"; this.toolStripButton1.Click += new System.EventHandler(this.menuFileOpen_Click); // + // saveToolButton + // + this.saveToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.saveToolButton.Image = global::SwqlStudio.Properties.Resources.Save_16x; + this.saveToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.saveToolButton.Name = "saveToolButton"; + this.saveToolButton.Size = new System.Drawing.Size(23, 22); + this.saveToolButton.Text = "toolStripButton1"; + this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); + // // MainForm // this.AllowDrop = true; @@ -587,6 +596,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripButton saveToolButton; private System.Windows.Forms.ToolStripButton executeToolButton; private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripComboBox connectionsCombobox; } } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 6925035ec..f542fb7b9 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -1,4 +1,5 @@ using System; +using System.ComponentModel; using System.IO; using System.ServiceModel; using System.Windows.Forms; @@ -16,6 +17,7 @@ namespace SwqlStudio internal partial class MainForm : Form, IApplicationService { private static readonly SolarWinds.Logging.Log log = new SolarWinds.Logging.Log(); + private ServerList serverList; public PropertyBag QueryParameters { @@ -40,8 +42,21 @@ public MainForm() private void InitializeDockPanel() { + var connectionsDropDown = this.connectionsCombobox.ComboBox; + connectionsDropDown.DisplayMember = "Title"; this.filesDock.SetObjectExplorerImageList(this.ObjectExplorerImageList); - this.filesDock.SetAplicationService(this); + this.serverList = new ServerList(); + this.serverList.ConnectionsChanged += ServerListOnConnectionsChanged; + var tabsFactory = new TabsFactory(this.filesDock, this, this.serverList); + this.filesDock.SetAplicationService(tabsFactory); + } + + private void ServerListOnConnectionsChanged(object sender, EventArgs eventArgs) + { + var connectionsDropDown = this.connectionsCombobox.ComboBox; + var lastSelected = this.connectionsCombobox.SelectedItem; + connectionsDropDown.DataSource = new BindingList(this.serverList.Connections); + this.connectionsCombobox.SelectedItem = lastSelected; } private void startTimer_Tick(object sender, EventArgs e) diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index fac6d0be2..22840979c 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -160,213 +160,213 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABC - MAAAAk1TRnQBSQFMAgEBDgEAARQBAgEUAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A08B/wPAAf8D9AH/A9YB/wM6Tf8DAAH/AwAB/wFIAWsBuRH/ - gAAE/wO0Af8DGAH/AxgB/wMYAf8Dok3/AwAB/wMAAf8BSAFrAbkB/wMADf+AAAT/A/IB/wMxAf8D6AH/ - AzMB/wPoAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAAf8BFQIAEf8BtwGi - AZMB/wFUAToBJgH/AVQBOgEmAf8BVAE6ASYB/wFUAToBJgn/AwAB/wFIAWsBuQH/AUgBawG5Af8BVAE6 - ASYB/wMACf+AAAT/A/kB/wONAf8DWAH/A2IB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEVAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DcAH/AVQBOgEmAf8BVAE6ASYB/wMABf+AAAT/A/0B/wPb - Af8DGAH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BMAH/AZoBgwEkAf8B9gHWAcIB/wGIASMBEAH/AYMBHQEK - Af8BzwG0AaMB/wEVAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BbwH/ - AZoBgwFjCf8DAAH/A3AB/wFUAToBJgH/AVQBOgEmAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BFQIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNw - Af8BVAE6ASYB/wFUAToBJgH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEw - Af8BmgGDASQB/wH7AewB4wH/AYkBIwERAf8BgwEdAQoB/wHRAcEBtgH/ARUCABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAW8B/wGaAYMBYwH/AfsB7AHjAf8BiQFiAVAJ/wMAAf8DcAH/ - AVQBOgEmAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BFQIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A3AB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BMAH/AZkBhAEkAf8B/QH3AfMB/wGIASMBEAH/AYMBHQEKAf8B0QHBAbYB/wEV - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFvAf8BmQGEAWMB/wH9AfcB8wH/ - AYgBYgFPAf8BgwFcAUkB/wHRAcEBtgn/AVQBOgEmAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEVAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BVAE6ASYJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBIAH/AeYBjgEUAf8B4wEvAQAB/wHj - ASgBAAH/AeIBJAEAAf8B4gEkAQAB/wHiASQBAAH/AcgBFAEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBXwH/AeYBjgFTAf8B4wFuATsB/wHjAWcBMQH/AeIBYwEqAf8B4gFjASoB/wHi - AWMBKgH/AcgBUwEgCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBLwH/AfYBogEpAf8B9QGdASMB/wH1AZkBHAH/AfMBlQEXAf8BzQEXAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAW4B/wH2AaIBaAH/AfUBnQFi - Af8B9QGZAVsB/wHzAZUBVgH/Ac0BVgEiCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhATEB/wHoAZsBKAH/AeYBjgEUAf8B5QGHAQoB/wHkAYEBAAH/AeQBLQEAAf8B4wEoAQAB/wHi - ASQBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAXAB/wHoAZsBZwH/AeYBjgFT - Af8B5QGHAUkB/wHkAYEBPwH/AeQBbAE3Af8B4wFnAS8B/wHiAWMBKgn/gACA/4AAgP//ACkAAdMB3wHr + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABA + MAAAAk1TRnQBSQFMAgEBDgEAASQBAgEkAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A00B/wPAAf8D9AH/A9YB/wM4Tf8DAAH/AwAB/wFGAWkBuRH/ + gAAE/wO0Af8DFgH/AxYB/wMWAf8Dok3/AwAB/wMAAf8BRgFpAbkB/wMADf+AAAT/A/IB/wMvAf8D6AH/ + AzEB/wPoAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAEf8BtwGi + AZMB/wFSATgBJAH/AVIBOAEkAf8BUgE4ASQB/wFSATgBJAn/AwAB/wFGAWkBuQH/AUYBaQG5Af8BUgE4 + ASQB/wMACf+AAAT/A/kB/wONAf8DVgH/A2AB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wETAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DbgH/AVIBOAEkAf8BUgE4ASQB/wMABf+AAAT/A/0B/wPb + Af8DFgH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BLgH/AZoBgwEiAf8B9gHWAcIB/wGIASEBDgH/AYMBGwEI + Af8BzwG0AaMB/wETAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BbQH/ + AZoBgwFhCf8DAAH/A24B/wFSATgBJAH/AVIBOAEkAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BEwIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNu + Af8BUgE4ASQB/wFSATgBJAH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEu + Af8BmgGDASIB/wH7AewB4wH/AYkBIQEPAf8BgwEbAQgB/wHRAcEBtgH/ARMCABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAW0B/wGaAYMBYQH/AfsB7AHjAf8BiQFgAU4J/wMAAf8DbgH/ + AVIBOAEkAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BEwIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A24B/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BLgH/AZkBhAEiAf8B/QH3AfMB/wGIASEBDgH/AYMBGwEIAf8B0QHBAbYB/wET + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFtAf8BmQGEAWEB/wH9AfcB8wH/ + AYgBYAFNAf8BgwFaAUcB/wHRAcEBtgn/AVIBOAEkAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wETAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BUgE4ASQJ/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBHgH/AeYBjgESAf8B4wEtAQAB/wHj + ASYBAAH/AeIBIgEAAf8B4gEiAQAB/wHiASIBAAH/AcgBEgEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBXQH/AeYBjgFRAf8B4wFsATkB/wHjAWUBLwH/AeIBYQEoAf8B4gFhASgB/wHi + AWEBKAH/AcgBUQEeCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBLQH/AfYBogEnAf8B9QGdASEB/wH1AZkBGgH/AfMBlQEVAf8BzQEVAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWwB/wH2AaIBZgH/AfUBnQFg + Af8B9QGZAVkB/wHzAZUBVAH/Ac0BVAEgCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhAS8B/wHoAZsBJgH/AeYBjgESAf8B5QGHAQgB/wHkAYEBAAH/AeQBKwEAAf8B4wEmAQAB/wHi + ASIBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAW4B/wHoAZsBZQH/AeYBjgFR + Af8B5QGHAUcB/wHkAYEBPQH/AeQBagE1Af8B4wFlAS0B/wHiAWEBKAn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBMAH/AbIBiAEeAf8BuAGSAS8B/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNOAf8DwAH/A/QB/wPW - Af8DOQH/A/UJ/wP+Af8D9gH/AV8BrgHbAf8BXwGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBPwEAAf8BnQE5AQAB/wGcATcBAAH/AaQBRQEAAf8BnQE4AQAB/wGdATgBAAH/AZ8BPgEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/AwwB/wwAAwwB/wOGAf80AAPfAf8D9AH/ATwBqAHmAf8BDAFaAbYB/wEE - AVoBvgH/ATQBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxcB/wMXAf8DFwH/A6IB/wP6Bf8D/gH/ - A/YB/wFfAa4B2wH/AQABXQHHAf8BAAFdAccB/wFfAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgE1 - Af8BoAE8AQAB/wGhAT0BAAH/AZ4BOAEAAf8BygGqAUYB/wH2AfEB6AH/Ac0BrwFQAf8BngE4AQAB/wGh - AT0BAAH/AaEBPAEAAf8BugGUATEB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABPAGoAeYB/wEM - AVoBtgH/AQQBWgG+Af8BBAFaAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DMAH/A+gB/wMyAf8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/ - BAABzAGvAYgB/wGlAUEBAAH/AaUBQQEAAf8BpQFCAQAB/wGiATwBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - AT4BAAH/AaUBQQEAAf8BpQFBAQAB/wGlAUEBAAH/AcoBrQGEAf8UAAMmAf8DAAH/FwAB/wMmAf8wAAEV - AVoBrgH/ARUBWgGuAf8BLQFWAZ0B/wEtAVYBnQH/AQwBWgG2Af8BDAFaAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DVwH/A2EB/wP3Bf8D9AH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AZQBvQHgAf8BAAFd - AccB/wEAAV0BxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFIAQAB/wGqAUYBAAH/AaoBRgEAAf8BqgFG - AQAB/wGnAUEBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUMBAAH/AaoBRQEAAf8BqgFGAQAB/wGqAUYBAAH/ - AakBRwEAAf8B8AHpAd4B/xAAAyYB/wMAAf8XAAH/AyYB/xwAA98B/wPfAf8MAAEVAVoBrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/ATwBqAHmAf8BPAGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DFwH/A8kB/wP7 - Bf8D9AH/AQABXQHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AU0BAAH/Aa4BSgEAAf8BrwFLAQAB/wGvAUsBAAH/AawBRgEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BSAEA - Af8BrwFKAQAB/wGvAUsBAAH/Aa4BSwEAAf8BrwFKAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABLQFWAZ0B/wHNAfYC/wHJAfYC/wFZAaQB0QH/ - AVkBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABXQHHAf8D9AH/A/YB/wFf - Aa4B2wH/AV8BrgHbAf8D9AH/A/wF/wHKAakBTQH/AcABjgEJAf8BtQFSAQAB/wGzAU4BAAH/AbQBUAEA - Af8BsgFMAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFNAQAB/wG0AU8BAAH/AbQBUAEAAf8BtAFQAQAB/wG1 - AVABAAH/AcQBnwE6Af8PAAH/Az8B/xwAAz8B/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAAS0BVgGdAf8BzQH2Av8BWQGkAdEB/wEpAVYBoQH/ASkBVgGhAf8BWQGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BXwGuAdsB/wFfAa4B2wH/A/UB/wP9Af8D9AH/AQABXQHHAf8D9AH/AV8BrgHb - Af8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/A/0B/wHJAaYBRAH/AckBmwEbAf8BxQGUARQB/wG+ - AYkBAAH/AboBgAEAAf8BtwFQAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFSAQAB/wG5AVQBAAH/AbkBVAEA - Af8BuQFUAQAB/wG6AVQBAAH/AcMBmgEuAf8QAAMMAf8DwAH/FAADwAH/AwwB/xAAAdMB3wHrAf8B6AH0 - Av8BNAGoAe4B/wEEAVoBvgH/AQQBWgG+Af8BNAGoAe4B/wHNAfYC/wHNAfYC/wEVAVoBrgH/AbUB+gL/ - ATQBqAHuAf8BBAFaAb4B/wEAAVoBxwH/AQABWgHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AV8BrgHb - Af8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9AH/A/QB/wEAAV0BxwH/A/QB/wGUAb0B4AH/AQABXQHH - Af8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/AdABrwGBAf8BzgGgASAB/wHLAZwBHwH/AcwBnAEf - Af8BygGZARcB/wHDAY0BAwH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAECAf8BzAGoAUcB/xAAAyYB/wMMAf8UAAMMAf8DJgH/EAAB6AH0Av8BmAGkAbAB/wEE - AVoBvgH/AQQBWgG+Af8BBAFaAb4B/wEEAVoBvgH/AS0BVgGdAf8BLQFWAZ0B/wEVAVoBrgH/ARUBWgGu - Af8BBAFaAb4B/wEEAVoBvgH/AQABWgHHAf8BAAFaAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFfAa4B2wH/ - AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AQABXQHHAf8BXwGuAdsB/wEAAV0BxwH/AQABXQHHAf8BAAFd - AccB/wEAAV0BxwH/AZQBvQHgAf8BAAFdAccB/wEAAV0BxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - ASkB/wHQAaIBIgH/AdABoQEjAf8B0AGhASMB/wHQAZ8BHgH/AcsBpAEzAf8B1AHDAaUB/wHKAaQBMwH/ - Ac0BmwEWAf8BzgGcARkB/wHOAZwBGQH/Ac4BnAEYAf8BzwGdARgB/wHaAcMBogH/EAADJgH/AwwB/xQA - AwwB/wMmAf8QAAHoAfQC/wGYAaQBsAH/AQQBWgG+Af8BBAFaAb4B/wEAAVoBxwH/AQABWgHHAf8BBAFa - Ab4B/wE0AagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAAFdAccB/wEAAV0BxwH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATcB/wHYAakBKQH/ - AdUBpgEpAf8B1QGmAScB/wHUAaMBIgH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEeAf8B0wGi - ASEB/wHTAaEBHwH/AdUBowEeAf8BzQGdASIB/wH0Ae0B5AH/EAADhgH/AwwB/xQAAwwB/wOGAf8QAAHT - Ad8B6wH/AegB9AL/ATQBqAHuAf8BBAFaAb4B/wEAAVoBxwH/AQABWgHHAf8BBAFaAb4B/wEEAVoBvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFd - AccB/wEAAV0BxwH/AQABXQHHAf8BAAFdAccB/wEAAV0BxwH/AV8BrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE4Af8B2gGrASwB/wHZAasBLQH/AdcBpwEmAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEmAf8B1wGnASYB/wHYAacBJAH/AdkBqgEpAf8B2wHBAZ4B/xgAA4YB/wMMAf8MAAMM - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BBAFaAb4B/wEEAVoBvgH/AQQBWgG+Af8BBAFaAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAV0BxwH/AQABXQHH - Af8BAAFdAccB/wEAAV0BxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBPgH/Ad8BsQExAf8B3AGtASwB/wHXAbUBTwH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBKAH/Ad4BrgEr - Af8B3gGxATMB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATQBqAHuAf8BBAFaAb4B/wEE - AVoBvgH/ATQBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABXQHHAf8BAAFd - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFPAf8B4wG4AUAB/wHjAbQBNAH/Ad0BrgEs - Af8B4QGyATAB/wHiAbYBOgH/AdsBswFGAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBLgH/AbIBiAEcAf8BuAGSAS0B/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNMAf8DwAH/A/QB/wPW + Af8DNwH/A/UJ/wP+Af8D9gH/AV0BrgHbAf8BXQGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBPQEAAf8BnQE3AQAB/wGcATUBAAH/AaQBQwEAAf8BnQE2AQAB/wGdATYBAAH/AZ8BPAEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwoB/wwAAwoB/wOGAf80AAPfAf8D9AH/AToBqAHmAf8BCgFYAbYB/wEC + AVgBvgH/ATIBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxUB/wMVAf8DFQH/A6IB/wP6Bf8D/gH/ + A/YB/wFdAa4B2wH/AQABWwHHAf8BAAFbAccB/wFdAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEz + Af8BoAE6AQAB/wGhATsBAAH/AZ4BNgEAAf8BygGqAUQB/wH2AfEB6AH/Ac0BrwFOAf8BngE2AQAB/wGh + ATsBAAH/AaEBOgEAAf8BugGUAS8B/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABOgGoAeYB/wEK + AVgBtgH/AQIBWAG+Af8BAgFYAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DLgH/A+gB/wMwAf8D6AH/ + A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/ + BAABzAGvAYgB/wGlAT8BAAH/AaUBPwEAAf8BpQFAAQAB/wGiAToBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj + ATwBAAH/AaUBPwEAAf8BpQE/AQAB/wGlAT8BAAH/AcoBrQGEAf8UAAMkAf8DAAH/FwAB/wMkAf8wAAET + AVgBrgH/ARMBWAGuAf8BKwFUAZ0B/wErAVQBnQH/AQoBWAG2Af8BCgFYAbYB/wGYAaQBsAH/AegB9Ab/ + A/kB/wONAf8DVQH/A18B/wP3Bf8D9AH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AZQBvQHgAf8BAAFb + AccB/wEAAVsBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFGAQAB/wGqAUQBAAH/AaoBRAEAAf8BqgFE + AQAB/wGnAT8BAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUEBAAH/AaoBQwEAAf8BqgFEAQAB/wGqAUQBAAH/ + AakBRQEAAf8B8AHpAd4B/xAAAyQB/wMAAf8XAAH/AyQB/xwAA98B/wPfAf8MAAETAVgBrgH/AbUB+gL/ + Ac0B9gL/Ac0B9gL/AToBqAHmAf8BOgGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DFQH/A8kB/wP7 + Bf8D9AH/AQABWwHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw + AUsBAAH/Aa4BSAEAAf8BrwFJAQAB/wGvAUkBAAH/AawBRAEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BRgEA + Af8BrwFIAQAB/wGvAUkBAAH/Aa4BSQEAAf8BrwFIAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ + GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABKwFUAZ0B/wHNAfYC/wHJAfYC/wFXAaQB0QH/ + AVcBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABWwHHAf8D9AH/A/YB/wFd + Aa4B2wH/AV0BrgHbAf8D9AH/A/wF/wHKAakBSwH/AcABjgEHAf8BtQFQAQAB/wGzAUwBAAH/AbQBTgEA + Af8BsgFKAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFLAQAB/wG0AU0BAAH/AbQBTgEAAf8BtAFOAQAB/wG1 + AU4BAAH/AcQBnwE4Af8PAAH/Az0B/xwAAz0B/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ + AegB9AL/A98B/wQAASsBVAGdAf8BzQH2Av8BVwGkAdEB/wEnAVQBoQH/AScBVAGhAf8BVwGkAdEB/wP0 + Af8D3wX/A/4B/wP2Af8BXQGuAdsB/wFdAa4B2wH/A/UB/wP9Af8D9AH/AQABWwHHAf8D9AH/AV0BrgHb + Af8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/A/0B/wHJAaYBQgH/AckBmwEZAf8BxQGUARIB/wG+ + AYkBAAH/AboBgAEAAf8BtwFOAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFQAQAB/wG5AVIBAAH/AbkBUgEA + Af8BuQFSAQAB/wG6AVIBAAH/AcMBmgEsAf8QAAMKAf8DwAH/FAADwAH/AwoB/xAAAdMB3wHrAf8B6AH0 + Av8BMgGoAe4B/wECAVgBvgH/AQIBWAG+Af8BMgGoAe4B/wHNAfYC/wHNAfYC/wETAVgBrgH/AbUB+gL/ + ATIBqAHuAf8BAgFYAb4B/wEAAVgBxwH/AQABWAHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AV0BrgHb + Af8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9AH/A/QB/wEAAVsBxwH/A/QB/wGUAb0B4AH/AQABWwHH + Af8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/AdABrwGBAf8BzgGgAR4B/wHLAZwBHQH/AcwBnAEd + Af8BygGZARUB/wHDAY0BAQH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC + AYoBAAH/AcYBkAEAAf8BzAGoAUUB/xAAAyQB/wMKAf8UAAMKAf8DJAH/EAAB6AH0Av8BmAGkAbAB/wEC + AVgBvgH/AQIBWAG+Af8BAgFYAb4B/wECAVgBvgH/ASsBVAGdAf8BKwFUAZ0B/wETAVgBrgH/ARMBWAGu + Af8BAgFYAb4B/wECAVgBvgH/AQABWAHHAf8BAAFYAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFdAa4B2wH/ + AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AQABWwHHAf8BXQGuAdsB/wEAAVsBxwH/AQABWwHHAf8BAAFb + AccB/wEAAVsBxwH/AZQBvQHgAf8BAAFbAccB/wEAAVsBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm + AScB/wHQAaIBIAH/AdABoQEhAf8B0AGhASEB/wHQAZ8BHAH/AcsBpAExAf8B1AHDAaUB/wHKAaQBMQH/ + Ac0BmwEUAf8BzgGcARcB/wHOAZwBFwH/Ac4BnAEWAf8BzwGdARYB/wHaAcMBogH/EAADJAH/AwoB/xQA + AwoB/wMkAf8QAAHoAfQC/wGYAaQBsAH/AQIBWAG+Af8BAgFYAb4B/wEAAVgBxwH/AQABWAHHAf8BAgFY + Ab4B/wEyAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ + AZQBvQHgAf8BAAFbAccB/wEAAVsBxwH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9AH/ + A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATUB/wHYAakBJwH/ + AdUBpgEnAf8B1QGmASUB/wHUAaMBIAH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEcAf8B0wGi + AR8B/wHTAaEBHQH/AdUBowEcAf8BzQGdASAB/wH0Ae0B5AH/EAADhgH/AwoB/xQAAwoB/wOGAf8QAAHT + Ad8B6wH/AegB9AL/ATIBqAHuAf8BAgFYAb4B/wEAAVgBxwH/AQABWAHHAf8BAgFYAb4B/wECAVgBvgH/ + AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFb + AccB/wEAAVsBxwH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/A/0B/wP+Af8D9wH/ + A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE2Af8B2gGrASoB/wHZAasBKwH/AdcBpwEkAf8B8QHmAdMF/wH1 + Ae4B4QH/AdcBpgEkAf8B1wGnASQB/wHYAacBIgH/AdkBqgEnAf8B2wHBAZ4B/xgAA4YB/wMKAf8MAAMK + Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAgFYAb4B/wECAVgBvgH/AQIBWAG+Af8BAgFYAb4B/wGY + AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVsBxwH/AQABWwHH + Af8BAAFbAccB/wEAAVsBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg + AbYBPAH/Ad8BsQEvAf8B3AGtASoB/wHXAbUBTQH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBJgH/Ad4BrgEp + Af8B3gGxATEB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATIBqAHuAf8BAgFYAb4B/wEC + AVgBvgH/ATIBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABWwHHAf8BAAFb + AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFNAf8B4wG4AT4B/wHjAbQBMgH/Ad0BrgEq + Af8B4QGyAS4B/wHiAbYBOAH/AdsBswFEAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABHAG5Af8BAAEOAT0B/wEA - AQkBHwH/9QABPQHHAf8BBwHNAfwB/wEAAR4BhwH/tAADOwFlAQABEwEAAf8DOgFgNQABPQHHAf8BAAGg - AdIB/wEAARQBNAH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEOAacBAAH/AQABFwEA - Af8BAAETAQAB/wM2AVgxAAE9AccB/wEJAdEB/AH/AQABHgGHAf8zAAEBAwABARAAAewB0gHsAf8BNAEA - ATMB/wHmAcwB5gH/AwIBAwMSARkQAAExATsBPQH/AScBLwEyAf8BHgEjASYB/wEUARcBGgH/AgoBDwH/ - AQEBAAEFAf8DAAH/AwAB/wMAAf8cAAM+AWoBDgGnAQAB/wErAbsBHwH/AQABGwEAAf8BAAEYAQAB/wEA - ARMBAAH/AzUBVy0AAT0BxwH/AQIBoQHRAf8BAAEUATQB/z8AAQEEAAHtAdgB7QH/AakBEgGoAf8BgAEA - AUEB/wE3AQABNwH/AesB0QHrAf8UAAE6AYIBgwH/AZcB2wH1Af8BHQGpAcoB/wEdAakBygH/ARwBpwHJ - Af8BFAGfAcIB/wELAZYBuQH/AQMBjQGwAf8DAAH/HAABDQGkAQAB/wErAbsBHwH/ASsBuwEfAf8BAAEa - AQAB/wEAARsBAAH/AQABGAEAAf8BAAETAQAB/wMwAUwpAAE9AccB/wETAeIB/QH/AQABGgGAAf8jAAEB - AwABAQMAAQEDAAEBAwABAQMAAQEDAAEBBAAB6AHRAegB/wGqARIBqQH/AcwBKQHLAf8BQAEAAUAB/wGW - AQABlQH/AT0BAAE8Af8B8AHVAfAB/xAAAUICjAH/AaAB4AH3Af8BMwHNAfEB/wEmAccB7gH/ARoBwQHr - Af8BDwG8AegB/wEEAbcB5gH/AQkBkgG2Af8DAAH/HAABDgGnAQAB/wErAbsBHwH/ASsBuwEfAf8BqgHU - AaIB/wEKAaABAAH/AQABGwEAAf8BAAEYAQAB/wEAARIBAAH/KQABPQHHAf8BGgHXAfwB/wEAARoBgAH/ - JAABqwHwAfcB/wGrAeIB5QH/AawBzgHMAf8BrQG7AbUB/wGuAacBnAH/BAAB5AHKAeQB/wGpARIBqAH/ - AdMBLQHSAf8B1AEwAdMB/wFBAQABQAH/AZ8BAAGfAf8BjgEAAY0B/wE/AQABPgH/EAABhQKUAf8BpwHj - AfgB/wE+AdMB9AH/ATMBzgHxAf8BJwHIAe4B/wEaAcIB6wH/AQ8BvAHoAf8BDgGZAbwB/wMAAf8YAAMC - AQMBEAGrAQIB/wErAbsBHwH/AaoB1AGiAf8BtwHaAbAB/wGqAdQBogH/AQMBkwEAAf8BAAEbAQAB/wEA - ARMBAAH/JQABIgGQAf8BAAE9AccB/wEwAd4B/AH/AQABGgGAAf8BAAEQATwB/zgAAaoBFAGpAf8B0gEs - AdEB/wHVATEB1QH/Ab0BMgG8Af8B3gGYAd0B/wGPAQgBjgH/AZ0BAAGcAf8BQAEAAUAB/xAAAYwCmwH/ - Aa4B5gH6Af8BhgHYAfYB/wE+AdQB9AH/ATMBzQHxAf8BJwHHAe4B/wEaAcIB6wH/ARUBoAHBAf8CBQEK - Af8YAAMEAQUBJQG4ARgB/wG0AdkBrQH/AcUB4gHAAf8BtwHaAbAB/wG3AdoBsAH/AaoB1AGiAf8BAAGI - AQAB/wEAARMBAAH/IQABMQGgAf8BAAGHAccB/wEdAcAB8AH/ARIBywH+Af8BEwGzAd0B/wEAAQ8BKAH/ - AQABEAE8Af8YAAGrAfAB9wH/AasB5QHpAf8BrALVAf8BrAHEAcEB/wGtAbUBrAH/Aa4BpAGYAf8EAAGo - AREBpwH/AdIBLwHRAf8BvAExAbsB/wHvAaUB7gH/AfsBnwH6Af8B7wGdAe4B/wGXARQBlgH/AT4BAAE+ - Af8QAAGRAaIBoQH/AbIB6AH8Af8BoAHiAfoB/wGGAdgB9gH/AT8B0wHzAf8BMwHOAfEB/wEmAcgB7gH/ - ARkBpQHHAf8BDgEPARQB/xgAAwIBAwNEAXoBjgHGAYQB/wG5AdwBswH/AcMB4QG+Af8BwwHhAb4B/wG3 - AdoBsAH/AaoB1AGiAf8BAAEpAQAB/x0AAYABsQH/AQABhwHIAf8BFAG6AfcB/wEWAcIB+QH/AQwBtwH5 - Af8BKgHWAfsB/wEHAaYB6AH/AQABDgEmAf8BAAETAYMB/zAAAacBEgGmAf8BvAExAbsB/wHvAaUB7gH/ - AfsBmwH6Af8B+wGYAfoB/wH7AZkB+gH/AecBmAHmAf8BkQEQAZAB/xAAAZQBpgGlAf8BvQHsAfwB/wGl - AeUB+wH/AZ8B4gH6Af8BhgHYAfYB/wE/AdQB9AH/ATMBzQHxAf8BHQGpAcoB/wEWARoBHQH/IAADRgF+ - AZABxwGGAf8BvgHeAbgB/wHDAeEBvgH/AbMB2QGsAf8BkAHHAYYB/wM9AWkdAAE9AbgB/wEWAcEB+QH/ - ARIBtwH5Af8BkwHuAf4B/wGPAewB/gH/ARQBtAHzAf8BjQHjAf4B/wERAboB4gH/AQABEAEtAf8cAAGr - AfAB9wH/AawC1QH/Aa4BtAGsAf8BrgGZAYoB/wP9Af8BzwGIAc8B/wHiAa8B4gH/AfsBqwH6Af8B+wGY - AfoB/wH7AZgB+gH/AeoBkAHpAf8BzwGIAc8B/wH0AeYB9AH/EAABlAGmAaUB/wG9AewB/AH/Ab0B7AH8 - Af8BsgHoAfwB/wGuAeYB+gH/AacB5AH5Af8BoAHgAfcB/wGXAdsB9QH/AR8BJAEoAf8kAANHAYEBlAHJ - AYoB/wG9Ad4BtwH/AY4BxgGEAf8DMAFLIQABgwG7Af8BGwHGAfkB/wErAYoBrAH/ASsBigGsAf8BKwGK - AawB/wErAYoBrAH/ASsBigGsAf8BJAHVAfoB/wEAAQ8BKgH/MAAB8AHUAfAB/wHPAYgBzwH/Ae4BvgHu - Af8B+wGuAfoB/wHsAZEB6wH/Ac8BiAHPAf8B8wHgAfIB/xQAAZQBpgGlAf8BlAGmAaUB/wGTAqUB/wGP - AZ8BngH/AYgClwH/AYECjgH/ATsChAH/ATEBOwE9Af8BKAEvATEB/ygAAzwBZgGUAckBigH/AyUBNyUA - AYMBvAH/AR4B0gH6Af8BDAEmAYQB/wwAAQ8BkAHBAf8BFQG7AeEB/wEAAQ0BJwH/NAAB8gHbAfIB/wHP - AYgBzwH/AeMBrAHjAf8BzwGIAc8B/wHzAeMB8wH/YAADAQECBAADAQECKAABBAGIAcEB/wEIAZ0B0AH/ - ATwB4wH6Af8BDAGFAZ4B/wETASYBhwH/ARMBOAGcAf8BFAG/AfQB/wEKAYwBqgH/AQABGgE8Af84AAHy - AdsB8gH/Ac8BiAHPAf8B8AHjAfAB/5gAAQsBlAHGAf8BBgGKAcEB/wEIAZoBzQH/ATAB1QH1Af8BMwHp - Af4B/wEvAdQB8wH/AQwBkgGyAf8BAAEmAYwB/wEAATIBogH/PAAB/gH7Af4B/6AAAQsBlAHGAf8BBwGN - AcMB/wECAYsBugH/AQIBiwG6Af8BAAGIAbcB/wEAATUBoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMz - AVPwAAM4AV0B1wGaAQwB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQ8BgwGWAf8BAAEo - AY0B/wEAAR8BjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQwB/wHYAZsBDQH/AZkCAAH/AZkCAAH/ - AZkCAAH/Ay8BSigAAVsCXgHQAQMBsAHRAf8BhAHVAegB/wGhAesB9gH/ASUB5AL/AQABvgHzAf8BAAGf - Ad4B/wEAAYsBvgH/AVsCXgHZVAABtwGiAZMB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEV - AgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/wEVAgAB/xQAAdgBmwEOAf8B2AGbAQ0B/wHYAZsBDQH/ - AZkCAAH/AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiQAAQUBjwGqAf8BAAHXAv8BkAHqAfoB/wGhAesB9gH/ - ASMB2QH0Af8BAAG8AfIB/wEAAacB6AH/AQABnAHaAf8BAAEVAYQB/xQAAzEBTQJSAVEBoQFfAlgB4wFf - AlgB4wFSAlEBoQExAjABTQQAAzEBTQJSAVEBoQFfAlgB4wFfAlgB4wFSAlEBoQExAjABTQwAAbcBogGT - Af8B/QH7AfkB/wHhAdwB2AH/AeAB1wHSAf8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7AacB/wHb - AbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEVAgAB/xQAAdgBmwENAf8B2AGbAQ0B/wHpAbQBLgH/AfwB1gGv - Af8BtQEVAQAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUogAAEGAZEBrgH/AQAB0gH6Af8BjQHkAfYB/wGh - AesB9gH/ASIB1wHzAf8BAAG5Ae8B/wEAAacB6AH/AQABnAHaAf8BAAEXAYYB/xAAAzUBVQNkAecBzwG4 - AakB/wHrAdYByAH/AeUBywG7Af8BswGVATEB/wFkAlwB5wNLAY4DZAHnAc8BuAGpAf8B6wHWAcgB/wHl - AcsBuwH/AbMBlQExAf8BZAJcAecBNQI0AVUIAAG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHs - AeMB/wGkAY0BMAH/AZoBgwEkAf8B9gHWAcIB/wGIASMBEAH/AYMBHQEKAf8BzwG0AaMB/wEVAgAB/xQA - AdgBmwENAf8B6gG3AYIB/wH7AdgBsgH/Af4B0QGjAf8B+wHYAbIB/wGvAQkBAAH/AZkCAAH/AZkCAAH/ - AZkCAAH/AyoBQRwAAQkBlQGwAf8BAAHSAfoB/wGNAeQB9AH/AaEB6wH2Af8BIgHXAfIB/wEAAbkB7gH/ - AQABpwHoAf8BAAGcAdoB/wEAARoBiAH/EAADVQGyAeYB1gHLAf8DWQHCAmABXAHUA2AB1AFMASoBIQH7 - AwAB/wMAAf8DAAH/AWECWAHmAmABXAHUA2AB1ANZAcIBuQGcAYgB/wNVAbIIAAG6AaUBlgH/A/4B/wP+ - Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGr - Af8BFQIAAf8UAAHnAbMBLgH/AfEBwwGRAf8B/gHPAZ0C/wHNAZkB/wH+AdABnwH/AfsB2AGyAf8BqQIA - Af8BmQIAAf8BmQIAAf8BmQIAAf8DBAEFGAABCwGZAbUB/wEBAdEB+wH/AY4B5AH1Af8BoQHrAfYB/wEi - AdcB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABHQGKAf8QAANlAfQE/wNXAd8DHQEqA1wBzQX/ - Af4B9wL/AfEB5gH/AfoB4wHUAf8B8wHXAccB/wNKAY0DHQEqA1wB3wHvAdYBxwH/AWQCUgH0CAABvgGp - AZoB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGjAY4BMAH/AZoBgwEkAf8B+wHsAeMB/wGJASMBEQH/ - AYMBHQEKAf8B0QHBAbYB/wEVAgAB/xQAA0UBfAHlAbIBLQH/AfQBwAGLAv8BzQGZAv8BzQGZAf8B/gHQ - AaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/AZkCAAH/HAABDgGbAbcB/wEBAdAB+QH/AY0B4wH1Af8BoQHr - AfYB/wEkAdkB8gH/AQABuQHuAf8BAAGnAegB/wEAAZwB2gH/AQABHwGNAf8QAANVAbIB8gHmAd4B/wNZ - AcIDXAHUAWACXAHUA2EB4gHTAbUBogH/A00B+gHaAcABrwH/A18B8wNbAdYBYAJcAdQDWQHCAcsBsQGh - Af8DVQGyCAABwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ - AfoB5wHbAf8B0QHBAbYB/wEVAgAB/xgAA0YBfwHkAbABKwH/AfYBxAGQAv8BzQGZAv8BzQGZAf8B/gHQ - AaEB/wH7AdgBsgH/AakCAAH/AZkCAAH/HAABEAGeAboB/wEAAdAB+QH/AY0B4wH0Af8BoQHrAfYB/wEh - AdcB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABIQGPAf8QAAM1AVUDZAHnAe0B4QHXA/8B/QL/ - AfcB8QH/AdgBxAG3Af8DZAHnA0sBjgNkAecB7QHhAdcD/wH9Av8B9wHxAf8B2AHEAbcB/wNkAecDNQFV - CAAByAGyAaMB/wP+Af8BugGmAZgB/wG0AaABkQH/A/4B/wGkAY4BMAH/AZkBhAEkAf8B/QH3AfMB/wGI - ASMBEAH/AYMBHQEKAf8B0QHBAbYB/wEVAgAB/xwAA0kBhwHjAa8BKgH/AfYBxAGQAv8BzQGZAv8BzQGZ - Af8B/gHQAaEB/wHyAckBnQH/AbABDAEAAf8cAAERAaIBvAH/AQABzgH3Af8BiwHjAfQB/wGhAesB9gH/ - ASAB1gHyAf8BAAG3Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEiAZIB/xQAAzEBTQNSAaEDXwHjA18B4wNS - AaEDMQFNBAADMQFNA1IBoQNfAeMDXwHjA1IBoQMxAU0MAAHMAbYBpwH/A/4B/wP+Af8D/gH/A/4B/wP+ - Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BFQIAAf8gAANJAYcB4wGvASoB/wH2 - AcQBkAL/Ac0BmQH/AfMBwgGOAf8B4wGwASsB/wNDAXgcAAEdAakBwAH/AQgB1AH6Af8BnAHsAfoB/wGr - Ae8B+gH/AaYB7QH4Af8BlAHnAfgB/wEjAdkB9gH/AQABvQHpAf8BAAEuAZcB/1QAAeoBqgGLAf8B6gGq - AYsB/wHqAaoBiwH/AekBpQGEAf8B5wGXASAB/wHmAY4BFAH/AeMBLwEAAf8B4wEoAQAB/wHiASQBAAH/ - AeIBJAEAAf8B4gEkAQAB/wHIARQBAAH/JAADSQGHAeMBrwEqAf8B7gG9AYoB/wHjAbABKwH/AzQBVCAA - AYABswHFAf8BmwHeAesB/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BoAHf - AeoB/wEYAZEBogH/VAAB6gGqAYsC/wHCAaIB/wH+AcABnwH/Af0BvQGaAf8B+wG1AZAB/wH6AbABiwH/ - AfgBpwEvAf8B9gGiASkB/wH1AZ0BIwH/AfUBmQEcAf8B8wGVARcB/wHNARcBAAH/KAADQAFuAeUBsgEv - Af8DJgE4JAADOwFjA2AB1gEoAasBugH/ASIBowGzAf8BHgGdAa8B/wEdAZsBrgH/ASEBogG0Af8DXgHZ - A0ABb1QAAeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhATEB/wHoAZsBKAH/AeYBjgEU - Af8B5QGHAQoB/wHkAYEBAAH/AeQBLQEAAf8B4wEoAQAB/wHiASQBAAH//wD/AAoAAUIBTQE+BwABPgMA - ASgDAAFAAwABQAMAAQEBAAEBBgABAhYAA/+BAAX/AcMCAAHwAR8D/wGBAgABwAEHAfMBnwH/AwABgAED - AecBzwH/AcACAAGAAQMB5wHPAf8EAAEBAecBzwHnBAABAQHnAc8BwwEBAwABAQHPAecBgQQAAQEB5wHP - BQABAQHnAc8FAAEBAecBzwUAAQEB5wHPAQABAQIAAYABAwHzAZ8BgAETAgABgAEDAv8BwAE/AgAB4AEH - Av8B4AF/AgAB8AEfAv8B8AH/AgAC/wH8AX8G/wH8AX8E/wH8AX8B/AF/AT8BcwL/AfgBPwH8AX8B+QHg - AfABBwHwAR8B/AF/Af8BQQHwAQcB8AEPAfwBfwKAAfABBwHwAQ8B/AF/AcEBAAHwAQcB4AEPAfgBPwH/ - AQAB8AEHAeABDwHwAR8BgQEAAfABBwHgAQ8B4AEPAf8BAAHwAQcB+AEPAeABDwHgAQAB8AEHAfwBHwHg - AQ8B/wEBAfABBwH+AT8B4wGPAf8BgwL/Af0BfwHgAQ8B/wHHBP8B4AEPAf8B7wT/AfABHwz/AfgH/wHw - AX8B8AEHBP8B4AE/AfABBwL/AcABAwHgAR8B8AEHAcABgQHAAQMB4AEPAfABBwGAAQABwAEDAeABBwHw - AQcBgAEAAcABAwHgAQMB8AEHAYABAAHAAQMB4AEHAfABBwGAAQABwAEDAfABBwHwAQcBgAEAAcABAwH4 - AQcB8AEHAcABgQHAAQMB/AEHAfABBwL/AcABAwH+AQ8B8AEHAv8BwAEDAf8BHwHwAQcC/wHAAQMQ/ws= + Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABGgG5Af8BAAEMATsB/wEA + AQcBHQH/9QABOwHHAf8BBQHNAfwB/wEAARwBhwH/tAADOwFlAQABEQEAAf8DOgFgNQABOwHHAf8BAAGg + AdIB/wEAARIBMgH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEMAacBAAH/AQABFQEA + Af8BAAERAQAB/wM2AVgxAAE7AccB/wEHAdEB/AH/AQABHAGHAf8zAAEBAwABARAAAewB0gHsAf8BMgEA + ATEB/wHmAcwB5gH/AwIBAwMSARkQAAEvATkBOwH/ASUBLQEwAf8BHAEhASQB/wESARUBGAH/AggBDQH/ + AgABAwH/AwAB/wMAAf8DAAH/HAADPgFqAQwBpwEAAf8BKQG7AR0B/wEAARkBAAH/AQABFgEAAf8BAAER + AQAB/wM1AVctAAE7AccB/wEAAaEB0QH/AQABEgEyAf8/AAEBBAAB7QHYAe0B/wGpARABqAH/AYABAAE/ + Af8BNQEAATUB/wHrAdEB6wH/FAABOAGCAYMB/wGXAdsB9QH/ARsBqQHKAf8BGwGpAcoB/wEaAacByQH/ + ARIBnwHCAf8BCQGWAbkB/wEBAY0BsAH/AwAB/xwAAQsBpAEAAf8BKQG7AR0B/wEpAbsBHQH/AQABGAEA + Af8BAAEZAQAB/wEAARYBAAH/AQABEQEAAf8DMAFMKQABOwHHAf8BEQHiAf0B/wEAARgBgAH/IwABAQMA + AQEDAAEBAwABAQMAAQEDAAEBAwABAQQAAegB0QHoAf8BqgEQAakB/wHMAScBywH/AT4BAAE+Af8BlgEA + AZUB/wE7AQABOgH/AfAB1QHwAf8QAAFAAowB/wGgAeAB9wH/ATEBzQHxAf8BJAHHAe4B/wEYAcEB6wH/ + AQ0BvAHoAf8BAgG3AeYB/wEHAZIBtgH/AwAB/xwAAQwBpwEAAf8BKQG7AR0B/wEpAbsBHQH/AaoB1AGi + Af8BCAGgAQAB/wEAARkBAAH/AQABFgEAAf8BAAEQAQAB/ykAATsBxwH/ARgB1wH8Af8BAAEYAYAB/yQA + AasB8AH3Af8BqwHiAeUB/wGsAc4BzAH/Aa0BuwG1Af8BrgGnAZwB/wQAAeQBygHkAf8BqQEQAagB/wHT + ASsB0gH/AdQBLgHTAf8BPwEAAT4B/wGfAQABnwH/AY4BAAGNAf8BPQEAATwB/xAAAYUClAH/AacB4wH4 + Af8BPAHTAfQB/wExAc4B8QH/ASUByAHuAf8BGAHCAesB/wENAbwB6AH/AQwBmQG8Af8DAAH/GAADAgED + AQ4BqwEAAf8BKQG7AR0B/wGqAdQBogH/AbcB2gGwAf8BqgHUAaIB/wEBAZMBAAH/AQABGQEAAf8BAAER + AQAB/yUAASABkAH/AQABOwHHAf8BLgHeAfwB/wEAARgBgAH/AQABDgE6Af84AAGqARIBqQH/AdIBKgHR + Af8B1QEvAdUB/wG9ATABvAH/Ad4BmAHdAf8BjwEGAY4B/wGdAQABnAH/AT4BAAE+Af8QAAGMApsB/wGu + AeYB+gH/AYYB2AH2Af8BPAHUAfQB/wExAc0B8QH/ASUBxwHuAf8BGAHCAesB/wETAaABwQH/AgMBCAH/ + GAADBAEFASMBuAEWAf8BtAHZAa0B/wHFAeIBwAH/AbcB2gGwAf8BtwHaAbAB/wGqAdQBogH/AQABiAEA + Af8BAAERAQAB/yEAAS8BoAH/AQABhwHHAf8BGwHAAfAB/wEQAcsB/gH/AREBswHdAf8BAAENASYB/wEA + AQ4BOgH/GAABqwHwAfcB/wGrAeUB6QH/AawC1QH/AawBxAHBAf8BrQG1AawB/wGuAaQBmAH/BAABqAEP + AacB/wHSAS0B0QH/AbwBLwG7Af8B7wGlAe4B/wH7AZ8B+gH/Ae8BnQHuAf8BlwESAZYB/wE8AQABPAH/ + EAABkQGiAaEB/wGyAegB/AH/AaAB4gH6Af8BhgHYAfYB/wE9AdMB8wH/ATEBzgHxAf8BJAHIAe4B/wEX + AaUBxwH/AQwBDQESAf8YAAMCAQMDRAF6AY4BxgGEAf8BuQHcAbMB/wHDAeEBvgH/AcMB4QG+Af8BtwHa + AbAB/wGqAdQBogH/AQABJwEAAf8dAAGAAbEB/wEAAYcByAH/ARIBugH3Af8BFAHCAfkB/wEKAbcB+QH/ + ASgB1gH7Af8BBQGmAegB/wEAAQwBJAH/AQABEQGDAf8wAAGnARABpgH/AbwBLwG7Af8B7wGlAe4B/wH7 + AZsB+gH/AfsBmAH6Af8B+wGZAfoB/wHnAZgB5gH/AZEBDgGQAf8QAAGUAaYBpQH/Ab0B7AH8Af8BpQHl + AfsB/wGfAeIB+gH/AYYB2AH2Af8BPQHUAfQB/wExAc0B8QH/ARsBqQHKAf8BFAEYARsB/yAAA0YBfgGQ + AccBhgH/Ab4B3gG4Af8BwwHhAb4B/wGzAdkBrAH/AZABxwGGAf8DPQFpHQABOwG4Af8BFAHBAfkB/wEQ + AbcB+QH/AZMB7gH+Af8BjwHsAf4B/wESAbQB8wH/AY0B4wH+Af8BDwG6AeIB/wEAAQ4BKwH/HAABqwHw + AfcB/wGsAtUB/wGuAbQBrAH/Aa4BmQGKAf8D/QH/Ac8BiAHPAf8B4gGvAeIB/wH7AasB+gH/AfsBmAH6 + Af8B+wGYAfoB/wHqAZAB6QH/Ac8BiAHPAf8B9AHmAfQB/xAAAZQBpgGlAf8BvQHsAfwB/wG9AewB/AH/ + AbIB6AH8Af8BrgHmAfoB/wGnAeQB+QH/AaAB4AH3Af8BlwHbAfUB/wEdASIBJgH/JAADRwGBAZQByQGK + Af8BvQHeAbcB/wGOAcYBhAH/AzABSyEAAYMBuwH/ARkBxgH5Af8BKQGKAawB/wEpAYoBrAH/ASkBigGs + Af8BKQGKAawB/wEpAYoBrAH/ASIB1QH6Af8BAAENASgB/zAAAfAB1AHwAf8BzwGIAc8B/wHuAb4B7gH/ + AfsBrgH6Af8B7AGRAesB/wHPAYgBzwH/AfMB4AHyAf8UAAGUAaYBpQH/AZQBpgGlAf8BkwKlAf8BjwGf + AZ4B/wGIApcB/wGBAo4B/wE5AoQB/wEvATkBOwH/ASYBLQEvAf8oAAM8AWYBlAHJAYoB/wMlATclAAGD + AbwB/wEcAdIB+gH/AQoBJAGEAf8MAAENAZABwQH/ARMBuwHhAf8BAAELASUB/zQAAfIB2wHyAf8BzwGI + Ac8B/wHjAawB4wH/Ac8BiAHPAf8B8wHjAfMB/2AAAwEBAgQAAwEBAigAAQIBiAHBAf8BBgGdAdAB/wE6 + AeMB+gH/AQoBhQGeAf8BEQEkAYcB/wERATYBnAH/ARIBvwH0Af8BCAGMAaoB/wEAARgBOgH/OAAB8gHb + AfIB/wHPAYgBzwH/AfAB4wHwAf+YAAEJAZQBxgH/AQQBigHBAf8BBgGaAc0B/wEuAdUB9QH/ATEB6QH+ + Af8BLQHUAfMB/wEKAZIBsgH/AQABJAGMAf8BAAEwAaIB/zwAAf4B+wH+Af+gAAEJAZQBxgH/AQUBjQHD + Af8BAAGLAboB/wEAAYsBugH/AQABiAG3Af8BAAEzAaAB/wEAAYIBsgH//wCpAAM2AVgBmQIAAf8DMwFT + 8AADOAFdAdcBmgEKAf8BmQIAAf8BmQIAAf8DLwFKLAADHgErA1QBrgFZAmQB7AENAYMBlgH/AQABJgGN + Af8BAAEdAYwB/wFOAl0B8ANWAbMDJQE3mAADOgFhAdcBmgEKAf8B2AGbAQsB/wGZAgAB/wGZAgAB/wGZ + AgAB/wMvAUooAAFbAl4B0AEBAbAB0QH/AYQB1QHoAf8BoQHrAfYB/wEjAeQC/wEAAb4B8wH/AQABnwHe + Af8BAAGLAb4B/wFbAl4B2VQAAbcBogGTAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIA + Af8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8UAAHYAZsBDAH/AdgBmwELAf8B2AGbAQsB/wGZ + AgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUokAAEDAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEh + AdkB9AH/AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABEwGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJY + AeMBUgJRAaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3AaIBkwH/ + Af0B+wH5Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGnAf8B2wG7 + AacB/wHbAbsBpwH/Ac8BtAGjAf8BEwIAAf8UAAHYAZsBCwH/AdgBmwELAf8B6QG0ASwB/wH8AdYBrwH/ + AbUBEwEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABBAGRAa4B/wEAAdIB+gH/AY0B5AH2Af8BoQHr + AfYB/wEgAdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABFQGGAf8QAAM1AVUDZAHnAc8BuAGp + Af8B6wHWAcgB/wHlAcsBuwH/AbMBlQEvAf8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHIAf8B5QHL + AbsB/wGzAZUBLwH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/AfsB7AHj + Af8BpAGNAS4B/wGaAYMBIgH/AfYB1gHCAf8BiAEhAQ4B/wGDARsBCAH/Ac8BtAGjAf8BEwIAAf8UAAHY + AZsBCwH/AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEHAQAB/wGZAgAB/wGZAgAB/wGZ + AgAB/wMqAUEcAAEHAZUBsAH/AQAB0gH6Af8BjQHkAfQB/wGhAesB9gH/ASAB1wHyAf8BAAG5Ae4B/wEA + AacB6AH/AQABnAHaAf8BAAEYAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEqASEB+wMA + Af8DAAH/AwAB/wFhAlgB5gJgAVwB1ANgAdQDWQHCAbkBnAGIAf8DVQGyCAABugGlAZYB/wP+Af8D/gH/ + A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wH/AfgB4QHSAf8B9wHbAckB/wHQAbkBqwH/ + ARMCAAH/FAAB5wGzASwB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/AakCAAH/ + AZkCAAH/AZkCAAH/AZkCAAH/AwQBBRgAAQkBmQG1Af8BAAHRAfsB/wGOAeQB9QH/AaEB6wH2Af8BIAHX + AfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARsBigH/EAADZQH0BP8DVwHfAx0BKgNcAc0F/wH+ + AfcC/wHxAeYB/wH6AeMB1AH/AfMB1wHHAf8DSgGNAx0BKgNcAd8B7wHWAccB/wFkAlIB9AgAAb4BqQGa + Af8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAS4B/wGaAYMBIgH/AfsB7AHjAf8BiQEhAQ8B/wGD + ARsBCAH/AdEBwQG2Af8BEwIAAf8UAANFAXwB5QGyASsB/wH0AcABiwL/Ac0BmQL/Ac0BmQH/Af4B0AGh + Af8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZAgAB/xwAAQwBmwG3Af8BAAHQAfkB/wGNAeMB9QH/AaEB6wH2 + Af8BIgHZAfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAAR0BjQH/EAADVQGyAfIB5gHeAf8DWQHC + A1wB1AFgAlwB1ANhAeIB0wG1AaIB/wNNAfoB2gHAAa8B/wNfAfMDWwHWAWACXAHUA1kBwgHLAbEBoQH/ + A1UBsggAAcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wH6 + AecB2wH/AdEBwQG2Af8BEwIAAf8YAANGAX8B5AGwASkB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGh + Af8B+wHYAbIB/wGpAgAB/wGZAgAB/xwAAQ4BngG6Af8BAAHQAfkB/wGNAeMB9AH/AaEB6wH2Af8BHwHX + AfIB/wEAAbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAAR8BjwH/EAADNQFVA2QB5wHtAeEB1wP/Af0C/wH3 + AfEB/wHYAcQBtwH/A2QB5wNLAY4DZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnAzUBVQgA + AcgBsgGjAf8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOAS4B/wGZAYQBIgH/Af0B9wHzAf8BiAEh + AQ4B/wGDARsBCAH/AdEBwQG2Af8BEwIAAf8cAANJAYcB4wGvASgB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/ + Af4B0AGhAf8B8gHJAZ0B/wGwAQoBAAH/HAABDwGiAbwB/wEAAc4B9wH/AYsB4wH0Af8BoQHrAfYB/wEe + AdYB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABIAGSAf8UAAMxAU0DUgGhA18B4wNfAeMDUgGh + AzEBTQQAAzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+Af8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wH9AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARMCAAH/IAADSQGHAeMBrwEoAf8B9gHE + AZAC/wHNAZkB/wHzAcIBjgH/AeMBsAEpAf8DQwF4HAABGwGpAcAB/wEGAdQB+gH/AZwB7AH6Af8BqwHv + AfoB/wGmAe0B+AH/AZQB5wH4Af8BIQHZAfYB/wEAAb0B6QH/AQABLAGXAf9UAAHqAaoBiwH/AeoBqgGL + Af8B6gGqAYsB/wHpAaUBhAH/AecBlwEeAf8B5gGOARIB/wHjAS0BAAH/AeMBJgEAAf8B4gEiAQAB/wHi + ASIBAAH/AeIBIgEAAf8ByAESAQAB/yQAA0kBhwHjAa8BKAH/Ae4BvQGKAf8B4wGwASkB/wM0AVQgAAGA + AbMBxQH/AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AaAB3wHq + Af8BFgGRAaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGwAYsB/wH4 + AacBLQH/AfYBogEnAf8B9QGdASEB/wH1AZkBGgH/AfMBlQEVAf8BzQEVAQAB/ygAA0ABbgHlAbIBLQH/ + AyYBOCQAAzsBYwNgAdYBJgGrAboB/wEgAaMBswH/ARwBnQGvAf8BGwGbAa4B/wEfAaIBtAH/A14B2QNA + AW9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEvAf8B6AGbASYB/wHmAY4BEgH/ + AeUBhwEIAf8B5AGBAQAB/wHkASsBAAH/AeMBJgEAAf8B4gEiAQAB//8A/wAKAAFCAU0BPgcAAT4DAAEo + AwABQAMAAUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIAAcABBwHzAZ8B/wMAAYABAwHn + Ac8B/wHAAgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMAAQEBzwHnAYEEAAEBAecBzwUA + AQEB5wHPBQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIAAYABAwL/AcABPwIAAeABBwL/ + AeABfwIAAfABHwL/AfAB/wIAAv8B/AF/Bv8B/AF/BP8B/AF/AfwBfwE/AXMC/wH4AT8B/AF/AfkB4AHw + AQcB8AEfAfwBfwH/AUEB8AEHAfABDwH8AX8CgAHwAQcB8AEPAfwBfwHBAQAB8AEHAeABDwH4AT8B/wEA + AfABBwHgAQ8B8AEfAYEBAAHwAQcB4AEPAeABDwH/AQAB8AEHAfgBDwHgAQ8B4AEAAfABBwH8AR8B4AEP + Af8BAQHwAQcB/gE/AeMBjwH/AYMC/wH9AX8B4AEPAf8BxwT/AeABDwH/Ae8E/wHwAR8M/wH4B/8B8AF/ + AfABBwT/AeABPwHwAQcC/wHAAQMB4AEfAfABBwHAAYEBwAEDAeABDwHwAQcBgAEAAcABAwHgAQcB8AEH + AYABAAHAAQMB4AEDAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHwAQcB8AEHAYABAAHAAQMB+AEH + AfABBwHAAYEBwAEDAfwBBwHwAQcC/wHAAQMB/gEPAfABBwL/AcABAwH/AR8B8AEHAv8BwAEDEP8L diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index b2b7a1322..7a54f9a90 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -219,10 +219,10 @@ internal void AddNewQueryTab() this.tabsFactory.AddNewQueryTab(); } - public void SetAplicationService(IApplicationService applicationService) + internal void SetAplicationService(TabsFactory tabsFactory) { - this.tabsFactory = new TabsFactory(this, applicationService); - this.objectExplorer.TabsFactory = this.tabsFactory; + this.tabsFactory = tabsFactory; + this.objectExplorer.TabsFactory = tabsFactory; } internal void AllowSetParameters(bool allow) diff --git a/Src/SwqlStudio/ServerList.cs b/Src/SwqlStudio/ServerList.cs index bbe862bb2..3bcdda8b2 100644 --- a/Src/SwqlStudio/ServerList.cs +++ b/Src/SwqlStudio/ServerList.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; namespace SwqlStudio { @@ -10,12 +11,20 @@ internal class ServerList private readonly Dictionary metadataProviders = new Dictionary(); + internal List Connections + { + get { return this.connections.Values.ToList(); } + } + + public event EventHandler ConnectionsChanged; + public IMetadataProvider Add(ConnectionInfo connection) { string key = GetKey(connection); connections.Add(key, connection); var provider = new SwisMetaDataProvider(connection); metadataProviders[connection] = provider; + ConnectionsChanged(this, EventArgs.Empty); return provider; } @@ -24,6 +33,7 @@ public void Remove(ConnectionInfo connection) string key = GetKey(connection); connections.Remove(key); metadataProviders.Remove(connection); + ConnectionsChanged(this, EventArgs.Empty); } public bool Exists(ConnectionInfo connection) diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index 80a1b778c..15ee0abce 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -14,15 +14,15 @@ internal class TabsFactory : ITabsFactory { private static readonly SolarWinds.Logging.Log log = new SolarWinds.Logging.Log(); - private readonly ServerList serverList = new ServerList(); - + private readonly ServerList serverList; private readonly QueriesDockPanel dockPanel; private readonly IApplicationService applicationService; - internal TabsFactory(QueriesDockPanel dockPanel, IApplicationService applicationService) + internal TabsFactory(QueriesDockPanel dockPanel, IApplicationService applicationService, ServerList serverList) { this.dockPanel = dockPanel; this.applicationService = applicationService; + this.serverList = serverList; } public void AddTextToEditor(string text, ConnectionInfo info) From 88a87c9535e25ffde7fa2aa069339de64199286a Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 5 Mar 2018 23:27:41 +0100 Subject: [PATCH 07/24] Removed application service from IConnectionTab --- Src/SwqlStudio/ActivityMonitorTab.cs | 13 +++++++------ Src/SwqlStudio/CrudTab.cs | 3 --- Src/SwqlStudio/IConnectionTab.cs | 1 - Src/SwqlStudio/InvokeVerbTab.cs | 1 - Src/SwqlStudio/QueryTab.cs | 9 +++++---- Src/SwqlStudio/TabsFactory.cs | 7 +++---- 6 files changed, 15 insertions(+), 19 deletions(-) diff --git a/Src/SwqlStudio/ActivityMonitorTab.cs b/Src/SwqlStudio/ActivityMonitorTab.cs index 894ff95a0..d0a65e23d 100644 --- a/Src/SwqlStudio/ActivityMonitorTab.cs +++ b/Src/SwqlStudio/ActivityMonitorTab.cs @@ -1,5 +1,6 @@ using System; using System.Windows.Forms; +using SwqlStudio.Subscriptions; namespace SwqlStudio { @@ -7,6 +8,10 @@ public partial class ActivityMonitorTab : UserControl, IConnectionTab { private string subscriptionId; + public ConnectionInfo ConnectionInfo { get; set; } + + public SubscriptionManager SubscriptionManager { get; set; } + public ActivityMonitorTab() { InitializeComponent(); @@ -17,12 +22,10 @@ void ActivityMonitorTabDisposed(object sender, EventArgs e) { if (String.IsNullOrEmpty(subscriptionId) && ConnectionInfo.IsConnected) { - ApplicationService.SubscriptionManager.Unsubscribe(ConnectionInfo, subscriptionId); + this.SubscriptionManager.Unsubscribe(ConnectionInfo, subscriptionId); } } - public IApplicationService ApplicationService { get; set; } - private void SubscriptionIndicationReceived(IndicationEventArgs e) { BeginInvoke(new Action(AddIndication), e); @@ -41,8 +44,6 @@ private void AddIndication(IndicationEventArgs obj) item.EnsureVisible(); } - public ConnectionInfo ConnectionInfo { get; set; } - public void Start() { backgroundWorker1.RunWorkerAsync(); @@ -55,7 +56,7 @@ private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWor backgroundWorker1.ReportProgress(0, "Starting subscription..."); try { - subscriptionId = ApplicationService.SubscriptionManager.CreateSubscription(ConnectionInfo, "SUBSCRIBE System.QueryExecuted", SubscriptionIndicationReceived); + subscriptionId = this.SubscriptionManager.CreateSubscription(ConnectionInfo, "SUBSCRIBE System.QueryExecuted", SubscriptionIndicationReceived); backgroundWorker1.ReportProgress(0, "Waiting for notifications"); } catch (ApplicationException ex) diff --git a/Src/SwqlStudio/CrudTab.cs b/Src/SwqlStudio/CrudTab.cs index 3099a0333..423eeb1b7 100644 --- a/Src/SwqlStudio/CrudTab.cs +++ b/Src/SwqlStudio/CrudTab.cs @@ -31,9 +31,6 @@ public Entity Entity } } - /// - public IApplicationService ApplicationService { get; set; } - /// public ConnectionInfo ConnectionInfo { get; set; } diff --git a/Src/SwqlStudio/IConnectionTab.cs b/Src/SwqlStudio/IConnectionTab.cs index b0ec78fe5..6f3b6c518 100644 --- a/Src/SwqlStudio/IConnectionTab.cs +++ b/Src/SwqlStudio/IConnectionTab.cs @@ -2,7 +2,6 @@ namespace SwqlStudio { public interface IConnectionTab { - IApplicationService ApplicationService { get; set; } ConnectionInfo ConnectionInfo { get; set; } } } \ No newline at end of file diff --git a/Src/SwqlStudio/InvokeVerbTab.cs b/Src/SwqlStudio/InvokeVerbTab.cs index b2feb69c8..344189d6e 100644 --- a/Src/SwqlStudio/InvokeVerbTab.cs +++ b/Src/SwqlStudio/InvokeVerbTab.cs @@ -17,7 +17,6 @@ public InvokeVerbTab() InitializeComponent(); } - public IApplicationService ApplicationService { get; set; } public ConnectionInfo ConnectionInfo { get; set; } private int locationX = 0; private int locationY = 0; diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 0d7a5a062..40f2c167e 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -13,6 +13,7 @@ using SolarWinds.InformationService.Contract2; using SwqlStudio.Playback; using SwqlStudio.Properties; +using SwqlStudio.Subscriptions; namespace SwqlStudio { @@ -35,6 +36,8 @@ enum Tabs } private Font nullFont; + public IApplicationService ApplicationService { get; set; } + public SubscriptionManager SubscriptionManager { get; set; } public QueryTab() { @@ -74,12 +77,10 @@ private void Unsubscribe() { if (!String.IsNullOrEmpty(subscriptionId)) { - ApplicationService.SubscriptionManager.Unsubscribe(ConnectionInfo, subscriptionId); + this.SubscriptionManager.Unsubscribe(ConnectionInfo, subscriptionId); } } - public IApplicationService ApplicationService { get; set; } - private void ShowTabs(Tabs tabsToShow) { tabControl1.TabPages.Clear(); @@ -689,7 +690,7 @@ private void subscriptionWorker_DoWork(object sender, System.ComponentModel.DoWo try { - subscriptionId = ApplicationService.SubscriptionManager.CreateSubscription(ConnectionInfo, arg.Query, + subscriptionId = this.SubscriptionManager.CreateSubscription(ConnectionInfo, arg.Query, SubscriptionIndicationReceived); subscriptionWorker.ReportProgress(0, "Waiting for notifications"); diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index 15ee0abce..507c71331 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -40,7 +40,7 @@ public void OpenActivityMonitor(string title, ConnectionInfo info) { ConnectionInfo = info, Dock = DockStyle.Fill, - ApplicationService = this.applicationService + SubscriptionManager = this.applicationService.SubscriptionManager }; AddNewTab(activityMonitorTab, title); activityMonitorTab.Start(); @@ -52,7 +52,6 @@ public void OpenInvokeTab(string title, ConnectionInfo info, Verb verb) { ConnectionInfo = info, Dock = DockStyle.Fill, - ApplicationService = this.applicationService, Verb = verb }; AddNewTab(invokeVerbTab, title); @@ -66,7 +65,6 @@ public void OpenCrudTab(CrudOperation operation, ConnectionInfo info, Entity ent { ConnectionInfo = info, Dock = DockStyle.Fill, - ApplicationService = this.applicationService, Entity = entity }; @@ -202,7 +200,8 @@ private QueryTab CreateQueryTab(string title, ConnectionInfo info) { ConnectionInfo = info, Dock = DockStyle.Fill, - ApplicationService = this.applicationService + ApplicationService = this.applicationService, + SubscriptionManager = this.applicationService.SubscriptionManager }; IMetadataProvider provider; From 2088c72384f71e59de2c191a58001de1647d7d0e Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 00:26:20 +0100 Subject: [PATCH 08/24] Fixed application crash in ActivityMonitorTab --- Src/SwqlStudio/ActivityMonitorTab.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Src/SwqlStudio/ActivityMonitorTab.cs b/Src/SwqlStudio/ActivityMonitorTab.cs index d0a65e23d..e1dae0605 100644 --- a/Src/SwqlStudio/ActivityMonitorTab.cs +++ b/Src/SwqlStudio/ActivityMonitorTab.cs @@ -20,7 +20,7 @@ public ActivityMonitorTab() void ActivityMonitorTabDisposed(object sender, EventArgs e) { - if (String.IsNullOrEmpty(subscriptionId) && ConnectionInfo.IsConnected) + if (!String.IsNullOrEmpty(subscriptionId) && ConnectionInfo.IsConnected) { this.SubscriptionManager.Unsubscribe(ConnectionInfo, subscriptionId); } @@ -28,7 +28,10 @@ void ActivityMonitorTabDisposed(object sender, EventArgs e) private void SubscriptionIndicationReceived(IndicationEventArgs e) { - BeginInvoke(new Action(AddIndication), e); + if (this.IsDisposed) + return; + + BeginInvoke(new Action(AddIndication), e); } private void AddIndication(IndicationEventArgs obj) From 893039a87f0f5a0c7d77b08147da7e75cd179090 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 01:47:38 +0100 Subject: [PATCH 09/24] Added option to allow connection change only when aplicable --- Src/SwqlStudio/ActivityMonitorTab.cs | 7 ++++++- Src/SwqlStudio/IApplicationService.cs | 2 ++ Src/SwqlStudio/IDynamicConnection.cs | 7 +++++++ Src/SwqlStudio/MainForm.cs | 12 ++++++++++++ Src/SwqlStudio/QueryTab.cs | 15 +++++++++++++-- Src/SwqlStudio/SwqlStudio.csproj | 1 + 6 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 Src/SwqlStudio/IDynamicConnection.cs diff --git a/Src/SwqlStudio/ActivityMonitorTab.cs b/Src/SwqlStudio/ActivityMonitorTab.cs index e1dae0605..351d9211f 100644 --- a/Src/SwqlStudio/ActivityMonitorTab.cs +++ b/Src/SwqlStudio/ActivityMonitorTab.cs @@ -4,7 +4,7 @@ namespace SwqlStudio { - public partial class ActivityMonitorTab : UserControl, IConnectionTab + public partial class ActivityMonitorTab : UserControl, IConnectionTab, IDynamicConnection { private string subscriptionId; @@ -12,6 +12,11 @@ public partial class ActivityMonitorTab : UserControl, IConnectionTab public SubscriptionManager SubscriptionManager { get; set; } + public bool AllowsChangeConnection + { + get { return false; } + } + public ActivityMonitorTab() { InitializeComponent(); diff --git a/Src/SwqlStudio/IApplicationService.cs b/Src/SwqlStudio/IApplicationService.cs index dcae5b43c..a92b17a86 100644 --- a/Src/SwqlStudio/IApplicationService.cs +++ b/Src/SwqlStudio/IApplicationService.cs @@ -8,5 +8,7 @@ public interface IApplicationService PropertyBag QueryParameters { get; set; } SubscriptionManager SubscriptionManager { get; } + + void RefreshDynamiConnections(); } } diff --git a/Src/SwqlStudio/IDynamicConnection.cs b/Src/SwqlStudio/IDynamicConnection.cs new file mode 100644 index 000000000..443bc14ec --- /dev/null +++ b/Src/SwqlStudio/IDynamicConnection.cs @@ -0,0 +1,7 @@ +namespace SwqlStudio +{ + internal interface IDynamicConnection + { + bool AllowsChangeConnection { get; } + } +} \ No newline at end of file diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index f542fb7b9..5b9905816 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -49,6 +49,18 @@ private void InitializeDockPanel() this.serverList.ConnectionsChanged += ServerListOnConnectionsChanged; var tabsFactory = new TabsFactory(this.filesDock, this, this.serverList); this.filesDock.SetAplicationService(tabsFactory); + this.filesDock.ActiveContentChanged += FilesDock_ActiveContentChanged; + } + + private void FilesDock_ActiveContentChanged(object sender, EventArgs e) + { + this.RefreshDynamiConnections(); + } + + public void RefreshDynamiConnections() + { + var dynamicConnectionTab = this.filesDock.ActiveConnectionTab as IDynamicConnection; + this.connectionsCombobox.Enabled = dynamicConnectionTab == null || dynamicConnectionTab.AllowsChangeConnection; } private void ServerListOnConnectionsChanged(object sender, EventArgs eventArgs) diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 40f2c167e..6bad26b30 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -17,12 +17,19 @@ namespace SwqlStudio { - public partial class QueryTab : UserControl, IConnectionTab + public partial class QueryTab : UserControl, IConnectionTab, IDynamicConnection { private static readonly Regex queryParamRegEx = new Regex(@"\@([\w.$]+|""[^""]+""|'[^']+')", RegexOptions.Compiled); private string subscriptionId; + private bool HasSubscription + { + get { return !String.IsNullOrEmpty(subscriptionId); } + } + + public bool AllowsChangeConnection => !this.HasSubscription; + [Flags] enum Tabs { @@ -75,9 +82,10 @@ void QueryTabDisposed(object sender, EventArgs e) private void Unsubscribe() { - if (!String.IsNullOrEmpty(subscriptionId)) + if (HasSubscription) { this.SubscriptionManager.Unsubscribe(ConnectionInfo, subscriptionId); + this.subscriptionId = string.Empty; } } @@ -317,9 +325,12 @@ public void RunQuery() } else { + ShowTabs(Tabs.Results); queryStatusBar1.UpdateStatusLabel("Running query..."); queryWorker.RunWorkerAsync(new QueryArguments(connection, query)); } + + this.ApplicationService.RefreshDynamiConnections(); } void SubscriptionIndicationReceived(IndicationEventArgs e) diff --git a/Src/SwqlStudio/SwqlStudio.csproj b/Src/SwqlStudio/SwqlStudio.csproj index 594f43879..32b11132a 100644 --- a/Src/SwqlStudio/SwqlStudio.csproj +++ b/Src/SwqlStudio/SwqlStudio.csproj @@ -144,6 +144,7 @@ EntityClassGraphForm.cs + From 3132482414bd91f1d124b17d17326374a2e6c689 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 10:56:15 +0100 Subject: [PATCH 10/24] If first connection is created, it is now automaticaly selected in main window. --- Src/SwqlStudio/MainForm.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 5b9905816..27a3cbe7a 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -1,6 +1,8 @@ using System; +using System.Collections.Generic; using System.ComponentModel; using System.IO; +using System.Linq; using System.ServiceModel; using System.Windows.Forms; using SolarWinds.InformationService.Contract2; @@ -67,7 +69,12 @@ private void ServerListOnConnectionsChanged(object sender, EventArgs eventArgs) { var connectionsDropDown = this.connectionsCombobox.ComboBox; var lastSelected = this.connectionsCombobox.SelectedItem; - connectionsDropDown.DataSource = new BindingList(this.serverList.Connections); + List serverListConnections = this.serverList.Connections; + connectionsDropDown.DataSource = new BindingList(serverListConnections); + + if(lastSelected == null && serverListConnections.Any()) + lastSelected = serverListConnections.First(); + this.connectionsCombobox.SelectedItem = lastSelected; } From 92a0d442d4d563697125beb74b3b7ee3616f951a Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 19:07:29 +0100 Subject: [PATCH 11/24] Removed ActiveConneciton from DockPanel --- Src/SwqlStudio/IApplicationService.cs | 2 ++ Src/SwqlStudio/MainForm.cs | 6 +++++- Src/SwqlStudio/QueriesDockPanel.cs | 10 ---------- Src/SwqlStudio/TabsFactory.cs | 4 ++-- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Src/SwqlStudio/IApplicationService.cs b/Src/SwqlStudio/IApplicationService.cs index a92b17a86..8489468d0 100644 --- a/Src/SwqlStudio/IApplicationService.cs +++ b/Src/SwqlStudio/IApplicationService.cs @@ -9,6 +9,8 @@ public interface IApplicationService SubscriptionManager SubscriptionManager { get; } + ConnectionInfo SelectedConnection { get; } + void RefreshDynamiConnections(); } } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 27a3cbe7a..8718725cf 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -29,6 +29,10 @@ public PropertyBag QueryParameters public SubscriptionManager SubscriptionManager { get; } = new SubscriptionManager(); + public ConnectionInfo SelectedConnection + { + get { return this.connectionsCombobox.SelectedItem as ConnectionInfo; } + } public MainForm() { @@ -316,7 +320,7 @@ private void parametersToolStripMenuItem_Click(object sender, EventArgs e) private void enumEntitiesToolStripMenuItem_Click(object sender, EventArgs e) { - ConnectionInfo connection = this.filesDock.ActiveConnectionInfo; + ConnectionInfo connection = this.SelectedConnection; if (connection == null) return; // should we try to connect? diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index 7a54f9a90..92fa088f3 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -34,16 +34,6 @@ internal SciTextEditorControl ActiveEditor } } - internal ConnectionInfo ActiveConnectionInfo - { - get - { - var tab = ActiveConnectionTab; - if (tab == null) return null; - return tab.ConnectionInfo; - } - } - internal QueryTab ActiveQueryTab { get diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index 507c71331..07af6c287 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -28,7 +28,7 @@ internal TabsFactory(QueriesDockPanel dockPanel, IApplicationService application public void AddTextToEditor(string text, ConnectionInfo info) { if (info == null) - info = this.dockPanel.ActiveConnectionInfo; + info = this.applicationService.SelectedConnection; CreateQueryTab(info.Title, info); this.dockPanel.ActiveQueryTab.QueryText = text; @@ -143,7 +143,7 @@ internal void AddNewQueryTab() internal void OpenFiles(string[] files) { - var connectionInfo = this.dockPanel.ActiveConnectionInfo; + var connectionInfo = this.applicationService.SelectedConnection; if (connectionInfo == null) return; From 32bb5d3d153da3587ee12029ae64e79b9c524278 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 20:28:38 +0100 Subject: [PATCH 12/24] Merged AddNewTab usages in object explorer --- .../ObjectExplorer/ObjectExplorer.cs | 23 +++++++++---------- Src/SwqlStudio/TabsFactory.cs | 3 +++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index 4b492698c..303e9327b 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -423,13 +423,8 @@ public void GenerateSelectStatement(Entity table, bool includeInheritedPropertie { if (table != null) { - string swql = GenerateSwql(table, includeInheritedProperties); - - ConnectionInfo connection = null; - if ((_contextMenuNode as TreeNodeWithConnectionInfo) != null) - connection = (_contextMenuNode as TreeNodeWithConnectionInfo).Connection; - - TabsFactory.AddTextToEditor(swql, connection); + string query = GenerateSwql(table, includeInheritedProperties); + AddTextEditor(query); } } @@ -824,12 +819,16 @@ private void StartSubscription(object sender, EventArgs e) if (table != null) { string query = string.Format(table.IsIndication ? "SUBSCRIBE {0}" : "SUBSCRIBE CHANGES TO {0}", table.FullName); + AddTextEditor(query); + } + } - ConnectionInfo connection = null; - if ((_contextMenuNode as TreeNodeWithConnectionInfo) != null) - connection = (_contextMenuNode as TreeNodeWithConnectionInfo).Connection; - - TabsFactory.AddTextToEditor(query, connection); + private void AddTextEditor(string query) + { + var node = _contextMenuNode as TreeNodeWithConnectionInfo; + if (node != null) + { + TabsFactory.AddTextToEditor(query, node.Connection); } } } diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index 07af6c287..ad70fff3c 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -29,6 +29,9 @@ public void AddTextToEditor(string text, ConnectionInfo info) { if (info == null) info = this.applicationService.SelectedConnection; + + if (info == null) + return; CreateQueryTab(info.Title, info); this.dockPanel.ActiveQueryTab.QueryText = text; From ebd4feebbace7a5abdb068de2ee8c238bf5ffb47 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 21:00:42 +0100 Subject: [PATCH 13/24] Moved AllowsChangeConnection to IConnectionTab --- Src/SwqlStudio/ActivityMonitorTab.cs | 2 +- Src/SwqlStudio/CrudTab.cs | 2 ++ Src/SwqlStudio/IConnectionTab.cs | 2 ++ Src/SwqlStudio/IDynamicConnection.cs | 7 ------- Src/SwqlStudio/InvokeVerbTab.cs | 1 + Src/SwqlStudio/MainForm.cs | 4 ++-- Src/SwqlStudio/QueryTab.cs | 2 +- Src/SwqlStudio/SwqlStudio.csproj | 1 - 8 files changed, 9 insertions(+), 12 deletions(-) delete mode 100644 Src/SwqlStudio/IDynamicConnection.cs diff --git a/Src/SwqlStudio/ActivityMonitorTab.cs b/Src/SwqlStudio/ActivityMonitorTab.cs index 351d9211f..3a3e7fa78 100644 --- a/Src/SwqlStudio/ActivityMonitorTab.cs +++ b/Src/SwqlStudio/ActivityMonitorTab.cs @@ -4,7 +4,7 @@ namespace SwqlStudio { - public partial class ActivityMonitorTab : UserControl, IConnectionTab, IDynamicConnection + public partial class ActivityMonitorTab : UserControl, IConnectionTab { private string subscriptionId; diff --git a/Src/SwqlStudio/CrudTab.cs b/Src/SwqlStudio/CrudTab.cs index 423eeb1b7..b87fca071 100644 --- a/Src/SwqlStudio/CrudTab.cs +++ b/Src/SwqlStudio/CrudTab.cs @@ -34,6 +34,8 @@ public Entity Entity /// public ConnectionInfo ConnectionInfo { get; set; } + public bool AllowsChangeConnection => true; + public event EventHandler CloseItself; private void CreateSubComponents() diff --git a/Src/SwqlStudio/IConnectionTab.cs b/Src/SwqlStudio/IConnectionTab.cs index 6f3b6c518..61f55b0c7 100644 --- a/Src/SwqlStudio/IConnectionTab.cs +++ b/Src/SwqlStudio/IConnectionTab.cs @@ -3,5 +3,7 @@ namespace SwqlStudio public interface IConnectionTab { ConnectionInfo ConnectionInfo { get; set; } + + bool AllowsChangeConnection { get; } } } \ No newline at end of file diff --git a/Src/SwqlStudio/IDynamicConnection.cs b/Src/SwqlStudio/IDynamicConnection.cs deleted file mode 100644 index 443bc14ec..000000000 --- a/Src/SwqlStudio/IDynamicConnection.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SwqlStudio -{ - internal interface IDynamicConnection - { - bool AllowsChangeConnection { get; } - } -} \ No newline at end of file diff --git a/Src/SwqlStudio/InvokeVerbTab.cs b/Src/SwqlStudio/InvokeVerbTab.cs index 344189d6e..00e11e846 100644 --- a/Src/SwqlStudio/InvokeVerbTab.cs +++ b/Src/SwqlStudio/InvokeVerbTab.cs @@ -18,6 +18,7 @@ public InvokeVerbTab() } public ConnectionInfo ConnectionInfo { get; set; } + public bool AllowsChangeConnection => true; private int locationX = 0; private int locationY = 0; diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 8718725cf..13c023b22 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -65,8 +65,8 @@ private void FilesDock_ActiveContentChanged(object sender, EventArgs e) public void RefreshDynamiConnections() { - var dynamicConnectionTab = this.filesDock.ActiveConnectionTab as IDynamicConnection; - this.connectionsCombobox.Enabled = dynamicConnectionTab == null || dynamicConnectionTab.AllowsChangeConnection; + IConnectionTab activeConnectionTab = this.filesDock.ActiveConnectionTab; + this.connectionsCombobox.Enabled = activeConnectionTab == null || activeConnectionTab.AllowsChangeConnection; } private void ServerListOnConnectionsChanged(object sender, EventArgs eventArgs) diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 6bad26b30..24cd06c07 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -17,7 +17,7 @@ namespace SwqlStudio { - public partial class QueryTab : UserControl, IConnectionTab, IDynamicConnection + public partial class QueryTab : UserControl, IConnectionTab { private static readonly Regex queryParamRegEx = new Regex(@"\@([\w.$]+|""[^""]+""|'[^']+')", RegexOptions.Compiled); diff --git a/Src/SwqlStudio/SwqlStudio.csproj b/Src/SwqlStudio/SwqlStudio.csproj index 32b11132a..594f43879 100644 --- a/Src/SwqlStudio/SwqlStudio.csproj +++ b/Src/SwqlStudio/SwqlStudio.csproj @@ -144,7 +144,6 @@ EntityClassGraphForm.cs - From 0cb33b82d2ad12636d89db505b92d5b0c81c2d5c Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 21:51:09 +0100 Subject: [PATCH 14/24] Implemented changing of connection from main toolbar combobox --- Src/SwqlStudio/IApplicationService.cs | 2 +- Src/SwqlStudio/MainForm.Designer.cs | 1 + Src/SwqlStudio/MainForm.cs | 19 +- Src/SwqlStudio/MainForm.resx | 360 +++++++++++++------------- Src/SwqlStudio/QueriesDockPanel.cs | 2 +- Src/SwqlStudio/QueryTab.cs | 7 +- 6 files changed, 203 insertions(+), 188 deletions(-) diff --git a/Src/SwqlStudio/IApplicationService.cs b/Src/SwqlStudio/IApplicationService.cs index 8489468d0..baa1954e0 100644 --- a/Src/SwqlStudio/IApplicationService.cs +++ b/Src/SwqlStudio/IApplicationService.cs @@ -11,6 +11,6 @@ public interface IApplicationService ConnectionInfo SelectedConnection { get; } - void RefreshDynamiConnections(); + void RefreshSelectedConnections(); } } diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index 6b1ac5e95..e7cb5120a 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -460,6 +460,7 @@ private void InitializeComponent() this.connectionsCombobox.DropDownWidth = 300; this.connectionsCombobox.Name = "connectionsCombobox"; this.connectionsCombobox.Size = new System.Drawing.Size(250, 25); + this.connectionsCombobox.SelectedIndexChanged += new System.EventHandler(this.connectionsCombobox_SelectedIndexChanged); // // executeToolButton // diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 13c023b22..84e389f2d 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -60,10 +60,16 @@ private void InitializeDockPanel() private void FilesDock_ActiveContentChanged(object sender, EventArgs e) { - this.RefreshDynamiConnections(); + this.RefreshSelectedConnections(); + + IConnectionTab activeConnectionTab = this.filesDock.ActiveConnectionTab; + if (activeConnectionTab != null) + { + this.connectionsCombobox.SelectedItem = activeConnectionTab.ConnectionInfo; + } } - public void RefreshDynamiConnections() + public void RefreshSelectedConnections() { IConnectionTab activeConnectionTab = this.filesDock.ActiveConnectionTab; this.connectionsCombobox.Enabled = activeConnectionTab == null || activeConnectionTab.AllowsChangeConnection; @@ -431,5 +437,14 @@ private void discoverQueryParametersToolStripMenuItem_CheckedChanged(object send { this.filesDock.AllowSetParameters(this.discoverQueryParametersMenuItem.Checked); } + + private void connectionsCombobox_SelectedIndexChanged(object sender, EventArgs e) + { + IConnectionTab activeConnectionTab = this.filesDock.ActiveConnectionTab; + if (activeConnectionTab != null && this.SelectedConnection != null) + { + activeConnectionTab.ConnectionInfo = this.SelectedConnection; + } + } } } diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index 22840979c..debac92e1 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -161,202 +161,202 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABA - MAAAAk1TRnQBSQFMAgEBDgEAASQBAgEkAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A00B/wPAAf8D9AH/A9YB/wM4Tf8DAAH/AwAB/wFGAWkBuRH/ - gAAE/wO0Af8DFgH/AxYB/wMWAf8Dok3/AwAB/wMAAf8BRgFpAbkB/wMADf+AAAT/A/IB/wMvAf8D6AH/ - AzEB/wPoAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAEf8BtwGi - AZMB/wFSATgBJAH/AVIBOAEkAf8BUgE4ASQB/wFSATgBJAn/AwAB/wFGAWkBuQH/AUYBaQG5Af8BUgE4 - ASQB/wMACf+AAAT/A/kB/wONAf8DVgH/A2AB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wETAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DbgH/AVIBOAEkAf8BUgE4ASQB/wMABf+AAAT/A/0B/wPb - Af8DFgH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BLgH/AZoBgwEiAf8B9gHWAcIB/wGIASEBDgH/AYMBGwEI - Af8BzwG0AaMB/wETAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BbQH/ - AZoBgwFhCf8DAAH/A24B/wFSATgBJAH/AVIBOAEkAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BEwIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNu - Af8BUgE4ASQB/wFSATgBJAH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEu - Af8BmgGDASIB/wH7AewB4wH/AYkBIQEPAf8BgwEbAQgB/wHRAcEBtgH/ARMCABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAW0B/wGaAYMBYQH/AfsB7AHjAf8BiQFgAU4J/wMAAf8DbgH/ - AVIBOAEkAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BEwIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A24B/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BLgH/AZkBhAEiAf8B/QH3AfMB/wGIASEBDgH/AYMBGwEIAf8B0QHBAbYB/wET - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFtAf8BmQGEAWEB/wH9AfcB8wH/ - AYgBYAFNAf8BgwFaAUcB/wHRAcEBtgn/AVIBOAEkAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wETAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BUgE4ASQJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBHgH/AeYBjgESAf8B4wEtAQAB/wHj - ASYBAAH/AeIBIgEAAf8B4gEiAQAB/wHiASIBAAH/AcgBEgEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBXQH/AeYBjgFRAf8B4wFsATkB/wHjAWUBLwH/AeIBYQEoAf8B4gFhASgB/wHi - AWEBKAH/AcgBUQEeCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBLQH/AfYBogEnAf8B9QGdASEB/wH1AZkBGgH/AfMBlQEVAf8BzQEVAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWwB/wH2AaIBZgH/AfUBnQFg - Af8B9QGZAVkB/wHzAZUBVAH/Ac0BVAEgCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhAS8B/wHoAZsBJgH/AeYBjgESAf8B5QGHAQgB/wHkAYEBAAH/AeQBKwEAAf8B4wEmAQAB/wHi - ASIBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAW4B/wHoAZsBZQH/AeYBjgFR - Af8B5QGHAUcB/wHkAYEBPQH/AeQBagE1Af8B4wFlAS0B/wHiAWEBKAn/gACA/4AAgP//ACkAAdMB3wHr + MAAAAk1TRnQBSQFMAgEBDgEAASwBAgEsAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0wB/wPAAf8D9AH/A9YB/wM3Tf8DAAH/AwAB/wFFAWgBuRH/ + gAAE/wO0Af8DFQH/AxUB/wMVAf8Dok3/AwAB/wMAAf8BRQFoAbkB/wMADf+AAAT/A/IB/wMuAf8D6AH/ + AzAB/wPoAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAEf8BtwGi + AZMB/wFRATcBIwH/AVEBNwEjAf8BUQE3ASMB/wFRATcBIwn/AwAB/wFFAWgBuQH/AUUBaAG5Af8BUQE3 + ASMB/wMACf+AAAT/A/kB/wONAf8DVQH/A18B/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wESAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DbQH/AVEBNwEjAf8BUQE3ASMB/wMABf+AAAT/A/0B/wPb + Af8DFQH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BLQH/AZoBgwEhAf8B9gHWAcIB/wGIASABDQH/AYMBGgEH + Af8BzwG0AaMB/wESAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BbAH/ + AZoBgwFgCf8DAAH/A20B/wFRATcBIwH/AVEBNwEjAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BEgIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNt + Af8BUQE3ASMB/wFRATcBIwH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEt + Af8BmgGDASEB/wH7AewB4wH/AYkBIAEOAf8BgwEaAQcB/wHRAcEBtgH/ARICABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWwB/wGaAYMBYAH/AfsB7AHjAf8BiQFfAU0J/wMAAf8DbQH/ + AVEBNwEjAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BEgIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A20B/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BLQH/AZkBhAEhAf8B/QH3AfMB/wGIASABDQH/AYMBGgEHAf8B0QHBAbYB/wES + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFsAf8BmQGEAWAB/wH9AfcB8wH/ + AYgBXwFMAf8BgwFZAUYB/wHRAcEBtgn/AVEBNwEjAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wESAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BUQE3ASMJ/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBHQH/AeYBjgERAf8B4wEsAQAB/wHj + ASUBAAH/AeIBIQEAAf8B4gEhAQAB/wHiASEBAAH/AcgBEQEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBXAH/AeYBjgFQAf8B4wFrATgB/wHjAWQBLgH/AeIBYAEnAf8B4gFgAScB/wHi + AWABJwH/AcgBUAEdCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBLAH/AfYBogEmAf8B9QGdASAB/wH1AZkBGQH/AfMBlQEUAf8BzQEUAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWsB/wH2AaIBZQH/AfUBnQFf + Af8B9QGZAVgB/wHzAZUBUwH/Ac0BUwEfCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhAS4B/wHoAZsBJQH/AeYBjgERAf8B5QGHAQcB/wHkAYEBAAH/AeQBKgEAAf8B4wElAQAB/wHi + ASEBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAW0B/wHoAZsBZAH/AeYBjgFQ + Af8B5QGHAUYB/wHkAYEBPAH/AeQBaQE0Af8B4wFkASwB/wHiAWABJwn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBLgH/AbIBiAEcAf8BuAGSAS0B/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNMAf8DwAH/A/QB/wPW - Af8DNwH/A/UJ/wP+Af8D9gH/AV0BrgHbAf8BXQGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBPQEAAf8BnQE3AQAB/wGcATUBAAH/AaQBQwEAAf8BnQE2AQAB/wGdATYBAAH/AZ8BPAEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/AwoB/wwAAwoB/wOGAf80AAPfAf8D9AH/AToBqAHmAf8BCgFYAbYB/wEC - AVgBvgH/ATIBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxUB/wMVAf8DFQH/A6IB/wP6Bf8D/gH/ - A/YB/wFdAa4B2wH/AQABWwHHAf8BAAFbAccB/wFdAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEz - Af8BoAE6AQAB/wGhATsBAAH/AZ4BNgEAAf8BygGqAUQB/wH2AfEB6AH/Ac0BrwFOAf8BngE2AQAB/wGh - ATsBAAH/AaEBOgEAAf8BugGUAS8B/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABOgGoAeYB/wEK - AVgBtgH/AQIBWAG+Af8BAgFYAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DLgH/A+gB/wMwAf8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/ - BAABzAGvAYgB/wGlAT8BAAH/AaUBPwEAAf8BpQFAAQAB/wGiAToBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - ATwBAAH/AaUBPwEAAf8BpQE/AQAB/wGlAT8BAAH/AcoBrQGEAf8UAAMkAf8DAAH/FwAB/wMkAf8wAAET - AVgBrgH/ARMBWAGuAf8BKwFUAZ0B/wErAVQBnQH/AQoBWAG2Af8BCgFYAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DVQH/A18B/wP3Bf8D9AH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AZQBvQHgAf8BAAFb - AccB/wEAAVsBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFGAQAB/wGqAUQBAAH/AaoBRAEAAf8BqgFE - AQAB/wGnAT8BAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUEBAAH/AaoBQwEAAf8BqgFEAQAB/wGqAUQBAAH/ - AakBRQEAAf8B8AHpAd4B/xAAAyQB/wMAAf8XAAH/AyQB/xwAA98B/wPfAf8MAAETAVgBrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/AToBqAHmAf8BOgGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DFQH/A8kB/wP7 - Bf8D9AH/AQABWwHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AUsBAAH/Aa4BSAEAAf8BrwFJAQAB/wGvAUkBAAH/AawBRAEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BRgEA - Af8BrwFIAQAB/wGvAUkBAAH/Aa4BSQEAAf8BrwFIAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABKwFUAZ0B/wHNAfYC/wHJAfYC/wFXAaQB0QH/ - AVcBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABWwHHAf8D9AH/A/YB/wFd - Aa4B2wH/AV0BrgHbAf8D9AH/A/wF/wHKAakBSwH/AcABjgEHAf8BtQFQAQAB/wGzAUwBAAH/AbQBTgEA - Af8BsgFKAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFLAQAB/wG0AU0BAAH/AbQBTgEAAf8BtAFOAQAB/wG1 - AU4BAAH/AcQBnwE4Af8PAAH/Az0B/xwAAz0B/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAASsBVAGdAf8BzQH2Av8BVwGkAdEB/wEnAVQBoQH/AScBVAGhAf8BVwGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BXQGuAdsB/wFdAa4B2wH/A/UB/wP9Af8D9AH/AQABWwHHAf8D9AH/AV0BrgHb - Af8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/A/0B/wHJAaYBQgH/AckBmwEZAf8BxQGUARIB/wG+ - AYkBAAH/AboBgAEAAf8BtwFOAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFQAQAB/wG5AVIBAAH/AbkBUgEA - Af8BuQFSAQAB/wG6AVIBAAH/AcMBmgEsAf8QAAMKAf8DwAH/FAADwAH/AwoB/xAAAdMB3wHrAf8B6AH0 - Av8BMgGoAe4B/wECAVgBvgH/AQIBWAG+Af8BMgGoAe4B/wHNAfYC/wHNAfYC/wETAVgBrgH/AbUB+gL/ - ATIBqAHuAf8BAgFYAb4B/wEAAVgBxwH/AQABWAHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AV0BrgHb - Af8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9AH/A/QB/wEAAVsBxwH/A/QB/wGUAb0B4AH/AQABWwHH - Af8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/AdABrwGBAf8BzgGgAR4B/wHLAZwBHQH/AcwBnAEd - Af8BygGZARUB/wHDAY0BAQH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAEAAf8BzAGoAUUB/xAAAyQB/wMKAf8UAAMKAf8DJAH/EAAB6AH0Av8BmAGkAbAB/wEC - AVgBvgH/AQIBWAG+Af8BAgFYAb4B/wECAVgBvgH/ASsBVAGdAf8BKwFUAZ0B/wETAVgBrgH/ARMBWAGu - Af8BAgFYAb4B/wECAVgBvgH/AQABWAHHAf8BAAFYAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFdAa4B2wH/ - AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AQABWwHHAf8BXQGuAdsB/wEAAVsBxwH/AQABWwHHAf8BAAFb - AccB/wEAAVsBxwH/AZQBvQHgAf8BAAFbAccB/wEAAVsBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - AScB/wHQAaIBIAH/AdABoQEhAf8B0AGhASEB/wHQAZ8BHAH/AcsBpAExAf8B1AHDAaUB/wHKAaQBMQH/ - Ac0BmwEUAf8BzgGcARcB/wHOAZwBFwH/Ac4BnAEWAf8BzwGdARYB/wHaAcMBogH/EAADJAH/AwoB/xQA - AwoB/wMkAf8QAAHoAfQC/wGYAaQBsAH/AQIBWAG+Af8BAgFYAb4B/wEAAVgBxwH/AQABWAHHAf8BAgFY - Ab4B/wEyAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAAFbAccB/wEAAVsBxwH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATUB/wHYAakBJwH/ - AdUBpgEnAf8B1QGmASUB/wHUAaMBIAH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEcAf8B0wGi - AR8B/wHTAaEBHQH/AdUBowEcAf8BzQGdASAB/wH0Ae0B5AH/EAADhgH/AwoB/xQAAwoB/wOGAf8QAAHT - Ad8B6wH/AegB9AL/ATIBqAHuAf8BAgFYAb4B/wEAAVgBxwH/AQABWAHHAf8BAgFYAb4B/wECAVgBvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFb - AccB/wEAAVsBxwH/AQABWwHHAf8BAAFbAccB/wEAAVsBxwH/AV0BrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE2Af8B2gGrASoB/wHZAasBKwH/AdcBpwEkAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEkAf8B1wGnASQB/wHYAacBIgH/AdkBqgEnAf8B2wHBAZ4B/xgAA4YB/wMKAf8MAAMK - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAgFYAb4B/wECAVgBvgH/AQIBWAG+Af8BAgFYAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVsBxwH/AQABWwHH - Af8BAAFbAccB/wEAAVsBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBPAH/Ad8BsQEvAf8B3AGtASoB/wHXAbUBTQH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBJgH/Ad4BrgEp - Af8B3gGxATEB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATIBqAHuAf8BAgFYAb4B/wEC - AVgBvgH/ATIBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABWwHHAf8BAAFb - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFNAf8B4wG4AT4B/wHjAbQBMgH/Ad0BrgEq - Af8B4QGyAS4B/wHiAbYBOAH/AdsBswFEAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBLQH/AbIBiAEbAf8BuAGSASwB/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNLAf8DwAH/A/QB/wPW + Af8DNgH/A/UJ/wP+Af8D9gH/AVwBrgHbAf8BXAGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBPAEAAf8BnQE2AQAB/wGcATQBAAH/AaQBQgEAAf8BnQE1AQAB/wGdATUBAAH/AZ8BOwEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwkB/wwAAwkB/wOGAf80AAPfAf8D9AH/ATkBqAHmAf8BCQFXAbYB/wEB + AVcBvgH/ATEBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxQB/wMUAf8DFAH/A6IB/wP6Bf8D/gH/ + A/YB/wFcAa4B2wH/AQABWgHHAf8BAAFaAccB/wFcAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEy + Af8BoAE5AQAB/wGhAToBAAH/AZ4BNQEAAf8BygGqAUMB/wH2AfEB6AH/Ac0BrwFNAf8BngE1AQAB/wGh + AToBAAH/AaEBOQEAAf8BugGUAS4B/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABOQGoAeYB/wEJ + AVcBtgH/AQEBVwG+Af8BAQFXAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DLQH/A+gB/wMvAf8D6AH/ + A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/ + BAABzAGvAYgB/wGlAT4BAAH/AaUBPgEAAf8BpQE/AQAB/wGiATkBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj + ATsBAAH/AaUBPgEAAf8BpQE+AQAB/wGlAT4BAAH/AcoBrQGEAf8UAAMjAf8DAAH/FwAB/wMjAf8wAAES + AVcBrgH/ARIBVwGuAf8BKgFTAZ0B/wEqAVMBnQH/AQkBVwG2Af8BCQFXAbYB/wGYAaQBsAH/AegB9Ab/ + A/kB/wONAf8DVAH/A14B/wP3Bf8D9AH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AZQBvQHgAf8BAAFa + AccB/wEAAVoBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFFAQAB/wGqAUMBAAH/AaoBQwEAAf8BqgFD + AQAB/wGnAT4BAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUABAAH/AaoBQgEAAf8BqgFDAQAB/wGqAUMBAAH/ + AakBRAEAAf8B8AHpAd4B/xAAAyMB/wMAAf8XAAH/AyMB/xwAA98B/wPfAf8MAAESAVcBrgH/AbUB+gL/ + Ac0B9gL/Ac0B9gL/ATkBqAHmAf8BOQGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DFAH/A8kB/wP7 + Bf8D9AH/AQABWgHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw + AUoBAAH/Aa4BRwEAAf8BrwFIAQAB/wGvAUgBAAH/AawBQwEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BRQEA + Af8BrwFHAQAB/wGvAUgBAAH/Aa4BSAEAAf8BrwFHAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ + GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABKgFTAZ0B/wHNAfYC/wHJAfYC/wFWAaQB0QH/ + AVYBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABWgHHAf8D9AH/A/YB/wFc + Aa4B2wH/AVwBrgHbAf8D9AH/A/wF/wHKAakBSgH/AcABjgEGAf8BtQFPAQAB/wGzAUsBAAH/AbQBTQEA + Af8BsgFJAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFKAQAB/wG0AUwBAAH/AbQBTQEAAf8BtAFNAQAB/wG1 + AU0BAAH/AcQBnwE3Af8PAAH/AzwB/xwAAzwB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ + AegB9AL/A98B/wQAASoBUwGdAf8BzQH2Av8BVgGkAdEB/wEmAVMBoQH/ASYBUwGhAf8BVgGkAdEB/wP0 + Af8D3wX/A/4B/wP2Af8BXAGuAdsB/wFcAa4B2wH/A/UB/wP9Af8D9AH/AQABWgHHAf8D9AH/AVwBrgHb + Af8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/A/0B/wHJAaYBQQH/AckBmwEYAf8BxQGUAREB/wG+ + AYkBAAH/AboBgAEAAf8BtwFNAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFPAQAB/wG5AVEBAAH/AbkBUQEA + Af8BuQFRAQAB/wG6AVEBAAH/AcMBmgErAf8QAAMJAf8DwAH/FAADwAH/AwkB/xAAAdMB3wHrAf8B6AH0 + Av8BMQGoAe4B/wEBAVcBvgH/AQEBVwG+Af8BMQGoAe4B/wHNAfYC/wHNAfYC/wESAVcBrgH/AbUB+gL/ + ATEBqAHuAf8BAQFXAb4B/wEAAVcBxwH/AQABVwHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVwBrgHb + Af8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9AH/A/QB/wEAAVoBxwH/A/QB/wGUAb0B4AH/AQABWgHH + Af8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/AdABrwGBAf8BzgGgAR0B/wHLAZwBHAH/AcwBnAEc + Af8BygGZARQB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC + AYoBAAH/AcYBkAEAAf8BzAGoAUQB/xAAAyMB/wMJAf8UAAMJAf8DIwH/EAAB6AH0Av8BmAGkAbAB/wEB + AVcBvgH/AQEBVwG+Af8BAQFXAb4B/wEBAVcBvgH/ASoBUwGdAf8BKgFTAZ0B/wESAVcBrgH/ARIBVwGu + Af8BAQFXAb4B/wEBAVcBvgH/AQABVwHHAf8BAAFXAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFcAa4B2wH/ + AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AQABWgHHAf8BXAGuAdsB/wEAAVoBxwH/AQABWgHHAf8BAAFa + AccB/wEAAVoBxwH/AZQBvQHgAf8BAAFaAccB/wEAAVoBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm + ASYB/wHQAaIBHwH/AdABoQEgAf8B0AGhASAB/wHQAZ8BGwH/AcsBpAEwAf8B1AHDAaUB/wHKAaQBMAH/ + Ac0BmwETAf8BzgGcARYB/wHOAZwBFgH/Ac4BnAEVAf8BzwGdARUB/wHaAcMBogH/EAADIwH/AwkB/xQA + AwkB/wMjAf8QAAHoAfQC/wGYAaQBsAH/AQEBVwG+Af8BAQFXAb4B/wEAAVcBxwH/AQABVwHHAf8BAQFX + Ab4B/wExAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ + AZQBvQHgAf8BAAFaAccB/wEAAVoBxwH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9AH/ + A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATQB/wHYAakBJgH/ + AdUBpgEmAf8B1QGmASQB/wHUAaMBHwH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEbAf8B0wGi + AR4B/wHTAaEBHAH/AdUBowEbAf8BzQGdAR8B/wH0Ae0B5AH/EAADhgH/AwkB/xQAAwkB/wOGAf8QAAHT + Ad8B6wH/AegB9AL/ATEBqAHuAf8BAQFXAb4B/wEAAVcBxwH/AQABVwHHAf8BAQFXAb4B/wEBAVcBvgH/ + AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFa + AccB/wEAAVoBxwH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ + A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE1Af8B2gGrASkB/wHZAasBKgH/AdcBpwEjAf8B8QHmAdMF/wH1 + Ae4B4QH/AdcBpgEjAf8B1wGnASMB/wHYAacBIQH/AdkBqgEmAf8B2wHBAZ4B/xgAA4YB/wMJAf8MAAMJ + Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAQFXAb4B/wEBAVcBvgH/AQEBVwG+Af8BAQFXAb4B/wGY + AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVoBxwH/AQABWgHH + Af8BAAFaAccB/wEAAVoBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg + AbYBOwH/Ad8BsQEuAf8B3AGtASkB/wHXAbUBTAH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBJQH/Ad4BrgEo + Af8B3gGxATAB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATEBqAHuAf8BAQFXAb4B/wEB + AVcBvgH/ATEBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABWgHHAf8BAAFa + AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFMAf8B4wG4AT0B/wHjAbQBMQH/Ad0BrgEp + Af8B4QGyAS0B/wHiAbYBNwH/AdsBswFDAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABGgG5Af8BAAEMATsB/wEA - AQcBHQH/9QABOwHHAf8BBQHNAfwB/wEAARwBhwH/tAADOwFlAQABEQEAAf8DOgFgNQABOwHHAf8BAAGg - AdIB/wEAARIBMgH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEMAacBAAH/AQABFQEA - Af8BAAERAQAB/wM2AVgxAAE7AccB/wEHAdEB/AH/AQABHAGHAf8zAAEBAwABARAAAewB0gHsAf8BMgEA - ATEB/wHmAcwB5gH/AwIBAwMSARkQAAEvATkBOwH/ASUBLQEwAf8BHAEhASQB/wESARUBGAH/AggBDQH/ - AgABAwH/AwAB/wMAAf8DAAH/HAADPgFqAQwBpwEAAf8BKQG7AR0B/wEAARkBAAH/AQABFgEAAf8BAAER - AQAB/wM1AVctAAE7AccB/wEAAaEB0QH/AQABEgEyAf8/AAEBBAAB7QHYAe0B/wGpARABqAH/AYABAAE/ - Af8BNQEAATUB/wHrAdEB6wH/FAABOAGCAYMB/wGXAdsB9QH/ARsBqQHKAf8BGwGpAcoB/wEaAacByQH/ - ARIBnwHCAf8BCQGWAbkB/wEBAY0BsAH/AwAB/xwAAQsBpAEAAf8BKQG7AR0B/wEpAbsBHQH/AQABGAEA - Af8BAAEZAQAB/wEAARYBAAH/AQABEQEAAf8DMAFMKQABOwHHAf8BEQHiAf0B/wEAARgBgAH/IwABAQMA - AQEDAAEBAwABAQMAAQEDAAEBAwABAQQAAegB0QHoAf8BqgEQAakB/wHMAScBywH/AT4BAAE+Af8BlgEA - AZUB/wE7AQABOgH/AfAB1QHwAf8QAAFAAowB/wGgAeAB9wH/ATEBzQHxAf8BJAHHAe4B/wEYAcEB6wH/ - AQ0BvAHoAf8BAgG3AeYB/wEHAZIBtgH/AwAB/xwAAQwBpwEAAf8BKQG7AR0B/wEpAbsBHQH/AaoB1AGi - Af8BCAGgAQAB/wEAARkBAAH/AQABFgEAAf8BAAEQAQAB/ykAATsBxwH/ARgB1wH8Af8BAAEYAYAB/yQA - AasB8AH3Af8BqwHiAeUB/wGsAc4BzAH/Aa0BuwG1Af8BrgGnAZwB/wQAAeQBygHkAf8BqQEQAagB/wHT - ASsB0gH/AdQBLgHTAf8BPwEAAT4B/wGfAQABnwH/AY4BAAGNAf8BPQEAATwB/xAAAYUClAH/AacB4wH4 - Af8BPAHTAfQB/wExAc4B8QH/ASUByAHuAf8BGAHCAesB/wENAbwB6AH/AQwBmQG8Af8DAAH/GAADAgED - AQ4BqwEAAf8BKQG7AR0B/wGqAdQBogH/AbcB2gGwAf8BqgHUAaIB/wEBAZMBAAH/AQABGQEAAf8BAAER - AQAB/yUAASABkAH/AQABOwHHAf8BLgHeAfwB/wEAARgBgAH/AQABDgE6Af84AAGqARIBqQH/AdIBKgHR - Af8B1QEvAdUB/wG9ATABvAH/Ad4BmAHdAf8BjwEGAY4B/wGdAQABnAH/AT4BAAE+Af8QAAGMApsB/wGu - AeYB+gH/AYYB2AH2Af8BPAHUAfQB/wExAc0B8QH/ASUBxwHuAf8BGAHCAesB/wETAaABwQH/AgMBCAH/ - GAADBAEFASMBuAEWAf8BtAHZAa0B/wHFAeIBwAH/AbcB2gGwAf8BtwHaAbAB/wGqAdQBogH/AQABiAEA - Af8BAAERAQAB/yEAAS8BoAH/AQABhwHHAf8BGwHAAfAB/wEQAcsB/gH/AREBswHdAf8BAAENASYB/wEA - AQ4BOgH/GAABqwHwAfcB/wGrAeUB6QH/AawC1QH/AawBxAHBAf8BrQG1AawB/wGuAaQBmAH/BAABqAEP - AacB/wHSAS0B0QH/AbwBLwG7Af8B7wGlAe4B/wH7AZ8B+gH/Ae8BnQHuAf8BlwESAZYB/wE8AQABPAH/ - EAABkQGiAaEB/wGyAegB/AH/AaAB4gH6Af8BhgHYAfYB/wE9AdMB8wH/ATEBzgHxAf8BJAHIAe4B/wEX - AaUBxwH/AQwBDQESAf8YAAMCAQMDRAF6AY4BxgGEAf8BuQHcAbMB/wHDAeEBvgH/AcMB4QG+Af8BtwHa - AbAB/wGqAdQBogH/AQABJwEAAf8dAAGAAbEB/wEAAYcByAH/ARIBugH3Af8BFAHCAfkB/wEKAbcB+QH/ - ASgB1gH7Af8BBQGmAegB/wEAAQwBJAH/AQABEQGDAf8wAAGnARABpgH/AbwBLwG7Af8B7wGlAe4B/wH7 - AZsB+gH/AfsBmAH6Af8B+wGZAfoB/wHnAZgB5gH/AZEBDgGQAf8QAAGUAaYBpQH/Ab0B7AH8Af8BpQHl - AfsB/wGfAeIB+gH/AYYB2AH2Af8BPQHUAfQB/wExAc0B8QH/ARsBqQHKAf8BFAEYARsB/yAAA0YBfgGQ - AccBhgH/Ab4B3gG4Af8BwwHhAb4B/wGzAdkBrAH/AZABxwGGAf8DPQFpHQABOwG4Af8BFAHBAfkB/wEQ - AbcB+QH/AZMB7gH+Af8BjwHsAf4B/wESAbQB8wH/AY0B4wH+Af8BDwG6AeIB/wEAAQ4BKwH/HAABqwHw + Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABGQG5Af8BAAELAToB/wEA + AQYBHAH/9QABOgHHAf8BBAHNAfwB/wEAARsBhwH/tAADOwFlAQABEAEAAf8DOgFgNQABOgHHAf8BAAGg + AdIB/wEAAREBMQH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagELAacBAAH/AQABFAEA + Af8BAAEQAQAB/wM2AVgxAAE6AccB/wEGAdEB/AH/AQABGwGHAf8zAAEBAwABARAAAewB0gHsAf8BMQEA + ATAB/wHmAcwB5gH/AwIBAwMSARkQAAEuATgBOgH/ASQBLAEvAf8BGwEgASMB/wERARQBFwH/AgcBDAH/ + AgABAgH/AwAB/wMAAf8DAAH/HAADPgFqAQsBpwEAAf8BKAG7ARwB/wEAARgBAAH/AQABFQEAAf8BAAEQ + AQAB/wM1AVctAAE6AccB/wEAAaEB0QH/AQABEQExAf8/AAEBBAAB7QHYAe0B/wGpAQ8BqAH/AYABAAE+ + Af8BNAEAATQB/wHrAdEB6wH/FAABNwGCAYMB/wGXAdsB9QH/ARoBqQHKAf8BGgGpAcoB/wEZAacByQH/ + AREBnwHCAf8BCAGWAbkB/wEAAY0BsAH/AwAB/xwAAQoBpAEAAf8BKAG7ARwB/wEoAbsBHAH/AQABFwEA + Af8BAAEYAQAB/wEAARUBAAH/AQABEAEAAf8DMAFMKQABOgHHAf8BEAHiAf0B/wEAARcBgAH/IwABAQMA + AQEDAAEBAwABAQMAAQEDAAEBAwABAQQAAegB0QHoAf8BqgEPAakB/wHMASYBywH/AT0BAAE9Af8BlgEA + AZUB/wE6AQABOQH/AfAB1QHwAf8QAAE/AowB/wGgAeAB9wH/ATABzQHxAf8BIwHHAe4B/wEXAcEB6wH/ + AQwBvAHoAf8BAQG3AeYB/wEGAZIBtgH/AwAB/xwAAQsBpwEAAf8BKAG7ARwB/wEoAbsBHAH/AaoB1AGi + Af8BBwGgAQAB/wEAARgBAAH/AQABFQEAAf8BAAEPAQAB/ykAAToBxwH/ARcB1wH8Af8BAAEXAYAB/yQA + AasB8AH3Af8BqwHiAeUB/wGsAc4BzAH/Aa0BuwG1Af8BrgGnAZwB/wQAAeQBygHkAf8BqQEPAagB/wHT + ASoB0gH/AdQBLQHTAf8BPgEAAT0B/wGfAQABnwH/AY4BAAGNAf8BPAEAATsB/xAAAYUClAH/AacB4wH4 + Af8BOwHTAfQB/wEwAc4B8QH/ASQByAHuAf8BFwHCAesB/wEMAbwB6AH/AQsBmQG8Af8DAAH/GAADAgED + AQ0BqwEAAf8BKAG7ARwB/wGqAdQBogH/AbcB2gGwAf8BqgHUAaIB/wEAAZMBAAH/AQABGAEAAf8BAAEQ + AQAB/yUAAR8BkAH/AQABOgHHAf8BLQHeAfwB/wEAARcBgAH/AQABDQE5Af84AAGqAREBqQH/AdIBKQHR + Af8B1QEuAdUB/wG9AS8BvAH/Ad4BmAHdAf8BjwEFAY4B/wGdAQABnAH/AT0BAAE9Af8QAAGMApsB/wGu + AeYB+gH/AYYB2AH2Af8BOwHUAfQB/wEwAc0B8QH/ASQBxwHuAf8BFwHCAesB/wESAaABwQH/AgIBBwH/ + GAADBAEFASIBuAEVAf8BtAHZAa0B/wHFAeIBwAH/AbcB2gGwAf8BtwHaAbAB/wGqAdQBogH/AQABiAEA + Af8BAAEQAQAB/yEAAS4BoAH/AQABhwHHAf8BGgHAAfAB/wEPAcsB/gH/ARABswHdAf8BAAEMASUB/wEA + AQ0BOQH/GAABqwHwAfcB/wGrAeUB6QH/AawC1QH/AawBxAHBAf8BrQG1AawB/wGuAaQBmAH/BAABqAEO + AacB/wHSASwB0QH/AbwBLgG7Af8B7wGlAe4B/wH7AZ8B+gH/Ae8BnQHuAf8BlwERAZYB/wE7AQABOwH/ + EAABkQGiAaEB/wGyAegB/AH/AaAB4gH6Af8BhgHYAfYB/wE8AdMB8wH/ATABzgHxAf8BIwHIAe4B/wEW + AaUBxwH/AQsBDAERAf8YAAMCAQMDRAF6AY4BxgGEAf8BuQHcAbMB/wHDAeEBvgH/AcMB4QG+Af8BtwHa + AbAB/wGqAdQBogH/AQABJgEAAf8dAAGAAbEB/wEAAYcByAH/AREBugH3Af8BEwHCAfkB/wEJAbcB+QH/ + AScB1gH7Af8BBAGmAegB/wEAAQsBIwH/AQABEAGDAf8wAAGnAQ8BpgH/AbwBLgG7Af8B7wGlAe4B/wH7 + AZsB+gH/AfsBmAH6Af8B+wGZAfoB/wHnAZgB5gH/AZEBDQGQAf8QAAGUAaYBpQH/Ab0B7AH8Af8BpQHl + AfsB/wGfAeIB+gH/AYYB2AH2Af8BPAHUAfQB/wEwAc0B8QH/ARoBqQHKAf8BEwEXARoB/yAAA0YBfgGQ + AccBhgH/Ab4B3gG4Af8BwwHhAb4B/wGzAdkBrAH/AZABxwGGAf8DPQFpHQABOgG4Af8BEwHBAfkB/wEP + AbcB+QH/AZMB7gH+Af8BjwHsAf4B/wERAbQB8wH/AY0B4wH+Af8BDgG6AeIB/wEAAQ0BKgH/HAABqwHw AfcB/wGsAtUB/wGuAbQBrAH/Aa4BmQGKAf8D/QH/Ac8BiAHPAf8B4gGvAeIB/wH7AasB+gH/AfsBmAH6 Af8B+wGYAfoB/wHqAZAB6QH/Ac8BiAHPAf8B9AHmAfQB/xAAAZQBpgGlAf8BvQHsAfwB/wG9AewB/AH/ - AbIB6AH8Af8BrgHmAfoB/wGnAeQB+QH/AaAB4AH3Af8BlwHbAfUB/wEdASIBJgH/JAADRwGBAZQByQGK - Af8BvQHeAbcB/wGOAcYBhAH/AzABSyEAAYMBuwH/ARkBxgH5Af8BKQGKAawB/wEpAYoBrAH/ASkBigGs - Af8BKQGKAawB/wEpAYoBrAH/ASIB1QH6Af8BAAENASgB/zAAAfAB1AHwAf8BzwGIAc8B/wHuAb4B7gH/ + AbIB6AH8Af8BrgHmAfoB/wGnAeQB+QH/AaAB4AH3Af8BlwHbAfUB/wEcASEBJQH/JAADRwGBAZQByQGK + Af8BvQHeAbcB/wGOAcYBhAH/AzABSyEAAYMBuwH/ARgBxgH5Af8BKAGKAawB/wEoAYoBrAH/ASgBigGs + Af8BKAGKAawB/wEoAYoBrAH/ASEB1QH6Af8BAAEMAScB/zAAAfAB1AHwAf8BzwGIAc8B/wHuAb4B7gH/ AfsBrgH6Af8B7AGRAesB/wHPAYgBzwH/AfMB4AHyAf8UAAGUAaYBpQH/AZQBpgGlAf8BkwKlAf8BjwGf - AZ4B/wGIApcB/wGBAo4B/wE5AoQB/wEvATkBOwH/ASYBLQEvAf8oAAM8AWYBlAHJAYoB/wMlATclAAGD - AbwB/wEcAdIB+gH/AQoBJAGEAf8MAAENAZABwQH/ARMBuwHhAf8BAAELASUB/zQAAfIB2wHyAf8BzwGI - Ac8B/wHjAawB4wH/Ac8BiAHPAf8B8wHjAfMB/2AAAwEBAgQAAwEBAigAAQIBiAHBAf8BBgGdAdAB/wE6 - AeMB+gH/AQoBhQGeAf8BEQEkAYcB/wERATYBnAH/ARIBvwH0Af8BCAGMAaoB/wEAARgBOgH/OAAB8gHb - AfIB/wHPAYgBzwH/AfAB4wHwAf+YAAEJAZQBxgH/AQQBigHBAf8BBgGaAc0B/wEuAdUB9QH/ATEB6QH+ - Af8BLQHUAfMB/wEKAZIBsgH/AQABJAGMAf8BAAEwAaIB/zwAAf4B+wH+Af+gAAEJAZQBxgH/AQUBjQHD - Af8BAAGLAboB/wEAAYsBugH/AQABiAG3Af8BAAEzAaAB/wEAAYIBsgH//wCpAAM2AVgBmQIAAf8DMwFT - 8AADOAFdAdcBmgEKAf8BmQIAAf8BmQIAAf8DLwFKLAADHgErA1QBrgFZAmQB7AENAYMBlgH/AQABJgGN - Af8BAAEdAYwB/wFOAl0B8ANWAbMDJQE3mAADOgFhAdcBmgEKAf8B2AGbAQsB/wGZAgAB/wGZAgAB/wGZ - AgAB/wMvAUooAAFbAl4B0AEBAbAB0QH/AYQB1QHoAf8BoQHrAfYB/wEjAeQC/wEAAb4B8wH/AQABnwHe - Af8BAAGLAb4B/wFbAl4B2VQAAbcBogGTAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIA - Af8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8BEwIAAf8UAAHYAZsBDAH/AdgBmwELAf8B2AGbAQsB/wGZ - AgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUokAAEDAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEh - AdkB9AH/AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABEwGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJY + AZ4B/wGIApcB/wGBAo4B/wE4AoQB/wEuATgBOgH/ASUBLAEuAf8oAAM8AWYBlAHJAYoB/wMlATclAAGD + AbwB/wEbAdIB+gH/AQkBIwGEAf8MAAEMAZABwQH/ARIBuwHhAf8BAAEKASQB/zQAAfIB2wHyAf8BzwGI + Ac8B/wHjAawB4wH/Ac8BiAHPAf8B8wHjAfMB/2AAAwEBAgQAAwEBAigAAQEBiAHBAf8BBQGdAdAB/wE5 + AeMB+gH/AQkBhQGeAf8BEAEjAYcB/wEQATUBnAH/AREBvwH0Af8BBwGMAaoB/wEAARcBOQH/OAAB8gHb + AfIB/wHPAYgBzwH/AfAB4wHwAf+YAAEIAZQBxgH/AQMBigHBAf8BBQGaAc0B/wEtAdUB9QH/ATAB6QH+ + Af8BLAHUAfMB/wEJAZIBsgH/AQABIwGMAf8BAAEvAaIB/zwAAf4B+wH+Af+gAAEIAZQBxgH/AQQBjQHD + Af8BAAGLAboB/wEAAYsBugH/AQABiAG3Af8BAAEyAaAB/wEAAYIBsgH//wCpAAM2AVgBmQIAAf8DMwFT + 8AADOAFdAdcBmgEJAf8BmQIAAf8BmQIAAf8DLwFKLAADHgErA1QBrgFZAmQB7AEMAYMBlgH/AQABJQGN + Af8BAAEcAYwB/wFOAl0B8ANWAbMDJQE3mAADOgFhAdcBmgEJAf8B2AGbAQoB/wGZAgAB/wGZAgAB/wGZ + AgAB/wMvAUooAAFbAl4B0AEAAbAB0QH/AYQB1QHoAf8BoQHrAfYB/wEiAeQC/wEAAb4B8wH/AQABnwHe + Af8BAAGLAb4B/wFbAl4B2VQAAbcBogGTAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIA + Af8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8UAAHYAZsBCwH/AdgBmwEKAf8B2AGbAQoB/wGZ + AgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUokAAECAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEg + AdkB9AH/AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABEgGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJY AeMBUgJRAaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3AaIBkwH/ Af0B+wH5Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGnAf8B2wG7 - AacB/wHbAbsBpwH/Ac8BtAGjAf8BEwIAAf8UAAHYAZsBCwH/AdgBmwELAf8B6QG0ASwB/wH8AdYBrwH/ - AbUBEwEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABBAGRAa4B/wEAAdIB+gH/AY0B5AH2Af8BoQHr - AfYB/wEgAdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABFQGGAf8QAAM1AVUDZAHnAc8BuAGp - Af8B6wHWAcgB/wHlAcsBuwH/AbMBlQEvAf8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHIAf8B5QHL - AbsB/wGzAZUBLwH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/AfsB7AHj - Af8BpAGNAS4B/wGaAYMBIgH/AfYB1gHCAf8BiAEhAQ4B/wGDARsBCAH/Ac8BtAGjAf8BEwIAAf8UAAHY - AZsBCwH/AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEHAQAB/wGZAgAB/wGZAgAB/wGZ - AgAB/wMqAUEcAAEHAZUBsAH/AQAB0gH6Af8BjQHkAfQB/wGhAesB9gH/ASAB1wHyAf8BAAG5Ae4B/wEA - AacB6AH/AQABnAHaAf8BAAEYAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEqASEB+wMA + AacB/wHbAbsBpwH/Ac8BtAGjAf8BEgIAAf8UAAHYAZsBCgH/AdgBmwEKAf8B6QG0ASsB/wH8AdYBrwH/ + AbUBEgEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABAwGRAa4B/wEAAdIB+gH/AY0B5AH2Af8BoQHr + AfYB/wEfAdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABFAGGAf8QAAM1AVUDZAHnAc8BuAGp + Af8B6wHWAcgB/wHlAcsBuwH/AbMBlQEuAf8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHIAf8B5QHL + AbsB/wGzAZUBLgH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/AfsB7AHj + Af8BpAGNAS0B/wGaAYMBIQH/AfYB1gHCAf8BiAEgAQ0B/wGDARoBBwH/Ac8BtAGjAf8BEgIAAf8UAAHY + AZsBCgH/AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEGAQAB/wGZAgAB/wGZAgAB/wGZ + AgAB/wMqAUEcAAEGAZUBsAH/AQAB0gH6Af8BjQHkAfQB/wGhAesB9gH/AR8B1wHyAf8BAAG5Ae4B/wEA + AacB6AH/AQABnAHaAf8BAAEXAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEqASEB+wMA Af8DAAH/AwAB/wFhAlgB5gJgAVwB1ANgAdQDWQHCAbkBnAGIAf8DVQGyCAABugGlAZYB/wP+Af8D/gH/ A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wH/AfgB4QHSAf8B9wHbAckB/wHQAbkBqwH/ - ARMCAAH/FAAB5wGzASwB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/AakCAAH/ - AZkCAAH/AZkCAAH/AZkCAAH/AwQBBRgAAQkBmQG1Af8BAAHRAfsB/wGOAeQB9QH/AaEB6wH2Af8BIAHX - AfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARsBigH/EAADZQH0BP8DVwHfAx0BKgNcAc0F/wH+ + ARICAAH/FAAB5wGzASsB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/AakCAAH/ + AZkCAAH/AZkCAAH/AZkCAAH/AwQBBRgAAQgBmQG1Af8BAAHRAfsB/wGOAeQB9QH/AaEB6wH2Af8BHwHX + AfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARoBigH/EAADZQH0BP8DVwHfAx0BKgNcAc0F/wH+ AfcC/wHxAeYB/wH6AeMB1AH/AfMB1wHHAf8DSgGNAx0BKgNcAd8B7wHWAccB/wFkAlIB9AgAAb4BqQGa - Af8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAS4B/wGaAYMBIgH/AfsB7AHjAf8BiQEhAQ8B/wGD - ARsBCAH/AdEBwQG2Af8BEwIAAf8UAANFAXwB5QGyASsB/wH0AcABiwL/Ac0BmQL/Ac0BmQH/Af4B0AGh - Af8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZAgAB/xwAAQwBmwG3Af8BAAHQAfkB/wGNAeMB9QH/AaEB6wH2 - Af8BIgHZAfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAAR0BjQH/EAADVQGyAfIB5gHeAf8DWQHC + Af8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAS0B/wGaAYMBIQH/AfsB7AHjAf8BiQEgAQ4B/wGD + ARoBBwH/AdEBwQG2Af8BEgIAAf8UAANFAXwB5QGyASoB/wH0AcABiwL/Ac0BmQL/Ac0BmQH/Af4B0AGh + Af8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZAgAB/xwAAQsBmwG3Af8BAAHQAfkB/wGNAeMB9QH/AaEB6wH2 + Af8BIQHZAfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARwBjQH/EAADVQGyAfIB5gHeAf8DWQHC A1wB1AFgAlwB1ANhAeIB0wG1AaIB/wNNAfoB2gHAAa8B/wNfAfMDWwHWAWACXAHUA1kBwgHLAbEBoQH/ A1UBsggAAcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wH6 - AecB2wH/AdEBwQG2Af8BEwIAAf8YAANGAX8B5AGwASkB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGh - Af8B+wHYAbIB/wGpAgAB/wGZAgAB/xwAAQ4BngG6Af8BAAHQAfkB/wGNAeMB9AH/AaEB6wH2Af8BHwHX - AfIB/wEAAbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAAR8BjwH/EAADNQFVA2QB5wHtAeEB1wP/Af0C/wH3 + AecB2wH/AdEBwQG2Af8BEgIAAf8YAANGAX8B5AGwASgB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGh + Af8B+wHYAbIB/wGpAgAB/wGZAgAB/xwAAQ0BngG6Af8BAAHQAfkB/wGNAeMB9AH/AaEB6wH2Af8BHgHX + AfIB/wEAAbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAAR4BjwH/EAADNQFVA2QB5wHtAeEB1wP/Af0C/wH3 AfEB/wHYAcQBtwH/A2QB5wNLAY4DZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnAzUBVQgA - AcgBsgGjAf8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOAS4B/wGZAYQBIgH/Af0B9wHzAf8BiAEh - AQ4B/wGDARsBCAH/AdEBwQG2Af8BEwIAAf8cAANJAYcB4wGvASgB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/ - Af4B0AGhAf8B8gHJAZ0B/wGwAQoBAAH/HAABDwGiAbwB/wEAAc4B9wH/AYsB4wH0Af8BoQHrAfYB/wEe - AdYB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABIAGSAf8UAAMxAU0DUgGhA18B4wNfAeMDUgGh + AcgBsgGjAf8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOAS0B/wGZAYQBIQH/Af0B9wHzAf8BiAEg + AQ0B/wGDARoBBwH/AdEBwQG2Af8BEgIAAf8cAANJAYcB4wGvAScB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/ + Af4B0AGhAf8B8gHJAZ0B/wGwAQkBAAH/HAABDgGiAbwB/wEAAc4B9wH/AYsB4wH0Af8BoQHrAfYB/wEd + AdYB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABHwGSAf8UAAMxAU0DUgGhA18B4wNfAeMDUgGh AzEBTQQAAzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+Af8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wH9AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARMCAAH/IAADSQGHAeMBrwEoAf8B9gHE - AZAC/wHNAZkB/wHzAcIBjgH/AeMBsAEpAf8DQwF4HAABGwGpAcAB/wEGAdQB+gH/AZwB7AH6Af8BqwHv - AfoB/wGmAe0B+AH/AZQB5wH4Af8BIQHZAfYB/wEAAb0B6QH/AQABLAGXAf9UAAHqAaoBiwH/AeoBqgGL - Af8B6gGqAYsB/wHpAaUBhAH/AecBlwEeAf8B5gGOARIB/wHjAS0BAAH/AeMBJgEAAf8B4gEiAQAB/wHi - ASIBAAH/AeIBIgEAAf8ByAESAQAB/yQAA0kBhwHjAa8BKAH/Ae4BvQGKAf8B4wGwASkB/wM0AVQgAAGA + A/4B/wH9AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARICAAH/IAADSQGHAeMBrwEnAf8B9gHE + AZAC/wHNAZkB/wHzAcIBjgH/AeMBsAEoAf8DQwF4HAABGgGpAcAB/wEFAdQB+gH/AZwB7AH6Af8BqwHv + AfoB/wGmAe0B+AH/AZQB5wH4Af8BIAHZAfYB/wEAAb0B6QH/AQABKwGXAf9UAAHqAaoBiwH/AeoBqgGL + Af8B6gGqAYsB/wHpAaUBhAH/AecBlwEdAf8B5gGOAREB/wHjASwBAAH/AeMBJQEAAf8B4gEhAQAB/wHi + ASEBAAH/AeIBIQEAAf8ByAERAQAB/yQAA0kBhwHjAa8BJwH/Ae4BvQGKAf8B4wGwASgB/wM0AVQgAAGA AbMBxQH/AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AaAB3wHq - Af8BFgGRAaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGwAYsB/wH4 - AacBLQH/AfYBogEnAf8B9QGdASEB/wH1AZkBGgH/AfMBlQEVAf8BzQEVAQAB/ygAA0ABbgHlAbIBLQH/ - AyYBOCQAAzsBYwNgAdYBJgGrAboB/wEgAaMBswH/ARwBnQGvAf8BGwGbAa4B/wEfAaIBtAH/A14B2QNA - AW9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEvAf8B6AGbASYB/wHmAY4BEgH/ - AeUBhwEIAf8B5AGBAQAB/wHkASsBAAH/AeMBJgEAAf8B4gEiAQAB//8A/wAKAAFCAU0BPgcAAT4DAAEo + Af8BFQGRAaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGwAYsB/wH4 + AacBLAH/AfYBogEmAf8B9QGdASAB/wH1AZkBGQH/AfMBlQEUAf8BzQEUAQAB/ygAA0ABbgHlAbIBLAH/ + AyYBOCQAAzsBYwNgAdYBJQGrAboB/wEfAaMBswH/ARsBnQGvAf8BGgGbAa4B/wEeAaIBtAH/A14B2QNA + AW9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEuAf8B6AGbASUB/wHmAY4BEQH/ + AeUBhwEHAf8B5AGBAQAB/wHkASoBAAH/AeMBJQEAAf8B4gEhAQAB//8A/wAKAAFCAU0BPgcAAT4DAAEo AwABQAMAAUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIAAcABBwHzAZ8B/wMAAYABAwHn Ac8B/wHAAgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMAAQEBzwHnAYEEAAEBAecBzwUA AQEB5wHPBQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIAAYABAwL/AcABPwIAAeABBwL/ diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index 92fa088f3..a2dadec84 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -143,7 +143,7 @@ private void FilesDock_ContentRemoved(object sender, DockContentEventArgs e) private void FilesDock_ActiveContentChanged(object sender, EventArgs e) { var content = this.ActiveContent as DockContent; - if (content != null && content != this.objectExplorerContent || content != this.queryParametersContent) + if (content != null && (content != this.objectExplorerContent || content != this.queryParametersContent)) { this.lastActiveContent = content; this.ActiveQueryTab?.DetectQueryParameters(); diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 24cd06c07..22210ff4e 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -330,7 +330,7 @@ public void RunQuery() queryWorker.RunWorkerAsync(new QueryArguments(connection, query)); } - this.ApplicationService.RefreshDynamiConnections(); + this.ApplicationService.RefreshSelectedConnections(); } void SubscriptionIndicationReceived(IndicationEventArgs e) @@ -701,9 +701,8 @@ private void subscriptionWorker_DoWork(object sender, System.ComponentModel.DoWo try { - subscriptionId = this.SubscriptionManager.CreateSubscription(ConnectionInfo, arg.Query, - SubscriptionIndicationReceived); - + subscriptionId = this.SubscriptionManager.CreateSubscription(ConnectionInfo, arg.Query, SubscriptionIndicationReceived); + this.Invoke(new Action(() => this.ApplicationService.RefreshSelectedConnections())); subscriptionWorker.ReportProgress(0, "Waiting for notifications"); } catch (Exception ex) From a420d74d1c4d15478c78949347a65331951e3722 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 23:26:34 +0100 Subject: [PATCH 15/24] Extracted connections creation from TabsFactory. --- Src/SwqlStudio/ConnectionsManager.cs | 69 ++++++++++++++++++++++++++++ Src/SwqlStudio/MainForm.cs | 3 +- Src/SwqlStudio/QueryTab.cs | 15 +----- Src/SwqlStudio/SwqlStudio.csproj | 1 + Src/SwqlStudio/TabsFactory.cs | 38 +++++---------- 5 files changed, 85 insertions(+), 41 deletions(-) create mode 100644 Src/SwqlStudio/ConnectionsManager.cs diff --git a/Src/SwqlStudio/ConnectionsManager.cs b/Src/SwqlStudio/ConnectionsManager.cs new file mode 100644 index 000000000..0f6bae9c1 --- /dev/null +++ b/Src/SwqlStudio/ConnectionsManager.cs @@ -0,0 +1,69 @@ +using System.Windows.Forms; + +namespace SwqlStudio +{ + internal class ConnectionsManager + { + private readonly IApplicationService applicationService; + private readonly ServerList serverList; + private readonly QueriesDockPanel dockPanel; + + public ConnectionsManager(IApplicationService applicationService, ServerList serverList, QueriesDockPanel dockPanel) + { + this.applicationService = applicationService; + this.serverList = serverList; + this.dockPanel = dockPanel; + } + + internal ConnectionInfo ResolveConnection() + { + ConnectionInfo info = EnsureExistingConnection(); + if (info != null) + return ResolveExistingConnection(info); + + return null; + } + + private ConnectionInfo EnsureExistingConnection() + { + var selectedConnection = this.applicationService.SelectedConnection; + if (selectedConnection != null) + return selectedConnection; + + return CreateConnection(); + } + + private ConnectionInfo ResolveExistingConnection(ConnectionInfo info) + { + ConnectionInfo found; + bool alreadyExists = serverList.TryGet(info.ServerType, info.Server, info.UserName, out found); + if (alreadyExists) + return found; + + info.Connect(); + var provider = serverList.Add(info); + + info.ConnectionClosed += (sender, args) => + { + // TODO remove all tabs holding this connection this.dockPanel.RemoveTab(queryTab.Parent as DockContent); + serverList.Remove(info); + }; + + this.dockPanel.AddServer(provider, info); + return info; + } + + public static ConnectionInfo CreateConnection() + { + using (var nc = new NewConnection()) + { + if (nc.ShowDialog() == DialogResult.OK) + { + return nc.ConnectionInfo; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 84e389f2d..ced529044 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -53,7 +53,8 @@ private void InitializeDockPanel() this.filesDock.SetObjectExplorerImageList(this.ObjectExplorerImageList); this.serverList = new ServerList(); this.serverList.ConnectionsChanged += ServerListOnConnectionsChanged; - var tabsFactory = new TabsFactory(this.filesDock, this, this.serverList); + var connectionsManager = new ConnectionsManager(this, this.serverList, this.filesDock); + var tabsFactory = new TabsFactory(this.filesDock, this, this.serverList, connectionsManager); this.filesDock.SetAplicationService(tabsFactory); this.filesDock.ActiveContentChanged += FilesDock_ActiveContentChanged; } diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 22210ff4e..ac1cc0b41 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -254,7 +254,7 @@ public void RunPlayback() if (openFileDialog1.ShowDialog() == DialogResult.OK) { var pbi = new PlaybackItem() { FileName = openFileDialog1.FileName, MultiThread = false, QueryTab = this }; - ConnectionInfo info = CreateConnection(); + ConnectionInfo info = ConnectionsManager.CreateConnection(); if (info == null) return; @@ -271,19 +271,6 @@ public void RunPlayback() } } - public static ConnectionInfo CreateConnection() - { - using (var nc = new NewConnection()) - { - if (nc.ShowDialog() == DialogResult.OK) - { - return nc.ConnectionInfo; - } - } - - return null; - } - private delegate void AppendLogDelegate(string s); public void AppendLogTabLine(string line) { diff --git a/Src/SwqlStudio/SwqlStudio.csproj b/Src/SwqlStudio/SwqlStudio.csproj index 594f43879..0b5a7c1d5 100644 --- a/Src/SwqlStudio/SwqlStudio.csproj +++ b/Src/SwqlStudio/SwqlStudio.csproj @@ -125,6 +125,7 @@ + Component diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index ad70fff3c..4e4a849b5 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -17,12 +17,15 @@ internal class TabsFactory : ITabsFactory private readonly ServerList serverList; private readonly QueriesDockPanel dockPanel; private readonly IApplicationService applicationService; + private readonly ConnectionsManager connectionsManager; - internal TabsFactory(QueriesDockPanel dockPanel, IApplicationService applicationService, ServerList serverList) + internal TabsFactory(QueriesDockPanel dockPanel, IApplicationService applicationService, + ServerList serverList, ConnectionsManager connectionsManager) { this.dockPanel = dockPanel; this.applicationService = applicationService; this.serverList = serverList; + this.connectionsManager = connectionsManager; } public void AddTextToEditor(string text, ConnectionInfo info) @@ -85,24 +88,11 @@ internal void AddNewQueryTab() try { - ConnectionInfo info = QueryTab.CreateConnection(); - if (info == null) + ConnectionInfo info = this.connectionsManager.ResolveConnection(); + if (info== null) return; - bool alreadyExists = false; - ConnectionInfo found; - alreadyExists = serverList.TryGet(info.ServerType, info.Server, info.UserName, out found); - if (!alreadyExists) - { - info.Connect(); - var provider = serverList.Add(info); - - info.ConnectionClosed += (sender, args) => serverList.Remove(info); - this.dockPanel.AddServer(provider, info); - found = info; - } - - this.CreateQueryTab(found.Title, found); + this.CreateQueryTab(info.Title, info); } catch (FaultException ex) { @@ -146,7 +136,7 @@ internal void AddNewQueryTab() internal void OpenFiles(string[] files) { - var connectionInfo = this.applicationService.SelectedConnection; + var connectionInfo = this.connectionsManager.ResolveConnection(); if (connectionInfo == null) return; @@ -187,7 +177,10 @@ internal void CreateTabFromPrevious() var tab = this.dockPanel.ActiveConnectionTab; if (tab != null) { - var connection = tab.ConnectionInfo; + var connection = this.connectionsManager.ResolveConnection(); + if (connection == null) + return; + var swql = this.dockPanel.ActiveQueryTab.QueryText; this.AddTextToEditor(swql, connection); } @@ -210,14 +203,7 @@ private QueryTab CreateQueryTab(string title, ConnectionInfo info) IMetadataProvider provider; this.serverList.TryGetProvider(info, out provider); queryTab.SetMetadataProvider(provider); - AddNewTab(queryTab, title); - - info.ConnectionClosed += (sender, args) => - { - this.dockPanel.RemoveTab(queryTab.Parent as DockContent); - }; - return queryTab; } From fdd446e04099988a473b79239f4782f7d2d27a45 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 6 Mar 2018 23:47:54 +0100 Subject: [PATCH 16/24] Added new connection button to the tool bar --- Src/SwqlStudio/ConnectionsManager.cs | 11 +- Src/SwqlStudio/MainForm.Designer.cs | 45 +-- Src/SwqlStudio/MainForm.cs | 10 +- Src/SwqlStudio/MainForm.resx | 408 +++++++++++++-------------- Src/SwqlStudio/QueryTab.cs | 2 +- 5 files changed, 251 insertions(+), 225 deletions(-) diff --git a/Src/SwqlStudio/ConnectionsManager.cs b/Src/SwqlStudio/ConnectionsManager.cs index 0f6bae9c1..db9e1ffdb 100644 --- a/Src/SwqlStudio/ConnectionsManager.cs +++ b/Src/SwqlStudio/ConnectionsManager.cs @@ -15,6 +15,13 @@ public ConnectionsManager(IApplicationService applicationService, ServerList ser this.dockPanel = dockPanel; } + public void CreateConnection() + { + ConnectionInfo connection = AskForNewConnection(); + if (connection != null) + ResolveExistingConnection(connection); + } + internal ConnectionInfo ResolveConnection() { ConnectionInfo info = EnsureExistingConnection(); @@ -30,7 +37,7 @@ private ConnectionInfo EnsureExistingConnection() if (selectedConnection != null) return selectedConnection; - return CreateConnection(); + return AskForNewConnection(); } private ConnectionInfo ResolveExistingConnection(ConnectionInfo info) @@ -53,7 +60,7 @@ private ConnectionInfo ResolveExistingConnection(ConnectionInfo info) return info; } - public static ConnectionInfo CreateConnection() + internal static ConnectionInfo AskForNewConnection() { using (var nc = new NewConnection()) { diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index e7cb5120a..1d9529845 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -74,10 +74,11 @@ private void InitializeComponent() this.mainToolbar = new System.Windows.Forms.ToolStrip(); this.connectionsCombobox = new System.Windows.Forms.ToolStripComboBox(); this.executeToolButton = new System.Windows.Forms.ToolStripButton(); + this.newConnectionButton = new System.Windows.Forms.ToolStripButton(); this.undoToolButton = new System.Windows.Forms.ToolStripButton(); this.redoToolButton = new System.Windows.Forms.ToolStripButton(); this.newFileToolButton = new System.Windows.Forms.ToolStripButton(); - this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.openFileButton = new System.Windows.Forms.ToolStripButton(); this.saveToolButton = new System.Windows.Forms.ToolStripButton(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.menu.SuspendLayout(); @@ -443,10 +444,11 @@ private void InitializeComponent() this.mainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.connectionsCombobox, this.executeToolButton, + this.newConnectionButton, this.undoToolButton, this.redoToolButton, this.newFileToolButton, - this.toolStripButton1, + this.openFileButton, this.saveToolButton}); this.mainToolbar.Location = new System.Drawing.Point(0, 24); this.mainToolbar.Name = "mainToolbar"; @@ -469,9 +471,19 @@ private void InitializeComponent() this.executeToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.executeToolButton.Name = "executeToolButton"; this.executeToolButton.Size = new System.Drawing.Size(23, 22); - this.executeToolButton.Text = "toolStripButton1"; + this.executeToolButton.ToolTipText = "Execute query (F5)"; this.executeToolButton.Click += new System.EventHandler(this.menuQueryExecute_Click); // + // newConnectionButton + // + this.newConnectionButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.newConnectionButton.Image = global::SwqlStudio.Properties.Resources.ConnectFilled_16x; + this.newConnectionButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.newConnectionButton.Name = "newConnectionButton"; + this.newConnectionButton.Size = new System.Drawing.Size(23, 22); + this.newConnectionButton.ToolTipText = "New connection"; + this.newConnectionButton.Click += new System.EventHandler(this.newConnectionButton_Click); + // // undoToolButton // this.undoToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -479,7 +491,7 @@ private void InitializeComponent() this.undoToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.undoToolButton.Name = "undoToolButton"; this.undoToolButton.Size = new System.Drawing.Size(23, 22); - this.undoToolButton.Text = "toolStripButton1"; + this.undoToolButton.ToolTipText = "Undo (Ctrl+Z)"; this.undoToolButton.Click += new System.EventHandler(this.undoToolStripMenuItem_Click); // // redoToolButton @@ -489,7 +501,7 @@ private void InitializeComponent() this.redoToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.redoToolButton.Name = "redoToolButton"; this.redoToolButton.Size = new System.Drawing.Size(23, 22); - this.redoToolButton.Text = "toolStripButton1"; + this.redoToolButton.ToolTipText = "Redo (Ctrl+Y)"; this.redoToolButton.Click += new System.EventHandler(this.redoToolStripMenuItem_Click); // // newFileToolButton @@ -499,18 +511,18 @@ private void InitializeComponent() this.newFileToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.newFileToolButton.Name = "newFileToolButton"; this.newFileToolButton.Size = new System.Drawing.Size(23, 22); - this.newFileToolButton.Text = "toolStripButton1"; + this.newFileToolButton.ToolTipText = "New file (Ctrl+N)"; this.newFileToolButton.Click += new System.EventHandler(this.menuFileNew_Click); // - // toolStripButton1 + // openFileButton // - this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.toolStripButton1.Image = global::SwqlStudio.Properties.Resources.OpenFolder_16x; - this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripButton1.Name = "toolStripButton1"; - this.toolStripButton1.Size = new System.Drawing.Size(23, 22); - this.toolStripButton1.Text = "toolStripButton1"; - this.toolStripButton1.Click += new System.EventHandler(this.menuFileOpen_Click); + this.openFileButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.openFileButton.Image = global::SwqlStudio.Properties.Resources.OpenFolder_16x; + this.openFileButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.openFileButton.Name = "openFileButton"; + this.openFileButton.Size = new System.Drawing.Size(23, 22); + this.openFileButton.ToolTipText = "Open file (Ctrl+O)"; + this.openFileButton.Click += new System.EventHandler(this.menuFileOpen_Click); // // saveToolButton // @@ -519,7 +531,7 @@ private void InitializeComponent() this.saveToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; this.saveToolButton.Name = "saveToolButton"; this.saveToolButton.Size = new System.Drawing.Size(23, 22); - this.saveToolButton.Text = "toolStripButton1"; + this.saveToolButton.ToolTipText = "Save (Ctrl+S)"; this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); // // MainForm @@ -596,8 +608,9 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripButton newFileToolButton; private System.Windows.Forms.ToolStripButton saveToolButton; private System.Windows.Forms.ToolStripButton executeToolButton; - private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripButton openFileButton; private System.Windows.Forms.ToolStripComboBox connectionsCombobox; + private System.Windows.Forms.ToolStripButton newConnectionButton; } } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index ced529044..50b55c884 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -20,6 +20,7 @@ internal partial class MainForm : Form, IApplicationService { private static readonly SolarWinds.Logging.Log log = new SolarWinds.Logging.Log(); private ServerList serverList; + private ConnectionsManager connectionsManager; public PropertyBag QueryParameters { @@ -53,8 +54,8 @@ private void InitializeDockPanel() this.filesDock.SetObjectExplorerImageList(this.ObjectExplorerImageList); this.serverList = new ServerList(); this.serverList.ConnectionsChanged += ServerListOnConnectionsChanged; - var connectionsManager = new ConnectionsManager(this, this.serverList, this.filesDock); - var tabsFactory = new TabsFactory(this.filesDock, this, this.serverList, connectionsManager); + this.connectionsManager = new ConnectionsManager(this, this.serverList, this.filesDock); + var tabsFactory = new TabsFactory(this.filesDock, this, this.serverList, this.connectionsManager); this.filesDock.SetAplicationService(tabsFactory); this.filesDock.ActiveContentChanged += FilesDock_ActiveContentChanged; } @@ -447,5 +448,10 @@ private void connectionsCombobox_SelectedIndexChanged(object sender, EventArgs e activeConnectionTab.ConnectionInfo = this.SelectedConnection; } } + + private void newConnectionButton_Click(object sender, EventArgs e) + { + this.connectionsManager.CreateConnection(); + } } } diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index debac92e1..b073613dc 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -160,213 +160,213 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABA - MAAAAk1TRnQBSQFMAgEBDgEAASwBAgEsAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0wB/wPAAf8D9AH/A9YB/wM3Tf8DAAH/AwAB/wFFAWgBuRH/ - gAAE/wO0Af8DFQH/AxUB/wMVAf8Dok3/AwAB/wMAAf8BRQFoAbkB/wMADf+AAAT/A/IB/wMuAf8D6AH/ - AzAB/wPoAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAEf8BtwGi - AZMB/wFRATcBIwH/AVEBNwEjAf8BUQE3ASMB/wFRATcBIwn/AwAB/wFFAWgBuQH/AUUBaAG5Af8BUQE3 - ASMB/wMACf+AAAT/A/kB/wONAf8DVQH/A18B/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wESAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DbQH/AVEBNwEjAf8BUQE3ASMB/wMABf+AAAT/A/0B/wPb - Af8DFQH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BLQH/AZoBgwEhAf8B9gHWAcIB/wGIASABDQH/AYMBGgEH - Af8BzwG0AaMB/wESAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BbAH/ - AZoBgwFgCf8DAAH/A20B/wFRATcBIwH/AVEBNwEjAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BEgIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNt - Af8BUQE3ASMB/wFRATcBIwH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEt - Af8BmgGDASEB/wH7AewB4wH/AYkBIAEOAf8BgwEaAQcB/wHRAcEBtgH/ARICABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWwB/wGaAYMBYAH/AfsB7AHjAf8BiQFfAU0J/wMAAf8DbQH/ - AVEBNwEjAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BEgIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A20B/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BLQH/AZkBhAEhAf8B/QH3AfMB/wGIASABDQH/AYMBGgEHAf8B0QHBAbYB/wES - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFsAf8BmQGEAWAB/wH9AfcB8wH/ - AYgBXwFMAf8BgwFZAUYB/wHRAcEBtgn/AVEBNwEjAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wESAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BUQE3ASMJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBHQH/AeYBjgERAf8B4wEsAQAB/wHj - ASUBAAH/AeIBIQEAAf8B4gEhAQAB/wHiASEBAAH/AcgBEQEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBXAH/AeYBjgFQAf8B4wFrATgB/wHjAWQBLgH/AeIBYAEnAf8B4gFgAScB/wHi - AWABJwH/AcgBUAEdCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBLAH/AfYBogEmAf8B9QGdASAB/wH1AZkBGQH/AfMBlQEUAf8BzQEUAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWsB/wH2AaIBZQH/AfUBnQFf - Af8B9QGZAVgB/wHzAZUBUwH/Ac0BUwEfCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhAS4B/wHoAZsBJQH/AeYBjgERAf8B5QGHAQcB/wHkAYEBAAH/AeQBKgEAAf8B4wElAQAB/wHi - ASEBABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAW0B/wHoAZsBZAH/AeYBjgFQ - Af8B5QGHAUYB/wHkAYEBPAH/AeQBaQE0Af8B4wFkASwB/wHiAWABJwn/gACA/4AAgP//ACkAAdMB3wHr + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA6 + MAAAAk1TRnQBSQFMAgEBDgEAATwBAgE8AQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0oB/wPAAf8D9AH/A9YB/wM1Tf8DAAH/AwAB/wFDAWYBuRH/ + gAAE/wO0Af8DEwH/AxMB/wMTAf8Dok3/AwAB/wMAAf8BQwFmAbkB/wMADf+AAAT/A/IB/wMsAf8D6AH/ + Ay4B/wPoAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAEf8BtwGi + AZMB/wFPATUBIQH/AU8BNQEhAf8BTwE1ASEB/wFPATUBIQn/AwAB/wFDAWYBuQH/AUMBZgG5Af8BTwE1 + ASEB/wMACf+AAAT/A/kB/wONAf8DUwH/A10B/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEQAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DawH/AU8BNQEhAf8BTwE1ASEB/wMABf+AAAT/A/0B/wPb + Af8DEwH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BKwH/AZoBgwEfAf8B9gHWAcIB/wGIAR4BCwH/AYMBGAEF + Af8BzwG0AaMB/wEQAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BagH/ + AZoBgwFeCf8DAAH/A2sB/wFPATUBIQH/AU8BNQEhAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BEAIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNr + Af8BTwE1ASEB/wFPATUBIQH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEr + Af8BmgGDAR8B/wH7AewB4wH/AYkBHgEMAf8BgwEYAQUB/wHRAcEBtgH/ARACABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWoB/wGaAYMBXgH/AfsB7AHjAf8BiQFdAUsJ/wMAAf8DawH/ + AU8BNQEhAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BEAIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2sB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BKwH/AZkBhAEfAf8B/QH3AfMB/wGIAR4BCwH/AYMBGAEFAf8B0QHBAbYB/wEQ + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFqAf8BmQGEAV4B/wH9AfcB8wH/ + AYgBXQFKAf8BgwFXAUQB/wHRAcEBtgn/AU8BNQEhAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEQAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BTwE1ASEJ/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBGwH/AeYBjgEPAf8B4wEqAQAB/wHj + ASMBAAH/AeIBHwEAAf8B4gEfAQAB/wHiAR8BAAH/AcgBDwEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBWgH/AeYBjgFOAf8B4wFpATYB/wHjAWIBLAH/AeIBXgElAf8B4gFeASUB/wHi + AV4BJQH/AcgBTgEbCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBKgH/AfYBogEkAf8B9QGdAR4B/wH1AZkBFwH/AfMBlQESAf8BzQESAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWkB/wH2AaIBYwH/AfUBnQFd + Af8B9QGZAVYB/wHzAZUBUQH/Ac0BUQEdCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhASwB/wHoAZsBIwH/AeYBjgEPAf8B5QGHAQUB/wHkAYEBAAH/AeQBKAEAAf8B4wEjAQAB/wHi + AR8BABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWsB/wHoAZsBYgH/AeYBjgFO + Af8B5QGHAUQB/wHkAYEBOgH/AeQBZwEyAf8B4wFiASoB/wHiAV4BJQn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBLQH/AbIBiAEbAf8BuAGSASwB/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNLAf8DwAH/A/QB/wPW - Af8DNgH/A/UJ/wP+Af8D9gH/AVwBrgHbAf8BXAGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBPAEAAf8BnQE2AQAB/wGcATQBAAH/AaQBQgEAAf8BnQE1AQAB/wGdATUBAAH/AZ8BOwEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/AwkB/wwAAwkB/wOGAf80AAPfAf8D9AH/ATkBqAHmAf8BCQFXAbYB/wEB - AVcBvgH/ATEBqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxQB/wMUAf8DFAH/A6IB/wP6Bf8D/gH/ - A/YB/wFcAa4B2wH/AQABWgHHAf8BAAFaAccB/wFcAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEy - Af8BoAE5AQAB/wGhAToBAAH/AZ4BNQEAAf8BygGqAUMB/wH2AfEB6AH/Ac0BrwFNAf8BngE1AQAB/wGh - AToBAAH/AaEBOQEAAf8BugGUAS4B/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABOQGoAeYB/wEJ - AVcBtgH/AQEBVwG+Af8BAQFXAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DLQH/A+gB/wMvAf8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/ - BAABzAGvAYgB/wGlAT4BAAH/AaUBPgEAAf8BpQE/AQAB/wGiATkBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - ATsBAAH/AaUBPgEAAf8BpQE+AQAB/wGlAT4BAAH/AcoBrQGEAf8UAAMjAf8DAAH/FwAB/wMjAf8wAAES - AVcBrgH/ARIBVwGuAf8BKgFTAZ0B/wEqAVMBnQH/AQkBVwG2Af8BCQFXAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DVAH/A14B/wP3Bf8D9AH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AZQBvQHgAf8BAAFa - AccB/wEAAVoBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFFAQAB/wGqAUMBAAH/AaoBQwEAAf8BqgFD - AQAB/wGnAT4BAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAUABAAH/AaoBQgEAAf8BqgFDAQAB/wGqAUMBAAH/ - AakBRAEAAf8B8AHpAd4B/xAAAyMB/wMAAf8XAAH/AyMB/xwAA98B/wPfAf8MAAESAVcBrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/ATkBqAHmAf8BOQGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DFAH/A8kB/wP7 - Bf8D9AH/AQABWgHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AUoBAAH/Aa4BRwEAAf8BrwFIAQAB/wGvAUgBAAH/AawBQwEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BRQEA - Af8BrwFHAQAB/wGvAUgBAAH/Aa4BSAEAAf8BrwFHAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABKgFTAZ0B/wHNAfYC/wHJAfYC/wFWAaQB0QH/ - AVYBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABWgHHAf8D9AH/A/YB/wFc - Aa4B2wH/AVwBrgHbAf8D9AH/A/wF/wHKAakBSgH/AcABjgEGAf8BtQFPAQAB/wGzAUsBAAH/AbQBTQEA - Af8BsgFJAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFKAQAB/wG0AUwBAAH/AbQBTQEAAf8BtAFNAQAB/wG1 - AU0BAAH/AcQBnwE3Af8PAAH/AzwB/xwAAzwB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAASoBUwGdAf8BzQH2Av8BVgGkAdEB/wEmAVMBoQH/ASYBUwGhAf8BVgGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BXAGuAdsB/wFcAa4B2wH/A/UB/wP9Af8D9AH/AQABWgHHAf8D9AH/AVwBrgHb - Af8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/A/0B/wHJAaYBQQH/AckBmwEYAf8BxQGUAREB/wG+ - AYkBAAH/AboBgAEAAf8BtwFNAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFPAQAB/wG5AVEBAAH/AbkBUQEA - Af8BuQFRAQAB/wG6AVEBAAH/AcMBmgErAf8QAAMJAf8DwAH/FAADwAH/AwkB/xAAAdMB3wHrAf8B6AH0 - Av8BMQGoAe4B/wEBAVcBvgH/AQEBVwG+Af8BMQGoAe4B/wHNAfYC/wHNAfYC/wESAVcBrgH/AbUB+gL/ - ATEBqAHuAf8BAQFXAb4B/wEAAVcBxwH/AQABVwHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVwBrgHb - Af8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9AH/A/QB/wEAAVoBxwH/A/QB/wGUAb0B4AH/AQABWgHH - Af8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/AdABrwGBAf8BzgGgAR0B/wHLAZwBHAH/AcwBnAEc - Af8BygGZARQB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAEAAf8BzAGoAUQB/xAAAyMB/wMJAf8UAAMJAf8DIwH/EAAB6AH0Av8BmAGkAbAB/wEB - AVcBvgH/AQEBVwG+Af8BAQFXAb4B/wEBAVcBvgH/ASoBUwGdAf8BKgFTAZ0B/wESAVcBrgH/ARIBVwGu - Af8BAQFXAb4B/wEBAVcBvgH/AQABVwHHAf8BAAFXAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFcAa4B2wH/ - AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AQABWgHHAf8BXAGuAdsB/wEAAVoBxwH/AQABWgHHAf8BAAFa - AccB/wEAAVoBxwH/AZQBvQHgAf8BAAFaAccB/wEAAVoBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - ASYB/wHQAaIBHwH/AdABoQEgAf8B0AGhASAB/wHQAZ8BGwH/AcsBpAEwAf8B1AHDAaUB/wHKAaQBMAH/ - Ac0BmwETAf8BzgGcARYB/wHOAZwBFgH/Ac4BnAEVAf8BzwGdARUB/wHaAcMBogH/EAADIwH/AwkB/xQA - AwkB/wMjAf8QAAHoAfQC/wGYAaQBsAH/AQEBVwG+Af8BAQFXAb4B/wEAAVcBxwH/AQABVwHHAf8BAQFX - Ab4B/wExAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAAFaAccB/wEAAVoBxwH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATQB/wHYAakBJgH/ - AdUBpgEmAf8B1QGmASQB/wHUAaMBHwH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEbAf8B0wGi - AR4B/wHTAaEBHAH/AdUBowEbAf8BzQGdAR8B/wH0Ae0B5AH/EAADhgH/AwkB/xQAAwkB/wOGAf8QAAHT - Ad8B6wH/AegB9AL/ATEBqAHuAf8BAQFXAb4B/wEAAVcBxwH/AQABVwHHAf8BAQFXAb4B/wEBAVcBvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFa - AccB/wEAAVoBxwH/AQABWgHHAf8BAAFaAccB/wEAAVoBxwH/AVwBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgE1Af8B2gGrASkB/wHZAasBKgH/AdcBpwEjAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEjAf8B1wGnASMB/wHYAacBIQH/AdkBqgEmAf8B2wHBAZ4B/xgAA4YB/wMJAf8MAAMJ - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAQFXAb4B/wEBAVcBvgH/AQEBVwG+Af8BAQFXAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVoBxwH/AQABWgHH - Af8BAAFaAccB/wEAAVoBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBOwH/Ad8BsQEuAf8B3AGtASkB/wHXAbUBTAH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBJQH/Ad4BrgEo - Af8B3gGxATAB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/ATEBqAHuAf8BAQFXAb4B/wEB - AVcBvgH/ATEBqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABWgHHAf8BAAFa - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFMAf8B4wG4AT0B/wHjAbQBMQH/Ad0BrgEp - Af8B4QGyAS0B/wHiAbYBNwH/AdsBswFDAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBKwH/AbIBiAEZAf8BuAGSASoB/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNJAf8DwAH/A/QB/wPW + Af8DNAH/A/UJ/wP+Af8D9gH/AVoBrgHbAf8BWgGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBOgEAAf8BnQE0AQAB/wGcATIBAAH/AaQBQAEAAf8BnQEzAQAB/wGdATMBAAH/AZ8BOQEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwcB/wwAAwcB/wOGAf80AAPfAf8D9AH/ATcBqAHmAf8BBwFVAbYB/wEA + AVUBvgH/AS8BqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxIB/wMSAf8DEgH/A6IB/wP6Bf8D/gH/ + A/YB/wFaAa4B2wH/AQABWAHHAf8BAAFYAccB/wFaAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEw + Af8BoAE3AQAB/wGhATgBAAH/AZ4BMwEAAf8BygGqAUEB/wH2AfEB6AH/Ac0BrwFLAf8BngEzAQAB/wGh + ATgBAAH/AaEBNwEAAf8BugGUASwB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABNwGoAeYB/wEH + AVUBtgH/AQABVQG+Af8BAAFVAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DKwH/A+gB/wMtAf8D6AH/ + A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/ + BAABzAGvAYgB/wGlATwBAAH/AaUBPAEAAf8BpQE9AQAB/wGiATcBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj + ATkBAAH/AaUBPAEAAf8BpQE8AQAB/wGlATwBAAH/AcoBrQGEAf8UAAMhAf8DAAH/FwAB/wMhAf8wAAEQ + AVUBrgH/ARABVQGuAf8BKAFRAZ0B/wEoAVEBnQH/AQcBVQG2Af8BBwFVAbYB/wGYAaQBsAH/AegB9Ab/ + A/kB/wONAf8DUgH/A1wB/wP3Bf8D9AH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AZQBvQHgAf8BAAFY + AccB/wEAAVgBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFDAQAB/wGqAUEBAAH/AaoBQQEAAf8BqgFB + AQAB/wGnATwBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAT4BAAH/AaoBQAEAAf8BqgFBAQAB/wGqAUEBAAH/ + AakBQgEAAf8B8AHpAd4B/xAAAyEB/wMAAf8XAAH/AyEB/xwAA98B/wPfAf8MAAEQAVUBrgH/AbUB+gL/ + Ac0B9gL/Ac0B9gL/ATcBqAHmAf8BNwGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DEgH/A8kB/wP7 + Bf8D9AH/AQABWAHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw + AUgBAAH/Aa4BRQEAAf8BrwFGAQAB/wGvAUYBAAH/AawBQQEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BQwEA + Af8BrwFFAQAB/wGvAUYBAAH/Aa4BRgEAAf8BrwFFAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ + GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABKAFRAZ0B/wHNAfYC/wHJAfYC/wFUAaQB0QH/ + AVQBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABWAHHAf8D9AH/A/YB/wFa + Aa4B2wH/AVoBrgHbAf8D9AH/A/wF/wHKAakBSAH/AcABjgEEAf8BtQFNAQAB/wGzAUkBAAH/AbQBSwEA + Af8BsgFHAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFIAQAB/wG0AUoBAAH/AbQBSwEAAf8BtAFLAQAB/wG1 + AUsBAAH/AcQBnwE1Af8PAAH/AzoB/xwAAzoB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ + AegB9AL/A98B/wQAASgBUQGdAf8BzQH2Av8BVAGkAdEB/wEkAVEBoQH/ASQBUQGhAf8BVAGkAdEB/wP0 + Af8D3wX/A/4B/wP2Af8BWgGuAdsB/wFaAa4B2wH/A/UB/wP9Af8D9AH/AQABWAHHAf8D9AH/AVoBrgHb + Af8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/A/0B/wHJAaYBPwH/AckBmwEWAf8BxQGUAQ8B/wG+ + AYkBAAH/AboBgAEAAf8BtwFLAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFNAQAB/wG5AU8BAAH/AbkBTwEA + Af8BuQFPAQAB/wG6AU8BAAH/AcMBmgEpAf8QAAMHAf8DwAH/FAADwAH/AwcB/xAAAdMB3wHrAf8B6AH0 + Av8BLwGoAe4B/wEAAVUBvgH/AQABVQG+Af8BLwGoAe4B/wHNAfYC/wHNAfYC/wEQAVUBrgH/AbUB+gL/ + AS8BqAHuAf8BAAFVAb4B/wEAAVUBxwH/AQABVQHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVoBrgHb + Af8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9AH/A/QB/wEAAVgBxwH/A/QB/wGUAb0B4AH/AQABWAHH + Af8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/AdABrwGBAf8BzgGgARsB/wHLAZwBGgH/AcwBnAEa + Af8BygGZARIB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC + AYoBAAH/AcYBkAEAAf8BzAGoAUIB/xAAAyEB/wMHAf8UAAMHAf8DIQH/EAAB6AH0Av8BmAGkAbAB/wEA + AVUBvgH/AQABVQG+Af8BAAFVAb4B/wEAAVUBvgH/ASgBUQGdAf8BKAFRAZ0B/wEQAVUBrgH/ARABVQGu + Af8BAAFVAb4B/wEAAVUBvgH/AQABVQHHAf8BAAFVAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFaAa4B2wH/ + AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AQABWAHHAf8BWgGuAdsB/wEAAVgBxwH/AQABWAHHAf8BAAFY + AccB/wEAAVgBxwH/AZQBvQHgAf8BAAFYAccB/wEAAVgBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm + ASQB/wHQAaIBHQH/AdABoQEeAf8B0AGhAR4B/wHQAZ8BGQH/AcsBpAEuAf8B1AHDAaUB/wHKAaQBLgH/ + Ac0BmwERAf8BzgGcARQB/wHOAZwBFAH/Ac4BnAETAf8BzwGdARMB/wHaAcMBogH/EAADIQH/AwcB/xQA + AwcB/wMhAf8QAAHoAfQC/wGYAaQBsAH/AQABVQG+Af8BAAFVAb4B/wEAAVUBxwH/AQABVQHHAf8BAAFV + Ab4B/wEvAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ + AZQBvQHgAf8BAAFYAccB/wEAAVgBxwH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9AH/ + A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATIB/wHYAakBJAH/ + AdUBpgEkAf8B1QGmASIB/wHUAaMBHQH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEZAf8B0wGi + ARwB/wHTAaEBGgH/AdUBowEZAf8BzQGdAR0B/wH0Ae0B5AH/EAADhgH/AwcB/xQAAwcB/wOGAf8QAAHT + Ad8B6wH/AegB9AL/AS8BqAHuAf8BAAFVAb4B/wEAAVUBxwH/AQABVQHHAf8BAAFVAb4B/wEAAVUBvgH/ + AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFY + AccB/wEAAVgBxwH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ + A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgEzAf8B2gGrAScB/wHZAasBKAH/AdcBpwEhAf8B8QHmAdMF/wH1 + Ae4B4QH/AdcBpgEhAf8B1wGnASEB/wHYAacBHwH/AdkBqgEkAf8B2wHBAZ4B/xgAA4YB/wMHAf8MAAMH + Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAAFVAb4B/wEAAVUBvgH/AQABVQG+Af8BAAFVAb4B/wGY + AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVgBxwH/AQABWAHH + Af8BAAFYAccB/wEAAVgBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg + AbYBOQH/Ad8BsQEsAf8B3AGtAScB/wHXAbUBSgH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBIwH/Ad4BrgEm + Af8B3gGxAS4B/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/AS8BqAHuAf8BAAFVAb4B/wEA + AVUBvgH/AS8BqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABWAHHAf8BAAFY + AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFKAf8B4wG4ATsB/wHjAbQBLwH/Ad0BrgEn + Af8B4QGyASsB/wHiAbYBNQH/AdsBswFBAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABGQG5Af8BAAELAToB/wEA - AQYBHAH/9QABOgHHAf8BBAHNAfwB/wEAARsBhwH/tAADOwFlAQABEAEAAf8DOgFgNQABOgHHAf8BAAGg - AdIB/wEAAREBMQH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagELAacBAAH/AQABFAEA - Af8BAAEQAQAB/wM2AVgxAAE6AccB/wEGAdEB/AH/AQABGwGHAf8zAAEBAwABARAAAewB0gHsAf8BMQEA - ATAB/wHmAcwB5gH/AwIBAwMSARkQAAEuATgBOgH/ASQBLAEvAf8BGwEgASMB/wERARQBFwH/AgcBDAH/ - AgABAgH/AwAB/wMAAf8DAAH/HAADPgFqAQsBpwEAAf8BKAG7ARwB/wEAARgBAAH/AQABFQEAAf8BAAEQ - AQAB/wM1AVctAAE6AccB/wEAAaEB0QH/AQABEQExAf8/AAEBBAAB7QHYAe0B/wGpAQ8BqAH/AYABAAE+ - Af8BNAEAATQB/wHrAdEB6wH/FAABNwGCAYMB/wGXAdsB9QH/ARoBqQHKAf8BGgGpAcoB/wEZAacByQH/ - AREBnwHCAf8BCAGWAbkB/wEAAY0BsAH/AwAB/xwAAQoBpAEAAf8BKAG7ARwB/wEoAbsBHAH/AQABFwEA - Af8BAAEYAQAB/wEAARUBAAH/AQABEAEAAf8DMAFMKQABOgHHAf8BEAHiAf0B/wEAARcBgAH/IwABAQMA - AQEDAAEBAwABAQMAAQEDAAEBAwABAQQAAegB0QHoAf8BqgEPAakB/wHMASYBywH/AT0BAAE9Af8BlgEA - AZUB/wE6AQABOQH/AfAB1QHwAf8QAAE/AowB/wGgAeAB9wH/ATABzQHxAf8BIwHHAe4B/wEXAcEB6wH/ - AQwBvAHoAf8BAQG3AeYB/wEGAZIBtgH/AwAB/xwAAQsBpwEAAf8BKAG7ARwB/wEoAbsBHAH/AaoB1AGi - Af8BBwGgAQAB/wEAARgBAAH/AQABFQEAAf8BAAEPAQAB/ykAAToBxwH/ARcB1wH8Af8BAAEXAYAB/yQA - AasB8AH3Af8BqwHiAeUB/wGsAc4BzAH/Aa0BuwG1Af8BrgGnAZwB/wQAAeQBygHkAf8BqQEPAagB/wHT - ASoB0gH/AdQBLQHTAf8BPgEAAT0B/wGfAQABnwH/AY4BAAGNAf8BPAEAATsB/xAAAYUClAH/AacB4wH4 - Af8BOwHTAfQB/wEwAc4B8QH/ASQByAHuAf8BFwHCAesB/wEMAbwB6AH/AQsBmQG8Af8DAAH/GAADAgED - AQ0BqwEAAf8BKAG7ARwB/wGqAdQBogH/AbcB2gGwAf8BqgHUAaIB/wEAAZMBAAH/AQABGAEAAf8BAAEQ - AQAB/yUAAR8BkAH/AQABOgHHAf8BLQHeAfwB/wEAARcBgAH/AQABDQE5Af84AAGqAREBqQH/AdIBKQHR - Af8B1QEuAdUB/wG9AS8BvAH/Ad4BmAHdAf8BjwEFAY4B/wGdAQABnAH/AT0BAAE9Af8QAAGMApsB/wGu - AeYB+gH/AYYB2AH2Af8BOwHUAfQB/wEwAc0B8QH/ASQBxwHuAf8BFwHCAesB/wESAaABwQH/AgIBBwH/ - GAADBAEFASIBuAEVAf8BtAHZAa0B/wHFAeIBwAH/AbcB2gGwAf8BtwHaAbAB/wGqAdQBogH/AQABiAEA - Af8BAAEQAQAB/yEAAS4BoAH/AQABhwHHAf8BGgHAAfAB/wEPAcsB/gH/ARABswHdAf8BAAEMASUB/wEA - AQ0BOQH/GAABqwHwAfcB/wGrAeUB6QH/AawC1QH/AawBxAHBAf8BrQG1AawB/wGuAaQBmAH/BAABqAEO - AacB/wHSASwB0QH/AbwBLgG7Af8B7wGlAe4B/wH7AZ8B+gH/Ae8BnQHuAf8BlwERAZYB/wE7AQABOwH/ - EAABkQGiAaEB/wGyAegB/AH/AaAB4gH6Af8BhgHYAfYB/wE8AdMB8wH/ATABzgHxAf8BIwHIAe4B/wEW - AaUBxwH/AQsBDAERAf8YAAMCAQMDRAF6AY4BxgGEAf8BuQHcAbMB/wHDAeEBvgH/AcMB4QG+Af8BtwHa - AbAB/wGqAdQBogH/AQABJgEAAf8dAAGAAbEB/wEAAYcByAH/AREBugH3Af8BEwHCAfkB/wEJAbcB+QH/ - AScB1gH7Af8BBAGmAegB/wEAAQsBIwH/AQABEAGDAf8wAAGnAQ8BpgH/AbwBLgG7Af8B7wGlAe4B/wH7 - AZsB+gH/AfsBmAH6Af8B+wGZAfoB/wHnAZgB5gH/AZEBDQGQAf8QAAGUAaYBpQH/Ab0B7AH8Af8BpQHl - AfsB/wGfAeIB+gH/AYYB2AH2Af8BPAHUAfQB/wEwAc0B8QH/ARoBqQHKAf8BEwEXARoB/yAAA0YBfgGQ - AccBhgH/Ab4B3gG4Af8BwwHhAb4B/wGzAdkBrAH/AZABxwGGAf8DPQFpHQABOgG4Af8BEwHBAfkB/wEP - AbcB+QH/AZMB7gH+Af8BjwHsAf4B/wERAbQB8wH/AY0B4wH+Af8BDgG6AeIB/wEAAQ0BKgH/HAABqwHw - AfcB/wGsAtUB/wGuAbQBrAH/Aa4BmQGKAf8D/QH/Ac8BiAHPAf8B4gGvAeIB/wH7AasB+gH/AfsBmAH6 - Af8B+wGYAfoB/wHqAZAB6QH/Ac8BiAHPAf8B9AHmAfQB/xAAAZQBpgGlAf8BvQHsAfwB/wG9AewB/AH/ - AbIB6AH8Af8BrgHmAfoB/wGnAeQB+QH/AaAB4AH3Af8BlwHbAfUB/wEcASEBJQH/JAADRwGBAZQByQGK - Af8BvQHeAbcB/wGOAcYBhAH/AzABSyEAAYMBuwH/ARgBxgH5Af8BKAGKAawB/wEoAYoBrAH/ASgBigGs - Af8BKAGKAawB/wEoAYoBrAH/ASEB1QH6Af8BAAEMAScB/zAAAfAB1AHwAf8BzwGIAc8B/wHuAb4B7gH/ - AfsBrgH6Af8B7AGRAesB/wHPAYgBzwH/AfMB4AHyAf8UAAGUAaYBpQH/AZQBpgGlAf8BkwKlAf8BjwGf - AZ4B/wGIApcB/wGBAo4B/wE4AoQB/wEuATgBOgH/ASUBLAEuAf8oAAM8AWYBlAHJAYoB/wMlATclAAGD - AbwB/wEbAdIB+gH/AQkBIwGEAf8MAAEMAZABwQH/ARIBuwHhAf8BAAEKASQB/zQAAfIB2wHyAf8BzwGI - Ac8B/wHjAawB4wH/Ac8BiAHPAf8B8wHjAfMB/2AAAwEBAgQAAwEBAigAAQEBiAHBAf8BBQGdAdAB/wE5 - AeMB+gH/AQkBhQGeAf8BEAEjAYcB/wEQATUBnAH/AREBvwH0Af8BBwGMAaoB/wEAARcBOQH/OAAB8gHb - AfIB/wHPAYgBzwH/AfAB4wHwAf+YAAEIAZQBxgH/AQMBigHBAf8BBQGaAc0B/wEtAdUB9QH/ATAB6QH+ - Af8BLAHUAfMB/wEJAZIBsgH/AQABIwGMAf8BAAEvAaIB/zwAAf4B+wH+Af+gAAEIAZQBxgH/AQQBjQHD - Af8BAAGLAboB/wEAAYsBugH/AQABiAG3Af8BAAEyAaAB/wEAAYIBsgH//wCpAAM2AVgBmQIAAf8DMwFT - 8AADOAFdAdcBmgEJAf8BmQIAAf8BmQIAAf8DLwFKLAADHgErA1QBrgFZAmQB7AEMAYMBlgH/AQABJQGN - Af8BAAEcAYwB/wFOAl0B8ANWAbMDJQE3mAADOgFhAdcBmgEJAf8B2AGbAQoB/wGZAgAB/wGZAgAB/wGZ - AgAB/wMvAUooAAFbAl4B0AEAAbAB0QH/AYQB1QHoAf8BoQHrAfYB/wEiAeQC/wEAAb4B8wH/AQABnwHe - Af8BAAGLAb4B/wFbAl4B2VQAAbcBogGTAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIA - Af8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8BEgIAAf8UAAHYAZsBCwH/AdgBmwEKAf8B2AGbAQoB/wGZ - AgAB/wGZAgAB/wGZAgAB/wGZAgAB/wMvAUokAAECAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEg - AdkB9AH/AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABEgGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJY - AeMBUgJRAaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3AaIBkwH/ - Af0B+wH5Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGnAf8B2wG7 - AacB/wHbAbsBpwH/Ac8BtAGjAf8BEgIAAf8UAAHYAZsBCgH/AdgBmwEKAf8B6QG0ASsB/wH8AdYBrwH/ - AbUBEgEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABAwGRAa4B/wEAAdIB+gH/AY0B5AH2Af8BoQHr - AfYB/wEfAdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABFAGGAf8QAAM1AVUDZAHnAc8BuAGp - Af8B6wHWAcgB/wHlAcsBuwH/AbMBlQEuAf8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHIAf8B5QHL - AbsB/wGzAZUBLgH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/AfsB7AHj - Af8BpAGNAS0B/wGaAYMBIQH/AfYB1gHCAf8BiAEgAQ0B/wGDARoBBwH/Ac8BtAGjAf8BEgIAAf8UAAHY - AZsBCgH/AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEGAQAB/wGZAgAB/wGZAgAB/wGZ - AgAB/wMqAUEcAAEGAZUBsAH/AQAB0gH6Af8BjQHkAfQB/wGhAesB9gH/AR8B1wHyAf8BAAG5Ae4B/wEA - AacB6AH/AQABnAHaAf8BAAEXAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEqASEB+wMA - Af8DAAH/AwAB/wFhAlgB5gJgAVwB1ANgAdQDWQHCAbkBnAGIAf8DVQGyCAABugGlAZYB/wP+Af8D/gH/ - A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wH/AfgB4QHSAf8B9wHbAckB/wHQAbkBqwH/ - ARICAAH/FAAB5wGzASsB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/AakCAAH/ - AZkCAAH/AZkCAAH/AZkCAAH/AwQBBRgAAQgBmQG1Af8BAAHRAfsB/wGOAeQB9QH/AaEB6wH2Af8BHwHX - AfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARoBigH/EAADZQH0BP8DVwHfAx0BKgNcAc0F/wH+ - AfcC/wHxAeYB/wH6AeMB1AH/AfMB1wHHAf8DSgGNAx0BKgNcAd8B7wHWAccB/wFkAlIB9AgAAb4BqQGa - Af8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAS0B/wGaAYMBIQH/AfsB7AHjAf8BiQEgAQ4B/wGD - ARoBBwH/AdEBwQG2Af8BEgIAAf8UAANFAXwB5QGyASoB/wH0AcABiwL/Ac0BmQL/Ac0BmQH/Af4B0AGh - Af8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZAgAB/xwAAQsBmwG3Af8BAAHQAfkB/wGNAeMB9QH/AaEB6wH2 - Af8BIQHZAfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARwBjQH/EAADVQGyAfIB5gHeAf8DWQHC - A1wB1AFgAlwB1ANhAeIB0wG1AaIB/wNNAfoB2gHAAa8B/wNfAfMDWwHWAWACXAHUA1kBwgHLAbEBoQH/ - A1UBsggAAcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wH6 - AecB2wH/AdEBwQG2Af8BEgIAAf8YAANGAX8B5AGwASgB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGh - Af8B+wHYAbIB/wGpAgAB/wGZAgAB/xwAAQ0BngG6Af8BAAHQAfkB/wGNAeMB9AH/AaEB6wH2Af8BHgHX - AfIB/wEAAbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAAR4BjwH/EAADNQFVA2QB5wHtAeEB1wP/Af0C/wH3 - AfEB/wHYAcQBtwH/A2QB5wNLAY4DZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnAzUBVQgA - AcgBsgGjAf8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOAS0B/wGZAYQBIQH/Af0B9wHzAf8BiAEg - AQ0B/wGDARoBBwH/AdEBwQG2Af8BEgIAAf8cAANJAYcB4wGvAScB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/ - Af4B0AGhAf8B8gHJAZ0B/wGwAQkBAAH/HAABDgGiAbwB/wEAAc4B9wH/AYsB4wH0Af8BoQHrAfYB/wEd - AdYB8gH/AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABHwGSAf8UAAMxAU0DUgGhA18B4wNfAeMDUgGh - AzEBTQQAAzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+Af8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wH9AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARICAAH/IAADSQGHAeMBrwEnAf8B9gHE - AZAC/wHNAZkB/wHzAcIBjgH/AeMBsAEoAf8DQwF4HAABGgGpAcAB/wEFAdQB+gH/AZwB7AH6Af8BqwHv - AfoB/wGmAe0B+AH/AZQB5wH4Af8BIAHZAfYB/wEAAb0B6QH/AQABKwGXAf9UAAHqAaoBiwH/AeoBqgGL - Af8B6gGqAYsB/wHpAaUBhAH/AecBlwEdAf8B5gGOAREB/wHjASwBAAH/AeMBJQEAAf8B4gEhAQAB/wHi - ASEBAAH/AeIBIQEAAf8ByAERAQAB/yQAA0kBhwHjAa8BJwH/Ae4BvQGKAf8B4wGwASgB/wM0AVQgAAGA - AbMBxQH/AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AaAB3wHq - Af8BFQGRAaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGwAYsB/wH4 - AacBLAH/AfYBogEmAf8B9QGdASAB/wH1AZkBGQH/AfMBlQEUAf8BzQEUAQAB/ygAA0ABbgHlAbIBLAH/ - AyYBOCQAAzsBYwNgAdYBJQGrAboB/wEfAaMBswH/ARsBnQGvAf8BGgGbAa4B/wEeAaIBtAH/A14B2QNA - AW9UAAHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEuAf8B6AGbASUB/wHmAY4BEQH/ - AeUBhwEHAf8B5AGBAQAB/wHkASoBAAH/AeMBJQEAAf8B4gEhAQAB//8A/wAKAAFCAU0BPgcAAT4DAAEo - AwABQAMAAUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIAAcABBwHzAZ8B/wMAAYABAwHn - Ac8B/wHAAgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMAAQEBzwHnAYEEAAEBAecBzwUA - AQEB5wHPBQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIAAYABAwL/AcABPwIAAeABBwL/ - AeABfwIAAfABHwL/AfAB/wIAAv8B/AF/Bv8B/AF/BP8B/AF/AfwBfwE/AXMC/wH4AT8B/AF/AfkB4AHw - AQcB8AEfAfwBfwH/AUEB8AEHAfABDwH8AX8CgAHwAQcB8AEPAfwBfwHBAQAB8AEHAeABDwH4AT8B/wEA - AfABBwHgAQ8B8AEfAYEBAAHwAQcB4AEPAeABDwH/AQAB8AEHAfgBDwHgAQ8B4AEAAfABBwH8AR8B4AEP - Af8BAQHwAQcB/gE/AeMBjwH/AYMC/wH9AX8B4AEPAf8BxwT/AeABDwH/Ae8E/wHwAR8M/wH4B/8B8AF/ - AfABBwT/AeABPwHwAQcC/wHAAQMB4AEfAfABBwHAAYEBwAEDAeABDwHwAQcBgAEAAcABAwHgAQcB8AEH - AYABAAHAAQMB4AEDAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHwAQcB8AEHAYABAAHAAQMB+AEH - AfABBwHAAYEBwAEDAfwBBwHwAQcC/wHAAQMB/gEPAfABBwL/AcABAwH/AR8B8AEHAv8BwAEDEP8L + Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABFwG5Af8BAAEJATgB/wEA + AQQBGgH/9QABOAHHAf8BAgHNAfwB/wEAARkBhwH/tAADOwFlAQABDgEAAf8DOgFgNQABOAHHAf8BAAGg + AdIB/wEAAQ8BLwH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEJAacBAAH/AQABEgEA + Af8BAAEOAQAB/wM2AVgxAAE4AccB/wEEAdEB/AH/AQABGQGHAf8zAAEBAwABARAAAewB0gHsAf8BLwEA + AS4B/wHmAcwB5gH/AwIBAwMSARkQAAEsATYBOAH/ASIBKgEtAf8BGQEeASEB/wEPARIBFQH/AgUBCgH/ + AwAB/wMAAf8DAAH/AwAB/xwAAz4BagEJAacBAAH/ASYBuwEaAf8BAAEWAQAB/wEAARMBAAH/AQABDgEA + Af8DNQFXLQABOAHHAf8BAAGhAdEB/wEAAQ8BLwH/PwABAQQAAe0B2AHtAf8BqQENAagB/wGAAQABPAH/ + ATIBAAEyAf8B6wHRAesB/xQAATUBggGDAf8BlwHbAfUB/wEYAakBygH/ARgBqQHKAf8BFwGnAckB/wEP + AZ8BwgH/AQYBlgG5Af8BAAGNAbAB/wMAAf8cAAEIAaQBAAH/ASYBuwEaAf8BJgG7ARoB/wEAARUBAAH/ + AQABFgEAAf8BAAETAQAB/wEAAQ4BAAH/AzABTCkAATgBxwH/AQ4B4gH9Af8BAAEVAYAB/yMAAQEDAAEB + AwABAQMAAQEDAAEBAwABAQMAAQEEAAHoAdEB6AH/AaoBDQGpAf8BzAEkAcsB/wE7AQABOwH/AZYBAAGV + Af8BOAEAATcB/wHwAdUB8AH/EAABPQKMAf8BoAHgAfcB/wEuAc0B8QH/ASEBxwHuAf8BFQHBAesB/wEK + AbwB6AH/AQABtwHmAf8BBAGSAbYB/wMAAf8cAAEJAacBAAH/ASYBuwEaAf8BJgG7ARoB/wGqAdQBogH/ + AQUBoAEAAf8BAAEWAQAB/wEAARMBAAH/AQABDQEAAf8pAAE4AccB/wEVAdcB/AH/AQABFQGAAf8kAAGr + AfAB9wH/AasB4gHlAf8BrAHOAcwB/wGtAbsBtQH/Aa4BpwGcAf8EAAHkAcoB5AH/AakBDQGoAf8B0wEo + AdIB/wHUASsB0wH/ATwBAAE7Af8BnwEAAZ8B/wGOAQABjQH/AToBAAE5Af8QAAGFApQB/wGnAeMB+AH/ + ATkB0wH0Af8BLgHOAfEB/wEiAcgB7gH/ARUBwgHrAf8BCgG8AegB/wEJAZkBvAH/AwAB/xgAAwIBAwEL + AasBAAH/ASYBuwEaAf8BqgHUAaIB/wG3AdoBsAH/AaoB1AGiAf8BAAGTAQAB/wEAARYBAAH/AQABDgEA + Af8lAAEdAZAB/wEAATgBxwH/ASsB3gH8Af8BAAEVAYAB/wEAAQsBNwH/OAABqgEPAakB/wHSAScB0QH/ + AdUBLAHVAf8BvQEtAbwB/wHeAZgB3QH/AY8BAwGOAf8BnQEAAZwB/wE7AQABOwH/EAABjAKbAf8BrgHm + AfoB/wGGAdgB9gH/ATkB1AH0Af8BLgHNAfEB/wEiAccB7gH/ARUBwgHrAf8BEAGgAcEB/wIAAQUB/xgA + AwQBBQEgAbgBEwH/AbQB2QGtAf8BxQHiAcAB/wG3AdoBsAH/AbcB2gGwAf8BqgHUAaIB/wEAAYgBAAH/ + AQABDgEAAf8hAAEsAaAB/wEAAYcBxwH/ARgBwAHwAf8BDQHLAf4B/wEOAbMB3QH/AQABCgEjAf8BAAEL + ATcB/xgAAasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/Aa0BtQGsAf8BrgGkAZgB/wQAAagBDAGn + Af8B0gEqAdEB/wG8ASwBuwH/Ae8BpQHuAf8B+wGfAfoB/wHvAZ0B7gH/AZcBDwGWAf8BOQEAATkB/xAA + AZEBogGhAf8BsgHoAfwB/wGgAeIB+gH/AYYB2AH2Af8BOgHTAfMB/wEuAc4B8QH/ASEByAHuAf8BFAGl + AccB/wEJAQoBDwH/GAADAgEDA0QBegGOAcYBhAH/AbkB3AGzAf8BwwHhAb4B/wHDAeEBvgH/AbcB2gGw + Af8BqgHUAaIB/wEAASQBAAH/HQABgAGxAf8BAAGHAcgB/wEPAboB9wH/AREBwgH5Af8BBwG3AfkB/wEl + AdYB+wH/AQIBpgHoAf8BAAEJASEB/wEAAQ4BgwH/MAABpwENAaYB/wG8ASwBuwH/Ae8BpQHuAf8B+wGb + AfoB/wH7AZgB+gH/AfsBmQH6Af8B5wGYAeYB/wGRAQsBkAH/EAABlAGmAaUB/wG9AewB/AH/AaUB5QH7 + Af8BnwHiAfoB/wGGAdgB9gH/AToB1AH0Af8BLgHNAfEB/wEYAakBygH/AREBFQEYAf8gAANGAX4BkAHH + AYYB/wG+Ad4BuAH/AcMB4QG+Af8BswHZAawB/wGQAccBhgH/Az0BaR0AATgBuAH/AREBwQH5Af8BDQG3 + AfkB/wGTAe4B/gH/AY8B7AH+Af8BDwG0AfMB/wGNAeMB/gH/AQwBugHiAf8BAAELASgB/xwAAasB8AH3 + Af8BrALVAf8BrgG0AawB/wGuAZkBigH/A/0B/wHPAYgBzwH/AeIBrwHiAf8B+wGrAfoB/wH7AZgB+gH/ + AfsBmAH6Af8B6gGQAekB/wHPAYgBzwH/AfQB5gH0Af8QAAGUAaYBpQH/Ab0B7AH8Af8BvQHsAfwB/wGy + AegB/AH/Aa4B5gH6Af8BpwHkAfkB/wGgAeAB9wH/AZcB2wH1Af8BGgEfASMB/yQAA0cBgQGUAckBigH/ + Ab0B3gG3Af8BjgHGAYQB/wMwAUshAAGDAbsB/wEWAcYB+QH/ASYBigGsAf8BJgGKAawB/wEmAYoBrAH/ + ASYBigGsAf8BJgGKAawB/wEfAdUB+gH/AQABCgElAf8wAAHwAdQB8AH/Ac8BiAHPAf8B7gG+Ae4B/wH7 + Aa4B+gH/AewBkQHrAf8BzwGIAc8B/wHzAeAB8gH/FAABlAGmAaUB/wGUAaYBpQH/AZMCpQH/AY8BnwGe + Af8BiAKXAf8BgQKOAf8BNgKEAf8BLAE2ATgB/wEjASoBLAH/KAADPAFmAZQByQGKAf8DJQE3JQABgwG8 + Af8BGQHSAfoB/wEHASEBhAH/DAABCgGQAcEB/wEQAbsB4QH/AQABCAEiAf80AAHyAdsB8gH/Ac8BiAHP + Af8B4wGsAeMB/wHPAYgBzwH/AfMB4wHzAf9gAAMBAQIEAAMBAQIpAAGIAcEB/wEDAZ0B0AH/ATcB4wH6 + Af8BBwGFAZ4B/wEOASEBhwH/AQ4BMwGcAf8BDwG/AfQB/wEFAYwBqgH/AQABFQE3Af84AAHyAdsB8gH/ + Ac8BiAHPAf8B8AHjAfAB/5gAAQYBlAHGAf8BAQGKAcEB/wEDAZoBzQH/ASsB1QH1Af8BLgHpAf4B/wEq + AdQB8wH/AQcBkgGyAf8BAAEhAYwB/wEAAS0BogH/PAAB/gH7Af4B/6AAAQYBlAHGAf8BAgGNAcMB/wEA + AYsBugH/AQABiwG6Af8BAAGIAbcB/wEAATABoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMzAVPwAAM4 + AV0B1wGaAQcB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQoBgwGWAf8BAAEjAY0B/wEA + ARoBjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQcB/wHYAZsBCAH/AZkCAAH/AZkCAAH/AZkCAAH/ + Ay8BSigAAVsCXgHQAQABsAHRAf8BhAHVAegB/wGhAesB9gH/ASAB5AL/AQABvgHzAf8BAAGfAd4B/wEA + AYsBvgH/AVsCXgHZVAABtwGiAZMB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQ + AgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/xQAAdgBmwEJAf8B2AGbAQgB/wHYAZsBCAH/AZkCAAH/ + AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiUAAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEeAdkB9AH/ + AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABEAGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJR + AaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3AaIBkwH/Af0B+wH5 + Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGnAf8B2wG7AacB/wHb + AbsBpwH/Ac8BtAGjAf8BEAIAAf8UAAHYAZsBCAH/AdgBmwEIAf8B6QG0ASkB/wH8AdYBrwH/AbUBEAEA + Af8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABAQGRAa4B/wEAAdIB+gH/AY0B5AH2Af8BoQHrAfYB/wEd + AdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABEgGGAf8QAAM1AVUDZAHnAc8BuAGpAf8B6wHW + AcgB/wHlAcsBuwH/AbMBlQEsAf8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHIAf8B5QHLAbsB/wGz + AZUBLAH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/AfsB7AHjAf8BpAGN + ASsB/wGaAYMBHwH/AfYB1gHCAf8BiAEeAQsB/wGDARgBBQH/Ac8BtAGjAf8BEAIAAf8UAAHYAZsBCAH/ + AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEEAQAB/wGZAgAB/wGZAgAB/wGZAgAB/wMq + AUEcAAEEAZUBsAH/AQAB0gH6Af8BjQHkAfQB/wGhAesB9gH/AR0B1wHyAf8BAAG5Ae4B/wEAAacB6AH/ + AQABnAHaAf8BAAEVAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEqASEB+wMAAf8DAAH/ + AwAB/wFhAlgB5gJgAVwB1ANgAdQDWQHCAbkBnAGIAf8DVQGyCAABugGlAZYB/wP+Af8D/gH/A/4B/wH9 + AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wH/AfgB4QHSAf8B9wHbAckB/wHQAbkBqwH/ARACAAH/ + FAAB5wGzASkB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/AakCAAH/AZkCAAH/ + AZkCAAH/AZkCAAH/AwQBBRgAAQYBmQG1Af8BAAHRAfsB/wGOAeQB9QH/AaEB6wH2Af8BHQHXAfIB/wEA + AbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARgBigH/EAADZQH0BP8DVwHfAx0BKgNcAc0F/wH+AfcC/wHx + AeYB/wH6AeMB1AH/AfMB1wHHAf8DSgGNAx0BKgNcAd8B7wHWAccB/wFkAlIB9AgAAb4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOASsB/wGaAYMBHwH/AfsB7AHjAf8BiQEeAQwB/wGDARgBBQH/ + AdEBwQG2Af8BEAIAAf8UAANFAXwB5QGyASgB/wH0AcABiwL/Ac0BmQL/Ac0BmQH/Af4B0AGhAf8B+wHY + AbIB/wGpAgAB/wGZAgAB/wGZAgAB/xwAAQkBmwG3Af8BAAHQAfkB/wGNAeMB9QH/AaEB6wH2Af8BHwHZ + AfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARoBjQH/EAADVQGyAfIB5gHeAf8DWQHCA1wB1AFg + AlwB1ANhAeIB0wG1AaIB/wNNAfoB2gHAAa8B/wNfAfMDWwHWAWACXAHUA1kBwgHLAbEBoQH/A1UBsggA + AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wH6AecB2wH/ + AdEBwQG2Af8BEAIAAf8YAANGAX8B5AGwASYB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGhAf8B+wHY + AbIB/wGpAgAB/wGZAgAB/xwAAQsBngG6Af8BAAHQAfkB/wGNAeMB9AH/AaEB6wH2Af8BHAHXAfIB/wEA + AbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAARwBjwH/EAADNQFVA2QB5wHtAeEB1wP/Af0C/wH3AfEB/wHY + AcQBtwH/A2QB5wNLAY4DZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnAzUBVQgAAcgBsgGj + Af8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOASsB/wGZAYQBHwH/Af0B9wHzAf8BiAEeAQsB/wGD + ARgBBQH/AdEBwQG2Af8BEAIAAf8cAANJAYcB4wGvASUB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGh + Af8B8gHJAZ0B/wGwAQcBAAH/HAABDAGiAbwB/wEAAc4B9wH/AYsB4wH0Af8BoQHrAfYB/wEbAdYB8gH/ + AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABHQGSAf8UAAMxAU0DUgGhA18B4wNfAeMDUgGhAzEBTQQA + AzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9 + AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARACAAH/IAADSQGHAeMBrwElAf8B9gHEAZAC/wHN + AZkB/wHzAcIBjgH/AeMBsAEmAf8DQwF4HAABGAGpAcAB/wEDAdQB+gH/AZwB7AH6Af8BqwHvAfoB/wGm + Ae0B+AH/AZQB5wH4Af8BHgHZAfYB/wEAAb0B6QH/AQABKQGXAf9UAAHqAaoBiwH/AeoBqgGLAf8B6gGq + AYsB/wHpAaUBhAH/AecBlwEbAf8B5gGOAQ8B/wHjASoBAAH/AeMBIwEAAf8B4gEfAQAB/wHiAR8BAAH/ + AeIBHwEAAf8ByAEPAQAB/yQAA0kBhwHjAa8BJQH/Ae4BvQGKAf8B4wGwASYB/wM0AVQgAAGAAbMBxQH/ + AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AaAB3wHqAf8BEwGR + AaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGwAYsB/wH4AacBKgH/ + AfYBogEkAf8B9QGdAR4B/wH1AZkBFwH/AfMBlQESAf8BzQESAQAB/ygAA0ABbgHlAbIBKgH/AyYBOCQA + AzsBYwNgAdYBIwGrAboB/wEdAaMBswH/ARkBnQGvAf8BGAGbAa4B/wEcAaIBtAH/A14B2QNAAW9UAAHq + AaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEsAf8B6AGbASMB/wHmAY4BDwH/AeUBhwEF + Af8B5AGBAQAB/wHkASgBAAH/AeMBIwEAAf8B4gEfAQAB//8A/wAKAAFCAU0BPgcAAT4DAAEoAwABQAMA + AUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIAAcABBwHzAZ8B/wMAAYABAwHnAc8B/wHA + AgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMAAQEBzwHnAYEEAAEBAecBzwUAAQEB5wHP + BQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIAAYABAwL/AcABPwIAAeABBwL/AeABfwIA + AfABHwL/AfAB/wIAAv8B/AF/Bv8B/AF/BP8B/AF/AfwBfwE/AXMC/wH4AT8B/AF/AfkB4AHwAQcB8AEf + AfwBfwH/AUEB8AEHAfABDwH8AX8CgAHwAQcB8AEPAfwBfwHBAQAB8AEHAeABDwH4AT8B/wEAAfABBwHg + AQ8B8AEfAYEBAAHwAQcB4AEPAeABDwH/AQAB8AEHAfgBDwHgAQ8B4AEAAfABBwH8AR8B4AEPAf8BAQHw + AQcB/gE/AeMBjwH/AYMC/wH9AX8B4AEPAf8BxwT/AeABDwH/Ae8E/wHwAR8M/wH4B/8B8AF/AfABBwT/ + AeABPwHwAQcC/wHAAQMB4AEfAfABBwHAAYEBwAEDAeABDwHwAQcBgAEAAcABAwHgAQcB8AEHAYABAAHA + AQMB4AEDAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHwAQcB8AEHAYABAAHAAQMB+AEHAfABBwHA + AYEBwAEDAfwBBwHwAQcC/wHAAQMB/gEPAfABBwL/AcABAwH/AR8B8AEHAv8BwAEDEP8L diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index ac1cc0b41..803fab0f0 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -254,7 +254,7 @@ public void RunPlayback() if (openFileDialog1.ShowDialog() == DialogResult.OK) { var pbi = new PlaybackItem() { FileName = openFileDialog1.FileName, MultiThread = false, QueryTab = this }; - ConnectionInfo info = ConnectionsManager.CreateConnection(); + ConnectionInfo info = ConnectionsManager.AskForNewConnection(); if (info == null) return; From 17a6a80c97b5f987b3ff12f87916c6e8d851b983 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 7 Mar 2018 01:25:39 +0100 Subject: [PATCH 17/24] Implemened unhide of query properties content --- Src/SwqlStudio/QueriesDockPanel.cs | 48 ++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index a2dadec84..817951e40 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -20,7 +20,11 @@ public partial class QueriesDockPanel : DockPanel public PropertyBag QueryParameters { get { return this.queryParametersContent.Parameters; } - set { this.queryParametersContent.Parameters = value; } + set + { + this.queryParametersContent.Parameters = value; + ShowPropertiesContent(value); + } } /// Returns the currently displayed editor, or null if none are open @@ -125,7 +129,7 @@ private void InitializeQueryParameters() this.queryParametersContent = new QueryParameters(); this.queryParametersContent.Text = "Query parameters"; ConfigureBuildInToolbox(this.queryParametersContent); - this.queryParametersContent.Show(this, DockState.DockRight); + this.queryParametersContent.Show(this, DockState.DockRightAutoHide); } private void ConfigureBuildInToolbox(DockContent content) @@ -219,5 +223,45 @@ internal void AllowSetParameters(bool allow) { this.queryParametersContent.AllowSetParameters = allow; } + + private void ShowPropertiesContent(PropertyBag value) + { + if (value.Keys.Count > 0 && IsPropertiesTabAutoHiden()) + { + this.queryParametersContent.IsHidden = false; + this.queryParametersContent.DockState = ActivateHidenProperties(); + } + } + + private bool IsPropertiesTabAutoHiden() + { + switch (this.queryParametersContent.DockState) + { + case DockState.DockTopAutoHide: + case DockState.DockLeftAutoHide: + case DockState.DockBottomAutoHide: + case DockState.DockRightAutoHide: + return true; + default: + return false; + } + } + + private DockState ActivateHidenProperties() + { + switch (this.queryParametersContent.DockState) + { + case DockState.DockTopAutoHide: + return DockState.DockTop; + case DockState.DockLeftAutoHide: + return DockState.DockLeft; + case DockState.DockBottomAutoHide: + return DockState.DockBottom; + case DockState.DockRightAutoHide: + return DockState.DockRight; + default: + return DockState.DockRight; + } + } } } From 2b5b480f8290119f2bcb429c0ab164febe34b568 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 7 Mar 2018 23:39:46 +0100 Subject: [PATCH 18/24] Fixed closing connections --- Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index 303e9327b..20732d1c2 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -572,12 +572,13 @@ public void AddServer(IMetadataProvider provider, ConnectionInfo connection) connection.ConnectionClosed += (o, e) => { _tableContextMenuItems.Remove(connection.Title); + tableContextMenuWithoutCrud.Dispose(); + tableContextMenuWithoutCrud = null; + + _tableCrudContextMenuItems.Remove(connection.Title); tableContextMenuWithCrud.Dispose(); tableContextMenuWithCrud = null; - tableContextMenuWithoutCrud.Dispose(); - tableContextMenuWithoutCrud = null; - _serverContextMenuItems.Remove(connection.Title); serverContextMenu.Dispose(); serverContextMenu = null; @@ -591,6 +592,7 @@ private void CloseServer(TreeNode contextMenuNode) { node.Connection.Close(); _treeData.Nodes.Remove(_treeBindings.FindDataNode(node)); + _tree.Nodes.Remove(contextMenuNode); } } From 4da87844df7c90dbc62becb7e1c7c1887faa220c Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 7 Mar 2018 23:54:08 +0100 Subject: [PATCH 19/24] Added icons to server context menu in object browser --- Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs | 15 ++++++++------- Src/SwqlStudio/Properties/Resources.Designer.cs | 10 ++++++++++ Src/SwqlStudio/Properties/Resources.resx | 3 +++ Src/SwqlStudio/Resources/Refresh_16x.png | Bin 0 -> 591 bytes Src/SwqlStudio/SwqlStudio.csproj | 1 + 5 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 Src/SwqlStudio/Resources/Refresh_16x.png diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index 20732d1c2..71f78177c 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -37,7 +37,7 @@ class ObjectExplorer : Control private TreeNode _contextMenuNode; private readonly Dictionary _tableContextMenuItems; private readonly Dictionary _tableCrudContextMenuItems; - private readonly Dictionary _serverContextMenuItems; + private readonly Dictionary _serverContextMenuItems; private readonly ContextMenu _verbContextMenu; private bool _isDragging; private string _filter; @@ -97,7 +97,7 @@ public ObjectExplorer() _treeSearch.DebounceLimit = TimeSpan.FromMilliseconds(400); _tableContextMenuItems = new Dictionary(); - _serverContextMenuItems = new Dictionary(); + _serverContextMenuItems = new Dictionary(); _tableCrudContextMenuItems = new Dictionary(); _verbContextMenu = new ContextMenu(); @@ -540,14 +540,15 @@ public void AddServer(IMetadataProvider provider, ConnectionInfo connection) _tableContextMenuItems.Add(connection.Title, tableContextMenuWithoutCrud); _tableCrudContextMenuItems.Add(connection.Title, tableContextMenuWithCrud); - var serverContextMenu = new ContextMenu(); - serverContextMenu.MenuItems.Add("Refresh", (s, e) => RefreshServer(_contextMenuNode)); + var serverContextMenu = new ContextMenuStrip(); + serverContextMenu.Items.Add("Refresh", Properties.Resources.Refresh_16x, (s, e) => RefreshServer(_contextMenuNode)); if (connection.CanCreateSubscription) - serverContextMenu.MenuItems.Add("Activity Monitor", (s, e) => OpenActivityMonitor(_contextMenuNode)); + serverContextMenu.Items.Add("Activity Monitor", null, (s, e) => OpenActivityMonitor(_contextMenuNode)); - serverContextMenu.MenuItems.Add("Generate C# Code...", (s, e) => GenerateCSharpCode(_contextMenuNode)); - serverContextMenu.MenuItems.Add("Close", (s, e) => CloseServer(_contextMenuNode)); + serverContextMenu.Items.Add("Generate C# Code...", null, (s, e) => GenerateCSharpCode(_contextMenuNode)); + var closeMenuItem = new ToolStripMenuItem("Close", Properties.Resources.Disconnect_16x, (s, e) => CloseServer(_contextMenuNode)); + serverContextMenu.Items.Add(closeMenuItem); _serverContextMenuItems.Add(connection.Title, serverContextMenu); diff --git a/Src/SwqlStudio/Properties/Resources.Designer.cs b/Src/SwqlStudio/Properties/Resources.Designer.cs index 7461bbbbc..6ceaed678 100644 --- a/Src/SwqlStudio/Properties/Resources.Designer.cs +++ b/Src/SwqlStudio/Properties/Resources.Designer.cs @@ -150,6 +150,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Refresh_16x { + get { + object obj = ResourceManager.GetObject("Refresh_16x", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized string similar to div.corner { /// background-color: silver; diff --git a/Src/SwqlStudio/Properties/Resources.resx b/Src/SwqlStudio/Properties/Resources.resx index 948431aad..a059ccd77 100644 --- a/Src/SwqlStudio/Properties/Resources.resx +++ b/Src/SwqlStudio/Properties/Resources.resx @@ -160,4 +160,7 @@ ..\Resources\TextFile_16x.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Refresh_16x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Src/SwqlStudio/Resources/Refresh_16x.png b/Src/SwqlStudio/Resources/Refresh_16x.png new file mode 100644 index 0000000000000000000000000000000000000000..23ffe551e16623a12f0d64942cdf9a1bccbb1acb GIT binary patch literal 591 zcmV-V0=v2=W$|M)g8ml^%w z>^q$EKmW`5?w!ZBZH0fc)i8{oOhg-yd>Ibvco>l}RAVvTi$=o-J!}HV$TJ{bO#hc?S3Ag6F`CP-o)hDPG&p_dSr+!64IBzK;YQznxRHHddprnB&+6RU zgthe|?!Nd4;SvpwK7F$Qa^*x2A|%yJzDn{JjW`PKqw`4)D~FBd?Ji)U29c{J~((TBT1dXUhKt(jPgzyPf;TMrJVi zVTl1Zes3*?FN7f4G-up9nsntlT%&E^vGSftFqoHW>`_B4G# + From c4dacb7f7657adc77dd3fe414e359a821c529dfa Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 8 Mar 2018 00:12:54 +0100 Subject: [PATCH 20/24] Added disconnect button to main form toolbar --- Src/SwqlStudio/MainForm.Designer.cs | 15 +- Src/SwqlStudio/MainForm.cs | 9 + Src/SwqlStudio/MainForm.resx | 398 +++++++++--------- .../ObjectExplorer/ObjectExplorer.cs | 12 +- Src/SwqlStudio/QueriesDockPanel.cs | 5 + 5 files changed, 237 insertions(+), 202 deletions(-) diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index 1d9529845..7f9cd3a15 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -80,6 +80,7 @@ private void InitializeComponent() this.newFileToolButton = new System.Windows.Forms.ToolStripButton(); this.openFileButton = new System.Windows.Forms.ToolStripButton(); this.saveToolButton = new System.Windows.Forms.ToolStripButton(); + this.disconnectToolButton = new System.Windows.Forms.ToolStripButton(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.menu.SuspendLayout(); this.mainToolbar.SuspendLayout(); @@ -410,7 +411,7 @@ private void InitializeComponent() this.filesDock.DockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(242))))); this.filesDock.Location = new System.Drawing.Point(0, 24); this.filesDock.Name = "filesDock"; - this.filesDock.Padding = new System.Windows.Forms.Padding(6); + this.filesDock.Padding = new System.Windows.Forms.Padding(6, 6, 31, 6); this.filesDock.QueryParameters = ((SolarWinds.InformationService.Contract2.PropertyBag)(resources.GetObject("filesDock.QueryParameters"))); this.filesDock.ShowAutoHideContentOnHover = false; this.filesDock.Size = new System.Drawing.Size(827, 571); @@ -445,6 +446,7 @@ private void InitializeComponent() this.connectionsCombobox, this.executeToolButton, this.newConnectionButton, + this.disconnectToolButton, this.undoToolButton, this.redoToolButton, this.newFileToolButton, @@ -534,6 +536,16 @@ private void InitializeComponent() this.saveToolButton.ToolTipText = "Save (Ctrl+S)"; this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); // + // disconnectToolButton + // + this.disconnectToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.disconnectToolButton.Image = global::SwqlStudio.Properties.Resources.Disconnect_16x; + this.disconnectToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.disconnectToolButton.Name = "disconnectToolButton"; + this.disconnectToolButton.Size = new System.Drawing.Size(23, 22); + this.disconnectToolButton.Text = "Disconnect"; + this.disconnectToolButton.Click += new System.EventHandler(this.disconnectToolButton_Click); + // // MainForm // this.AllowDrop = true; @@ -611,6 +623,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripButton openFileButton; private System.Windows.Forms.ToolStripComboBox connectionsCombobox; private System.Windows.Forms.ToolStripButton newConnectionButton; + private System.Windows.Forms.ToolStripButton disconnectToolButton; } } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 50b55c884..485a50f4d 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -453,5 +453,14 @@ private void newConnectionButton_Click(object sender, EventArgs e) { this.connectionsManager.CreateConnection(); } + + private void disconnectToolButton_Click(object sender, EventArgs e) + { + var connection = this.connectionsCombobox.SelectedItem as ConnectionInfo; + if (connection != null) + { + this.filesDock.CloseServer(connection); + } + } } } diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index b073613dc..594cef08a 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -160,213 +160,213 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA6 - MAAAAk1TRnQBSQFMAgEBDgEAATwBAgE8AQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0oB/wPAAf8D9AH/A9YB/wM1Tf8DAAH/AwAB/wFDAWYBuRH/ - gAAE/wO0Af8DEwH/AxMB/wMTAf8Dok3/AwAB/wMAAf8BQwFmAbkB/wMADf+AAAT/A/IB/wMsAf8D6AH/ - Ay4B/wPoAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAAf8BEAIAEf8BtwGi - AZMB/wFPATUBIQH/AU8BNQEhAf8BTwE1ASEB/wFPATUBIQn/AwAB/wFDAWYBuQH/AUMBZgG5Af8BTwE1 - ASEB/wMACf+AAAT/A/kB/wONAf8DUwH/A10B/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEQAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DawH/AU8BNQEhAf8BTwE1ASEB/wMABf+AAAT/A/0B/wPb - Af8DEwH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BKwH/AZoBgwEfAf8B9gHWAcIB/wGIAR4BCwH/AYMBGAEF - Af8BzwG0AaMB/wEQAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BagH/ - AZoBgwFeCf8DAAH/A2sB/wFPATUBIQH/AU8BNQEhAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BEAIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNr - Af8BTwE1ASEB/wFPATUBIQH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEr - Af8BmgGDAR8B/wH7AewB4wH/AYkBHgEMAf8BgwEYAQUB/wHRAcEBtgH/ARACABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWoB/wGaAYMBXgH/AfsB7AHjAf8BiQFdAUsJ/wMAAf8DawH/ - AU8BNQEhAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BEAIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2sB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BKwH/AZkBhAEfAf8B/QH3AfMB/wGIAR4BCwH/AYMBGAEFAf8B0QHBAbYB/wEQ - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFqAf8BmQGEAV4B/wH9AfcB8wH/ - AYgBXQFKAf8BgwFXAUQB/wHRAcEBtgn/AU8BNQEhAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEQAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BTwE1ASEJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBGwH/AeYBjgEPAf8B4wEqAQAB/wHj - ASMBAAH/AeIBHwEAAf8B4gEfAQAB/wHiAR8BAAH/AcgBDwEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBWgH/AeYBjgFOAf8B4wFpATYB/wHjAWIBLAH/AeIBXgElAf8B4gFeASUB/wHi - AV4BJQH/AcgBTgEbCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBKgH/AfYBogEkAf8B9QGdAR4B/wH1AZkBFwH/AfMBlQESAf8BzQESAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWkB/wH2AaIBYwH/AfUBnQFd - Af8B9QGZAVYB/wHzAZUBUQH/Ac0BUQEdCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhASwB/wHoAZsBIwH/AeYBjgEPAf8B5QGHAQUB/wHkAYEBAAH/AeQBKAEAAf8B4wEjAQAB/wHi - AR8BABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWsB/wHoAZsBYgH/AeYBjgFO - Af8B5QGHAUQB/wHkAYEBOgH/AeQBZwEyAf8B4wFiASoB/wHiAV4BJQn/gACA/4AAgP//ACkAAdMB3wHr + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA4 + MAAAAk1TRnQBSQFMAgEBDgEAAUQBAgFEAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0kB/wPAAf8D9AH/A9YB/wM0Tf8DAAH/AwAB/wFCAWUBuRH/ + gAAE/wO0Af8DEgH/AxIB/wMSAf8Dok3/AwAB/wMAAf8BQgFlAbkB/wMADf+AAAT/A/IB/wMrAf8D6AH/ + Ay0B/wPoAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAEf8BtwGi + AZMB/wFOATQBIAH/AU4BNAEgAf8BTgE0ASAB/wFOATQBIAn/AwAB/wFCAWUBuQH/AUIBZQG5Af8BTgE0 + ASAB/wMACf+AAAT/A/kB/wONAf8DUgH/A1wB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEPAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DagH/AU4BNAEgAf8BTgE0ASAB/wMABf+AAAT/A/0B/wPb + Af8DEgH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BKgH/AZoBgwEeAf8B9gHWAcIB/wGIAR0BCgH/AYMBFwEE + Af8BzwG0AaMB/wEPAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BaQH/ + AZoBgwFdCf8DAAH/A2oB/wFOATQBIAH/AU4BNAEgAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BDwIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNq + Af8BTgE0ASAB/wFOATQBIAH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEq + Af8BmgGDAR4B/wH7AewB4wH/AYkBHQELAf8BgwEXAQQB/wHRAcEBtgH/AQ8CABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWkB/wGaAYMBXQH/AfsB7AHjAf8BiQFcAUoJ/wMAAf8DagH/ + AU4BNAEgAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BDwIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2oB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BKgH/AZkBhAEeAf8B/QH3AfMB/wGIAR0BCgH/AYMBFwEEAf8B0QHBAbYB/wEP + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFpAf8BmQGEAV0B/wH9AfcB8wH/ + AYgBXAFJAf8BgwFWAUMB/wHRAcEBtgn/AU4BNAEgAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEPAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BTgE0ASAJ/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBGgH/AeYBjgEOAf8B4wEpAQAB/wHj + ASIBAAH/AeIBHgEAAf8B4gEeAQAB/wHiAR4BAAH/AcgBDgEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBWQH/AeYBjgFNAf8B4wFoATUB/wHjAWEBKwH/AeIBXQEkAf8B4gFdASQB/wHi + AV0BJAH/AcgBTQEaCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBKQH/AfYBogEjAf8B9QGdAR0B/wH1AZkBFgH/AfMBlQERAf8BzQERAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWgB/wH2AaIBYgH/AfUBnQFc + Af8B9QGZAVUB/wHzAZUBUAH/Ac0BUAEcCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhASsB/wHoAZsBIgH/AeYBjgEOAf8B5QGHAQQB/wHkAYEBAAH/AeQBJwEAAf8B4wEiAQAB/wHi + AR4BABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWoB/wHoAZsBYQH/AeYBjgFN + Af8B5QGHAUMB/wHkAYEBOQH/AeQBZgExAf8B4wFhASkB/wHiAV0BJAn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBKwH/AbIBiAEZAf8BuAGSASoB/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNJAf8DwAH/A/QB/wPW - Af8DNAH/A/UJ/wP+Af8D9gH/AVoBrgHbAf8BWgGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBOgEAAf8BnQE0AQAB/wGcATIBAAH/AaQBQAEAAf8BnQEzAQAB/wGdATMBAAH/AZ8BOQEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/AwcB/wwAAwcB/wOGAf80AAPfAf8D9AH/ATcBqAHmAf8BBwFVAbYB/wEA - AVUBvgH/AS8BqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxIB/wMSAf8DEgH/A6IB/wP6Bf8D/gH/ - A/YB/wFaAa4B2wH/AQABWAHHAf8BAAFYAccB/wFaAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEw - Af8BoAE3AQAB/wGhATgBAAH/AZ4BMwEAAf8BygGqAUEB/wH2AfEB6AH/Ac0BrwFLAf8BngEzAQAB/wGh - ATgBAAH/AaEBNwEAAf8BugGUASwB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABNwGoAeYB/wEH - AVUBtgH/AQABVQG+Af8BAAFVAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DKwH/A+gB/wMtAf8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/ - BAABzAGvAYgB/wGlATwBAAH/AaUBPAEAAf8BpQE9AQAB/wGiATcBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - ATkBAAH/AaUBPAEAAf8BpQE8AQAB/wGlATwBAAH/AcoBrQGEAf8UAAMhAf8DAAH/FwAB/wMhAf8wAAEQ - AVUBrgH/ARABVQGuAf8BKAFRAZ0B/wEoAVEBnQH/AQcBVQG2Af8BBwFVAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DUgH/A1wB/wP3Bf8D9AH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AZQBvQHgAf8BAAFY - AccB/wEAAVgBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFDAQAB/wGqAUEBAAH/AaoBQQEAAf8BqgFB - AQAB/wGnATwBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAT4BAAH/AaoBQAEAAf8BqgFBAQAB/wGqAUEBAAH/ - AakBQgEAAf8B8AHpAd4B/xAAAyEB/wMAAf8XAAH/AyEB/xwAA98B/wPfAf8MAAEQAVUBrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/ATcBqAHmAf8BNwGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DEgH/A8kB/wP7 - Bf8D9AH/AQABWAHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AUgBAAH/Aa4BRQEAAf8BrwFGAQAB/wGvAUYBAAH/AawBQQEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BQwEA - Af8BrwFFAQAB/wGvAUYBAAH/Aa4BRgEAAf8BrwFFAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABKAFRAZ0B/wHNAfYC/wHJAfYC/wFUAaQB0QH/ - AVQBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABWAHHAf8D9AH/A/YB/wFa - Aa4B2wH/AVoBrgHbAf8D9AH/A/wF/wHKAakBSAH/AcABjgEEAf8BtQFNAQAB/wGzAUkBAAH/AbQBSwEA - Af8BsgFHAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFIAQAB/wG0AUoBAAH/AbQBSwEAAf8BtAFLAQAB/wG1 - AUsBAAH/AcQBnwE1Af8PAAH/AzoB/xwAAzoB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAASgBUQGdAf8BzQH2Av8BVAGkAdEB/wEkAVEBoQH/ASQBUQGhAf8BVAGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BWgGuAdsB/wFaAa4B2wH/A/UB/wP9Af8D9AH/AQABWAHHAf8D9AH/AVoBrgHb - Af8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/A/0B/wHJAaYBPwH/AckBmwEWAf8BxQGUAQ8B/wG+ - AYkBAAH/AboBgAEAAf8BtwFLAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFNAQAB/wG5AU8BAAH/AbkBTwEA - Af8BuQFPAQAB/wG6AU8BAAH/AcMBmgEpAf8QAAMHAf8DwAH/FAADwAH/AwcB/xAAAdMB3wHrAf8B6AH0 - Av8BLwGoAe4B/wEAAVUBvgH/AQABVQG+Af8BLwGoAe4B/wHNAfYC/wHNAfYC/wEQAVUBrgH/AbUB+gL/ - AS8BqAHuAf8BAAFVAb4B/wEAAVUBxwH/AQABVQHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVoBrgHb - Af8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9AH/A/QB/wEAAVgBxwH/A/QB/wGUAb0B4AH/AQABWAHH - Af8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/AdABrwGBAf8BzgGgARsB/wHLAZwBGgH/AcwBnAEa - Af8BygGZARIB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAEAAf8BzAGoAUIB/xAAAyEB/wMHAf8UAAMHAf8DIQH/EAAB6AH0Av8BmAGkAbAB/wEA - AVUBvgH/AQABVQG+Af8BAAFVAb4B/wEAAVUBvgH/ASgBUQGdAf8BKAFRAZ0B/wEQAVUBrgH/ARABVQGu - Af8BAAFVAb4B/wEAAVUBvgH/AQABVQHHAf8BAAFVAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFaAa4B2wH/ - AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AQABWAHHAf8BWgGuAdsB/wEAAVgBxwH/AQABWAHHAf8BAAFY - AccB/wEAAVgBxwH/AZQBvQHgAf8BAAFYAccB/wEAAVgBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - ASQB/wHQAaIBHQH/AdABoQEeAf8B0AGhAR4B/wHQAZ8BGQH/AcsBpAEuAf8B1AHDAaUB/wHKAaQBLgH/ - Ac0BmwERAf8BzgGcARQB/wHOAZwBFAH/Ac4BnAETAf8BzwGdARMB/wHaAcMBogH/EAADIQH/AwcB/xQA - AwcB/wMhAf8QAAHoAfQC/wGYAaQBsAH/AQABVQG+Af8BAAFVAb4B/wEAAVUBxwH/AQABVQHHAf8BAAFV - Ab4B/wEvAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAAFYAccB/wEAAVgBxwH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATIB/wHYAakBJAH/ - AdUBpgEkAf8B1QGmASIB/wHUAaMBHQH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEZAf8B0wGi - ARwB/wHTAaEBGgH/AdUBowEZAf8BzQGdAR0B/wH0Ae0B5AH/EAADhgH/AwcB/xQAAwcB/wOGAf8QAAHT - Ad8B6wH/AegB9AL/AS8BqAHuAf8BAAFVAb4B/wEAAVUBxwH/AQABVQHHAf8BAAFVAb4B/wEAAVUBvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFY - AccB/wEAAVgBxwH/AQABWAHHAf8BAAFYAccB/wEAAVgBxwH/AVoBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgEzAf8B2gGrAScB/wHZAasBKAH/AdcBpwEhAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEhAf8B1wGnASEB/wHYAacBHwH/AdkBqgEkAf8B2wHBAZ4B/xgAA4YB/wMHAf8MAAMH - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAAFVAb4B/wEAAVUBvgH/AQABVQG+Af8BAAFVAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVgBxwH/AQABWAHH - Af8BAAFYAccB/wEAAVgBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBOQH/Ad8BsQEsAf8B3AGtAScB/wHXAbUBSgH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBIwH/Ad4BrgEm - Af8B3gGxAS4B/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/AS8BqAHuAf8BAAFVAb4B/wEA - AVUBvgH/AS8BqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABWAHHAf8BAAFY - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFKAf8B4wG4ATsB/wHjAbQBLwH/Ad0BrgEn - Af8B4QGyASsB/wHiAbYBNQH/AdsBswFBAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBKgH/AbIBiAEYAf8BuAGSASkB/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNIAf8DwAH/A/QB/wPW + Af8DMwH/A/UJ/wP+Af8D9gH/AVkBrgHbAf8BWQGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBOQEAAf8BnQEzAQAB/wGcATEBAAH/AaQBPwEAAf8BnQEyAQAB/wGdATIBAAH/AZ8BOAEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwYB/wwAAwYB/wOGAf80AAPfAf8D9AH/ATYBqAHmAf8BBgFUAbYB/wEA + AVQBvgH/AS4BqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxEB/wMRAf8DEQH/A6IB/wP6Bf8D/gH/ + A/YB/wFZAa4B2wH/AQABVwHHAf8BAAFXAccB/wFZAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEv + Af8BoAE2AQAB/wGhATcBAAH/AZ4BMgEAAf8BygGqAUAB/wH2AfEB6AH/Ac0BrwFKAf8BngEyAQAB/wGh + ATcBAAH/AaEBNgEAAf8BugGUASsB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABNgGoAeYB/wEG + AVQBtgH/AQABVAG+Af8BAAFUAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DKgH/A+gB/wMsAf8D6AH/ + A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/ + BAABzAGvAYgB/wGlATsBAAH/AaUBOwEAAf8BpQE8AQAB/wGiATYBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj + ATgBAAH/AaUBOwEAAf8BpQE7AQAB/wGlATsBAAH/AcoBrQGEAf8UAAMgAf8DAAH/FwAB/wMgAf8wAAEP + AVQBrgH/AQ8BVAGuAf8BJwFQAZ0B/wEnAVABnQH/AQYBVAG2Af8BBgFUAbYB/wGYAaQBsAH/AegB9Ab/ + A/kB/wONAf8DUQH/A1sB/wP3Bf8D9AH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AZQBvQHgAf8BAAFX + AccB/wEAAVcBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFCAQAB/wGqAUABAAH/AaoBQAEAAf8BqgFA + AQAB/wGnATsBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAT0BAAH/AaoBPwEAAf8BqgFAAQAB/wGqAUABAAH/ + AakBQQEAAf8B8AHpAd4B/xAAAyAB/wMAAf8XAAH/AyAB/xwAA98B/wPfAf8MAAEPAVQBrgH/AbUB+gL/ + Ac0B9gL/Ac0B9gL/ATYBqAHmAf8BNgGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DEQH/A8kB/wP7 + Bf8D9AH/AQABVwHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw + AUcBAAH/Aa4BRAEAAf8BrwFFAQAB/wGvAUUBAAH/AawBQAEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BQgEA + Af8BrwFEAQAB/wGvAUUBAAH/Aa4BRQEAAf8BrwFEAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ + GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABJwFQAZ0B/wHNAfYC/wHJAfYC/wFTAaQB0QH/ + AVMBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABVwHHAf8D9AH/A/YB/wFZ + Aa4B2wH/AVkBrgHbAf8D9AH/A/wF/wHKAakBRwH/AcABjgEDAf8BtQFMAQAB/wGzAUgBAAH/AbQBSgEA + Af8BsgFGAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFHAQAB/wG0AUkBAAH/AbQBSgEAAf8BtAFKAQAB/wG1 + AUoBAAH/AcQBnwE0Af8PAAH/AzkB/xwAAzkB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ + AegB9AL/A98B/wQAAScBUAGdAf8BzQH2Av8BUwGkAdEB/wEjAVABoQH/ASMBUAGhAf8BUwGkAdEB/wP0 + Af8D3wX/A/4B/wP2Af8BWQGuAdsB/wFZAa4B2wH/A/UB/wP9Af8D9AH/AQABVwHHAf8D9AH/AVkBrgHb + Af8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/A/0B/wHJAaYBPgH/AckBmwEVAf8BxQGUAQ4B/wG+ + AYkBAAH/AboBgAEAAf8BtwFKAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFMAQAB/wG5AU4BAAH/AbkBTgEA + Af8BuQFOAQAB/wG6AU4BAAH/AcMBmgEoAf8QAAMGAf8DwAH/FAADwAH/AwYB/xAAAdMB3wHrAf8B6AH0 + Av8BLgGoAe4B/wEAAVQBvgH/AQABVAG+Af8BLgGoAe4B/wHNAfYC/wHNAfYC/wEPAVQBrgH/AbUB+gL/ + AS4BqAHuAf8BAAFUAb4B/wEAAVQBxwH/AQABVAHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVkBrgHb + Af8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9AH/A/QB/wEAAVcBxwH/A/QB/wGUAb0B4AH/AQABVwHH + Af8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/AdABrwGBAf8BzgGgARoB/wHLAZwBGQH/AcwBnAEZ + Af8BygGZAREB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC + AYoBAAH/AcYBkAEAAf8BzAGoAUEB/xAAAyAB/wMGAf8UAAMGAf8DIAH/EAAB6AH0Av8BmAGkAbAB/wEA + AVQBvgH/AQABVAG+Af8BAAFUAb4B/wEAAVQBvgH/AScBUAGdAf8BJwFQAZ0B/wEPAVQBrgH/AQ8BVAGu + Af8BAAFUAb4B/wEAAVQBvgH/AQABVAHHAf8BAAFUAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFZAa4B2wH/ + AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AQABVwHHAf8BWQGuAdsB/wEAAVcBxwH/AQABVwHHAf8BAAFX + AccB/wEAAVcBxwH/AZQBvQHgAf8BAAFXAccB/wEAAVcBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm + ASMB/wHQAaIBHAH/AdABoQEdAf8B0AGhAR0B/wHQAZ8BGAH/AcsBpAEtAf8B1AHDAaUB/wHKAaQBLQH/ + Ac0BmwEQAf8BzgGcARMB/wHOAZwBEwH/Ac4BnAESAf8BzwGdARIB/wHaAcMBogH/EAADIAH/AwYB/xQA + AwYB/wMgAf8QAAHoAfQC/wGYAaQBsAH/AQABVAG+Af8BAAFUAb4B/wEAAVQBxwH/AQABVAHHAf8BAAFU + Ab4B/wEuAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ + AZQBvQHgAf8BAAFXAccB/wEAAVcBxwH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9AH/ + A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATEB/wHYAakBIwH/ + AdUBpgEjAf8B1QGmASEB/wHUAaMBHAH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEYAf8B0wGi + ARsB/wHTAaEBGQH/AdUBowEYAf8BzQGdARwB/wH0Ae0B5AH/EAADhgH/AwYB/xQAAwYB/wOGAf8QAAHT + Ad8B6wH/AegB9AL/AS4BqAHuAf8BAAFUAb4B/wEAAVQBxwH/AQABVAHHAf8BAAFUAb4B/wEAAVQBvgH/ + AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFX + AccB/wEAAVcBxwH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ + A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgEyAf8B2gGrASYB/wHZAasBJwH/AdcBpwEgAf8B8QHmAdMF/wH1 + Ae4B4QH/AdcBpgEgAf8B1wGnASAB/wHYAacBHgH/AdkBqgEjAf8B2wHBAZ4B/xgAA4YB/wMGAf8MAAMG + Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAAFUAb4B/wEAAVQBvgH/AQABVAG+Af8BAAFUAb4B/wGY + AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVcBxwH/AQABVwHH + Af8BAAFXAccB/wEAAVcBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg + AbYBOAH/Ad8BsQErAf8B3AGtASYB/wHXAbUBSQH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBIgH/Ad4BrgEl + Af8B3gGxAS0B/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/AS4BqAHuAf8BAAFUAb4B/wEA + AVQBvgH/AS4BqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABVwHHAf8BAAFX + AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFJAf8B4wG4AToB/wHjAbQBLgH/Ad0BrgEm + Af8B4QGyASoB/wHiAbYBNAH/AdsBswFAAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABFwG5Af8BAAEJATgB/wEA - AQQBGgH/9QABOAHHAf8BAgHNAfwB/wEAARkBhwH/tAADOwFlAQABDgEAAf8DOgFgNQABOAHHAf8BAAGg - AdIB/wEAAQ8BLwH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEJAacBAAH/AQABEgEA - Af8BAAEOAQAB/wM2AVgxAAE4AccB/wEEAdEB/AH/AQABGQGHAf8zAAEBAwABARAAAewB0gHsAf8BLwEA - AS4B/wHmAcwB5gH/AwIBAwMSARkQAAEsATYBOAH/ASIBKgEtAf8BGQEeASEB/wEPARIBFQH/AgUBCgH/ - AwAB/wMAAf8DAAH/AwAB/xwAAz4BagEJAacBAAH/ASYBuwEaAf8BAAEWAQAB/wEAARMBAAH/AQABDgEA - Af8DNQFXLQABOAHHAf8BAAGhAdEB/wEAAQ8BLwH/PwABAQQAAe0B2AHtAf8BqQENAagB/wGAAQABPAH/ - ATIBAAEyAf8B6wHRAesB/xQAATUBggGDAf8BlwHbAfUB/wEYAakBygH/ARgBqQHKAf8BFwGnAckB/wEP - AZ8BwgH/AQYBlgG5Af8BAAGNAbAB/wMAAf8cAAEIAaQBAAH/ASYBuwEaAf8BJgG7ARoB/wEAARUBAAH/ - AQABFgEAAf8BAAETAQAB/wEAAQ4BAAH/AzABTCkAATgBxwH/AQ4B4gH9Af8BAAEVAYAB/yMAAQEDAAEB - AwABAQMAAQEDAAEBAwABAQMAAQEEAAHoAdEB6AH/AaoBDQGpAf8BzAEkAcsB/wE7AQABOwH/AZYBAAGV - Af8BOAEAATcB/wHwAdUB8AH/EAABPQKMAf8BoAHgAfcB/wEuAc0B8QH/ASEBxwHuAf8BFQHBAesB/wEK - AbwB6AH/AQABtwHmAf8BBAGSAbYB/wMAAf8cAAEJAacBAAH/ASYBuwEaAf8BJgG7ARoB/wGqAdQBogH/ - AQUBoAEAAf8BAAEWAQAB/wEAARMBAAH/AQABDQEAAf8pAAE4AccB/wEVAdcB/AH/AQABFQGAAf8kAAGr - AfAB9wH/AasB4gHlAf8BrAHOAcwB/wGtAbsBtQH/Aa4BpwGcAf8EAAHkAcoB5AH/AakBDQGoAf8B0wEo - AdIB/wHUASsB0wH/ATwBAAE7Af8BnwEAAZ8B/wGOAQABjQH/AToBAAE5Af8QAAGFApQB/wGnAeMB+AH/ - ATkB0wH0Af8BLgHOAfEB/wEiAcgB7gH/ARUBwgHrAf8BCgG8AegB/wEJAZkBvAH/AwAB/xgAAwIBAwEL - AasBAAH/ASYBuwEaAf8BqgHUAaIB/wG3AdoBsAH/AaoB1AGiAf8BAAGTAQAB/wEAARYBAAH/AQABDgEA - Af8lAAEdAZAB/wEAATgBxwH/ASsB3gH8Af8BAAEVAYAB/wEAAQsBNwH/OAABqgEPAakB/wHSAScB0QH/ - AdUBLAHVAf8BvQEtAbwB/wHeAZgB3QH/AY8BAwGOAf8BnQEAAZwB/wE7AQABOwH/EAABjAKbAf8BrgHm - AfoB/wGGAdgB9gH/ATkB1AH0Af8BLgHNAfEB/wEiAccB7gH/ARUBwgHrAf8BEAGgAcEB/wIAAQUB/xgA - AwQBBQEgAbgBEwH/AbQB2QGtAf8BxQHiAcAB/wG3AdoBsAH/AbcB2gGwAf8BqgHUAaIB/wEAAYgBAAH/ - AQABDgEAAf8hAAEsAaAB/wEAAYcBxwH/ARgBwAHwAf8BDQHLAf4B/wEOAbMB3QH/AQABCgEjAf8BAAEL - ATcB/xgAAasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/Aa0BtQGsAf8BrgGkAZgB/wQAAagBDAGn - Af8B0gEqAdEB/wG8ASwBuwH/Ae8BpQHuAf8B+wGfAfoB/wHvAZ0B7gH/AZcBDwGWAf8BOQEAATkB/xAA - AZEBogGhAf8BsgHoAfwB/wGgAeIB+gH/AYYB2AH2Af8BOgHTAfMB/wEuAc4B8QH/ASEByAHuAf8BFAGl - AccB/wEJAQoBDwH/GAADAgEDA0QBegGOAcYBhAH/AbkB3AGzAf8BwwHhAb4B/wHDAeEBvgH/AbcB2gGw - Af8BqgHUAaIB/wEAASQBAAH/HQABgAGxAf8BAAGHAcgB/wEPAboB9wH/AREBwgH5Af8BBwG3AfkB/wEl - AdYB+wH/AQIBpgHoAf8BAAEJASEB/wEAAQ4BgwH/MAABpwENAaYB/wG8ASwBuwH/Ae8BpQHuAf8B+wGb - AfoB/wH7AZgB+gH/AfsBmQH6Af8B5wGYAeYB/wGRAQsBkAH/EAABlAGmAaUB/wG9AewB/AH/AaUB5QH7 - Af8BnwHiAfoB/wGGAdgB9gH/AToB1AH0Af8BLgHNAfEB/wEYAakBygH/AREBFQEYAf8gAANGAX4BkAHH - AYYB/wG+Ad4BuAH/AcMB4QG+Af8BswHZAawB/wGQAccBhgH/Az0BaR0AATgBuAH/AREBwQH5Af8BDQG3 - AfkB/wGTAe4B/gH/AY8B7AH+Af8BDwG0AfMB/wGNAeMB/gH/AQwBugHiAf8BAAELASgB/xwAAasB8AH3 + Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABFgG5Af8BAAEIATcB/wEA + AQMBGQH/9QABNwHHAf8BAQHNAfwB/wEAARgBhwH/tAADOwFlAQABDQEAAf8DOgFgNQABNwHHAf8BAAGg + AdIB/wEAAQ4BLgH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEIAacBAAH/AQABEQEA + Af8BAAENAQAB/wM2AVgxAAE3AccB/wEDAdEB/AH/AQABGAGHAf8zAAEBAwABARAAAewB0gHsAf8BLgEA + AS0B/wHmAcwB5gH/AwIBAwMSARkQAAErATUBNwH/ASEBKQEsAf8BGAEdASAB/wEOAREBFAH/AgQBCQH/ + AwAB/wMAAf8DAAH/AwAB/xwAAz4BagEIAacBAAH/ASUBuwEZAf8BAAEVAQAB/wEAARIBAAH/AQABDQEA + Af8DNQFXLQABNwHHAf8BAAGhAdEB/wEAAQ4BLgH/PwABAQQAAe0B2AHtAf8BqQEMAagB/wGAAQABOwH/ + ATEBAAExAf8B6wHRAesB/xQAATQBggGDAf8BlwHbAfUB/wEXAakBygH/ARcBqQHKAf8BFgGnAckB/wEO + AZ8BwgH/AQUBlgG5Af8BAAGNAbAB/wMAAf8cAAEHAaQBAAH/ASUBuwEZAf8BJQG7ARkB/wEAARQBAAH/ + AQABFQEAAf8BAAESAQAB/wEAAQ0BAAH/AzABTCkAATcBxwH/AQ0B4gH9Af8BAAEUAYAB/yMAAQEDAAEB + AwABAQMAAQEDAAEBAwABAQMAAQEEAAHoAdEB6AH/AaoBDAGpAf8BzAEjAcsB/wE6AQABOgH/AZYBAAGV + Af8BNwEAATYB/wHwAdUB8AH/EAABPAKMAf8BoAHgAfcB/wEtAc0B8QH/ASABxwHuAf8BFAHBAesB/wEJ + AbwB6AH/AQABtwHmAf8BAwGSAbYB/wMAAf8cAAEIAacBAAH/ASUBuwEZAf8BJQG7ARkB/wGqAdQBogH/ + AQQBoAEAAf8BAAEVAQAB/wEAARIBAAH/AQABDAEAAf8pAAE3AccB/wEUAdcB/AH/AQABFAGAAf8kAAGr + AfAB9wH/AasB4gHlAf8BrAHOAcwB/wGtAbsBtQH/Aa4BpwGcAf8EAAHkAcoB5AH/AakBDAGoAf8B0wEn + AdIB/wHUASoB0wH/ATsBAAE6Af8BnwEAAZ8B/wGOAQABjQH/ATkBAAE4Af8QAAGFApQB/wGnAeMB+AH/ + ATgB0wH0Af8BLQHOAfEB/wEhAcgB7gH/ARQBwgHrAf8BCQG8AegB/wEIAZkBvAH/AwAB/xgAAwIBAwEK + AasBAAH/ASUBuwEZAf8BqgHUAaIB/wG3AdoBsAH/AaoB1AGiAf8BAAGTAQAB/wEAARUBAAH/AQABDQEA + Af8lAAEcAZAB/wEAATcBxwH/ASoB3gH8Af8BAAEUAYAB/wEAAQoBNgH/OAABqgEOAakB/wHSASYB0QH/ + AdUBKwHVAf8BvQEsAbwB/wHeAZgB3QH/AY8BAgGOAf8BnQEAAZwB/wE6AQABOgH/EAABjAKbAf8BrgHm + AfoB/wGGAdgB9gH/ATgB1AH0Af8BLQHNAfEB/wEhAccB7gH/ARQBwgHrAf8BDwGgAcEB/wIAAQQB/xgA + AwQBBQEfAbgBEgH/AbQB2QGtAf8BxQHiAcAB/wG3AdoBsAH/AbcB2gGwAf8BqgHUAaIB/wEAAYgBAAH/ + AQABDQEAAf8hAAErAaAB/wEAAYcBxwH/ARcBwAHwAf8BDAHLAf4B/wENAbMB3QH/AQABCQEiAf8BAAEK + ATYB/xgAAasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/Aa0BtQGsAf8BrgGkAZgB/wQAAagBCwGn + Af8B0gEpAdEB/wG8ASsBuwH/Ae8BpQHuAf8B+wGfAfoB/wHvAZ0B7gH/AZcBDgGWAf8BOAEAATgB/xAA + AZEBogGhAf8BsgHoAfwB/wGgAeIB+gH/AYYB2AH2Af8BOQHTAfMB/wEtAc4B8QH/ASAByAHuAf8BEwGl + AccB/wEIAQkBDgH/GAADAgEDA0QBegGOAcYBhAH/AbkB3AGzAf8BwwHhAb4B/wHDAeEBvgH/AbcB2gGw + Af8BqgHUAaIB/wEAASMBAAH/HQABgAGxAf8BAAGHAcgB/wEOAboB9wH/ARABwgH5Af8BBgG3AfkB/wEk + AdYB+wH/AQEBpgHoAf8BAAEIASAB/wEAAQ0BgwH/MAABpwEMAaYB/wG8ASsBuwH/Ae8BpQHuAf8B+wGb + AfoB/wH7AZgB+gH/AfsBmQH6Af8B5wGYAeYB/wGRAQoBkAH/EAABlAGmAaUB/wG9AewB/AH/AaUB5QH7 + Af8BnwHiAfoB/wGGAdgB9gH/ATkB1AH0Af8BLQHNAfEB/wEXAakBygH/ARABFAEXAf8gAANGAX4BkAHH + AYYB/wG+Ad4BuAH/AcMB4QG+Af8BswHZAawB/wGQAccBhgH/Az0BaR0AATcBuAH/ARABwQH5Af8BDAG3 + AfkB/wGTAe4B/gH/AY8B7AH+Af8BDgG0AfMB/wGNAeMB/gH/AQsBugHiAf8BAAEKAScB/xwAAasB8AH3 Af8BrALVAf8BrgG0AawB/wGuAZkBigH/A/0B/wHPAYgBzwH/AeIBrwHiAf8B+wGrAfoB/wH7AZgB+gH/ AfsBmAH6Af8B6gGQAekB/wHPAYgBzwH/AfQB5gH0Af8QAAGUAaYBpQH/Ab0B7AH8Af8BvQHsAfwB/wGy - AegB/AH/Aa4B5gH6Af8BpwHkAfkB/wGgAeAB9wH/AZcB2wH1Af8BGgEfASMB/yQAA0cBgQGUAckBigH/ - Ab0B3gG3Af8BjgHGAYQB/wMwAUshAAGDAbsB/wEWAcYB+QH/ASYBigGsAf8BJgGKAawB/wEmAYoBrAH/ - ASYBigGsAf8BJgGKAawB/wEfAdUB+gH/AQABCgElAf8wAAHwAdQB8AH/Ac8BiAHPAf8B7gG+Ae4B/wH7 + AegB/AH/Aa4B5gH6Af8BpwHkAfkB/wGgAeAB9wH/AZcB2wH1Af8BGQEeASIB/yQAA0cBgQGUAckBigH/ + Ab0B3gG3Af8BjgHGAYQB/wMwAUshAAGDAbsB/wEVAcYB+QH/ASUBigGsAf8BJQGKAawB/wElAYoBrAH/ + ASUBigGsAf8BJQGKAawB/wEeAdUB+gH/AQABCQEkAf8wAAHwAdQB8AH/Ac8BiAHPAf8B7gG+Ae4B/wH7 Aa4B+gH/AewBkQHrAf8BzwGIAc8B/wHzAeAB8gH/FAABlAGmAaUB/wGUAaYBpQH/AZMCpQH/AY8BnwGe - Af8BiAKXAf8BgQKOAf8BNgKEAf8BLAE2ATgB/wEjASoBLAH/KAADPAFmAZQByQGKAf8DJQE3JQABgwG8 - Af8BGQHSAfoB/wEHASEBhAH/DAABCgGQAcEB/wEQAbsB4QH/AQABCAEiAf80AAHyAdsB8gH/Ac8BiAHP - Af8B4wGsAeMB/wHPAYgBzwH/AfMB4wHzAf9gAAMBAQIEAAMBAQIpAAGIAcEB/wEDAZ0B0AH/ATcB4wH6 - Af8BBwGFAZ4B/wEOASEBhwH/AQ4BMwGcAf8BDwG/AfQB/wEFAYwBqgH/AQABFQE3Af84AAHyAdsB8gH/ - Ac8BiAHPAf8B8AHjAfAB/5gAAQYBlAHGAf8BAQGKAcEB/wEDAZoBzQH/ASsB1QH1Af8BLgHpAf4B/wEq - AdQB8wH/AQcBkgGyAf8BAAEhAYwB/wEAAS0BogH/PAAB/gH7Af4B/6AAAQYBlAHGAf8BAgGNAcMB/wEA - AYsBugH/AQABiwG6Af8BAAGIAbcB/wEAATABoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMzAVPwAAM4 - AV0B1wGaAQcB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQoBgwGWAf8BAAEjAY0B/wEA - ARoBjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQcB/wHYAZsBCAH/AZkCAAH/AZkCAAH/AZkCAAH/ - Ay8BSigAAVsCXgHQAQABsAHRAf8BhAHVAegB/wGhAesB9gH/ASAB5AL/AQABvgHzAf8BAAGfAd4B/wEA - AYsBvgH/AVsCXgHZVAABtwGiAZMB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQ - AgAB/wEQAgAB/wEQAgAB/wEQAgAB/wEQAgAB/xQAAdgBmwEJAf8B2AGbAQgB/wHYAZsBCAH/AZkCAAH/ - AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiUAAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEeAdkB9AH/ - AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABEAGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJR + Af8BiAKXAf8BgQKOAf8BNQKEAf8BKwE1ATcB/wEiASkBKwH/KAADPAFmAZQByQGKAf8DJQE3JQABgwG8 + Af8BGAHSAfoB/wEGASABhAH/DAABCQGQAcEB/wEPAbsB4QH/AQABBwEhAf80AAHyAdsB8gH/Ac8BiAHP + Af8B4wGsAeMB/wHPAYgBzwH/AfMB4wHzAf9gAAMBAQIEAAMBAQIpAAGIAcEB/wECAZ0B0AH/ATYB4wH6 + Af8BBgGFAZ4B/wENASABhwH/AQ0BMgGcAf8BDgG/AfQB/wEEAYwBqgH/AQABFAE2Af84AAHyAdsB8gH/ + Ac8BiAHPAf8B8AHjAfAB/5gAAQUBlAHGAf8BAAGKAcEB/wECAZoBzQH/ASoB1QH1Af8BLQHpAf4B/wEp + AdQB8wH/AQYBkgGyAf8BAAEgAYwB/wEAASwBogH/PAAB/gH7Af4B/6AAAQUBlAHGAf8BAQGNAcMB/wEA + AYsBugH/AQABiwG6Af8BAAGIAbcB/wEAAS8BoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMzAVPwAAM4 + AV0B1wGaAQYB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQkBgwGWAf8BAAEiAY0B/wEA + ARkBjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQYB/wHYAZsBBwH/AZkCAAH/AZkCAAH/AZkCAAH/ + Ay8BSigAAVsCXgHQAQABsAHRAf8BhAHVAegB/wGhAesB9gH/AR8B5AL/AQABvgHzAf8BAAGfAd4B/wEA + AYsBvgH/AVsCXgHZVAABtwGiAZMB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEP + AgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/xQAAdgBmwEIAf8B2AGbAQcB/wHYAZsBBwH/AZkCAAH/ + AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiUAAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEdAdkB9AH/ + AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABDwGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJR AaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3AaIBkwH/Af0B+wH5 Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGnAf8B2wG7AacB/wHb - AbsBpwH/Ac8BtAGjAf8BEAIAAf8UAAHYAZsBCAH/AdgBmwEIAf8B6QG0ASkB/wH8AdYBrwH/AbUBEAEA - Af8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIAABAQGRAa4B/wEAAdIB+gH/AY0B5AH2Af8BoQHrAfYB/wEd - AdcB8wH/AQABuQHvAf8BAAGnAegB/wEAAZwB2gH/AQABEgGGAf8QAAM1AVUDZAHnAc8BuAGpAf8B6wHW - AcgB/wHlAcsBuwH/AbMBlQEsAf8BZAJcAecDSwGOA2QB5wHPAbgBqQH/AesB1gHIAf8B5QHLAbsB/wGz - AZUBLAH/AWQCXAHnATUCNAFVCAABtwGiAZMB/wP+Af8BugGmAZgB/wG1AaABkQH/AfsB7AHjAf8BpAGN - ASsB/wGaAYMBHwH/AfYB1gHCAf8BiAEeAQsB/wGDARgBBQH/Ac8BtAGjAf8BEAIAAf8UAAHYAZsBCAH/ - AeoBtwGCAf8B+wHYAbIB/wH+AdEBowH/AfsB2AGyAf8BrwEEAQAB/wGZAgAB/wGZAgAB/wGZAgAB/wMq - AUEcAAEEAZUBsAH/AQAB0gH6Af8BjQHkAfQB/wGhAesB9gH/AR0B1wHyAf8BAAG5Ae4B/wEAAacB6AH/ - AQABnAHaAf8BAAEVAYgB/xAAA1UBsgHmAdYBywH/A1kBwgJgAVwB1ANgAdQBTAEqASEB+wMAAf8DAAH/ - AwAB/wFhAlgB5gJgAVwB1ANgAdQDWQHCAbkBnAGIAf8DVQGyCAABugGlAZYB/wP+Af8D/gH/A/4B/wH9 - AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wH/AfgB4QHSAf8B9wHbAckB/wHQAbkBqwH/ARACAAH/ - FAAB5wGzASkB/wHxAcMBkQH/Af4BzwGdAv8BzQGZAf8B/gHQAZ8B/wH7AdgBsgH/AakCAAH/AZkCAAH/ - AZkCAAH/AZkCAAH/AwQBBRgAAQYBmQG1Af8BAAHRAfsB/wGOAeQB9QH/AaEB6wH2Af8BHQHXAfIB/wEA - AbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARgBigH/EAADZQH0BP8DVwHfAx0BKgNcAc0F/wH+AfcC/wHx - AeYB/wH6AeMB1AH/AfMB1wHHAf8DSgGNAx0BKgNcAd8B7wHWAccB/wFkAlIB9AgAAb4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOASsB/wGaAYMBHwH/AfsB7AHjAf8BiQEeAQwB/wGDARgBBQH/ - AdEBwQG2Af8BEAIAAf8UAANFAXwB5QGyASgB/wH0AcABiwL/Ac0BmQL/Ac0BmQH/Af4B0AGhAf8B+wHY - AbIB/wGpAgAB/wGZAgAB/wGZAgAB/xwAAQkBmwG3Af8BAAHQAfkB/wGNAeMB9QH/AaEB6wH2Af8BHwHZ - AfIB/wEAAbkB7gH/AQABpwHoAf8BAAGcAdoB/wEAARoBjQH/EAADVQGyAfIB5gHeAf8DWQHCA1wB1AFg - AlwB1ANhAeIB0wG1AaIB/wNNAfoB2gHAAa8B/wNfAfMDWwHWAWACXAHUA1kBwgHLAbEBoQH/A1UBsggA - AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wH6AecB2wH/ - AdEBwQG2Af8BEAIAAf8YAANGAX8B5AGwASYB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGhAf8B+wHY - AbIB/wGpAgAB/wGZAgAB/xwAAQsBngG6Af8BAAHQAfkB/wGNAeMB9AH/AaEB6wH2Af8BHAHXAfIB/wEA - AbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAARwBjwH/EAADNQFVA2QB5wHtAeEB1wP/Af0C/wH3AfEB/wHY - AcQBtwH/A2QB5wNLAY4DZAHnAe0B4QHXA/8B/QL/AfcB8QH/AdgBxAG3Af8DZAHnAzUBVQgAAcgBsgGj - Af8D/gH/AboBpgGYAf8BtAGgAZEB/wP+Af8BpAGOASsB/wGZAYQBHwH/Af0B9wHzAf8BiAEeAQsB/wGD - ARgBBQH/AdEBwQG2Af8BEAIAAf8cAANJAYcB4wGvASUB/wH2AcQBkAL/Ac0BmQL/Ac0BmQH/Af4B0AGh - Af8B8gHJAZ0B/wGwAQcBAAH/HAABDAGiAbwB/wEAAc4B9wH/AYsB4wH0Af8BoQHrAfYB/wEbAdYB8gH/ - AQABtwHuAf8BAAGnAegB/wEAAZwB2gH/AQABHQGSAf8UAAMxAU0DUgGhA18B4wNfAeMDUgGhAzEBTQQA - AzEBTQNSAaEDXwHjA18B4wNSAaEDMQFNDAABzAG2AacB/wP+Af8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9 - AfsB+QH/Af0B9wHzAf8B/AHyAewB/wH7AewB4wH/ARACAAH/IAADSQGHAeMBrwElAf8B9gHEAZAC/wHN - AZkB/wHzAcIBjgH/AeMBsAEmAf8DQwF4HAABGAGpAcAB/wEDAdQB+gH/AZwB7AH6Af8BqwHvAfoB/wGm - Ae0B+AH/AZQB5wH4Af8BHgHZAfYB/wEAAb0B6QH/AQABKQGXAf9UAAHqAaoBiwH/AeoBqgGLAf8B6gGq - AYsB/wHpAaUBhAH/AecBlwEbAf8B5gGOAQ8B/wHjASoBAAH/AeMBIwEAAf8B4gEfAQAB/wHiAR8BAAH/ - AeIBHwEAAf8ByAEPAQAB/yQAA0kBhwHjAa8BJQH/Ae4BvQGKAf8B4wGwASYB/wM0AVQgAAGAAbMBxQH/ - AZsB3gHrAf8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AaAB3wHqAf8BEwGR - AaIB/1QAAeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGwAYsB/wH4AacBKgH/ - AfYBogEkAf8B9QGdAR4B/wH1AZkBFwH/AfMBlQESAf8BzQESAQAB/ygAA0ABbgHlAbIBKgH/AyYBOCQA - AzsBYwNgAdYBIwGrAboB/wEdAaMBswH/ARkBnQGvAf8BGAGbAa4B/wEcAaIBtAH/A14B2QNAAW9UAAHq - AaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AekBoQEsAf8B6AGbASMB/wHmAY4BDwH/AeUBhwEF - Af8B5AGBAQAB/wHkASgBAAH/AeMBIwEAAf8B4gEfAQAB//8A/wAKAAFCAU0BPgcAAT4DAAEoAwABQAMA - AUADAAEBAQABAQYAAQIWAAP/gQAF/wHDAgAB8AEfA/8BgQIAAcABBwHzAZ8B/wMAAYABAwHnAc8B/wHA - AgABgAEDAecBzwH/BAABAQHnAc8B5wQAAQEB5wHPAcMBAQMAAQEBzwHnAYEEAAEBAecBzwUAAQEB5wHP - BQABAQHnAc8FAAEBAecBzwEAAQECAAGAAQMB8wGfAYABEwIAAYABAwL/AcABPwIAAeABBwL/AeABfwIA - AfABHwL/AfAB/wIAAv8B/AF/Bv8B/AF/BP8B/AF/AfwBfwE/AXMC/wH4AT8B/AF/AfkB4AHwAQcB8AEf - AfwBfwH/AUEB8AEHAfABDwH8AX8CgAHwAQcB8AEPAfwBfwHBAQAB8AEHAeABDwH4AT8B/wEAAfABBwHg - AQ8B8AEfAYEBAAHwAQcB4AEPAeABDwH/AQAB8AEHAfgBDwHgAQ8B4AEAAfABBwH8AR8B4AEPAf8BAQHw - AQcB/gE/AeMBjwH/AYMC/wH9AX8B4AEPAf8BxwT/AeABDwH/Ae8E/wHwAR8M/wH4B/8B8AF/AfABBwT/ - AeABPwHwAQcC/wHAAQMB4AEfAfABBwHAAYEBwAEDAeABDwHwAQcBgAEAAcABAwHgAQcB8AEHAYABAAHA - AQMB4AEDAfABBwGAAQABwAEDAeABBwHwAQcBgAEAAcABAwHwAQcB8AEHAYABAAHAAQMB+AEHAfABBwHA - AYEBwAEDAfwBBwHwAQcC/wHAAQMB/gEPAfABBwL/AcABAwH/AR8B8AEHAv8BwAEDEP8L + AbsBpwH/Ac8BtAGjAf8BDwIAAf8UAAHYAZsBBwH/AdgBmwEHAf8B6QG0ASgB/wH8AdYBrwH/AbUBDwEA + Af8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIQABkQGuAf8BAAHSAfoB/wGNAeQB9gH/AaEB6wH2Af8BHAHX + AfMB/wEAAbkB7wH/AQABpwHoAf8BAAGcAdoB/wEAAREBhgH/EAADNQFVA2QB5wHPAbgBqQH/AesB1gHI + Af8B5QHLAbsB/wGzAZUBKwH/AWQCXAHnA0sBjgNkAecBzwG4AakB/wHrAdYByAH/AeUBywG7Af8BswGV + ASsB/wFkAlwB5wE1AjQBVQgAAbcBogGTAf8D/gH/AboBpgGYAf8BtQGgAZEB/wH7AewB4wH/AaQBjQEq + Af8BmgGDAR4B/wH2AdYBwgH/AYgBHQEKAf8BgwEXAQQB/wHPAbQBowH/AQ8CAAH/FAAB2AGbAQcB/wHq + AbcBggH/AfsB2AGyAf8B/gHRAaMB/wH7AdgBsgH/Aa8BAwEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DKgFB + HAABAwGVAbAB/wEAAdIB+gH/AY0B5AH0Af8BoQHrAfYB/wEcAdcB8gH/AQABuQHuAf8BAAGnAegB/wEA + AZwB2gH/AQABFAGIAf8QAANVAbIB5gHWAcsB/wNZAcICYAFcAdQDYAHUAUwBKgEhAfsDAAH/AwAB/wMA + Af8BYQJYAeYCYAFcAdQDYAHUA1kBwgG5AZwBiAH/A1UBsggAAboBpQGWAf8D/gH/A/4B/wP+Af8B/QH7 + AfkB/wH9AfcB8wH/AfsB7AHjAf8B+gHnAdsB/wH4AeEB0gH/AfcB2wHJAf8B0AG5AasB/wEPAgAB/xQA + AecBswEoAf8B8QHDAZEB/wH+Ac8BnQL/Ac0BmQH/Af4B0AGfAf8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZ + AgAB/wGZAgAB/wMEAQUYAAEFAZkBtQH/AQAB0QH7Af8BjgHkAfUB/wGhAesB9gH/ARwB1wHyAf8BAAG5 + Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEXAYoB/xAAA2UB9AT/A1cB3wMdASoDXAHNBf8B/gH3Av8B8QHm + Af8B+gHjAdQB/wHzAdcBxwH/A0oBjQMdASoDXAHfAe8B1gHHAf8BZAJSAfQIAAG+AakBmgH/A/4B/wG6 + AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEqAf8BmgGDAR4B/wH7AewB4wH/AYkBHQELAf8BgwEXAQQB/wHR + AcEBtgH/AQ8CAAH/FAADRQF8AeUBsgEnAf8B9AHAAYsC/wHNAZkC/wHNAZkB/wH+AdABoQH/AfsB2AGy + Af8BqQIAAf8BmQIAAf8BmQIAAf8cAAEIAZsBtwH/AQAB0AH5Af8BjQHjAfUB/wGhAesB9gH/AR4B2QHy + Af8BAAG5Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEZAY0B/xAAA1UBsgHyAeYB3gH/A1kBwgNcAdQBYAJc + AdQDYQHiAdMBtQGiAf8DTQH6AdoBwAGvAf8DXwHzA1sB1gFgAlwB1ANZAcIBywGxAaEB/wNVAbIIAAHD + Aa4BngH/A/4B/wP+Af8D/gH/A/4B/wP+Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8B+gHnAdsB/wHR + AcEBtgH/AQ8CAAH/GAADRgF/AeQBsAElAf8B9gHEAZAC/wHNAZkC/wHNAZkB/wH+AdABoQH/AfsB2AGy + Af8BqQIAAf8BmQIAAf8cAAEKAZ4BugH/AQAB0AH5Af8BjQHjAfQB/wGhAesB9gH/ARsB1wHyAf8BAAG3 + Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEbAY8B/xAAAzUBVQNkAecB7QHhAdcD/wH9Av8B9wHxAf8B2AHE + AbcB/wNkAecDSwGOA2QB5wHtAeEB1wP/Af0C/wH3AfEB/wHYAcQBtwH/A2QB5wM1AVUIAAHIAbIBowH/ + A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgEqAf8BmQGEAR4B/wH9AfcB8wH/AYgBHQEKAf8BgwEX + AQQB/wHRAcEBtgH/AQ8CAAH/HAADSQGHAeMBrwEkAf8B9gHEAZAC/wHNAZkC/wHNAZkB/wH+AdABoQH/ + AfIByQGdAf8BsAEGAQAB/xwAAQsBogG8Af8BAAHOAfcB/wGLAeMB9AH/AaEB6wH2Af8BGgHWAfIB/wEA + AbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAARwBkgH/FAADMQFNA1IBoQNfAeMDXwHjA1IBoQMxAU0EAAMx + AU0DUgGhA18B4wNfAeMDUgGhAzEBTQwAAcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8B/QH7 + AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEPAgAB/yAAA0kBhwHjAa8BJAH/AfYBxAGQAv8BzQGZ + Af8B8wHCAY4B/wHjAbABJQH/A0MBeBwAARcBqQHAAf8BAgHUAfoB/wGcAewB+gH/AasB7wH6Af8BpgHt + AfgB/wGUAecB+AH/AR0B2QH2Af8BAAG9AekB/wEAASgBlwH/VAAB6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBGgH/AeYBjgEOAf8B4wEpAQAB/wHjASIBAAH/AeIBHgEAAf8B4gEeAQAB/wHi + AR4BAAH/AcgBDgEAAf8kAANJAYcB4wGvASQB/wHuAb0BigH/AeMBsAElAf8DNAFUIAABgAGzAcUB/wGb + Ad4B6wH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wGgAd8B6gH/ARIBkQGi + Af9UAAHqAaoBiwL/AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnASkB/wH2 + AaIBIwH/AfUBnQEdAf8B9QGZARYB/wHzAZUBEQH/Ac0BEQEAAf8oAANAAW4B5QGyASkB/wMmATgkAAM7 + AWMDYAHWASIBqwG6Af8BHAGjAbMB/wEYAZ0BrwH/ARcBmwGuAf8BGwGiAbQB/wNeAdkDQAFvVAAB6gGq + AYsB/wHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHpAaEBKwH/AegBmwEiAf8B5gGOAQ4B/wHlAYcBBAH/ + AeQBgQEAAf8B5AEnAQAB/wHjASIBAAH/AeIBHgEAAf//AP8ACgABQgFNAT4HAAE+AwABKAMAAUADAAFA + AwABAQEAAQEGAAECFgAD/4EABf8BwwIAAfABHwP/AYECAAHAAQcB8wGfAf8DAAGAAQMB5wHPAf8BwAIA + AYABAwHnAc8B/wQAAQEB5wHPAecEAAEBAecBzwHDAQEDAAEBAc8B5wGBBAABAQHnAc8FAAEBAecBzwUA + AQEB5wHPBQABAQHnAc8BAAEBAgABgAEDAfMBnwGAARMCAAGAAQMC/wHAAT8CAAHgAQcC/wHgAX8CAAHw + AR8C/wHwAf8CAAL/AfwBfwb/AfwBfwT/AfwBfwH8AX8BPwFzAv8B+AE/AfwBfwH5AeAB8AEHAfABHwH8 + AX8B/wFBAfABBwHwAQ8B/AF/AoAB8AEHAfABDwH8AX8BwQEAAfABBwHgAQ8B+AE/Af8BAAHwAQcB4AEP + AfABHwGBAQAB8AEHAeABDwHgAQ8B/wEAAfABBwH4AQ8B4AEPAeABAAHwAQcB/AEfAeABDwH/AQEB8AEH + Af4BPwHjAY8B/wGDAv8B/QF/AeABDwH/AccE/wHgAQ8B/wHvBP8B8AEfDP8B+Af/AfABfwHwAQcE/wHg + AT8B8AEHAv8BwAEDAeABHwHwAQcBwAGBAcABAwHgAQ8B8AEHAYABAAHAAQMB4AEHAfABBwGAAQABwAED + AeABAwHwAQcBgAEAAcABAwHgAQcB8AEHAYABAAHAAQMB8AEHAfABBwGAAQABwAEDAfgBBwHwAQcBwAGB + AcABAwH8AQcB8AEHAv8BwAEDAf4BDwHwAQcC/wHAAQMB/wEfAfABBwL/AcABAxD/Cw== diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index 71f78177c..5996520f3 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -547,7 +547,7 @@ public void AddServer(IMetadataProvider provider, ConnectionInfo connection) serverContextMenu.Items.Add("Activity Monitor", null, (s, e) => OpenActivityMonitor(_contextMenuNode)); serverContextMenu.Items.Add("Generate C# Code...", null, (s, e) => GenerateCSharpCode(_contextMenuNode)); - var closeMenuItem = new ToolStripMenuItem("Close", Properties.Resources.Disconnect_16x, (s, e) => CloseServer(_contextMenuNode)); + var closeMenuItem = new ToolStripMenuItem("Disconnect", Properties.Resources.Disconnect_16x, (s, e) => CloseServer(_contextMenuNode)); serverContextMenu.Items.Add(closeMenuItem); _serverContextMenuItems.Add(connection.Title, serverContextMenu); @@ -586,9 +586,17 @@ public void AddServer(IMetadataProvider provider, ConnectionInfo connection) }; } + internal void CloseServer(ConnectionInfo connection) + { + var serverNode = _tree.Nodes.OfType() + .FirstOrDefault(n => n.Connection == connection); + + CloseServer(serverNode); + } + private void CloseServer(TreeNode contextMenuNode) { - TreeNodeWithConnectionInfo node = contextMenuNode as TreeNodeWithConnectionInfo; + var node = contextMenuNode as TreeNodeWithConnectionInfo; if (node != null) { node.Connection.Close(); diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index 817951e40..acf52bfac 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -263,5 +263,10 @@ private DockState ActivateHidenProperties() return DockState.DockRight; } } + + internal void CloseServer(ConnectionInfo connection) + { + this.objectExplorer.CloseServer(connection); + } } } From 67847fe89d53114b865f950195a8aff50e6965e0 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 8 Mar 2018 00:26:26 +0100 Subject: [PATCH 21/24] Added refresh server metadata button to the main window toolstrip --- Src/SwqlStudio/MainForm.Designer.cs | 55 ++- Src/SwqlStudio/MainForm.cs | 9 + Src/SwqlStudio/MainForm.resx | 364 +++++++++--------- .../ObjectExplorer/ObjectExplorer.cs | 16 +- Src/SwqlStudio/QueriesDockPanel.cs | 5 + 5 files changed, 255 insertions(+), 194 deletions(-) diff --git a/Src/SwqlStudio/MainForm.Designer.cs b/Src/SwqlStudio/MainForm.Designer.cs index 7f9cd3a15..a128c7053 100644 --- a/Src/SwqlStudio/MainForm.Designer.cs +++ b/Src/SwqlStudio/MainForm.Designer.cs @@ -75,12 +75,16 @@ private void InitializeComponent() this.connectionsCombobox = new System.Windows.Forms.ToolStripComboBox(); this.executeToolButton = new System.Windows.Forms.ToolStripButton(); this.newConnectionButton = new System.Windows.Forms.ToolStripButton(); + this.disconnectToolButton = new System.Windows.Forms.ToolStripButton(); this.undoToolButton = new System.Windows.Forms.ToolStripButton(); this.redoToolButton = new System.Windows.Forms.ToolStripButton(); this.newFileToolButton = new System.Windows.Forms.ToolStripButton(); this.openFileButton = new System.Windows.Forms.ToolStripButton(); this.saveToolButton = new System.Windows.Forms.ToolStripButton(); - this.disconnectToolButton = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.refreshToolButton = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.menu.SuspendLayout(); this.mainToolbar.SuspendLayout(); @@ -445,10 +449,14 @@ private void InitializeComponent() this.mainToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.connectionsCombobox, this.executeToolButton, + this.toolStripSeparator4, this.newConnectionButton, this.disconnectToolButton, + this.refreshToolButton, + this.toolStripSeparator2, this.undoToolButton, this.redoToolButton, + this.toolStripSeparator3, this.newFileToolButton, this.openFileButton, this.saveToolButton}); @@ -486,6 +494,16 @@ private void InitializeComponent() this.newConnectionButton.ToolTipText = "New connection"; this.newConnectionButton.Click += new System.EventHandler(this.newConnectionButton_Click); // + // disconnectToolButton + // + this.disconnectToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.disconnectToolButton.Image = global::SwqlStudio.Properties.Resources.Disconnect_16x; + this.disconnectToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.disconnectToolButton.Name = "disconnectToolButton"; + this.disconnectToolButton.Size = new System.Drawing.Size(23, 22); + this.disconnectToolButton.Text = "Disconnect"; + this.disconnectToolButton.Click += new System.EventHandler(this.disconnectToolButton_Click); + // // undoToolButton // this.undoToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -536,15 +554,30 @@ private void InitializeComponent() this.saveToolButton.ToolTipText = "Save (Ctrl+S)"; this.saveToolButton.Click += new System.EventHandler(this.menuFileSave_Click); // - // disconnectToolButton + // toolStripSeparator2 // - this.disconnectToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.disconnectToolButton.Image = global::SwqlStudio.Properties.Resources.Disconnect_16x; - this.disconnectToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.disconnectToolButton.Name = "disconnectToolButton"; - this.disconnectToolButton.Size = new System.Drawing.Size(23, 22); - this.disconnectToolButton.Text = "Disconnect"; - this.disconnectToolButton.Click += new System.EventHandler(this.disconnectToolButton_Click); + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // refreshToolButton + // + this.refreshToolButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.refreshToolButton.Image = global::SwqlStudio.Properties.Resources.Refresh_16x; + this.refreshToolButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.refreshToolButton.Name = "refreshToolButton"; + this.refreshToolButton.Size = new System.Drawing.Size(23, 22); + this.refreshToolButton.Text = "Refresh server metadata"; + this.refreshToolButton.Click += new System.EventHandler(this.refreshToolButton_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(6, 25); // // MainForm // @@ -624,6 +657,10 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripComboBox connectionsCombobox; private System.Windows.Forms.ToolStripButton newConnectionButton; private System.Windows.Forms.ToolStripButton disconnectToolButton; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripButton refreshToolButton; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; } } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index 485a50f4d..f2f589e30 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -462,5 +462,14 @@ private void disconnectToolButton_Click(object sender, EventArgs e) this.filesDock.CloseServer(connection); } } + + private void refreshToolButton_Click(object sender, EventArgs e) + { + var connection = this.connectionsCombobox.SelectedItem as ConnectionInfo; + if (connection != null) + { + this.filesDock.RefreshServer(connection); + } + } } } diff --git a/Src/SwqlStudio/MainForm.resx b/Src/SwqlStudio/MainForm.resx index 594cef08a..98a8a0b01 100644 --- a/Src/SwqlStudio/MainForm.resx +++ b/Src/SwqlStudio/MainForm.resx @@ -161,202 +161,202 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA4 - MAAAAk1TRnQBSQFMAgEBDgEAAUQBAgFEAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0kB/wPAAf8D9AH/A9YB/wM0Tf8DAAH/AwAB/wFCAWUBuRH/ - gAAE/wO0Af8DEgH/AxIB/wMSAf8Dok3/AwAB/wMAAf8BQgFlAbkB/wMADf+AAAT/A/IB/wMrAf8D6AH/ - Ay0B/wPoAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAAf8BDwIAEf8BtwGi - AZMB/wFOATQBIAH/AU4BNAEgAf8BTgE0ASAB/wFOATQBIAn/AwAB/wFCAWUBuQH/AUIBZQG5Af8BTgE0 - ASAB/wMACf+AAAT/A/kB/wONAf8DUgH/A1wB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 - AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEPAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg - AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DagH/AU4BNAEgAf8BTgE0ASAB/wMABf+AAAT/A/0B/wPb - Af8DEgH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BKgH/AZoBgwEeAf8B9gHWAcIB/wGIAR0BCgH/AYMBFwEE - Af8BzwG0AaMB/wEPAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BaQH/ - AZoBgwFdCf8DAAH/A2oB/wFOATQBIAH/AU4BNAEgAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ - Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BDwIA - Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNq - Af8BTgE0ASAB/wFOATQBIAH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEq - Af8BmgGDAR4B/wH7AewB4wH/AYkBHQELAf8BgwEXAQQB/wHRAcEBtgH/AQ8CABH/Ab4BqQGaAf8D/gH/ - AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWkB/wGaAYMBXQH/AfsB7AHjAf8BiQFcAUoJ/wMAAf8DagH/ - AU4BNAEgAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs - AeMB/wH6AecB2wH/AdEBwQG2Af8BDwIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz - Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2oB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 - AaABkQH/A/4B/wGkAY4BKgH/AZkBhAEeAf8B/QH3AfMB/wGIAR0BCgH/AYMBFwEEAf8B0QHBAbYB/wEP - AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFpAf8BmQGEAV0B/wH9AfcB8wH/ - AYgBXAFJAf8BgwFWAUMB/wHRAcEBtgn/AU4BNAEgAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ - A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEPAgAR/wHMAbYBpwH/A/4B/wP+ - Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BTgE0ASAJ/4AA - CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBGgH/AeYBjgEOAf8B4wEpAQAB/wHj - ASIBAAH/AeIBHgEAAf8B4gEeAQAB/wHiAR4BAAH/AcgBDgEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBWQH/AeYBjgFNAf8B4wFoATUB/wHjAWEBKwH/AeIBXQEkAf8B4gFdASQB/wHi - AV0BJAH/AcgBTQEaCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw - AYsB/wH4AacBKQH/AfYBogEjAf8B9QGdAR0B/wH1AZkBFgH/AfMBlQERAf8BzQERAQAR/wHqAaoBiwL/ - AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWgB/wH2AaIBYgH/AfUBnQFc - Af8B9QGZAVUB/wHzAZUBUAH/Ac0BUAEcCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGhASsB/wHoAZsBIgH/AeYBjgEOAf8B5QGHAQQB/wHkAYEBAAH/AeQBJwEAAf8B4wEiAQAB/wHi - AR4BABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWoB/wHoAZsBYQH/AeYBjgFN - Af8B5QGHAUMB/wHkAYEBOQH/AeQBZgExAf8B4wFhASkB/wHiAV0BJAn/gACA/4AAgP//ACkAAdMB3wHr + MAAAAk1TRnQBSQFMAgEBDgEAAUwBAgFMAQIBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABQAMAAQEBAAEgBgABQBIAgP+AAAT/A0gB/wPAAf8D9AH/A9YB/wMzTf8DAAH/AwAB/wFBAWQBuRH/ + gAAE/wO0Af8DEQH/AxEB/wMRAf8Dok3/AwAB/wMAAf8BQQFkAbkB/wMADf+AAAT/A/IB/wMqAf8D6AH/ + AywB/wPoAf8BDgIAAf8BDgIAAf8BDgIAAf8BDgIAAf8BDgIAAf8BDgIAAf8BDgIAAf8BDgIAEf8BtwGi + AZMB/wFNATMBHwH/AU0BMwEfAf8BTQEzAR8B/wFNATMBHwn/AwAB/wFBAWQBuQH/AUEBZAG5Af8BTQEz + AR8B/wMACf+AAAT/A/kB/wONAf8DUQH/A1sB/wP3Af8B3wHOAcMB/wHdAcgBuwH/AdsBvwGtAf8B2wG7 + AacB/wHbAbsBpwH/AdsBuwGnAf8BzwG0AaMB/wEOAgAR/wG3AaIBkwH/Af0B+wH5Af8B4QHcAdgB/wHg + AdcB0gH/Ad8BzgHDAf8B3QHIAbsJ/wMAAf8DaQH/AU0BMwEfAf8BTQEzAR8B/wMABf+AAAT/A/0B/wPb + Af8DEQH/A8kB/wP7Af8B+wHsAeMB/wGkAY0BKQH/AZoBgwEdAf8B9gHWAcIB/wGIARwBCQH/AYMBFgED + Af8BzwG0AaMB/wEOAgAR/wG3AaIBkwH/A/4B/wG6AaYBmAH/AbUBoAGRAf8B+wHsAeMB/wGkAY0BaAH/ + AZoBgwFcCf8DAAH/A2kB/wFNATMBHwH/AU0BMwEfAf8DAAH/gAAI/wG6AaUBlgH/A/4B/wP+Af8D/gH/ + Af0B+wH5Af8B/QH3AfMB/wH7AewB4wH/AfoB5wHbAf8B+AHhAdIB/wH3AdsByQH/AdABuQGrAf8BDgIA + Ef8BugGlAZYB/wP+Af8D/gH/A/4B/wH9AfsB+QH/Af0B9wHzAf8B+wHsAeMB/wH6AecB2wn/AwAB/wNp + Af8BTQEzAR8B/wFNATMBHwH/gAAI/wG+AakBmgH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEp + Af8BmgGDAR0B/wH7AewB4wH/AYkBHAEKAf8BgwEWAQMB/wHRAcEBtgH/AQ4CABH/Ab4BqQGaAf8D/gH/ + AboBpgGYAf8BtAGgAZEB/wP+Af8BowGOAWgB/wGaAYMBXAH/AfsB7AHjAf8BiQFbAUkJ/wMAAf8DaQH/ + AU0BMwEfAf+AAAj/AcMBrgGeAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wH9AfcB8wH/AfwB8gHsAf8B+wHs + AeMB/wH6AecB2wH/AdEBwQG2Af8BDgIAEf8BwwGuAZ4B/wP+Af8D/gH/A/4B/wP+Af8D/gH/Af0B9wHz + Af8B/AHyAewB/wH7AewB4wH/AfoB5wHbCf8DAAH/A2kB/4AACP8ByAGyAaMB/wP+Af8BugGmAZgB/wG0 + AaABkQH/A/4B/wGkAY4BKQH/AZkBhAEdAf8B/QH3AfMB/wGIARwBCQH/AYMBFgEDAf8B0QHBAbYB/wEO + AgAR/wHIAbIBowH/A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgFoAf8BmQGEAVwB/wH9AfcB8wH/ + AYgBWwFIAf8BgwFVAUIB/wHRAcEBtgn/AU0BMwEfAf+AAAj/AcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/ + A/4B/wP+Af8B/QH7AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEOAgAR/wHMAbYBpwH/A/4B/wP+ + Af8D/gH/A/4B/wP+Af8D/gH/Af0B+wH5Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8BTQEzAR8J/4AA + CP8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGlAYQB/wHnAZcBGQH/AeYBjgENAf8B4wEoAQAB/wHj + ASEBAAH/AeIBHQEAAf8B4gEdAQAB/wHiAR0BAAH/AcgBDQEAEf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBWAH/AeYBjgFMAf8B4wFnATQB/wHjAWABKgH/AeIBXAEjAf8B4gFcASMB/wHi + AVwBIwH/AcgBTAEZCf+AAAj/AeoBqgGLAv8BwgGiAf8B/gHAAZ8B/wH9Ab0BmgH/AfsBtQGQAf8B+gGw + AYsB/wH4AacBKAH/AfYBogEiAf8B9QGdARwB/wH1AZkBFQH/AfMBlQEQAf8BzQEQAQAR/wHqAaoBiwL/ + AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnAWcB/wH2AaIBYQH/AfUBnQFb + Af8B9QGZAVQB/wHzAZUBTwH/Ac0BTwEbCf+AAAj/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGhASoB/wHoAZsBIQH/AeYBjgENAf8B5QGHAQMB/wHkAYEBAAH/AeQBJgEAAf8B4wEhAQAB/wHi + AR0BABH/AeoBqgGLAf8B6gGqAYsB/wHqAaoBiwH/AeoBqgGLAf8B6QGhAWkB/wHoAZsBYAH/AeYBjgFM + Af8B5QGHAUIB/wHkAYEBOAH/AeQBZQEwAf8B4wFgASgB/wHiAVwBIwn/gACA/4AAgP//ACkAAdMB3wHr Af8B6AH0Av8B6AH0Av8B0wHfAesB/wgAA/QB/wP0Af8D9QX/A/YB/wP0Af8D9A3/A/4B/wP2Af8D9QH/ - A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBKgH/AbIBiAEYAf8BuAGSASkB/wHOAbQBkAH/Ae4B5gHb - Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNIAf8DwAH/A/QB/wPW - Af8DMwH/A/UJ/wP+Af8D9gH/AVkBrgHbAf8BWQGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ - AaEBOQEAAf8BnQEzAQAB/wGcATEBAAH/AaQBPwEAAf8BnQEyAQAB/wGdATIBAAH/AZ8BOAEAAf8BxwGq - AYEB/wH8AfsB+QH/HAADhgH/AwYB/wwAAwYB/wOGAf80AAPfAf8D9AH/ATYBqAHmAf8BBgFUAbYB/wEA - AVQBvgH/AS4BqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxEB/wMRAf8DEQH/A6IB/wP6Bf8D/gH/ - A/YB/wFZAa4B2wH/AQABVwHHAf8BAAFXAccB/wFZAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEv - Af8BoAE2AQAB/wGhATcBAAH/AZ4BMgEAAf8BygGqAUAB/wH2AfEB6AH/Ac0BrwFKAf8BngEyAQAB/wGh - ATcBAAH/AaEBNgEAAf8BugGUASsB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABNgGoAeYB/wEG - AVQBtgH/AQABVAG+Af8BAAFUAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DKgH/A+gB/wMsAf8D6AH/ - A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/ - BAABzAGvAYgB/wGlATsBAAH/AaUBOwEAAf8BpQE8AQAB/wGiATYBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj - ATgBAAH/AaUBOwEAAf8BpQE7AQAB/wGlATsBAAH/AcoBrQGEAf8UAAMgAf8DAAH/FwAB/wMgAf8wAAEP - AVQBrgH/AQ8BVAGuAf8BJwFQAZ0B/wEnAVABnQH/AQYBVAG2Af8BBgFUAbYB/wGYAaQBsAH/AegB9Ab/ - A/kB/wONAf8DUQH/A1sB/wP3Bf8D9AH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AZQBvQHgAf8BAAFX - AccB/wEAAVcBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFCAQAB/wGqAUABAAH/AaoBQAEAAf8BqgFA - AQAB/wGnATsBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoAT0BAAH/AaoBPwEAAf8BqgFAAQAB/wGqAUABAAH/ - AakBQQEAAf8B8AHpAd4B/xAAAyAB/wMAAf8XAAH/AyAB/xwAA98B/wPfAf8MAAEPAVQBrgH/AbUB+gL/ - Ac0B9gL/Ac0B9gL/ATYBqAHmAf8BNgGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DEQH/A8kB/wP7 - Bf8D9AH/AQABVwHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw - AUcBAAH/Aa4BRAEAAf8BrwFFAQAB/wGvAUUBAAH/AawBQAEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BQgEA - Af8BrwFEAQAB/wGvAUUBAAH/Aa4BRQEAAf8BrwFEAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ - GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABJwFQAZ0B/wHNAfYC/wHJAfYC/wFTAaQB0QH/ - AVMBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABVwHHAf8D9AH/A/YB/wFZ - Aa4B2wH/AVkBrgHbAf8D9AH/A/wF/wHKAakBRwH/AcABjgEDAf8BtQFMAQAB/wGzAUgBAAH/AbQBSgEA - Af8BsgFGAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFHAQAB/wG0AUkBAAH/AbQBSgEAAf8BtAFKAQAB/wG1 - AUoBAAH/AcQBnwE0Af8PAAH/AzkB/xwAAzkB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ - AegB9AL/A98B/wQAAScBUAGdAf8BzQH2Av8BUwGkAdEB/wEjAVABoQH/ASMBUAGhAf8BUwGkAdEB/wP0 - Af8D3wX/A/4B/wP2Af8BWQGuAdsB/wFZAa4B2wH/A/UB/wP9Af8D9AH/AQABVwHHAf8D9AH/AVkBrgHb - Af8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/A/0B/wHJAaYBPgH/AckBmwEVAf8BxQGUAQ4B/wG+ - AYkBAAH/AboBgAEAAf8BtwFKAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFMAQAB/wG5AU4BAAH/AbkBTgEA - Af8BuQFOAQAB/wG6AU4BAAH/AcMBmgEoAf8QAAMGAf8DwAH/FAADwAH/AwYB/xAAAdMB3wHrAf8B6AH0 - Av8BLgGoAe4B/wEAAVQBvgH/AQABVAG+Af8BLgGoAe4B/wHNAfYC/wHNAfYC/wEPAVQBrgH/AbUB+gL/ - AS4BqAHuAf8BAAFUAb4B/wEAAVQBxwH/AQABVAHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVkBrgHb - Af8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9AH/A/QB/wEAAVcBxwH/A/QB/wGUAb0B4AH/AQABVwHH - Af8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/AdABrwGBAf8BzgGgARoB/wHLAZwBGQH/AcwBnAEZ - Af8BygGZAREB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC - AYoBAAH/AcYBkAEAAf8BzAGoAUEB/xAAAyAB/wMGAf8UAAMGAf8DIAH/EAAB6AH0Av8BmAGkAbAB/wEA - AVQBvgH/AQABVAG+Af8BAAFUAb4B/wEAAVQBvgH/AScBUAGdAf8BJwFQAZ0B/wEPAVQBrgH/AQ8BVAGu - Af8BAAFUAb4B/wEAAVQBvgH/AQABVAHHAf8BAAFUAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFZAa4B2wH/ - AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AQABVwHHAf8BWQGuAdsB/wEAAVcBxwH/AQABVwHHAf8BAAFX - AccB/wEAAVcBxwH/AZQBvQHgAf8BAAFXAccB/wEAAVcBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm - ASMB/wHQAaIBHAH/AdABoQEdAf8B0AGhAR0B/wHQAZ8BGAH/AcsBpAEtAf8B1AHDAaUB/wHKAaQBLQH/ - Ac0BmwEQAf8BzgGcARMB/wHOAZwBEwH/Ac4BnAESAf8BzwGdARIB/wHaAcMBogH/EAADIAH/AwYB/xQA - AwYB/wMgAf8QAAHoAfQC/wGYAaQBsAH/AQABVAG+Af8BAAFUAb4B/wEAAVQBxwH/AQABVAHHAf8BAAFU - Ab4B/wEuAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ - AZQBvQHgAf8BAAFXAccB/wEAAVcBxwH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9AH/ - A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATEB/wHYAakBIwH/ - AdUBpgEjAf8B1QGmASEB/wHUAaMBHAH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEYAf8B0wGi - ARsB/wHTAaEBGQH/AdUBowEYAf8BzQGdARwB/wH0Ae0B5AH/EAADhgH/AwYB/xQAAwYB/wOGAf8QAAHT - Ad8B6wH/AegB9AL/AS4BqAHuAf8BAAFUAb4B/wEAAVQBxwH/AQABVAHHAf8BAAFUAb4B/wEAAVQBvgH/ - AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFX - AccB/wEAAVcBxwH/AQABVwHHAf8BAAFXAccB/wEAAVcBxwH/AVkBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ - A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgEyAf8B2gGrASYB/wHZAasBJwH/AdcBpwEgAf8B8QHmAdMF/wH1 - Ae4B4QH/AdcBpgEgAf8B1wGnASAB/wHYAacBHgH/AdkBqgEjAf8B2wHBAZ4B/xgAA4YB/wMGAf8MAAMG - Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAAFUAb4B/wEAAVQBvgH/AQABVAG+Af8BAAFUAb4B/wGY - AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVcBxwH/AQABVwHH - Af8BAAFXAccB/wEAAVcBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg - AbYBOAH/Ad8BsQErAf8B3AGtASYB/wHXAbUBSQH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBIgH/Ad4BrgEl - Af8B3gGxAS0B/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/AS4BqAHuAf8BAAFUAb4B/wEA - AVQBvgH/AS4BqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABVwHHAf8BAAFX - AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFJAf8B4wG4AToB/wHjAbQBLgH/Ad0BrgEm - Af8B4QGyASoB/wHiAbYBNAH/AdsBswFAAf8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ + A/0J/xAAAe8B5gHcAf8BzgG1AZMB/wG4AZMBKQH/AbIBiAEXAf8BuAGSASgB/wHOAbQBkAH/Ae4B5gHb + Af94AAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/AegB9AL/A98B/wQAA/YB/wNHAf8DwAH/A/QB/wPW + Af8DMgH/A/UJ/wP+Af8D9gH/AVgBrgHbAf8BWAGuAdsB/wP1Af8D/QX/CAAB/QH7AfoB/wHIAawBhAH/ + AaEBOAEAAf8BnQEyAQAB/wGcATABAAH/AaQBPgEAAf8BnQExAQAB/wGdATEBAAH/AZ8BNwEAAf8BxwGq + AYEB/wH8AfsB+QH/HAADhgH/AwUB/wwAAwUB/wOGAf80AAPfAf8D9AH/ATUBqAHmAf8BBQFTAbYB/wEA + AVMBvgH/AS0BqAHuAf8B6AH0Av8B0wHfAesB/wP6Af8DtAH/AxAB/wMQAf8DEAH/A6IB/wP6Bf8D/gH/ + A/YB/wFYAa4B2wH/AQABVgHHAf8BAAFWAccB/wFYAa4B2wH/A/UB/wP9Af8EAAH8AfsB+QH/AbwBlgEu + Af8BoAE1AQAB/wGhATYBAAH/AZ4BMQEAAf8BygGqAT8B/wH2AfEB6AH/Ac0BrwFJAf8BngExAQAB/wGh + ATYBAAH/AaEBNQEAAf8BugGUASoB/wH8AfoB+AH/FAADhgH/AwAB/xcAAf8DhgH/OAABNQGoAeYB/wEF + AVMBtgH/AQABUwG+Af8BAAFTAb4B/wGYAaQBsAH/AegB9AL/A/4B/wPyAf8DKQH/A+gB/wMrAf8D6AH/ + A/4B/wP0Af8D9AH/A/QB/wGUAb0B4AH/AQABVgHHAf8BAAFWAccB/wEAAVYBxwH/AVgBrgHbAf8D9QH/ + BAABzAGvAYgB/wGlAToBAAH/AaUBOgEAAf8BpQE7AQAB/wGiATUBAAH/AeYB1gG7Bf8B6wHeAcgB/wGj + ATcBAAH/AaUBOgEAAf8BpQE6AQAB/wGlAToBAAH/AcoBrQGEAf8UAAMfAf8DAAH/FwAB/wMfAf8wAAEO + AVMBrgH/AQ4BUwGuAf8BJgFPAZ0B/wEmAU8BnQH/AQUBUwG2Af8BBQFTAbYB/wGYAaQBsAH/AegB9Ab/ + A/kB/wONAf8DUAH/A1oB/wP3Bf8D9AH/AQABVgHHAf8BAAFWAccB/wEAAVYBxwH/AZQBvQHgAf8BAAFW + AccB/wEAAVYBxwH/AZQBvQHgAf8D9gH/AfIB6gHhAf8BqQFBAQAB/wGqAT8BAAH/AaoBPwEAAf8BqgE/ + AQAB/wGnAToBAAH/AeUB0wG2Bf8B6gHcAcMB/wGoATwBAAH/AaoBPgEAAf8BqgE/AQAB/wGqAT8BAAH/ + AakBQAEAAf8B8AHpAd4B/xAAAx8B/wMAAf8XAAH/Ax8B/xwAA98B/wPfAf8MAAEOAVMBrgH/AbUB+gL/ + Ac0B9gL/Ac0B9gL/ATUBqAHmAf8BNQGoAeYB/wHoAfQC/wHTAd8B6wX/A/0B/wPbAf8DEAH/A8kB/wP7 + Bf8D9AH/AQABVgHHAf8D9AH/A/QB/wP0Af8BlAG9AeAB/wGUAb0B4AH/A/YB/wP+Af8B1gG+AZ0B/wGw + AUYBAAH/Aa4BQwEAAf8BrwFEAQAB/wGvAUQBAAH/AawBPwEAAf8B5gHVAbYF/wHrAdwBxAH/Aa0BQQEA + Af8BrwFDAQAB/wGvAUQBAAH/Aa4BRAEAAf8BrwFDAQAB/wHTAbkBlgH/EwAB/wPAAf8UAAPAAf8DAAH/ + GAAB0wHfAesB/wHoAfQC/wHoAfQC/wHTAd8B6wH/CAABJgFPAZ0B/wHNAfYC/wHJAfYC/wFSAaQB0QH/ + AVIBpAHRAf8ByQH2Av8D5QH/BAAI/wP2Af8D9AH/A/QB/wP9Bf8D9AH/AQABVgHHAf8D9AH/A/YB/wFY + Aa4B2wH/AVgBrgHbAf8D9AH/A/wF/wHKAakBRgH/AcABjgECAf8BtQFLAQAB/wGzAUcBAAH/AbQBSQEA + Af8BsgFFAQAB/wHoAdYBuAX/AewB3gHFAf8BsgFGAQAB/wG0AUgBAAH/AbQBSQEAAf8BtAFJAQAB/wG1 + AUkBAAH/AcQBnwEzAf8PAAH/AzgB/xwAAzgB/wMAAf8QAAPfAf8B6AH0Av8BmAGkAbAB/wGYAaQBsAH/ + AegB9AL/A98B/wQAASYBTwGdAf8BzQH2Av8BUgGkAdEB/wEiAU8BoQH/ASIBTwGhAf8BUgGkAdEB/wP0 + Af8D3wX/A/4B/wP2Af8BWAGuAdsB/wFYAa4B2wH/A/UB/wP9Af8D9AH/AQABVgHHAf8D9AH/AVgBrgHb + Af8BAAFWAccB/wEAAVYBxwH/AVgBrgHbAf8D9QH/A/0B/wHJAaYBPQH/AckBmwEUAf8BxQGUAQ0B/wG+ + AYkBAAH/AboBgAEAAf8BtwFJAQAB/wHrAdkBuwX/Ae8B4QHIAf8BtwFLAQAB/wG5AU0BAAH/AbkBTQEA + Af8BuQFNAQAB/wG6AU0BAAH/AcMBmgEnAf8QAAMFAf8DwAH/FAADwAH/AwUB/xAAAdMB3wHrAf8B6AH0 + Av8BLQGoAe4B/wEAAVMBvgH/AQABUwG+Af8BLQGoAe4B/wHNAfYC/wHNAfYC/wEOAVMBrgH/AbUB+gL/ + AS0BqAHuAf8BAAFTAb4B/wEAAVMBxwH/AQABUwHHAf8BjAGkAb0B/wHcAfQC/wP+Af8D9gH/AVgBrgHb + Af8BAAFWAccB/wEAAVYBxwH/AVgBrgHbAf8D9AH/A/QB/wEAAVYBxwH/A/QB/wGUAb0B4AH/AQABVgHH + Af8BAAFWAccB/wEAAVYBxwH/AVgBrgHbAf8D9QH/AdABrwGBAf8BzgGgARkB/wHLAZwBGAH/AcwBnAEY + Af8BygGZARAB/wHDAY0BAAH/AeUB1AG1Bf8B5wHYAbwB/wG+AYMBAAH/AcABhwEAAf8BwQGIAQAB/wHC + AYoBAAH/AcYBkAEAAf8BzAGoAUAB/xAAAx8B/wMFAf8UAAMFAf8DHwH/EAAB6AH0Av8BmAGkAbAB/wEA + AVMBvgH/AQABUwG+Af8BAAFTAb4B/wEAAVMBvgH/ASYBTwGdAf8BJgFPAZ0B/wEOAVMBrgH/AQ4BUwGu + Af8BAAFTAb4B/wEAAVMBvgH/AQABUwHHAf8BAAFTAccB/wGMAaQBvQH/AdwB9AL/A/YB/wFYAa4B2wH/ + AQABVgHHAf8BAAFWAccB/wEAAVYBxwH/AQABVgHHAf8BWAGuAdsB/wEAAVYBxwH/AQABVgHHAf8BAAFW + AccB/wEAAVYBxwH/AZQBvQHgAf8BAAFWAccB/wEAAVYBxwH/AZQBvQHgAf8D9gH/Ad0BxwGrAf8B0wGm + ASIB/wHQAaIBGwH/AdABoQEcAf8B0AGhARwB/wHQAZ8BFwH/AcsBpAEsAf8B1AHDAaUB/wHKAaQBLAH/ + Ac0BmwEPAf8BzgGcARIB/wHOAZwBEgH/Ac4BnAERAf8BzwGdAREB/wHaAcMBogH/EAADHwH/AwUB/xQA + AwUB/wMfAf8QAAHoAfQC/wGYAaQBsAH/AQABUwG+Af8BAAFTAb4B/wEAAVMBxwH/AQABUwHHAf8BAAFT + Ab4B/wEtAagB7gH/AeoB9gL/AeoB9gL/A/YB/wP2Af8BjAGkAb0B/wGMAaQBvQH/A/QB/wPfAf8D9wH/ + AZQBvQHgAf8BAAFWAccB/wEAAVYBxwH/AQABVgHHAf8BAAFWAccB/wEAAVYBxwH/AVgBrgHbAf8D9AH/ + A/QB/wP0Af8D9AH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/gH/AfUB7wHnAf8B0QGoATAB/wHYAakBIgH/ + AdUBpgEiAf8B1QGmASAB/wHUAaMBGwH/AeUBxwGRAf8B8wHqAdgB/wHnAcsBmQH/AdMBoQEXAf8B0wGi + ARoB/wHTAaEBGAH/AdUBowEXAf8BzQGdARsB/wH0Ae0B5AH/EAADhgH/AwUB/xQAAwUB/wOGAf8QAAHT + Ad8B6wH/AegB9AL/AS0BqAHuAf8BAAFTAb4B/wEAAVMBxwH/AQABUwHHAf8BAAFTAb4B/wEAAVMBvgH/ + AZgBpAGwAf8B6AH0Av8D3wH/A98B/wHcAfQC/wHcAfQC/wPfAf8EAAP+Af8D9wH/AZQBvQHgAf8BAAFW + AccB/wEAAVYBxwH/AQABVgHHAf8BAAFWAccB/wEAAVYBxwH/AVgBrgHbAf8D9QH/A/0B/wP+Af8D9wH/ + A/YB/wP+Bf8EAAHdAcgBqgH/Ad0BsgExAf8B2gGrASUB/wHZAasBJgH/AdcBpwEfAf8B8QHmAdMF/wH1 + Ae4B4QH/AdcBpgEfAf8B1wGnAR8B/wHYAacBHQH/AdkBqgEiAf8B2wHBAZ4B/xgAA4YB/wMFAf8MAAMF + Af8DhgH/GAAD3wH/AegB9AL/AZgBpAGwAf8BAAFTAb4B/wEAAVMBvgH/AQABUwG+Af8BAAFTAb4B/wGY + AaQBsAH/AegB9AL/A98B/wQAA98B/wPfAf8IAAT/A/4B/wP3Af8BlAG9AeAB/wEAAVYBxwH/AQABVgHH + Af8BAAFWAccB/wEAAVYBxwH/AZQBvQHgAf8D9gH/A/4F/wP+Af8D/gn/BAAB/gL9Af8B2QG/AZoB/wHg + AbYBNwH/Ad8BsQEqAf8B3AGtASUB/wHXAbUBSAH/AeIB1QG+Af8B1wG3AYAB/wHbAaoBIQH/Ad4BrgEk + Af8B3gGxASwB/wHWAbgBjQH/Af4B/QH8Af9QAAHTAd8B6wH/AegB9AL/AS0BqAHuAf8BAAFTAb4B/wEA + AVMBvgH/AS0BqAHuAf8B6AH0Av8B0wHfAesB/xgACP8D/gH/A/cB/wGUAb0B4AH/AQABVgHHAf8BAAFW + AccB/wGUAb0B4AH/A/YB/wP+Gf8MAAHfAcsBsQH/AdwBuAFIAf8B4wG4ATkB/wHjAbQBLQH/Ad0BrgEl + Af8B4QGyASkB/wHiAbYBMwH/AdsBswE/Af8B3gHIAaoB/wL+Af0B/1gAA98B/wHoAfQC/wGYAaQBsAH/ AZgBpAGwAf8B6AH0Av8D3wH/HAAM/wP+Af8D9wH/AZQBvQHgAf8BlAG9AeAB/wP2Af8D/h3/EAAB9gHx AesB/wHkAdQBvwH/Ad4BxQGjAf8B3gHEAZwB/wHeAcQBoQH/AeQB0wG8Af8B9QHvAekB/2QAAdMB3wHr - Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABFgG5Af8BAAEIATcB/wEA - AQMBGQH/9QABNwHHAf8BAQHNAfwB/wEAARgBhwH/tAADOwFlAQABDQEAAf8DOgFgNQABNwHHAf8BAAGg - AdIB/wEAAQ4BLgH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEIAacBAAH/AQABEQEA - Af8BAAENAQAB/wM2AVgxAAE3AccB/wEDAdEB/AH/AQABGAGHAf8zAAEBAwABARAAAewB0gHsAf8BLgEA - AS0B/wHmAcwB5gH/AwIBAwMSARkQAAErATUBNwH/ASEBKQEsAf8BGAEdASAB/wEOAREBFAH/AgQBCQH/ - AwAB/wMAAf8DAAH/AwAB/xwAAz4BagEIAacBAAH/ASUBuwEZAf8BAAEVAQAB/wEAARIBAAH/AQABDQEA - Af8DNQFXLQABNwHHAf8BAAGhAdEB/wEAAQ4BLgH/PwABAQQAAe0B2AHtAf8BqQEMAagB/wGAAQABOwH/ - ATEBAAExAf8B6wHRAesB/xQAATQBggGDAf8BlwHbAfUB/wEXAakBygH/ARcBqQHKAf8BFgGnAckB/wEO - AZ8BwgH/AQUBlgG5Af8BAAGNAbAB/wMAAf8cAAEHAaQBAAH/ASUBuwEZAf8BJQG7ARkB/wEAARQBAAH/ - AQABFQEAAf8BAAESAQAB/wEAAQ0BAAH/AzABTCkAATcBxwH/AQ0B4gH9Af8BAAEUAYAB/yMAAQEDAAEB - AwABAQMAAQEDAAEBAwABAQMAAQEEAAHoAdEB6AH/AaoBDAGpAf8BzAEjAcsB/wE6AQABOgH/AZYBAAGV - Af8BNwEAATYB/wHwAdUB8AH/EAABPAKMAf8BoAHgAfcB/wEtAc0B8QH/ASABxwHuAf8BFAHBAesB/wEJ - AbwB6AH/AQABtwHmAf8BAwGSAbYB/wMAAf8cAAEIAacBAAH/ASUBuwEZAf8BJQG7ARkB/wGqAdQBogH/ - AQQBoAEAAf8BAAEVAQAB/wEAARIBAAH/AQABDAEAAf8pAAE3AccB/wEUAdcB/AH/AQABFAGAAf8kAAGr - AfAB9wH/AasB4gHlAf8BrAHOAcwB/wGtAbsBtQH/Aa4BpwGcAf8EAAHkAcoB5AH/AakBDAGoAf8B0wEn - AdIB/wHUASoB0wH/ATsBAAE6Af8BnwEAAZ8B/wGOAQABjQH/ATkBAAE4Af8QAAGFApQB/wGnAeMB+AH/ - ATgB0wH0Af8BLQHOAfEB/wEhAcgB7gH/ARQBwgHrAf8BCQG8AegB/wEIAZkBvAH/AwAB/xgAAwIBAwEK - AasBAAH/ASUBuwEZAf8BqgHUAaIB/wG3AdoBsAH/AaoB1AGiAf8BAAGTAQAB/wEAARUBAAH/AQABDQEA - Af8lAAEcAZAB/wEAATcBxwH/ASoB3gH8Af8BAAEUAYAB/wEAAQoBNgH/OAABqgEOAakB/wHSASYB0QH/ - AdUBKwHVAf8BvQEsAbwB/wHeAZgB3QH/AY8BAgGOAf8BnQEAAZwB/wE6AQABOgH/EAABjAKbAf8BrgHm - AfoB/wGGAdgB9gH/ATgB1AH0Af8BLQHNAfEB/wEhAccB7gH/ARQBwgHrAf8BDwGgAcEB/wIAAQQB/xgA - AwQBBQEfAbgBEgH/AbQB2QGtAf8BxQHiAcAB/wG3AdoBsAH/AbcB2gGwAf8BqgHUAaIB/wEAAYgBAAH/ - AQABDQEAAf8hAAErAaAB/wEAAYcBxwH/ARcBwAHwAf8BDAHLAf4B/wENAbMB3QH/AQABCQEiAf8BAAEK - ATYB/xgAAasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/Aa0BtQGsAf8BrgGkAZgB/wQAAagBCwGn - Af8B0gEpAdEB/wG8ASsBuwH/Ae8BpQHuAf8B+wGfAfoB/wHvAZ0B7gH/AZcBDgGWAf8BOAEAATgB/xAA - AZEBogGhAf8BsgHoAfwB/wGgAeIB+gH/AYYB2AH2Af8BOQHTAfMB/wEtAc4B8QH/ASAByAHuAf8BEwGl - AccB/wEIAQkBDgH/GAADAgEDA0QBegGOAcYBhAH/AbkB3AGzAf8BwwHhAb4B/wHDAeEBvgH/AbcB2gGw - Af8BqgHUAaIB/wEAASMBAAH/HQABgAGxAf8BAAGHAcgB/wEOAboB9wH/ARABwgH5Af8BBgG3AfkB/wEk - AdYB+wH/AQEBpgHoAf8BAAEIASAB/wEAAQ0BgwH/MAABpwEMAaYB/wG8ASsBuwH/Ae8BpQHuAf8B+wGb - AfoB/wH7AZgB+gH/AfsBmQH6Af8B5wGYAeYB/wGRAQoBkAH/EAABlAGmAaUB/wG9AewB/AH/AaUB5QH7 - Af8BnwHiAfoB/wGGAdgB9gH/ATkB1AH0Af8BLQHNAfEB/wEXAakBygH/ARABFAEXAf8gAANGAX4BkAHH - AYYB/wG+Ad4BuAH/AcMB4QG+Af8BswHZAawB/wGQAccBhgH/Az0BaR0AATcBuAH/ARABwQH5Af8BDAG3 - AfkB/wGTAe4B/gH/AY8B7AH+Af8BDgG0AfMB/wGNAeMB/gH/AQsBugHiAf8BAAEKAScB/xwAAasB8AH3 + Af8B6AH0Av8B6AH0Av8B0wHfAesB/yAAEP8D/gH/A/cB/wP2Af8D/iH/WQABFQG5Af8BAAEHATYB/wEA + AQIBGAH/9QABNgHHAf8BAAHNAfwB/wEAARcBhwH/tAADOwFlAQABDAEAAf8DOgFgNQABNgHHAf8BAAGg + AdIB/wEAAQ0BLQH/HAADAQECAwABARsAAQEMAAEiASEBIgExAwABAVwAAz4BagEHAacBAAH/AQABEAEA + Af8BAAEMAQAB/wM2AVgxAAE2AccB/wECAdEB/AH/AQABFwGHAf8zAAEBAwABARAAAewB0gHsAf8BLQEA + ASwB/wHmAcwB5gH/AwIBAwMSARkQAAEqATQBNgH/ASABKAErAf8BFwEcAR8B/wENARABEwH/AgMBCAH/ + AwAB/wMAAf8DAAH/AwAB/xwAAz4BagEHAacBAAH/ASQBuwEYAf8BAAEUAQAB/wEAAREBAAH/AQABDAEA + Af8DNQFXLQABNgHHAf8BAAGhAdEB/wEAAQ0BLQH/PwABAQQAAe0B2AHtAf8BqQELAagB/wGAAQABOgH/ + ATABAAEwAf8B6wHRAesB/xQAATMBggGDAf8BlwHbAfUB/wEWAakBygH/ARYBqQHKAf8BFQGnAckB/wEN + AZ8BwgH/AQQBlgG5Af8BAAGNAbAB/wMAAf8cAAEGAaQBAAH/ASQBuwEYAf8BJAG7ARgB/wEAARMBAAH/ + AQABFAEAAf8BAAERAQAB/wEAAQwBAAH/AzABTCkAATYBxwH/AQwB4gH9Af8BAAETAYAB/yMAAQEDAAEB + AwABAQMAAQEDAAEBAwABAQMAAQEEAAHoAdEB6AH/AaoBCwGpAf8BzAEiAcsB/wE5AQABOQH/AZYBAAGV + Af8BNgEAATUB/wHwAdUB8AH/EAABOwKMAf8BoAHgAfcB/wEsAc0B8QH/AR8BxwHuAf8BEwHBAesB/wEI + AbwB6AH/AQABtwHmAf8BAgGSAbYB/wMAAf8cAAEHAacBAAH/ASQBuwEYAf8BJAG7ARgB/wGqAdQBogH/ + AQMBoAEAAf8BAAEUAQAB/wEAAREBAAH/AQABCwEAAf8pAAE2AccB/wETAdcB/AH/AQABEwGAAf8kAAGr + AfAB9wH/AasB4gHlAf8BrAHOAcwB/wGtAbsBtQH/Aa4BpwGcAf8EAAHkAcoB5AH/AakBCwGoAf8B0wEm + AdIB/wHUASkB0wH/AToBAAE5Af8BnwEAAZ8B/wGOAQABjQH/ATgBAAE3Af8QAAGFApQB/wGnAeMB+AH/ + ATcB0wH0Af8BLAHOAfEB/wEgAcgB7gH/ARMBwgHrAf8BCAG8AegB/wEHAZkBvAH/AwAB/xgAAwIBAwEJ + AasBAAH/ASQBuwEYAf8BqgHUAaIB/wG3AdoBsAH/AaoB1AGiAf8BAAGTAQAB/wEAARQBAAH/AQABDAEA + Af8lAAEbAZAB/wEAATYBxwH/ASkB3gH8Af8BAAETAYAB/wEAAQkBNQH/OAABqgENAakB/wHSASUB0QH/ + AdUBKgHVAf8BvQErAbwB/wHeAZgB3QH/AY8BAQGOAf8BnQEAAZwB/wE5AQABOQH/EAABjAKbAf8BrgHm + AfoB/wGGAdgB9gH/ATcB1AH0Af8BLAHNAfEB/wEgAccB7gH/ARMBwgHrAf8BDgGgAcEB/wIAAQMB/xgA + AwQBBQEeAbgBEQH/AbQB2QGtAf8BxQHiAcAB/wG3AdoBsAH/AbcB2gGwAf8BqgHUAaIB/wEAAYgBAAH/ + AQABDAEAAf8hAAEqAaAB/wEAAYcBxwH/ARYBwAHwAf8BCwHLAf4B/wEMAbMB3QH/AQABCAEhAf8BAAEJ + ATUB/xgAAasB8AH3Af8BqwHlAekB/wGsAtUB/wGsAcQBwQH/Aa0BtQGsAf8BrgGkAZgB/wQAAagBCgGn + Af8B0gEoAdEB/wG8ASoBuwH/Ae8BpQHuAf8B+wGfAfoB/wHvAZ0B7gH/AZcBDQGWAf8BNwEAATcB/xAA + AZEBogGhAf8BsgHoAfwB/wGgAeIB+gH/AYYB2AH2Af8BOAHTAfMB/wEsAc4B8QH/AR8ByAHuAf8BEgGl + AccB/wEHAQgBDQH/GAADAgEDA0QBegGOAcYBhAH/AbkB3AGzAf8BwwHhAb4B/wHDAeEBvgH/AbcB2gGw + Af8BqgHUAaIB/wEAASIBAAH/HQABgAGxAf8BAAGHAcgB/wENAboB9wH/AQ8BwgH5Af8BBQG3AfkB/wEj + AdYB+wH/AQABpgHoAf8BAAEHAR8B/wEAAQwBgwH/MAABpwELAaYB/wG8ASoBuwH/Ae8BpQHuAf8B+wGb + AfoB/wH7AZgB+gH/AfsBmQH6Af8B5wGYAeYB/wGRAQkBkAH/EAABlAGmAaUB/wG9AewB/AH/AaUB5QH7 + Af8BnwHiAfoB/wGGAdgB9gH/ATgB1AH0Af8BLAHNAfEB/wEWAakBygH/AQ8BEwEWAf8gAANGAX4BkAHH + AYYB/wG+Ad4BuAH/AcMB4QG+Af8BswHZAawB/wGQAccBhgH/Az0BaR0AATYBuAH/AQ8BwQH5Af8BCwG3 + AfkB/wGTAe4B/gH/AY8B7AH+Af8BDQG0AfMB/wGNAeMB/gH/AQoBugHiAf8BAAEJASYB/xwAAasB8AH3 Af8BrALVAf8BrgG0AawB/wGuAZkBigH/A/0B/wHPAYgBzwH/AeIBrwHiAf8B+wGrAfoB/wH7AZgB+gH/ AfsBmAH6Af8B6gGQAekB/wHPAYgBzwH/AfQB5gH0Af8QAAGUAaYBpQH/Ab0B7AH8Af8BvQHsAfwB/wGy - AegB/AH/Aa4B5gH6Af8BpwHkAfkB/wGgAeAB9wH/AZcB2wH1Af8BGQEeASIB/yQAA0cBgQGUAckBigH/ - Ab0B3gG3Af8BjgHGAYQB/wMwAUshAAGDAbsB/wEVAcYB+QH/ASUBigGsAf8BJQGKAawB/wElAYoBrAH/ - ASUBigGsAf8BJQGKAawB/wEeAdUB+gH/AQABCQEkAf8wAAHwAdQB8AH/Ac8BiAHPAf8B7gG+Ae4B/wH7 + AegB/AH/Aa4B5gH6Af8BpwHkAfkB/wGgAeAB9wH/AZcB2wH1Af8BGAEdASEB/yQAA0cBgQGUAckBigH/ + Ab0B3gG3Af8BjgHGAYQB/wMwAUshAAGDAbsB/wEUAcYB+QH/ASQBigGsAf8BJAGKAawB/wEkAYoBrAH/ + ASQBigGsAf8BJAGKAawB/wEdAdUB+gH/AQABCAEjAf8wAAHwAdQB8AH/Ac8BiAHPAf8B7gG+Ae4B/wH7 Aa4B+gH/AewBkQHrAf8BzwGIAc8B/wHzAeAB8gH/FAABlAGmAaUB/wGUAaYBpQH/AZMCpQH/AY8BnwGe - Af8BiAKXAf8BgQKOAf8BNQKEAf8BKwE1ATcB/wEiASkBKwH/KAADPAFmAZQByQGKAf8DJQE3JQABgwG8 - Af8BGAHSAfoB/wEGASABhAH/DAABCQGQAcEB/wEPAbsB4QH/AQABBwEhAf80AAHyAdsB8gH/Ac8BiAHP - Af8B4wGsAeMB/wHPAYgBzwH/AfMB4wHzAf9gAAMBAQIEAAMBAQIpAAGIAcEB/wECAZ0B0AH/ATYB4wH6 - Af8BBgGFAZ4B/wENASABhwH/AQ0BMgGcAf8BDgG/AfQB/wEEAYwBqgH/AQABFAE2Af84AAHyAdsB8gH/ - Ac8BiAHPAf8B8AHjAfAB/5gAAQUBlAHGAf8BAAGKAcEB/wECAZoBzQH/ASoB1QH1Af8BLQHpAf4B/wEp - AdQB8wH/AQYBkgGyAf8BAAEgAYwB/wEAASwBogH/PAAB/gH7Af4B/6AAAQUBlAHGAf8BAQGNAcMB/wEA - AYsBugH/AQABiwG6Af8BAAGIAbcB/wEAAS8BoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMzAVPwAAM4 - AV0B1wGaAQYB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQkBgwGWAf8BAAEiAY0B/wEA - ARkBjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQYB/wHYAZsBBwH/AZkCAAH/AZkCAAH/AZkCAAH/ - Ay8BSigAAVsCXgHQAQABsAHRAf8BhAHVAegB/wGhAesB9gH/AR8B5AL/AQABvgHzAf8BAAGfAd4B/wEA - AYsBvgH/AVsCXgHZVAABtwGiAZMB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEP - AgAB/wEPAgAB/wEPAgAB/wEPAgAB/wEPAgAB/xQAAdgBmwEIAf8B2AGbAQcB/wHYAZsBBwH/AZkCAAH/ - AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiUAAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEdAdkB9AH/ - AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABDwGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJR + Af8BiAKXAf8BgQKOAf8BNAKEAf8BKgE0ATYB/wEhASgBKgH/KAADPAFmAZQByQGKAf8DJQE3JQABgwG8 + Af8BFwHSAfoB/wEFAR8BhAH/DAABCAGQAcEB/wEOAbsB4QH/AQABBgEgAf80AAHyAdsB8gH/Ac8BiAHP + Af8B4wGsAeMB/wHPAYgBzwH/AfMB4wHzAf9gAAMBAQIEAAMBAQIpAAGIAcEB/wEBAZ0B0AH/ATUB4wH6 + Af8BBQGFAZ4B/wEMAR8BhwH/AQwBMQGcAf8BDQG/AfQB/wEDAYwBqgH/AQABEwE1Af84AAHyAdsB8gH/ + Ac8BiAHPAf8B8AHjAfAB/5gAAQQBlAHGAf8BAAGKAcEB/wEBAZoBzQH/ASkB1QH1Af8BLAHpAf4B/wEo + AdQB8wH/AQUBkgGyAf8BAAEfAYwB/wEAASsBogH/PAAB/gH7Af4B/6AAAQQBlAHGAf8BAAGNAcMB/wEA + AYsBugH/AQABiwG6Af8BAAGIAbcB/wEAAS4BoAH/AQABggGyAf//AKkAAzYBWAGZAgAB/wMzAVPwAAM4 + AV0B1wGaAQUB/wGZAgAB/wGZAgAB/wMvAUosAAMeASsDVAGuAVkCZAHsAQgBgwGWAf8BAAEhAY0B/wEA + ARgBjAH/AU4CXQHwA1YBswMlATeYAAM6AWEB1wGaAQUB/wHYAZsBBgH/AZkCAAH/AZkCAAH/AZkCAAH/ + Ay8BSigAAVsCXgHQAQABsAHRAf8BhAHVAegB/wGhAesB9gH/AR4B5AL/AQABvgHzAf8BAAGfAd4B/wEA + AYsBvgH/AVsCXgHZVAABtwGiAZMB/wEOAgAB/wEOAgAB/wEOAgAB/wEOAgAB/wEOAgAB/wEOAgAB/wEO + AgAB/wEOAgAB/wEOAgAB/wEOAgAB/wEOAgAB/xQAAdgBmwEHAf8B2AGbAQYB/wHYAZsBBgH/AZkCAAH/ + AZkCAAH/AZkCAAH/AZkCAAH/Ay8BSiUAAY8BqgH/AQAB1wL/AZAB6gH6Af8BoQHrAfYB/wEcAdkB9AH/ + AQABvAHyAf8BAAGnAegB/wEAAZwB2gH/AQABDgGEAf8UAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJR AaEBMQIwAU0EAAMxAU0CUgFRAaEBXwJYAeMBXwJYAeMBUgJRAaEBMQIwAU0MAAG3AaIBkwH/Af0B+wH5 Af8B4QHcAdgB/wHgAdcB0gH/Ad8BzgHDAf8B3QHIAbsB/wHbAb8BrQH/AdsBuwGnAf8B2wG7AacB/wHb - AbsBpwH/Ac8BtAGjAf8BDwIAAf8UAAHYAZsBBwH/AdgBmwEHAf8B6QG0ASgB/wH8AdYBrwH/AbUBDwEA - Af8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIQABkQGuAf8BAAHSAfoB/wGNAeQB9gH/AaEB6wH2Af8BHAHX - AfMB/wEAAbkB7wH/AQABpwHoAf8BAAGcAdoB/wEAAREBhgH/EAADNQFVA2QB5wHPAbgBqQH/AesB1gHI - Af8B5QHLAbsB/wGzAZUBKwH/AWQCXAHnA0sBjgNkAecBzwG4AakB/wHrAdYByAH/AeUBywG7Af8BswGV - ASsB/wFkAlwB5wE1AjQBVQgAAbcBogGTAf8D/gH/AboBpgGYAf8BtQGgAZEB/wH7AewB4wH/AaQBjQEq - Af8BmgGDAR4B/wH2AdYBwgH/AYgBHQEKAf8BgwEXAQQB/wHPAbQBowH/AQ8CAAH/FAAB2AGbAQcB/wHq - AbcBggH/AfsB2AGyAf8B/gHRAaMB/wH7AdgBsgH/Aa8BAwEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DKgFB - HAABAwGVAbAB/wEAAdIB+gH/AY0B5AH0Af8BoQHrAfYB/wEcAdcB8gH/AQABuQHuAf8BAAGnAegB/wEA - AZwB2gH/AQABFAGIAf8QAANVAbIB5gHWAcsB/wNZAcICYAFcAdQDYAHUAUwBKgEhAfsDAAH/AwAB/wMA + AbsBpwH/Ac8BtAGjAf8BDgIAAf8UAAHYAZsBBgH/AdgBmwEGAf8B6QG0AScB/wH8AdYBrwH/AbUBDgEA + Af8BmQIAAf8BmQIAAf8BmQIAAf8DLwFKIQABkQGuAf8BAAHSAfoB/wGNAeQB9gH/AaEB6wH2Af8BGwHX + AfMB/wEAAbkB7wH/AQABpwHoAf8BAAGcAdoB/wEAARABhgH/EAADNQFVA2QB5wHPAbgBqQH/AesB1gHI + Af8B5QHLAbsB/wGzAZUBKgH/AWQCXAHnA0sBjgNkAecBzwG4AakB/wHrAdYByAH/AeUBywG7Af8BswGV + ASoB/wFkAlwB5wE1AjQBVQgAAbcBogGTAf8D/gH/AboBpgGYAf8BtQGgAZEB/wH7AewB4wH/AaQBjQEp + Af8BmgGDAR0B/wH2AdYBwgH/AYgBHAEJAf8BgwEWAQMB/wHPAbQBowH/AQ4CAAH/FAAB2AGbAQYB/wHq + AbcBggH/AfsB2AGyAf8B/gHRAaMB/wH7AdgBsgH/Aa8BAgEAAf8BmQIAAf8BmQIAAf8BmQIAAf8DKgFB + HAABAgGVAbAB/wEAAdIB+gH/AY0B5AH0Af8BoQHrAfYB/wEbAdcB8gH/AQABuQHuAf8BAAGnAegB/wEA + AZwB2gH/AQABEwGIAf8QAANVAbIB5gHWAcsB/wNZAcICYAFcAdQDYAHUAUwBKgEhAfsDAAH/AwAB/wMA Af8BYQJYAeYCYAFcAdQDYAHUA1kBwgG5AZwBiAH/A1UBsggAAboBpQGWAf8D/gH/A/4B/wP+Af8B/QH7 - AfkB/wH9AfcB8wH/AfsB7AHjAf8B+gHnAdsB/wH4AeEB0gH/AfcB2wHJAf8B0AG5AasB/wEPAgAB/xQA - AecBswEoAf8B8QHDAZEB/wH+Ac8BnQL/Ac0BmQH/Af4B0AGfAf8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZ - AgAB/wGZAgAB/wMEAQUYAAEFAZkBtQH/AQAB0QH7Af8BjgHkAfUB/wGhAesB9gH/ARwB1wHyAf8BAAG5 - Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEXAYoB/xAAA2UB9AT/A1cB3wMdASoDXAHNBf8B/gH3Av8B8QHm + AfkB/wH9AfcB8wH/AfsB7AHjAf8B+gHnAdsB/wH4AeEB0gH/AfcB2wHJAf8B0AG5AasB/wEOAgAB/xQA + AecBswEnAf8B8QHDAZEB/wH+Ac8BnQL/Ac0BmQH/Af4B0AGfAf8B+wHYAbIB/wGpAgAB/wGZAgAB/wGZ + AgAB/wGZAgAB/wMEAQUYAAEEAZkBtQH/AQAB0QH7Af8BjgHkAfUB/wGhAesB9gH/ARsB1wHyAf8BAAG5 + Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEWAYoB/xAAA2UB9AT/A1cB3wMdASoDXAHNBf8B/gH3Av8B8QHm Af8B+gHjAdQB/wHzAdcBxwH/A0oBjQMdASoDXAHfAe8B1gHHAf8BZAJSAfQIAAG+AakBmgH/A/4B/wG6 - AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEqAf8BmgGDAR4B/wH7AewB4wH/AYkBHQELAf8BgwEXAQQB/wHR - AcEBtgH/AQ8CAAH/FAADRQF8AeUBsgEnAf8B9AHAAYsC/wHNAZkC/wHNAZkB/wH+AdABoQH/AfsB2AGy - Af8BqQIAAf8BmQIAAf8BmQIAAf8cAAEIAZsBtwH/AQAB0AH5Af8BjQHjAfUB/wGhAesB9gH/AR4B2QHy - Af8BAAG5Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEZAY0B/xAAA1UBsgHyAeYB3gH/A1kBwgNcAdQBYAJc + AaYBmAH/AbQBoAGRAf8D/gH/AaMBjgEpAf8BmgGDAR0B/wH7AewB4wH/AYkBHAEKAf8BgwEWAQMB/wHR + AcEBtgH/AQ4CAAH/FAADRQF8AeUBsgEmAf8B9AHAAYsC/wHNAZkC/wHNAZkB/wH+AdABoQH/AfsB2AGy + Af8BqQIAAf8BmQIAAf8BmQIAAf8cAAEHAZsBtwH/AQAB0AH5Af8BjQHjAfUB/wGhAesB9gH/AR0B2QHy + Af8BAAG5Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEYAY0B/xAAA1UBsgHyAeYB3gH/A1kBwgNcAdQBYAJc AdQDYQHiAdMBtQGiAf8DTQH6AdoBwAGvAf8DXwHzA1sB1gFgAlwB1ANZAcIBywGxAaEB/wNVAbIIAAHD Aa4BngH/A/4B/wP+Af8D/gH/A/4B/wP+Af8B/QH3AfMB/wH8AfIB7AH/AfsB7AHjAf8B+gHnAdsB/wHR - AcEBtgH/AQ8CAAH/GAADRgF/AeQBsAElAf8B9gHEAZAC/wHNAZkC/wHNAZkB/wH+AdABoQH/AfsB2AGy - Af8BqQIAAf8BmQIAAf8cAAEKAZ4BugH/AQAB0AH5Af8BjQHjAfQB/wGhAesB9gH/ARsB1wHyAf8BAAG3 - Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEbAY8B/xAAAzUBVQNkAecB7QHhAdcD/wH9Av8B9wHxAf8B2AHE + AcEBtgH/AQ4CAAH/GAADRgF/AeQBsAEkAf8B9gHEAZAC/wHNAZkC/wHNAZkB/wH+AdABoQH/AfsB2AGy + Af8BqQIAAf8BmQIAAf8cAAEJAZ4BugH/AQAB0AH5Af8BjQHjAfQB/wGhAesB9gH/ARoB1wHyAf8BAAG3 + Ae4B/wEAAacB6AH/AQABnAHaAf8BAAEaAY8B/xAAAzUBVQNkAecB7QHhAdcD/wH9Av8B9wHxAf8B2AHE AbcB/wNkAecDSwGOA2QB5wHtAeEB1wP/Af0C/wH3AfEB/wHYAcQBtwH/A2QB5wM1AVUIAAHIAbIBowH/ - A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgEqAf8BmQGEAR4B/wH9AfcB8wH/AYgBHQEKAf8BgwEX - AQQB/wHRAcEBtgH/AQ8CAAH/HAADSQGHAeMBrwEkAf8B9gHEAZAC/wHNAZkC/wHNAZkB/wH+AdABoQH/ - AfIByQGdAf8BsAEGAQAB/xwAAQsBogG8Af8BAAHOAfcB/wGLAeMB9AH/AaEB6wH2Af8BGgHWAfIB/wEA - AbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAARwBkgH/FAADMQFNA1IBoQNfAeMDXwHjA1IBoQMxAU0EAAMx + A/4B/wG6AaYBmAH/AbQBoAGRAf8D/gH/AaQBjgEpAf8BmQGEAR0B/wH9AfcB8wH/AYgBHAEJAf8BgwEW + AQMB/wHRAcEBtgH/AQ4CAAH/HAADSQGHAeMBrwEjAf8B9gHEAZAC/wHNAZkC/wHNAZkB/wH+AdABoQH/ + AfIByQGdAf8BsAEFAQAB/xwAAQoBogG8Af8BAAHOAfcB/wGLAeMB9AH/AaEB6wH2Af8BGQHWAfIB/wEA + AbcB7gH/AQABpwHoAf8BAAGcAdoB/wEAARsBkgH/FAADMQFNA1IBoQNfAeMDXwHjA1IBoQMxAU0EAAMx AU0DUgGhA18B4wNfAeMDUgGhAzEBTQwAAcwBtgGnAf8D/gH/A/4B/wP+Af8D/gH/A/4B/wP+Af8B/QH7 - AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEPAgAB/yAAA0kBhwHjAa8BJAH/AfYBxAGQAv8BzQGZ - Af8B8wHCAY4B/wHjAbABJQH/A0MBeBwAARcBqQHAAf8BAgHUAfoB/wGcAewB+gH/AasB7wH6Af8BpgHt - AfgB/wGUAecB+AH/AR0B2QH2Af8BAAG9AekB/wEAASgBlwH/VAAB6gGqAYsB/wHqAaoBiwH/AeoBqgGL - Af8B6QGlAYQB/wHnAZcBGgH/AeYBjgEOAf8B4wEpAQAB/wHjASIBAAH/AeIBHgEAAf8B4gEeAQAB/wHi - AR4BAAH/AcgBDgEAAf8kAANJAYcB4wGvASQB/wHuAb0BigH/AeMBsAElAf8DNAFUIAABgAGzAcUB/wGb - Ad4B6wH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wGgAd8B6gH/ARIBkQGi - Af9UAAHqAaoBiwL/AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnASkB/wH2 - AaIBIwH/AfUBnQEdAf8B9QGZARYB/wHzAZUBEQH/Ac0BEQEAAf8oAANAAW4B5QGyASkB/wMmATgkAAM7 - AWMDYAHWASIBqwG6Af8BHAGjAbMB/wEYAZ0BrwH/ARcBmwGuAf8BGwGiAbQB/wNeAdkDQAFvVAAB6gGq - AYsB/wHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHpAaEBKwH/AegBmwEiAf8B5gGOAQ4B/wHlAYcBBAH/ - AeQBgQEAAf8B5AEnAQAB/wHjASIBAAH/AeIBHgEAAf//AP8ACgABQgFNAT4HAAE+AwABKAMAAUADAAFA + AfkB/wH9AfcB8wH/AfwB8gHsAf8B+wHsAeMB/wEOAgAB/yAAA0kBhwHjAa8BIwH/AfYBxAGQAv8BzQGZ + Af8B8wHCAY4B/wHjAbABJAH/A0MBeBwAARYBqQHAAf8BAQHUAfoB/wGcAewB+gH/AasB7wH6Af8BpgHt + AfgB/wGUAecB+AH/ARwB2QH2Af8BAAG9AekB/wEAAScBlwH/VAAB6gGqAYsB/wHqAaoBiwH/AeoBqgGL + Af8B6QGlAYQB/wHnAZcBGQH/AeYBjgENAf8B4wEoAQAB/wHjASEBAAH/AeIBHQEAAf8B4gEdAQAB/wHi + AR0BAAH/AcgBDQEAAf8kAANJAYcB4wGvASMB/wHuAb0BigH/AeMBsAEkAf8DNAFUIAABgAGzAcUB/wGb + Ad4B6wH/AcUB+QH9Af8BxQH5Af0B/wHFAfkB/QH/AcUB+QH9Af8BxQH5Af0B/wGgAd8B6gH/AREBkQGi + Af9UAAHqAaoBiwL/AcIBogH/Af4BwAGfAf8B/QG9AZoB/wH7AbUBkAH/AfoBsAGLAf8B+AGnASgB/wH2 + AaIBIgH/AfUBnQEcAf8B9QGZARUB/wHzAZUBEAH/Ac0BEAEAAf8oAANAAW4B5QGyASgB/wMmATgkAAM7 + AWMDYAHWASEBqwG6Af8BGwGjAbMB/wEXAZ0BrwH/ARYBmwGuAf8BGgGiAbQB/wNeAdkDQAFvVAAB6gGq + AYsB/wHqAaoBiwH/AeoBqgGLAf8B6gGqAYsB/wHpAaEBKgH/AegBmwEhAf8B5gGOAQ0B/wHlAYcBAwH/ + AeQBgQEAAf8B5AEmAQAB/wHjASEBAAH/AeIBHQEAAf//AP8ACgABQgFNAT4HAAE+AwABKAMAAUADAAFA AwABAQEAAQEGAAECFgAD/4EABf8BwwIAAfABHwP/AYECAAHAAQcB8wGfAf8DAAGAAQMB5wHPAf8BwAIA AYABAwHnAc8B/wQAAQEB5wHPAecEAAEBAecBzwHDAQEDAAEBAc8B5wGBBAABAQHnAc8FAAEBAecBzwUA AQEB5wHPBQABAQHnAc8BAAEBAgABgAEDAfMBnwGAARMCAAGAAQMC/wHAAT8CAAHgAQcC/wHgAX8CAAHw diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index 5996520f3..c35ce3ab3 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -354,6 +354,12 @@ public void RefreshAllServers() UpdateDrawnNodes(); } + internal void RefreshServer(ConnectionInfo connection) + { + TreeNodeWithConnectionInfo serverNode = FindServerNodeByConnection(connection); + RefreshServer(serverNode); + } + private void RefreshServer(TreeNode node) { var provider = node.Tag as IMetadataProvider; @@ -588,12 +594,16 @@ public void AddServer(IMetadataProvider provider, ConnectionInfo connection) internal void CloseServer(ConnectionInfo connection) { - var serverNode = _tree.Nodes.OfType() - .FirstOrDefault(n => n.Connection == connection); - + TreeNodeWithConnectionInfo serverNode = FindServerNodeByConnection(connection); CloseServer(serverNode); } + private TreeNodeWithConnectionInfo FindServerNodeByConnection(ConnectionInfo connection) + { + return _tree.Nodes.OfType() + .FirstOrDefault(n => n.Connection == connection); + } + private void CloseServer(TreeNode contextMenuNode) { var node = contextMenuNode as TreeNodeWithConnectionInfo; diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index acf52bfac..6c2017e03 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -268,5 +268,10 @@ internal void CloseServer(ConnectionInfo connection) { this.objectExplorer.CloseServer(connection); } + + public void RefreshServer(ConnectionInfo connection) + { + this.objectExplorer.RefreshServer(connection); + } } } From 3d8c80805112e4a7d4f9fc8d223646524b3ce100 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 8 Mar 2018 00:55:53 +0100 Subject: [PATCH 22/24] Added closing of tabs with connections, which cant be changed --- Src/SwqlStudio/ConnectionsManager.cs | 2 +- Src/SwqlStudio/QueriesDockPanel.cs | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Src/SwqlStudio/ConnectionsManager.cs b/Src/SwqlStudio/ConnectionsManager.cs index db9e1ffdb..039a2f8b3 100644 --- a/Src/SwqlStudio/ConnectionsManager.cs +++ b/Src/SwqlStudio/ConnectionsManager.cs @@ -52,7 +52,7 @@ private ConnectionInfo ResolveExistingConnection(ConnectionInfo info) info.ConnectionClosed += (sender, args) => { - // TODO remove all tabs holding this connection this.dockPanel.RemoveTab(queryTab.Parent as DockContent); + this.dockPanel.CloseAllFixedConnectionTabs(info); serverList.Remove(info); }; diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index 6c2017e03..1eaf9f4fa 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -269,9 +269,32 @@ internal void CloseServer(ConnectionInfo connection) this.objectExplorer.CloseServer(connection); } - public void RefreshServer(ConnectionInfo connection) + internal void RefreshServer(ConnectionInfo connection) { this.objectExplorer.RefreshServer(connection); } + + internal void CloseAllFixedConnectionTabs(ConnectionInfo connection) + { + var toClose =this.Contents.OfType() + .Where(t => IsFixedConnectionTab(t, connection)) + .ToList(); + + foreach (var connectionTab in toClose) + { + connectionTab.Close(); + } + } + + private bool IsFixedConnectionTab(DockContent tab, ConnectionInfo connection) + { + if(tab.Controls.Count < 1) + return false; + + var connectionTab = tab.Controls[0] as IConnectionTab; + return connectionTab != null && + connectionTab.ConnectionInfo == connection && + !connectionTab.AllowsChangeConnection; + } } } From 20e282d1223eb417d89c53e64903151b8ab1fc7d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 8 Mar 2018 02:44:17 +0100 Subject: [PATCH 23/24] Changed query tabs not to be based on connection, because conneciton may change. Fixed tab title marked when file is modified --- Src/SwqlStudio/ITabsFactory.cs | 4 +- Src/SwqlStudio/MainForm.cs | 104 ++++++------------ .../ObjectExplorer/ObjectExplorer.cs | 5 +- Src/SwqlStudio/QueriesDockPanel.cs | 15 +-- Src/SwqlStudio/QueryTab.cs | 54 +++++++-- Src/SwqlStudio/SciTextEditorControl.cs | 7 -- Src/SwqlStudio/TabsFactory.cs | 28 +++-- 7 files changed, 106 insertions(+), 111 deletions(-) diff --git a/Src/SwqlStudio/ITabsFactory.cs b/Src/SwqlStudio/ITabsFactory.cs index 5756359bf..26bce8c5e 100644 --- a/Src/SwqlStudio/ITabsFactory.cs +++ b/Src/SwqlStudio/ITabsFactory.cs @@ -6,9 +6,9 @@ internal interface ITabsFactory { void AddTextToEditor(string text, ConnectionInfo info); - void OpenActivityMonitor(string title, ConnectionInfo connectionInfo); + void OpenActivityMonitor(ConnectionInfo connectionInfo); - void OpenInvokeTab(string title, ConnectionInfo connectionInfo, Verb verb); + void OpenInvokeTab(ConnectionInfo connectionInfo, Verb verb); void OpenCrudTab(CrudOperation operation, ConnectionInfo connectionInfo, Entity entity); } diff --git a/Src/SwqlStudio/MainForm.cs b/Src/SwqlStudio/MainForm.cs index f2f589e30..20af64923 100644 --- a/Src/SwqlStudio/MainForm.cs +++ b/Src/SwqlStudio/MainForm.cs @@ -10,6 +10,7 @@ using SwqlStudio.Metadata; using SwqlStudio.Properties; using SwqlStudio.Subscriptions; +using WeifenLuo.WinFormsUI.Docking; namespace SwqlStudio { @@ -117,61 +118,54 @@ private void menuFileClose_Click(object sender, EventArgs e) private void menuFileSave_Click(object sender, EventArgs e) { - SciTextEditorControl editor = this.filesDock.ActiveEditor; + var editor = this.filesDock.ActiveQueryTab; if (editor != null) DoSave(editor); } - private bool DoSave(SciTextEditorControl editor) + private bool DoSave(QueryTab editor) { if (string.IsNullOrEmpty(editor.FileName)) return DoSaveAs(editor); - else - { - try - { - editor.SaveFile(editor.FileName); - SetModifiedFlag(editor, false); - return true; - } - catch (Exception ex) - { - MessageBox.Show(this, ex.Message, ex.GetType().Name); - return false; - } - } + + return SaveEditor(editor, editor.FileName); } private void menuFileSaveAs_Click(object sender, EventArgs e) { - var editor = this.filesDock.ActiveEditor; + var editor = this.filesDock.ActiveQueryTab; if (editor != null) DoSaveAs(editor); } - private bool DoSaveAs(SciTextEditorControl editor) + private bool DoSaveAs(QueryTab editor) { saveFileDialog.FileName = editor.FileName; - if (saveFileDialog.ShowDialog() == DialogResult.OK) + if (saveFileDialog.ShowDialog() != DialogResult.OK) + return false; + + return SaveEditor(editor, saveFileDialog.FileName); + } + + private bool SaveEditor(QueryTab editor, string fileName) + { + try { - try - { - editor.SaveFile(saveFileDialog.FileName); - editor.Parent.Text = Path.GetFileName(editor.FileName); - SetModifiedFlag(editor, false); - - // The syntax highlighting strategy doesn't change - // automatically, so do it manually. - //editor.Document.HighlightingStrategy = - // HighlightingStrategyFactory.CreateHighlightingStrategyForFile(editor.FileName); - return true; - } - catch (Exception ex) - { - MessageBox.Show(this, ex.Message, ex.GetType().Name); - } + File.WriteAllText(fileName, editor.QueryText); + editor.FileName = fileName; + editor.MarkSaved(); + + // The syntax highlighting strategy doesn't change + // automatically, so do it manually. + //editor.Document.HighlightingStrategy = + // HighlightingStrategyFactory.CreateHighlightingStrategyForFile(editor.FileName); + return true; + } + catch (Exception ex) + { + MessageBox.Show(this, ex.Message, ex.GetType().Name); + return false; } - return false; } private void menuNotificationListenerActive_Click(object sender, EventArgs e) @@ -207,32 +201,27 @@ private void menuFileExit_Click(object sender, EventArgs e) private void undoToolStripMenuItem_Click(object sender, EventArgs e) { - if (this.filesDock.ActiveEditor != null) - this.filesDock.ActiveEditor.Undo(); + this.filesDock.ActiveQueryTab?.Undo(); } private void redoToolStripMenuItem_Click(object sender, EventArgs e) { - if (this.filesDock.ActiveEditor != null) - this.filesDock.ActiveEditor.Redo(); + this.filesDock.ActiveQueryTab?.Redo(); } private void menuEditCut_Click(object sender, EventArgs e) { - if (this.filesDock.ActiveEditor != null) - this.filesDock.ActiveEditor.Cut(); + this.filesDock.ActiveQueryTab?.Cut(); } private void menuEditCopy_Click(object sender, EventArgs e) { - if (this.filesDock.ActiveQueryTab != null) - this.filesDock.ActiveQueryTab.CopySelectionToClipboard(); + this.filesDock.ActiveQueryTab?.CopySelectionToClipboard(); } private void menuEditPaste_Click(object sender, EventArgs e) { - if (this.filesDock.ActiveEditor != null) - this.filesDock.ActiveEditor.Paste(); + this.filesDock.ActiveQueryTab?.Paste(); } #endregion @@ -276,29 +265,6 @@ private void TextEditor_FormClosing(object sender, FormClosingEventArgs e) } } - /// Gets whether the file in the specified editor is modified. - /// TextEditorControl doesn't maintain its own internal modified - /// flag, so we use the '*' shown after the file name to represent the - /// modified state. - private static bool IsModified(SciTextEditorControl editor) - { - // TextEditorControl doesn't seem to contain its own 'modified' flag, so - // instead we'll treat the "*" on the filename as the modified flag. - return editor.Parent.Text.EndsWith("*"); - } - - private static void SetModifiedFlag(SciTextEditorControl editor, bool flag) - { - if (IsModified(editor) != flag) - { - var p = editor.Parent; - if (IsModified(editor)) - p.Text = p.Text.Substring(0, p.Text.Length - 1); - else - p.Text += "*"; - } - } - /// We handle DragEnter and DragDrop so users can drop files on the editor. private void TextEditorForm_DragEnter(object sender, DragEventArgs e) { diff --git a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs index c35ce3ab3..1c52cc17c 100644 --- a/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs +++ b/Src/SwqlStudio/ObjectExplorer/ObjectExplorer.cs @@ -412,7 +412,7 @@ private void OpenActivityMonitor(TreeNode node) { var provider = node.Tag as IMetadataProvider; if (provider != null && provider.ConnectionInfo.CanCreateSubscription) - TabsFactory.OpenActivityMonitor(provider.ConnectionInfo.Title + " Activity", provider.ConnectionInfo); + TabsFactory.OpenActivityMonitor(provider.ConnectionInfo); } private void OpenInvokeTab() @@ -421,8 +421,7 @@ private void OpenInvokeTab() var verb = (Verb)_contextMenuNode.Tag; if (verb.Arguments.Count == 0) verb.Arguments.AddRange(provider.GetVerbArguments(verb)); - TabsFactory.OpenInvokeTab(string.Format("{0} - Invoke {1}.{2}", provider.ConnectionInfo.Title, verb.EntityName, verb.Name), - provider.ConnectionInfo, verb); + TabsFactory.OpenInvokeTab(provider.ConnectionInfo, verb); } public void GenerateSelectStatement(Entity table, bool includeInheritedProperties) diff --git a/Src/SwqlStudio/QueriesDockPanel.cs b/Src/SwqlStudio/QueriesDockPanel.cs index 1eaf9f4fa..546da573a 100644 --- a/Src/SwqlStudio/QueriesDockPanel.cs +++ b/Src/SwqlStudio/QueriesDockPanel.cs @@ -27,17 +27,6 @@ public PropertyBag QueryParameters } } - /// Returns the currently displayed editor, or null if none are open - internal SciTextEditorControl ActiveEditor - { - get - { - var tab = ActiveQueryTab; - if (tab == null) return null; - return tab.Editor; - } - } - internal QueryTab ActiveQueryTab { get @@ -55,12 +44,12 @@ internal IConnectionTab ActiveConnectionTab } /// Returns a list of all editor controls - internal IEnumerable AllEditors + internal IEnumerable AllEditors { get { return from t in this.Contents.OfType() - from c in t.Controls.OfType() + from c in t.Controls.OfType() select c; } } diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 803fab0f0..0b380c794 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -4,6 +4,7 @@ using System.Data; using System.Diagnostics; using System.Drawing; +using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -114,16 +115,9 @@ public string QueryText set { sciTextEditorControl1.Text = value; } } - public bool IsDirty + internal void MarkSaved() { - get { return sciTextEditorControl1.Modified; } - set - { - if (value == false) - sciTextEditorControl1.SetSavePoint(); - else - throw new ArgumentException("Can't set IsDirty to true, only false"); - } + this.sciTextEditorControl1.SetSavePoint(); } private ConnectionInfo connectionInfo; @@ -194,7 +188,7 @@ private static StringBuilder FormatGridValue(object value) return str; } - public void CopySelectionToClipboard() + internal void CopySelectionToClipboard() { if (sciTextEditorControl1.Focused) { @@ -652,6 +646,22 @@ private bool LogTabVisible } } + internal string FileName + { + get { return this.sciTextEditorControl1.FileName; } + set + { + this.sciTextEditorControl1.FileName = value; + if (this.Parent != null) + this.Parent.Text = Path.GetFileName(value); + } + } + + public bool Modified + { + get { return this.sciTextEditorControl1.Modified; } + } + private class QueryArguments { public ConnectionInfo Connection { get; set; } @@ -759,6 +769,10 @@ private void sciTextEditorControl1_TextChanged(object sender, EventArgs e) private void delayTimer_Tick(object sender, EventArgs e) { this.delayTimer.Stop(); + + if (this.Parent != null && this.Modified && !this.Parent.Text.EndsWith("*")) + this.Parent.Text = this.Parent.Text + "*"; + DetectQueryParameters(); } @@ -776,5 +790,25 @@ internal void DetectQueryParameters() this.ApplicationService.QueryParameters = propertyBag; } + + internal void Paste() + { + this.sciTextEditorControl1.Paste(); + } + + internal void Cut() + { + this.sciTextEditorControl1.Cut(); + } + + internal void Undo() + { + this.sciTextEditorControl1.Undo(); + } + + internal void Redo() + { + this.sciTextEditorControl1.Redo(); + } } } diff --git a/Src/SwqlStudio/SciTextEditorControl.cs b/Src/SwqlStudio/SciTextEditorControl.cs index 597a962ef..058447bf9 100644 --- a/Src/SwqlStudio/SciTextEditorControl.cs +++ b/Src/SwqlStudio/SciTextEditorControl.cs @@ -1,9 +1,7 @@ using System; using System.Drawing; -using System.IO; using System.Windows.Forms; using ScintillaNET; -using System.Collections.Generic; using System.Linq; using SwqlStudio.Properties; @@ -203,11 +201,6 @@ protected override void OnKeyPress(KeyPressEventArgs e) public LexerService LexerService { get; } - public void SaveFile(string path) - { - File.WriteAllText(path, Text); - } - public event Action Execute; protected override void OnCharAdded(CharAddedEventArgs e) diff --git a/Src/SwqlStudio/TabsFactory.cs b/Src/SwqlStudio/TabsFactory.cs index 4e4a849b5..3fb4a9aad 100644 --- a/Src/SwqlStudio/TabsFactory.cs +++ b/Src/SwqlStudio/TabsFactory.cs @@ -18,6 +18,7 @@ internal class TabsFactory : ITabsFactory private readonly QueriesDockPanel dockPanel; private readonly IApplicationService applicationService; private readonly ConnectionsManager connectionsManager; + private int queryTabsCounter = 0; internal TabsFactory(QueriesDockPanel dockPanel, IApplicationService applicationService, ServerList serverList, ConnectionsManager connectionsManager) @@ -36,11 +37,18 @@ public void AddTextToEditor(string text, ConnectionInfo info) if (info == null) return; - CreateQueryTab(info.Title, info); + string title = CreateQueryTitile(); + CreateQueryTab(title, info); this.dockPanel.ActiveQueryTab.QueryText = text; } - public void OpenActivityMonitor(string title, ConnectionInfo info) + private string CreateQueryTitile() + { + queryTabsCounter++; + return "Query" + queryTabsCounter; + } + + public void OpenActivityMonitor(ConnectionInfo info) { var activityMonitorTab = new ActivityMonitorTab { @@ -48,11 +56,13 @@ public void OpenActivityMonitor(string title, ConnectionInfo info) Dock = DockStyle.Fill, SubscriptionManager = this.applicationService.SubscriptionManager }; + + string title = info.Title + " Activity"; AddNewTab(activityMonitorTab, title); activityMonitorTab.Start(); } - public void OpenInvokeTab(string title, ConnectionInfo info, Verb verb) + public void OpenInvokeTab(ConnectionInfo info, Verb verb) { var invokeVerbTab = new InvokeVerbTab { @@ -60,13 +70,14 @@ public void OpenInvokeTab(string title, ConnectionInfo info, Verb verb) Dock = DockStyle.Fill, Verb = verb }; + + string title = string.Format("Invoke {1}.{2}", verb.EntityName, verb.Name); AddNewTab(invokeVerbTab, title); } /// public void OpenCrudTab(CrudOperation operation, ConnectionInfo info, Entity entity) { - string title = entity.FullName + " - " + operation; var crudTab = new CrudTab(operation) { ConnectionInfo = info, @@ -79,6 +90,7 @@ public void OpenCrudTab(CrudOperation operation, ConnectionInfo info, Entity ent this.dockPanel.RemoveTab(crudTab.Parent as DockContent); }; + string title = entity.FullName + " - " + operation; AddNewTab(crudTab, title); } @@ -92,7 +104,8 @@ internal void AddNewQueryTab() if (info== null) return; - this.CreateQueryTab(info.Title, info); + string title = CreateQueryTitile(); + this.CreateQueryTab(title, info); } catch (FaultException ex) { @@ -149,11 +162,12 @@ internal void OpenFiles(string[] files) QueryTab queryTab = null; try { - queryTab = this.CreateQueryTab(Path.GetFileName(fn), connectionInfo); + queryTab = this.CreateQueryTab(string.Empty, connectionInfo); queryTab.QueryText = File.ReadAllText(fn); + queryTab.FileName = fn; // Modified flag is set during loading because the document // "changes" (from nothing to something). So, clear it again. - queryTab.IsDirty = false; + queryTab.MarkSaved(); } catch (Exception ex) { From fd62be472ece90188e17f3483f9a4927b1460208 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 8 Mar 2018 02:54:25 +0100 Subject: [PATCH 24/24] Fixed marking changed file in title for not saved files --- Src/SwqlStudio/QueryTab.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Src/SwqlStudio/QueryTab.cs b/Src/SwqlStudio/QueryTab.cs index 0b380c794..9345e8f1a 100644 --- a/Src/SwqlStudio/QueryTab.cs +++ b/Src/SwqlStudio/QueryTab.cs @@ -770,7 +770,8 @@ private void delayTimer_Tick(object sender, EventArgs e) { this.delayTimer.Stop(); - if (this.Parent != null && this.Modified && !this.Parent.Text.EndsWith("*")) + if (this.Parent != null && this.Modified && + !string.IsNullOrEmpty(this.FileName) && !this.Parent.Text.EndsWith("*")) this.Parent.Text = this.Parent.Text + "*"; DetectQueryParameters();