diff --git a/EasyCPDLC/App.config b/EasyCPDLC/App.config index b581f60..d6a101b 100644 --- a/EasyCPDLC/App.config +++ b/EasyCPDLC/App.config @@ -1,5 +1,10 @@  + + +
+ + @@ -12,4 +17,14 @@ + + + + False + + + True + + + diff --git a/EasyCPDLC/EasyCPDLC.csproj b/EasyCPDLC/EasyCPDLC.csproj index 4883d21..bbee27b 100644 --- a/EasyCPDLC/EasyCPDLC.csproj +++ b/EasyCPDLC/EasyCPDLC.csproj @@ -163,6 +163,12 @@ RequestForm.cs + + Form + + + SettingsForm.cs + Form @@ -186,6 +192,9 @@ RequestForm.cs + + SettingsForm.cs + TelexForm.cs @@ -199,19 +208,20 @@ Settings.settings True + PreserveNewest PreserveNewest + + PreserveNewest + - - - diff --git a/EasyCPDLC/MainForm.Designer.cs b/EasyCPDLC/MainForm.Designer.cs index a090418..af17424 100644 --- a/EasyCPDLC/MainForm.Designer.cs +++ b/EasyCPDLC/MainForm.Designer.cs @@ -37,6 +37,8 @@ private void InitializeComponent() this.retrieveButton = new System.Windows.Forms.Button(); this.atcUnitLabel = new System.Windows.Forms.Label(); this.atcUnitDisplay = new System.Windows.Forms.Label(); + this.settingsButton = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.settingsButton)).BeginInit(); this.SuspendLayout(); // // titleLabel @@ -45,7 +47,7 @@ private void InitializeComponent() this.titleLabel.AutoSize = true; this.titleLabel.Font = new System.Drawing.Font("Oxygen", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.titleLabel.ForeColor = System.Drawing.SystemColors.ControlLight; - this.titleLabel.Location = new System.Drawing.Point(340, 3); + this.titleLabel.Location = new System.Drawing.Point(334, 3); this.titleLabel.Name = "titleLabel"; this.titleLabel.Size = new System.Drawing.Size(186, 41); this.titleLabel.TabIndex = 0; @@ -60,7 +62,7 @@ private void InitializeComponent() this.exitButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.exitButton.Font = new System.Drawing.Font("Oxygen", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.exitButton.ForeColor = System.Drawing.SystemColors.ControlLight; - this.exitButton.Location = new System.Drawing.Point(515, 0); + this.exitButton.Location = new System.Drawing.Point(531, 0); this.exitButton.Name = "exitButton"; this.exitButton.Size = new System.Drawing.Size(24, 24); this.exitButton.TabIndex = 1; @@ -75,14 +77,14 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Right))); this.outputTable.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); this.outputTable.ColumnCount = 2; - this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 80F)); - this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 433F)); + this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 12.5F)); + this.outputTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 87.5F)); this.outputTable.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); this.outputTable.Location = new System.Drawing.Point(12, 66); this.outputTable.Name = "outputTable"; this.outputTable.RowCount = 1; this.outputTable.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.outputTable.Size = new System.Drawing.Size(513, 112); + this.outputTable.Size = new System.Drawing.Size(528, 127); this.outputTable.TabIndex = 3; this.outputTable.Click += new System.EventHandler(this.outputTable_Click); // @@ -137,7 +139,7 @@ private void InitializeComponent() this.atcUnitLabel.AutoSize = true; this.atcUnitLabel.Font = new System.Drawing.Font("Oxygen", 11F, System.Drawing.FontStyle.Bold); this.atcUnitLabel.ForeColor = System.Drawing.SystemColors.ControlLight; - this.atcUnitLabel.Location = new System.Drawing.Point(343, 44); + this.atcUnitLabel.Location = new System.Drawing.Point(337, 44); this.atcUnitLabel.Name = "atcUnitLabel"; this.atcUnitLabel.Size = new System.Drawing.Size(135, 19); this.atcUnitLabel.TabIndex = 7; @@ -149,19 +151,32 @@ private void InitializeComponent() this.atcUnitDisplay.AutoSize = true; this.atcUnitDisplay.Font = new System.Drawing.Font("Oxygen", 11F, System.Drawing.FontStyle.Bold); this.atcUnitDisplay.ForeColor = System.Drawing.SystemColors.ControlLight; - this.atcUnitDisplay.Location = new System.Drawing.Point(478, 44); + this.atcUnitDisplay.Location = new System.Drawing.Point(472, 44); this.atcUnitDisplay.Name = "atcUnitDisplay"; this.atcUnitDisplay.Size = new System.Drawing.Size(29, 19); this.atcUnitDisplay.TabIndex = 8; this.atcUnitDisplay.Text = "----"; // + // settingsButton + // + this.settingsButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.settingsButton.Image = global::EasyCPDLC.Properties.Resources.cog_wheel_gear_setting; + this.settingsButton.Location = new System.Drawing.Point(516, 3); + this.settingsButton.Name = "settingsButton"; + this.settingsButton.Size = new System.Drawing.Size(18, 18); + this.settingsButton.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.settingsButton.TabIndex = 9; + this.settingsButton.TabStop = false; + this.settingsButton.Click += new System.EventHandler(this.settingsButton_Click); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); - this.ClientSize = new System.Drawing.Size(537, 187); + this.ClientSize = new System.Drawing.Size(552, 202); + this.Controls.Add(this.settingsButton); this.Controls.Add(this.atcUnitDisplay); this.Controls.Add(this.atcUnitLabel); this.Controls.Add(this.retrieveButton); @@ -172,12 +187,13 @@ private void InitializeComponent() this.Controls.Add(this.titleLabel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MinimumSize = new System.Drawing.Size(537, 187); + this.MinimumSize = new System.Drawing.Size(552, 202); this.Name = "MainForm"; this.Text = "MainForm"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); this.Load += new System.EventHandler(this.MainForm_Load); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MoveWindow); + ((System.ComponentModel.ISupportInitialize)(this.settingsButton)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -193,6 +209,7 @@ private void InitializeComponent() private System.Windows.Forms.Button retrieveButton; private System.Windows.Forms.Label atcUnitLabel; private System.Windows.Forms.Label atcUnitDisplay; + private System.Windows.Forms.PictureBox settingsButton; } } diff --git a/EasyCPDLC/MainForm.cs b/EasyCPDLC/MainForm.cs index e3a094f..60fcbc1 100644 --- a/EasyCPDLC/MainForm.cs +++ b/EasyCPDLC/MainForm.cs @@ -38,6 +38,7 @@ namespace EasyCPDLC { public partial class MainForm : Form { + public const int WM_NCLBUTTONDOWN = 0xA1; public const int HT_CAPTION = 0x2; private const int cGrip = 16; @@ -59,6 +60,32 @@ public partial class MainForm : Form private RequestForm rForm; private TelexForm tForm; + private SettingsForm sForm; + + public bool stayOnTop + { + get + { + return Properties.Settings.Default.StayOnTop; + } + set + { + Properties.Settings.Default.StayOnTop = value; + this.TopMost = value; + } + } + + public bool playSound + { + get + { + return Properties.Settings.Default.PlayAudibleAlert; + } + set + { + Properties.Settings.Default.PlayAudibleAlert = value; + } + } public int messageOutCounter = 1; private bool _connected; @@ -85,6 +112,8 @@ public bool connected } } } + + public string pendingLogon = null; private string _currentATCUnit; public string currentATCUnit { @@ -137,7 +166,7 @@ public string currentATCUnit ToolStripMenuItem deleteAllMenu; ToolStripMenuItem freeTextMenu; - private SoundPlayer player = new SoundPlayer(Properties.Resources.honk); + private SoundPlayer player = new SoundPlayer(Properties.Resources.notification); private RegistryKey regKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\EasyCPDLC"); private static Regex hoppieParse = new Regex(@"{(.*?)}"); @@ -161,6 +190,7 @@ public MainForm() AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; InitializeComponent(); + this.TopMost = stayOnTop; this.FormBorderStyle = FormBorderStyle.None; this.DoubleBuffered = true; this.SetStyle(ControlStyles.ResizeRedraw, true); @@ -194,18 +224,26 @@ private void MainForm_Load(object sender, EventArgs e) private async void CheckNewVersion() { - var client = new GitHubClient(new ProductHeaderValue("EasyCPDLC")); - var releases = await client.Repository.Release.GetAll("josh-seagrave", "EasyCPDLC"); - var latest = releases[0]; - string latestVersion = latest.TagName.Replace("cpdlc", ""); - if(latestVersion != System.Windows.Forms.Application.ProductVersion) + try { - DialogResult updateBox = MessageBox.Show(String.Format("New Version {0} Available to download from Github. This application will now exit. Would you like me to take you to the Github page for the latest release?", latestVersion), "New Version Available", MessageBoxButtons.YesNo); - if(updateBox == DialogResult.Yes) + var client = new GitHubClient(new ProductHeaderValue("EasyCPDLC")); + var releases = await client.Repository.Release.GetAll("josh-seagrave", "EasyCPDLC"); + var latest = releases[0]; + string latestVersion = latest.TagName.Replace("cpdlc", ""); + if (latestVersion != System.Windows.Forms.Application.ProductVersion) { - System.Diagnostics.Process.Start(latest.HtmlUrl); + DialogResult updateBox = MessageBox.Show(String.Format("New Version {0} Available to download from Github. This application will now exit. Would you like me to take you to the Github page for the latest release?", latestVersion), "New Version Available", MessageBoxButtons.YesNo); + if (updateBox == DialogResult.Yes) + { + System.Diagnostics.Process.Start(latest.HtmlUrl); + } + System.Windows.Forms.Application.Exit(); } - System.Windows.Forms.Application.Exit(); + } + + catch + { + } } @@ -272,6 +310,7 @@ private void freeTextMessage(object sender, EventArgs e) CPDLCMessage message = (CPDLCMessage)sourceControl; tForm = new TelexForm(this, message.recipient); + tForm.TopMost = stayOnTop; tForm.Show(); } private async void RogerMessage(object sender, EventArgs e) @@ -571,7 +610,7 @@ private async Task TelexParser(string response) format_response += _modify[1]; WriteMessage(format_response, type, sender); - player.Play(); + if (playSound) { player.Play(); } FlashWindow.Flash(this); } } @@ -613,14 +652,17 @@ private async Task CPDLCParser(string _response, string _sender) } if (messageString.StartsWith("LOGON ACCEPTED")) { - return; + currentATCUnit = pendingLogon; } string message = callsign + " " + messageString.Replace("@@", "N/A").Replace("@", Environment.NewLine).Replace("_", ""); message = Regex.Replace(message, @"\s+", " "); - if (message == "LOGOFF") + Logger.Debug(message); + + if (message.Contains("LOGOFF")) { currentATCUnit = null; + pendingLogon = null; } WriteMessage(message, "CPDLC", _sender, false, header); @@ -740,6 +782,7 @@ private void telexButton_Click(object sender, EventArgs e) private void requestButton_Click(object sender, EventArgs e) { rForm = new RequestForm(this); + rForm.TopMost = stayOnTop; rForm.Show(); } @@ -786,6 +829,20 @@ protected override void WndProc(ref Message m) } base.WndProc(ref m); } + + private void settingsButton_Click(object sender, EventArgs e) + { + bool[] settings = new bool[] { stayOnTop, playSound }; + sForm = new SettingsForm(this, settings); + sForm.TopMost = stayOnTop; + if (sForm.ShowDialog(this) == DialogResult.OK) + { + settings = sForm.settings; + stayOnTop = settings[0]; + playSound = settings[1]; + Properties.Settings.Default.Save(); + } + } } internal class NoHighlightRenderer : ToolStripProfessionalRenderer { diff --git a/EasyCPDLC/Properties/Resources.Designer.cs b/EasyCPDLC/Properties/Resources.Designer.cs index a45c3d5..ab0155a 100644 --- a/EasyCPDLC/Properties/Resources.Designer.cs +++ b/EasyCPDLC/Properties/Resources.Designer.cs @@ -70,12 +70,32 @@ internal static byte[] B612Mono_Regular { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap cog_wheel_gear_setting { + get { + object obj = ResourceManager.GetObject("cog_wheel_gear_setting", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.IO.UnmanagedMemoryStream similar to System.IO.MemoryStream. /// - internal static System.IO.UnmanagedMemoryStream honk { + internal static System.IO.UnmanagedMemoryStream notification { get { - return ResourceManager.GetStream("honk", resourceCulture); + return ResourceManager.GetStream("notification", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] Oxygen_Bold { + get { + object obj = ResourceManager.GetObject("Oxygen_Bold", resourceCulture); + return ((byte[])(obj)); } } diff --git a/EasyCPDLC/Properties/Resources.resx b/EasyCPDLC/Properties/Resources.resx index 8297366..3726c21 100644 --- a/EasyCPDLC/Properties/Resources.resx +++ b/EasyCPDLC/Properties/Resources.resx @@ -117,681 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - AAEAAAD/////AQAAAAAAAAAEAQAAABZTeXN0ZW0uSU8uTWVtb3J5U3RyZWFtCgAAAAdfYnVmZmVyB19v - cmlnaW4JX3Bvc2l0aW9uB19sZW5ndGgJX2NhcGFjaXR5C19leHBhbmRhYmxlCV93cml0YWJsZQpfZXhw - b3NhYmxlB19pc09wZW4dTWFyc2hhbEJ5UmVmT2JqZWN0K19faWRlbnRpdHkHAAAAAAAAAAACAggICAgB - AQEBCQIAAAAAAAAARJwAAEScAABEnAAAAAEAAQoPAgAAAEScAAACUklGRjycAABXQVZFZm10IBAAAAAB - AAIAgLsAAADuAgAEABAAZGF0YRicAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB - AAEAAQABAAEAAQABAAEAAQABAAEAAQACAAIAAwADAAMAAwADAAMABAAEAAUABQAGAAYABgAGAAUABQAD - AAMAAgACAAEAAQAAAAAA/v/+//z//P/8//z/+v/6//r/+v/6//r/+f/5//j/+P/3//f/+P/4//n/+f/6 - //r/+v/6//v/+//8//z//f/9//z//P/8//z//v/+////////////AAAAAAMAAwAGAAYACAAIAAgACAAK - AAoADgAOAA4ADgANAA0ADAAMAAoACgAKAAoACgAKAAwADAAPAA8ADwAPAAwADAAJAAkACgAKAAwADAAN - AA0ACgAKAAYABgAEAAQAAgACAP/////7//v/+f/5//r/+v8AAAAACQAJAAoACgAFAAUAAAAAAAAAAAD+ - //7/AAAAAAIAAgD+//7/9//3//X/9f/y//L/8v/y//b/9v/3//f//f/9/wEAAQAAAAAAAgACAAYABgAE - AAQAAAAAAPz//P8BAAEADgAOAA8ADwAJAAkACAAIAAkACQANAA0AFAAUAB8AHwAiACIAGAAYABAAEAAQ - ABAADgAOAA0ADQAGAAYAAAAAAAAAAAD6//r/7f/t/+j/6P/k/+T/3P/c/9r/2v/h/+H/7//v//b/9v/4 - //j/AQABAAcABwAHAAcADwAPABkAGQAhACEALAAsADwAPABMAEwAVgBWAFkAWQBbAFsAYQBhAGkAaQBq - AGoAaABoAGUAZQBWAFYARwBHAEIAQgBAAEAAQABAAD4APgBCAEIAUwBTAF4AXgBjAGMAcgByAHoAegBu - AG4AYgBiAG4AbgCKAIoAhgCGAFoAWgA4ADgANAA0ADoAOgAqACoA/v/+/9X/1f+6/7r/rf+t/67/rv+Y - /5j/ZP9k/z7/Pv8r/yv/Gf8Z/wj/CP/9/v3++/77/vL+8v7j/uP+9f71/if/J/9L/0v/Wv9a/3n/ef+q - /6r/0f/R//X/9f8KAAoABgAGABMAEwA7ADsAYABgAIYAhgCVAJUAegB6AG4AbgCLAIsAqwCrALEAsQCS - AJIAcgByAG4AbgBxAHEAeQB5AIYAhgCAAIAAbQBtAGYAZgBxAHEAgQCBAHwAfABcAFwAOgA6ADwAPABh - AGEAgQCBAIcAhwB0AHQAUgBSAEoASgBWAFYATABMADMAMwASABIA6P/o/8f/x/+u/67/kf+R/3P/c/9W - /1b/U/9T/2j/aP9x/3H/cf9x/27/bv9o/2j/hP+E/7H/sf/E/8T/zP/M/8r/yv+8/7z/yf/J/wQABABS - AFIAhwCHAI4AjgCHAIcAmgCaALkAuQC0ALQAfwB/AFUAVQBGAEYAJAAkAPb/9v/g/+D/1v/W/8j/yP+/ - /7//z//P//P/8//3//f/zP/M/5P/k/9l/2X/Wf9Z/3n/ef+f/5//s/+z/8D/wP/G/8b/w//D/8X/xf/a - /9r/AAAAADUANQBbAFsAUgBSAEcARwBkAGQAkwCTAMQAxAD4APgAHwEfATUBNQEzATMBFQEVAfYA9gDi - AOIAzADMAL8AvwCxALEAkgCSAGUAZQArACsA7v/u/8j/yP++/77/wP/A/8f/x//C/8L/o/+j/3n/ef9g - /2D/b/9v/5X/lf+h/6H/lP+U/4X/hf95/3n/eP94/4H/gf+Q/5D/tf+1/93/3f/y//L/AwADAAQABADx - //H/6v/q/+H/4f/Y/9j/8f/x/wQABAD1//X/2//b/83/zf/N/83/x//H/73/vf/N/83/2P/Y/8j/yP/H - /8f/1f/V/9//3//w//D/BwAHAB0AHQAsACwAPwA/AF0AXQBzAHMAjgCOAMIAwgDqAOoA6wDrANYA1gDC - AMIAzQDNANgA2AC3ALcAkwCTAI4AjgCLAIsAfQB9AHkAeQCCAIIAegB6AFUAVQA1ADUAHgAeAAsACwAA - AAAA2v/a/57/nv+D/4P/gf+B/3//f/+C/4L/h/+H/4r/iv98/3z/af9p/3n/ef+S/5L/j/+P/4X/hf92 - /3b/aP9o/3T/dP+P/4//nf+d/6T/pP/B/8H/AgACADsAOwBPAE8AVABUAFEAUQBVAFUAbQBtAHIAcgBv - AG8AkQCRALcAtwCyALIAjACMAGcAZwBUAFQASwBLAFIAUgBvAG8AcwBzAEgASAAmACYAMgAyAEEAQQA2 - ADYAIwAjABAAEADx//H/3f/d/9X/1f/F/8X/uf+5/7D/sP+6/7r/BgAGAFwAXABcAFwAKwArAAMAAwDw - //D/CgAKADUANQA5ADkAJAAkAAgACADv/+//7P/s//3//f8XABcAIgAiAAEAAQDu/+7/BAAEAAUABQDi - /+L/wv/C/6X/pf+J/4n/dP90/1z/XP89/z3/KP8o/y//L/9H/0f/Vv9W/2T/ZP9l/2X/Tv9O/1P/U/9y - /3L/gf+B/5v/m/+7/7v/xf/F/9//3/8HAAcAGwAbADgAOABfAF8AbwBvAHkAeQCQAJAApgCmAKoAqgCb - AJsAnQCdAL8AvwDIAMgArwCvAJ0AnQCJAIkAWABYACYAJgAUABQACwALAPj/+P/2//b/AgACAPH/8f/m - /+b/DAAMAB4AHgAIAAgA/v/+/+b/5v/A/8D/xv/G/97/3v/h/+H/7P/s/+z/7P/M/8z/uf+5/73/vf+/ - /7//vP+8/7j/uP+n/6f/jP+M/3j/eP91/3X/c/9z/3L/cv+B/4H/l/+X/6D/oP+j/6P/tP+0/9b/1v/y - //L/BQAFABwAHAAiACIAEwATABsAGwA/AD8AUgBSAFkAWQBlAGUAWQBZADoAOgAmACYAFAAUAAsACwAN - AA0A+P/4/9L/0v+//7//wP/A/8D/wP+j/6P/gP+A/4P/g/+U/5T/i/+L/3P/c/9U/1T/OP84/y3/Lf8y - /zL/QP9A/2X/Zf+Z/5n/pf+l/4z/jP+a/5r/x//H/9f/1//U/9T/0v/S/93/3f/4//j/CAAIAAUABQD4 - //j/5f/l/+f/5//7//v/CAAIAAwADAD/////2v/a/6z/rP+R/5H/pf+l/7z/vP+f/5//W/9b/yL/Iv8X - /xf/GP8Y//3+/f7t/u3+8v7y/vH+8f7s/uz+7P7s/gL/Av8r/yv/U/9T/4X/hf+p/6n/ov+i/5j/mP97 - /3v/OP84/w3/Df8G/wb/GP8Y/zL/Mv8u/y7/If8h/x//H/8e/x7/LP8s/y7/Lv8K/wr/1P7U/qD+oP6N - /o3+of6h/rr+uv7M/sz+vf69/pX+lf6O/o7+lf6V/pH+kf6Q/pD+fP58/lb+Vv41/jX+KP4o/jD+MP4f - /h/+8P3w/dD90P25/bn9qv2q/aP9o/2N/Y39cv1y/Vr9Wv1L/Uv9Xv1e/YH9gf2X/Zf9lP2U/X/9f/19 - /X39df11/VX9Vf1W/Vb9cP1w/Yv9i/2+/b79/v3+/Vj+WP7D/sP+B/8H/03/Tf+6/7r/IgAiAIgAiADz - APMAWgFaAcYBxgErAisClwKXAg0DDQNvA28D2wPbA1QEVASxBLEEAAUABU4FTgWgBaAF9QX1BSUGJQY0 - BjQGOgY6BiQGJAb7BfsF1wXXBcIFwgWnBacFVgVWBegE6ASKBIoEKQQpBMgDyANfA18D4gLiAowCjAJQ - AlAC8AHwAXoBegH5APkAYABgALn/uf8X/xf/mv6a/jD+MP7a/dr9qP2o/Uj9SP2f/J/8A/wD/Gr7avvF - +sX6GfoZ+ir5Kvka+Br4Kvcq9xz2HPaw9LD09/L38jXxNfFx73HvnO2c7cvsy+zT7dPtae9p7yDwIPC6 - 77rv4u7i7iHvIe/k8OTwFfMV8631rfUn+Sf5Df0N/RoBGgFgBWAFYAlgCf8L/wvHDMcMNg02DYsOiw4L - EAsQYBFgEeES4RLdE90T3RPdE4cThxNpE2kTOBM4ExYSFhK1D7UPqwyrDMUJxQnAB8AHqgaqBvgF+AV+ - BX4FGAUYBdAE0ARfBV8FhwaHBhwHHAcdBx0HDwcPB9wG3AaMBowGawZrBrQGtAZEB0QHnQedB90H3Qc5 - CDkIDAgMCB8HHwf2BfYFmQSZBCYDJgMLAgsCEgESAQIAAgAX/xf/Nf41/ij9KP0V/BX8IPsg+4b6hvpb - +lv6SPpI+jT6NPpU+lT6r/qv+k37TfsR/BH8uvy6/F79Xv0n/if+4f7h/lf/V/+F/4X/k/+T/5n/mf9/ - /3//Tv9O/zL/Mv80/zT/NP80/+f+5/5K/kr+vv2+/V39Xf0F/QX9t/y3/Gv8a/w3/Df8Ofw5/Fn8Wfy0 - /LT8VP1U/eP94/1W/lb+z/7P/k7/Tv/+//7/2QDZALUBtQGgAqACiAOIA1AEUAT4BPgEdgV2BeQF5AVR - BlEGoAagBuUG5QYnBycHRAdEB08HTwdpB2kHlgeWB7MHswdpB2kHlgaWBnEFcQUwBDAECwMLAw4CDgIK - AQoBBQAFACH/If9Y/lj+l/2X/aT8pPxP+0/7xPnE+V34Xfhg92D31vbW9qr2qvbo9uj2Z/dn98L3wvf0 - 9/T3JPgk+Cz4LPgP+A/4MPgw+MX4xfiz+bP51vrW+vb79vvV/NX8cv1y/fn9+f1p/mn+rf6t/sr+yv7H - /sf+rf6t/qf+p/7U/tT+JP8k/3v/e//h/+H/ZwBnAAgBCAGiAaIBBAIEAhACEALtAe0B2AHYAd4B3gEL - AgsCZwJnAtAC0AI9Az0DxQPFA14EXgTsBOwEVAVUBYcFhwWaBZoFsgWyBdQF1AX9Bf0FJAYkBjwGPAZP - Bk8GYgZiBl4GXgY4BjgGEQYRBgQGBAYABgAG5wXnBasFqwVGBUYFvAS8BC4ELgS9A70DVwNXA+MC4wJu - Am4C+gH6AYABgAEJAQkBeAB4AML/wv8E/wT/ZP5k/un96f1k/WT9yfzJ/Fn8WfwZ/Bn81/vX+1r7WvuF - +oX6v/m/+Vn5Wfkd+R356fjp+LT4tPh1+HX4SfhJ+PT39Pcy9zL3P/Y/9oX1hfVT9VP1hPWE9ZP1k/Vw - 9XD1XfVd9ZH1kfUq9ir2D/cP90D4QPi8+bz5FPsU+wj8CPyt/K38C/0L/Vr9Wv35/fn9N/83/+EA4QAQ - AhACKAIoAm4BbgF3AHcAtv+2/zH/Mf+x/rH+Wv5a/pz+nP57/3v/NQA1AGkAaQCqAKoAPQE9AeYB5gFb - AlsCHwIfAmUBZQHuAO4ArwCvAFEAUQDC/8L/Qf9B/xj/GP+0/rT+tv22/fX79fv++P74T/dP9336ffr3 - APcABgYGBpMGkwYaAxoDyv/K//3+/f7C/sL+af5p/v7+/v76//r/JQElAfgD+APGCMYIOQw5DMYKxgql - BqUGfwR/BLgEuARjBWMFqAWoBbUEtQSdAZ0BjP2M/bT7tPs4/Tj9yv/K/2oBagFtAW0B7P/s/9L+0v4i - /yL/gP+A/3r/ev8t/y3/Uf5R/gH+Af7n/uf+0//T/00ATQB3AHcAsP+w/w7+Dv45/Tn9iv6K/v0A/QB2 - AnYCywLLAtYC1gJLAksCTgFOAZAAkADA/8D/ov6i/o39jf2n/Kf8I/wj/Mf7x/v7+vv6Ovk6+RT2FPZO - 807z8/Pz8+D34PfP/M/8CAEIATwDPAOcA5wDvgK+AmwAbAA//j/+Ov06/WL7Yvt1+XX53frd+ub+5v6b - AZsB8ADwAJz9nP2r+Kv4ifKJ8vzs/Owe6h7q8+jz6DfnN+eg5KDk2OLY4vDj8OPH58fnZOxk7H7wfvDx - 8/HzE/gT+Lr9uv0TAxMDVgdWBwULBQsgDSANlQ6VDscRxxFzFnMWphumGw4gDiDyIfIh8iHyIYwgjCAM - HQwdZhhmGLgTuBOiD6IP4wzjDAILAgubCZsJoAigCE4HTgfVBdUFxQTFBDwEPARjBGMERgRGBIkDiQNY - A1gDVQNVA+8C7wIAAwADZQNlA98D3wNLBUsFowejB6EJoQnTCdMJ8gfyB2MFYwVKA0oDxgHGASYBJgGJ - AYkBRQJFArcCtwKgAqAC0AHQAVIAUgBF/kX+3fvd+yD6IPrc+dz5c/pz+h/7H/uB+4H7f/t/+7b7tvt0 - /HT8Vf1V/SP+I/7C/sL+R/9H/4X/hf/w/vD+EP4Q/qf9p/1n/Wf9H/0f/a78rvyd+5372/nb+an3qfdi - 9WL1PfM981/xX/EQ8BDwOO8476jvqO/o8ujy6Pfo9/H78fuW/Zb97/zv/Lz7vPud+537c/xz/Df+N/7M - AMwAbgNuAz4GPga+Cb4Jog2iDTQQNBA+Dz4PngueC7cItwhHCEcI0wnTCYkLiQt2C3YLdAl0CZQGlAYl - BCUEggOCA7AEsAT3BfcFyAXIBZoEmgQLBAsEKQQpBJADkAPyAfIBdwB3AO7/7v8HAAcAxgDGADgCOALB - AsECFAEUAT7+Pv67+7v7V/pX+kr6SvrH+sf6DvsO+xn7GfuJ+on6DPkM+W/3b/dv9m/21fXV9YD1gPWn - 9af1ffZ99jT4NPhE+kT64Pvg+xD9EP2e/Z79Yv1i/VT9VP3k/eT94/7j/mkAaQDgAeAB0gLSAs4DzgP+ - BP4EHAYcBvcG9wZiB2IHjwePB3wHfAfwBvAGOgY6BlgFWAX0A/QDdgJ2AoIBggFeAV4BAQIBAugC6AKN - A40D0wPTA7sDuwNjA2MDIQMhAyQDJANZA1kDwgPCA5QElATgBeAFSgdKB1YIVgiwCLAIQghCCGYHZgeI - BogGzQXNBVUFVQUiBSIFBwUHBQUFBQUpBSkFSQVJBSoFKgWcBJwEqAOoA5gCmAKVAZUBlACUAIj/iP+K - /or+0P3Q/Vb9Vv0G/Qb94Pzg/Kn8qfwh/CH8SPtI+yD6IPrO+M74kfeR94P2g/b09fT1J/Yn9uX25faz - 97P32ffZ9+z27PZa9Vr1vPO886Pyo/Kx8rHy/vP+8yr2KvZg+GD4r/mv+SL6Ivok+iT6jfmN+XH4cfh8 - 93z3Pvc+9833zfcJ+Qn57/rv+if9J/31/vX+3//f//3//f8eAB4AzQDNAJUBlQEiAiICeQJ5AmECYQIH - AgcCAwIDApECkQJiA2ID+QP5Ax0EHQQLBAsEMgQyBFoEWgT4A/gDVgNWA8ICwgJBAkECYgJiAh8DHwPJ - A8kDHwQfBN8D3wMbAxsDXwJfAuAB4AHAAcABAgICAl8CXwKZApkClgKWAoMCgwIdAh0C8wDzAHr/ev8N - /g3+9Pz0/Jr8mvx3/Hf8Lvwu/Nv72/tM+0z76frp+sH6wfpL+kv6s/mz+Q75DvkC+QL5r/qv+n/9f/06 - ADoADwIPAkUCRQIbARsBCf8J//z8/PyC/IL8FP0U/Vb9Vv2D/YP97v3u/Xv+e/76/vr+BP8E/5/+n/4K - /gr+c/1z/QT9BP2O/I78cftx+xj5GPnf9d/15/Ln8vHw8fCB8IHw5vHm8Uv0S/Q09jT20fbR9gH3Afe/ - +L/4Ovw6/Pz+/P6s/6z/yf/J/9z/3P8t/y3/oP6g/kD+QP6b/Jv8d/p3+gT6BPoS/RL9PQM9A9MI0wgK - DAoMdA10DeAL4AsgCCAIBgUGBasCqwKnAKcAMf8x/5j+mP4aABoAWwNbA5kGmQbZCNkI1wjXCGQGZAZr - A2sDQwFDAYb/hv+m/Kb8ifeJ9zzxPPHL7Mvsvuy+7N/v3+9k8mTyB/IH8nnvee9O7U7tSuxK7Jfrl+sk - 7STtRPJE8k74Tvi4/bj9lwOXA0oKSgpLD0sP/w7/DlwLXAuzCbMJLgouCioLKgvrDesNPxI/EksVSxUd - FR0VxRLFEhwRHBHFEMUQlw+XD18MXwwvCC8IUwRTBFcBVwHB/8H/0P/Q/zYBNgGNA40DoQWhBZQGlAbj - B+MHBgoGCrwKvAq7CbsJ3AjcCIwIjAioCKgICQkJCSEJIQldCV0JUglSCXEHcQeUBJQEYwJjAq4ArgAf - /x//L/0v/Zr6mvo5+Dn44vXi9SnzKfMJ8Qnxze/N78Xuxe4o7SjtkOqQ6tPn0+dP5U/lVuJW4sPfw98x - 3zHfEOEQ4T/lP+U/6z/r3/Hf8bf3t/f3+/f7xf7F/q8ArwB8AnwC5gTmBNwH3AfECsQKWA1YDQEQARDm - EuYSBxUHFfUV9RWhFqEWSxdLF7gXuBcmGCYYHBgcGOEW4RZ3FHcUyRDJEO8L7wu4BrgG4QHhAeX95f0L - +wv7fvl++YH5gfmt+q36QfxB/LL+sv6rAqsCBgcGBzIKMgrnC+cL2QvZC54JngmZBpkGtgS2BEcERwQy - BTIFigeKB7wKvAoRDhEO8RDxENMS0xJ1E3UThRKFEggQCBCPDI8MXgheCA4EDgS0ALQAif6J/j/9P/3P - /M/8Cv0K/W/9b/1V/VX9pvym/PX79ftR+1H7xfrF+gb7Bvtj/GP8Z/5n/igAKADaANoAggCCAFf/V/97 - /Xv9hvuG+/75/vk2+Tb5Ofk5+W75bvmP+Y/5ufm5+XH5cfl++H74iveK9wr3CvfS9tL2ufa59qT2pPZ0 - 9nT2b/Zv9tv22/ac95z3BvkG+Xn7efto/mj+PwE/AdgD2AP2BfYFlAeUB8gIyAiFCYUJ4gniCSMKIwpz - CnMKugq6CgsLCwuHC4cL3wvfCwoMCgxODE4MpQylDEQNRA3+Df4N+g36DRENEQ2MC4wLogmiCdgH2AdB - BkEGqwSrBBADEAMsASwBFv8W/wT9BP3R+tH6ufi5+Or26vZn9Wf1jfSN9Ev0S/Q49Dj0NfQ19Obz5vP5 - 8vnyovGi8VLwUvB573nvUu9S7/7v/u948Xjxn/Of82f2Z/Zj+WP5DvwO/ID+gP7KAMoArwKvAvsD+wN+ - BH4EWwRbBMEDwQOmAqYCSgFKAfr/+v/H/sf+xf3F/en86fxF/EX87/vv++T75Psw/DD8nfyd/O787vw1 - /TX9QP1A/dP80/z2+/b7xfrF+sH5wfmH+Yf5UPpQ+vP78/sa/hr+yQDJAL8DvwMLBgsGjgeOB64IrghQ - CVAJcglyCS0JLQmTCJMI2gfaBw0HDQdmBmYGEwYTBv8F/wVjBmMGGQcZB3cHdwdOB04HnQadBpEFkQW/ - BL8EJwQnBFgDWAOkAqQCrgKuAukC6QIyAjICqQCpAOz+7P4p/Sn9vvu++3z6fPrp+On4bPds9wv2C/bU - 89TzjPCM8MTtxO1P7U/tU+5T7vbt9u1Y61jrDOgM6OTk5OTo4Ojg+Nv429jW2Nb+0P7QLswuzKfNp83X - 1tfWMeMx49/s3+xO8U7xBfMF84j0iPT29fb1P/k/+QX/Bf+bBJsE7QjtCEkLSQvqC+oLVA5UDjYSNhLF - E8UT0RTRFOsY6xjzHvMeuyS7JLQotCjWKNYoqySrJAEdAR1VE1UTDQwNDCUKJQr/Cf8JcghyCPYG9gYH - BgcGlgWWBREHEQfyCfIJrAysDLQOtA4lDyUPyA3IDaQLpAtJCUkJNQY1BmMCYwL9//3/fQB9AHICcgJ+ - BH4E8AXwBfcF9wXYBNgE9gL2AosAiwAE/gT+3vre+kf3R/cA9AD0wPDA8Nju2O588HzwQ/RD9Kv1q/Xf - 8d/x7+vv62joaOh55nnm1eTV5FvkW+Sw4rDiet563s3azdrz2PPYfdl92dfe196s56znRO9E7wT0BPQ5 - 9zn3K/kr+QT5BPkD9wP3xPXE9Tz5PPnRAdEB4AngCaQMpAw+DD4MEQ0RDUQPRA9/EH8QkRGREZ4UnhQR - GBEYQxpDGkccRxzUHdQdZh1mHUIZQhm3ELcQVAlUCdUI1Qg2CzYLRAtEC6IKogpiCmIKXAlcCZgJmAlJ - DUkNiRKJEg4XDhf/Gf8ZUBpQGgsZCxlkGGQYMhcyF5AUkBQaExoT9BP0E40VjRV2FnYW2RXZFVgTWBOa - DpoO+wf7B3IBcgF//H/8T/lP+fH28fZt823zvO687hrrGuuB6YHpiumK6WbqZup+6n7qquiq6JLlkuV8 - 43zjaeRp5DjoOOhH7UftyvHK8RL1EvW197X3hfmF+Q/6D/om+ib68vny+TP5M/lu+W75r/uv+/L+8v41 - AjUCiwSLBHcEdwQ2AjYCEQARAOv+6/6s/az9MPww/AL7Avvd+d35Pfk9+SL6IvoY/Bj8hf6F/o4BjgGe - BJ4EDwcPBwcJBwlDCkMKlQqVCsEKwQolCyULiQuJC+gL6AsMDAwM+gv6C3EMcQzpDekNNxA3EJ4SnhL3 - E/cT3BPcE+oS6hIhEiESrRKtEpQUlBQxFjEWXBZcFjIVMhXLEssSeg96D0gMSAzMCcwJuAe4B7cFtwXP - A88DBgIGAlUAVQCm/qb+ufy5/Ov66/pE+kT6Y/pj+oH5gfkn9yf3XPRc9MzxzPFm72bvCu0K7YzrjOvw - 6/DrmO2Y7TjvOO+48LjwgfKB8ir0KvTL9Mv0jvSO9JT0lPTk9OT0sPSw9BL0EvSm86bzVfNV86jyqPKc - 8ZzxvvC+8M7wzvAJ8gny0/PT85/1n/VC90L3ofih+NH50fm++r76o/uj+3X9df0XABcAkgKSAnQEdAQy - BTIF+QT5BAUFBQXfBd8FyQfJB6gKqAoxDTEN7A7sDq4QrhCLEosSzBPMEwoUChRCE0IT3xHfEZQQlBBB - D0EPdQ11DccLxwu+Cr4KdQp1CjgLOAs1DDUM2QvZC04JTgnWBNYESgBKAC39Lf1R+1H75vrm+q/7r/vT - +9P7+Pn4+Uv2S/al8aXxtuy27DTpNOnT6dPp6e3p7fLw8vAH8AfwgeyB7MToxOhc5Fzkl96X3rTZtNmk - 1qTW1dPV0xHSEdK11bXVWuFa4eLu4u4a9Rr1pvSm9N7z3vNY9Fj0VvVW9Q34Dfjy/fL9FwUXBaIIogg/ - Bz8HTwVPBWEHYQeeDJ4M+g/6D80QzRBeE14TUBdQF5MYkxgWFxYXzxTPFOoR6hGsDawNeQd5B4kBiQHJ - AMkAnQSdBP0G/QbaB9oHkgqSCmINYg3TDtMOGhAaEGYRZhFdE10TmxWbFUcWRxbhFeEVGBUYFS0TLRNd - EF0QBQ4FDpENkQ2XDpcOCg8KD3gNeA1wCXAJEgQSBMH+wf60+bT5dfV19brxuvFp7WntV+hX6FDiUOKy - 3LLc09rT2p/dn90p4SnhYd9h3yTYJNiX0JfQg8qDylbHVsfyyfLJONI40o7ejt5h6WHpzO3M7c7xzvHb - +dv53gDeAEUERQTSBtIGWQtZC4gPiA+HDocOMQsxCwUKBQqHCocKbAxsDEANQA1oDWgNBRMFExIbEhtm - HmYeOh46HtEa0RpgEmASjQeNB1L+Uv7O+s762P3Y/dIB0gEQAxAD7wPvA1IGUgZfCV8JZQ1lDT4TPhPi - GOIYBBwEHKMcoxxGG0YbtBi0GHkVeRUvEi8S3hDeEFcSVxIHFQcV6hbqFtwW3BbzFfMVsBSwFJ8RnxGr - DasNWApYCjQHNAd0BHQEUwFTAZv8m/wB+AH4nvSe9JDxkPGU7pTuruuu62TpZOme557nUOVQ5XTjdON6 - 43rj1uXW5c3pzem26rbqh+WH5fve+9543Hjcwd3B3Q3gDeDE48Tjr+uv63j1ePVz/HP8uQC5AJgCmAJI - AUgBfP58/k/7T/u0+LT4QPlA+Yz8jPzh/uH+xP/E/zoDOgPaCdoJxA7EDgAQABCuDq4OMQsxCzAHMAcP - Aw8D6f3p/S36LfpL+Uv5S/pL+vr9+v3WA9YDYwljCfwN/A16EXoR7xLvEsgSyBIrEysTEBUQFXAXcBf+ - Gf4ZmxybHEseSx5WH1YfbiBuIGMhYyGzIbMhVSBVIP0c/Rw5GDkY9hL2Eg0PDQ9dDF0MFQkVCaQFpAWs - AqwCQv9C//j6+Ppi9mL2GPMY8zHyMfJA80DzZvVm9R73Hvfg9+D3kviS+Kb4pvij96P3nfad9uf15/Up - 9Sn1gfSB9K30rfQn9if2TPhM+Oj66PqW/Zb9D/8P/13/Xf92/nb+DfwN/JP5k/lI90j3MfQx9PLw8vBU - 7lTuCO0I7YTthO3X7tfuePB48EzyTPJ583nzwvPC82H0YfQs9yz3z/vP+zj/OP8VABUAuf+5//v++/5m - /mb+wf7B/igAKAAOAg4C8wPzA+wF7AXiB+IHXwlfCVcKVwrOCs4KOws7C8cMxwx2D3YP+RH5EVQTVBMu - Ey4T1hHWERgQGBCEDoQOcg1yDeAM4AxRDFEMrQutC2ULZQteC14L/Ar8Ci4KLgpuCW4JEwkTCXIIcgjq - BeoFZgFmARH9Ef0x+jH62vfa9yb1JvVU8lTyne+d73zsfOz46PjoGeYZ5nvke+Tn4+fj+eP54zPkM+QY - 5BjkhuKG4mzebN5p2mnandud28HiweIh6yHrnvCe8GLzYvNL9kv2uPq4+nH/cf9ZA1kDRgVGBSMDIwO5 - /bn9Yvli+RD5EPnw+/D7IP8g/4cAhwBZAVkBawRrBAEKAQolDyUP1xDXEPgO+A5ZC1kLMAcwB5cDlwMX - AhcCewJ7Aj8DPwMwBDAENgY2BtgJ2AnaDtoOXBRcFO8Y7xgRGxEbehp6GlUYVRh+FX4VVRJVEswPzA93 - DncOsQ2xDdEM0Qx9DH0MlQ2VDeYO5g5pDmkOKQwpDFAJUAl+Bn4GOAQ4BLwCvALMAcwBqwCrADv+O/7s - +uz6dfh1+Hf2d/aU8pTyaOto6/fh9+EK2QrZztPO073TvdP21PbU79Dv0JDIkMi2wrbCSsJKwtzI3MiK - 14rXpeal5lztXO3c7tzuUvJS8rL4svi6ALoATQlNCVAOUA5dDF0MTgdOB38FfwUrBysHnAmcCVsMWwzK - DsoOZhFmEewW7BY1HjUeiiKKIiMiIyJ3HXcdoBSgFE0JTQm1/7X/Xftd+1X7Vfs9/D38av1q/Y7/jv/v - Ae8BHQUdBb0KvQr6EfoRkRiRGNkc2RzeHd4dxxzHHMkbyRvmGuYaeBl4GVoYWhgTGBMYQBhAGIMYgxg9 - GD0Y2RbZFuMT4xMgDyAP5QnlCXMFcwVcAVwBjv2O/eL54vlP9U/1DfEN8Wnvae+D74Pvqu6q7rHrseu7 - 57vnUeRR5Ofg5+Ae3h7eGuAa4DzmPOZN6E3osOKw4lXbVdti12LXBNcE1yHbIdto5Gjkt+637uf15/X3 - +vf6+f/5//YE9gSCCYIJtQu1C3gIeAjPAM8A5frl+sn6yfoC/gL+2QDZAGMDYwNpBmkGNwk3CfkL+QtZ - D1kPUBJQEuoS6hLAD8APPwk/CXoCegJ6/nr+Hf0d/YH8gfwG/Ab8y/zL/EkASQCuBq4GWA5YDjkVORXH - GccZExsTGwcaBxofGR8ZZBlkGfYZ9hkRGhEa1xnXGXEacRrUHNQc7h/uH6shqyE0IDQgghqCGlYSVhKd - Cp0KTwRPBHH/cf99+337xffF93X1dfW/9L/0avNq84bxhvHp8Onwp/Gn8WnzafOH9Yf1lPaU9tv12/UG - 8wbzhe6F7m7qburw6fDpCfAJ8Iz5jPnm/eb9BfwF/JD5kPkb9xv3OvQ69NPz0/P99P30zfTN9PDz8PO9 - 873zrfSt9Cb3Jvfr+ev5//n/+f71/vWJ8YnxL/Ev8VLzUvMP9A/0IvQi9MX1xfW8+Lz40vvS+33+ff72 - APYAagNqAwgFCAWaBJoEwQLBAoYChgKrBKsEagZqBkIHQgdxCHEIawlrCUUKRQodCx0LRAtEC5gMmAzJ - D8kP+RH5ET0TPRPjFeMVHRkdGd4a3hq0GrQaCxoLGgIaAhr4GPgYqBWoFf4Q/hCpC6kLwwbDBqgDqAOS - AZIBjv+O/zb+Nv62/bb9efx5/DT5NPk69Tr1kPGQ8Wntae0m6ibq7+jv6LznvOdw53DnmOqY6uvt6+0e - 7R7tQOlA6aDkoOTM38zfytzK3JHekd5n42fjOug66DDvMO8V+BX4Ef4R/lICUgJxBnEGHQUdBTr/Ov+p - /Kn80v3S/Xf9d/3w+fD52PXY9Vb0VvSz9bP1ifmJ+e3/7f/vBe8FsQmxCWoNag2UEJQQGxAbENcL1wu0 - BbQFxwDHAHb/dv95AHkAHQIdAjEEMQSWBZYFfQZ9BuEJ4QndD90PnBScFAoXChcDGQMZGBoYGiIZIhn/ - Fv8WsBSwFDATMBOWEpYS8RDxEBAOEA6cC5wLpwmnCegH6AcrBisGWwRbBF0DXQM+Aj4C9P/0/zX+Nf69 - /L38l/qX+nP5c/lp+Gn4W/Vb9cDwwPDg6eDpheCF4PjX+Nfq1OrUHdod2kTgROBK3Erc4NLg0rLPss9a - 01rTjNuM23rmeuZX7VftGe4Z7sfux+6y87LzwfzB/NoG2gYRDhEOMhAyEIEMgQxzBnMGEwQTBBgFGAW0 - BLQEagJqAlUCVQIeCB4I2RHZETUZNRkpHCkcNB00HZAbkBu4FLgU+wr7Cu8C7wKM/Yz9FvoW+iX5Jfld - +l36Mv0y/YYChgJFCUUJdQ91D44VjhWSGpIapRulGyMZIxnJFckVmROZEy8TLxOKE4oTjxOPExsTGxPZ - EtkSmhOaE2wUbBSjE6MTXxFfEUsOSw4OCw4LWghaCJwFnAXcAtwCuQC5AEv+S/7Z+9n7sfqx+oX5hfkS - 9xL3gPSA9Ojy6PJ88Xzxee557urq6ur/6P/oXude51znXOeQ7JDsG/Ab8KDpoOkr3yvf1NjU2FnWWdY0 - 2DTYK98r3+7m7uZx7HHs8/Hz8eb55vkNAw0DYApgCugN6A03DDcMowWjBZL+kv6S+pL6fvh++P/2//bo - 9uj2Pvk++Xb+dv5xBXEFpAukC5QPlA+iEaIR+hH6ETsPOw8rCSsJngKeAlD9UP0A+QD5h/eH9z76Pvpg - /2D/AgYCBjANMA12EnYSgBaAFvEa8RrnHecdsx6zHkkfSR+wH7AfWR9ZHycfJx8BHwEfCB4IHmUcZRzf - Gt8aYhliGSkWKRYMEAwQ7gjuCLoCugIj/SP9//j/+OD34PdZ91n3//P/8wTwBPC177Xvn/Kf8vL18vXk - +OT4Jfsl+6X7pftu+m76yvjK+Ez3TPe/9b/1VvVW9fr3+vcT/BP8k/2T/er76vtm+Wb5l/aX9ov0i/Qi - 9iL2GfoZ+oT7hPvd+d35QvhC+GL3Yve39rf2Q/ZD9iv1K/WC84Lzj/KP8lzyXPKo8qjyhPOE82v0a/SP - 9Y/1Zvdm94P5g/n1+/X7dP50/vL/8v+/AL8AZQFlAVoBWgGoAKgAGwAbAPQA9ACrA6sDJwYnBjIHMgdw - CHAIYQphCkUMRQz8DfwNBQ8FD7UPtQ81ETURwhLCEk8TTxM+Ez4TARMBE0kTSRMCFAIUYhNiE2MRYxHR - D9EP1A3UDcIJwgmaBZoFvAO8A0cCRwIe/x7/GfwZ/A76Dvqe9Z71DO4M7gfoB+hA5kDmM+cz5xDqEOo4 - 7TjtM+wz7DTmNOYy3zLfX9lf2dTV1NXv1e/V6tjq2O3e7d6Q6JDoBPIE8qX4pfjP/c/9CwELAc8CzwLr - BesFvAi8CPUH9QepBKkE2gHaAaABoAEqAyoD7QPtA8wDzAPhAuECkAGQAZcDlwPFCMUInwufC4wLjAuL - CosKnQedBzoEOgSMA4wDzQTNBMEFwQV3BXcFUQRRBC0ELQTkBeQFQwhDCI4KjgoXDRcNzQ/ND/AR8BE+ - Ez4TRBREFEoVShUeFh4WSBZIFl4VXhXrE+sTORI5Em8Pbw/+C/4LYwljCe8H7weKB4oHoQehB/UG9QaG - BYYFBgQGBEACQAIcABwArf2t/bj6uPpn92f3RvRG9BDxEPG067Tr0OLQ4tvY29iN0Y3RE88Tz6jRqNG6 - 1LrUatJq0lbMVswIyQjJ5MzkzDTYNNgL5Qvl5Ozk7HrxevHp9un2W/5b/uUJ5Qm0F7QXlB+UH2gdaB3m - E+YTSwhLCNMA0wAZ/xn/Ov86/9n/2f/ZAtkCfQl9CQcTBxNzG3MbuB+4H8UgxSCWHZYd3RTdFKwKrAoq - AioCz/rP+h72HvYr9Sv1OPY49vz5/PlUAlQCCw0LDZQWlBaBHYEdDCEMIcAgwCDzHfMdwBrAGiAYIBhA - FkAW8hTyFNsT2xOhE6ETFBUUFTsXOxdnGGcYXhdeF4MTgxNIDkgO8QnxCa0GrQa8A7wDxADEABH9Ef2l - +KX4zvTO9FbyVvLB8MHwJO8k737tfu087DzsJ+on6ojmiOYu5C7kJOUk5S/oL+hs7Gzste+1783tze2u - 567nEOIQ4rjduN0E3ATc4ODg4FLqUuoc8xzzM/sz+/UD9QOpC6kLOBA4EOcQ5xC3DbcN0QbRBtv92/3K - 9sr2hfOF8+jy6PIc9Rz1uPm4+WX+Zf4fAx8DbAhsCIkMiQyzDrMOtQ61DmwLbAuTBZMFev96/8/6z/qW - +Jb4+fj5+PH78fukAaQBFwkXCWsQaxAeFh4WiBmIGUMbQxtJHEkcMx0zHVMeUx5CH0If2x/bH5QglCDN - IM0gEiASIE8fTx9VHlUeuRu5GysXKxcZERkR0wnTCSACIAJy+3L7CvcK90T1RPVQ9VD1G/Ub9UrzSvNh - 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 - /j/+Tv5O/qf8p/xD+EP4Q/ND8wXvBe/P6c/p1+TX5KbhpuFT3VPd3Nbc1unQ6dA1zDXMz8fPx17EXsSM - w4zDg8WDxZHKkcqT1ZPV6OTo5LPws/Be9173g/2D/bsDuwMkCyQLhRaFFuAf4B8XHhceZBNkE5wInAjz - APMAAPwA/LP7s/v9//3/WAVYBcsLywveFN4Uux27HawjrCO/Jb8lzCHMIYYYhhhNDk0O1ATUBDf7N/sI - 8wjzHvAe8L3zvfPW+9b7UQdRB/0U/RQrICsgICYgJgkpCSm2KbYpCCcIJ2UiZSLtHe0drBmsGasVqxVy - E3ITGRQZFDsWOxb9F/0Xexl7GbQZtBk6FToVRwxHDEkDSQM+/D78Lvcu98/0z/Qr8yvz4+/j79Ps0+xa - 7Frs1+3X7Zrumu5R7FHsPOg86E7kTuRj4WPhKeMp4wfpB+ld6l3qV+VX5bjfuN++277b+9v72xfiF+KS - 6ZLp8/Dz8DL5Mvll/2X/sgSyBLILsgtyD3IPWQxZDIwFjAUq/yr/V/tX+zT4NPgC9AL0EfIR8qfzp/MY - 9xj3of2h/egF6AVbC1sLig2KDdUM1QylCKUIzQPNAw0ADQDd+9371vjW+C/6L/oc/xz/PwU/BR0MHQyl - E6UTXBpcGh0eHR4WHhYerxuvG18ZXxmMGIwYORk5GW4bbht0HnQelSCVIHEicSLAJcAlkiiSKOUn5ScX - IxcjphqmGg0RDRHeCN4IKwErASn6Kfoj9iP2KPQo9HnzefNW9Vb1TvdO99T21Pa69br1Y/Vj9f71/vU/ - +D/4G/sb+w79Dv0g/iD+/v3+/fX79fvU+NT4kvaS9vn1+fXH9sf2rfmt+Sf9J/3d/N38FvkW+QP2A/am - 9Kb07fTt9Hf3d/cK+gr6z/nP+YD3gPfb9dv1YfVh9ebz5vMK8Qrxce5x7prsmuxG7EbsYu1i7YPtg+0n - 7Sft9u727k7yTvIP9g/2rPqs+vD/8P/gBOAE8gfyB9MI0wg/CT8JNgk2CQwIDAgmByYHAwcDB1YHVgff - CN8IzQvNC7kPuQ9WE1YTuxS7FOcU5xTVFdUVsBawFrAWsBaUFpQW3xXfFXQTdBMnECcQyQ3JDRwMHAyl - CaUJjwaPBroDugNwAXABxv/G/1X+Vf4V/RX9kvuS+x34Hfic85zzsfCx8DHvMe9p7mnuf+5/7rXute5i - 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 - E2ATGxQbFBMUExReFF4UihOKE3oSehIkEiQSuRC5EIgOiA5wDHAMlQmVCf0F/QUZAxkD9QH1AbQAtADV - /dX9BPsE+333fffk8uTyNvE28WDxYPFf7l/uqOio6IHigeJB20Hb/ND80AXFBcXou+i7xLbEtuC44Ljq - x+rHydnJ2dbh1uGc55znhPGE8ez57PmlAKUAzQfNB34Ofg4AFQAVWhlaGX4afhoQGRAZQhRCFDERMRHN - E80T/xX/FaMVoxU2FDYUbg5uDlcFVwVk/GT8CvQK9EnvSe/O7c7tFuwW7BrtGu1Y8ljyf/h/+Nf/1/8t - CC0Ifw9/D6wWrBa+HL4cfR99H3QgdCAaIRohASEBIS8gLyAwHzAfCR8JH54fnh/iH+IfXiBeIJ0gnSDW - HtYedxx3HN8a3xrvF+8XcBNwE6APoA+MDIwMVwlXCS0GLQZSA1ID2gDaAHr+ev6o/Kj8Jvwm/Gj6aPpg - 9WD1XfBd8DjtOO0T6RPpmOOY43ffd99z3HPcuNe4133RfdH/zf/N/s7+zqnSqdKc2JzYVN9U3z7kPuSc - 6ZzptvC28LX1tfXe9973wfnB+Qf8B/xx/nH+bgBuABQCFAK4A7gDNwQ3BO4E7gTcB9wH1wnXCTIJMgkU - CBQI7wXvBd4C3gI5ATkB5QDlALQBtAGPA48D0ATQBHgGeAbBCcEJfAx8DKcOpw6WEpYS1RfVF8EcwRyq - IKog8CLwIpcjlyOYI5gjsiOyI40jjSN7InsisCCwIPce9x4WHhYeHR4dHqMdox2iG6IbJRklGfMW8xa0 - E7QTSw5LDuoH6gdLAksC3f3d/dj62Ppg+mD6SP1I/dIB0gHMBMwE5QXlBfQG9AabB5sHygbKBu8E7wSM - AowC2QDZALoAugBEAEQAff19/a74rvi587nzcPBw8JDtkO116XXp7eXt5bzjvOPW4dbh9OD04G7hbuFc - 41zjFecV5w7qDurn6ufq1+vX6xTtFO2T7ZPt4O3g7Zrumu7z8PPwu/S79Eb3Rvdi+GL45vnm+eL74vvc - /dz9tv+2/6kBqQHKA8oDMQUxBTkGOQYaCBoIeAp4CkMNQw2nEKcQxxPHE3sWexaJGIkY8RnxGaIbohup - HKkccBxwHHMccxwfHB8c+hr6GrYZthnjFuMW7hLuEsoPyg+mDKYMNQo1CrcItwgKBQoFigCKALH9sf3c - +dz5lPWU9YHzgfMZ8hny6PDo8Hfwd/CT75PvJO8k78DvwO/v7+/vs++z71/uX+4C6wLrK+cr52TjZOO/ - 37/fv92/3R/dH90P3g/eC+IL4r7mvubG6cbpS+1L7T7yPvKN9o32c/lz+Zf7l/tM/Uz9Xf5d/sX+xf4f - /x//mf+Z/+X/5f8xADEAsACwAJwBnAEnAycDgASABL4EvgT9A/0D+gL6ApQClAJAAkAC4QDhABEAEQDe - Ad4BfAV8BcQJxAnhDeEN9hD2EDMUMxQQGBAYoRqhGjAcMBwKHgoePx8/H3cfdx/HHsce6BzoHHAbcBv5 - GvkaOho6GgQaBBrFGsUashqyGloZWhn7FvsWhhOGE7gPuA/aC9oLMAgwCOIE4gS7ALsA2PvY+3r3evei - 86Lz5vDm8Ofu5+6j6qPqguOC47bbttvS09LTLMssy1TCVMI5uzm7ZLZktnm0ebR/uX+5EMQQxLXLtctw - 0HDQp9en10PfQ9/45fjls+2z7fzz/PN++H74p/6n/skFyQXkCuQKWQxZDMILwgskDCQMlwuXC+EI4Qjw - B/AHhgeGBwkECQRkAGQAs/6z/lP+U/4IAAgArAKsAkcFRwU1CTUJwQ3BDT8SPxJaF1oXnRudG8wdzB2q - Hqoe6R7pHgkfCR8CHwIfYB5gHq0drR3jHeMdHh8eH/cf9x9wH3Af4R7hHpEekR6+HL4cdRl1Gf8V/xWy - ErISsg+yD/sM+wyaCpoKrwivCBQHFAfrBesFAgUCBQYEBgRIA0gDVwJXAu0A7QAP/w//AvsC+431jfUw - 8jDyBfAF8H7sfuwi6CLoEuMS43Hdcd3u2O7YkdaR1iHXIdee2p7ar9+v303lTeWo6ajp2uva60PuQ+6C - 8YLxN/Q39B33Hffp+en5yPrI+hv6G/oD+QP55ffl9yj3KPfB9sH2l/aX9n/2f/ZL9kv2VfZV9kf2R/a9 - 9b31WvVa9R31HfXZ9Nn0WfRZ9E7yTvK+777vZ+9n73vwe/CQ8ZDx/vP+80P4Q/if/Z/9DAMMA4sGiwal - CKUISAxIDOwQ7BByFHIU0BfQF7EbsRu6HroePCE8IbYktiSwKLAoZStlK7kruSvrKespYiZiJnAgcCDb - GNsYfxJ/Eh4OHg5YC1gLGgwaDE0QTRD8E/wTBxUHFesT6xP4EPgQ2wzbDCkIKQhNA00Dpf+l//n8+fxw - +XD5nvWe9cvyy/Lc79zvGewZ7Ifoh+h75nvm7ubu5pXolegI6QjprOis6B7pHukz6jPqZOtk69Ds0OzP - 7s/uYvFi8ZPzk/NC9UL1mPeY90f6R/pS/FL8UP5Q/toA2gBeA14DqQWpBVMIUwj5CvkKoAygDAkOCQ6f - D58P1w/XD/IO8g4zDjMOPQ09DRQNFA2YDpgO4A/gD18QXxCHEIcQOhA6EGkRaRFTFFMUAhYCFv8V/xVL - FUsVQRRBFK8TrxOBEoES6A/oD6oNqg17C3sLSwhLCJQFlAWgA6ADlAGUAcP/w/8d/h3+XPxc/L36vfrt - +O34XfZd9sbzxvMg8iDydO907+Xp5elL5EvkTeBN4Pzb/NvP18/XWtRa1DLRMtE30DfQtdC10CPRI9Hc - 1NzUR9xH3GTjZONv6W/pH+8f76D0oPRY+Vj5dft1+7j8uPwe/x7/1f/V/2P+Y/6t/K38kvqS+uD54Pmh - +6H7Gv4a/ikCKQKeB54HiguKC5kNmQ2wDbANPAs8C3wHfAfYAtgCwf7B/tr92v0g/yD/eAF4AY8FjwUM - CgwKtA60DmEUYRTLGMsY2xrbGogciBwfHh8etB60HiUeJR7RHNEcPhw+HGYdZh0JHwkfOSA5INUg1SD9 - H/0foR2hHY8ajxq2FrYWjRKNEhMPEw/yC/IL9gj2CDkGOQYnAycD+//7/+D84PzM+cz5CvgK+BT3FPdB - 9UH1kPOQ89/x3/Ek7yTvyezJ7FvqW+oe5x7n+OT45EXjReOP4o/iBOYE5kzqTOp363frsuyy7J7vnu8Y - 8xjzSfdJ9xD7EPtw/nD+nwKfAqcFpwVEBkQGTQVNBZUClQL9/v3+9fv1+4z5jPlg+GD4Mfgx+Ej3SPfR - 9dH15fTl9D/0P/Qs8yzzNfE18XPuc+6a65rrrOis6Pzk/OTh4OHgbN1s3QvbC9uf2p/am92b3bDjsOO/ - 67/ra/Vr9RgAGABRC1ELAhYCFgMeAx5FI0UjciZyJrAmsCYGJQYl1CLUIr0fvR9HHUcddBx0HNQb1Bve - G94buBy4HHIcchz/Gv8akxiTGG4UbhQjDyMPDgkOCdEC0QL//f/9yPnI+WL1YvUQ8xDzE/MT80vyS/K/ - 77/vhO2E7YDsgOy467jrhuuG60ztTO308PTwuvW69eb65vpH/0f/kwKTApQFlAU+CD4I4QnhCboKugon - CycL/wn/CcwGzAayA7ID6AHoAa0ArQAeAB4AyADIAMQCxAKJBYkFigeKB7UItQgCCgIK6QrpCsILwgsu - DS4NqQ2pDf0M/QxIDEgMYQthC5kKmQpOCk4KKQopCnQKdAq8CrwKhgqGCmoKagojCiMK0wnTCdkJ2QnN - CM0I6QbpBrMFswWsBKwE+QP5A0gESATmBOYEjAWMBa0FrQXmBOYEPAQ8BAQDBAOuAK4AM/8z/2z+bP4C - /QL96/vr+/b69vrv+O/4pfal9oD0gPRp8Wnxh+2H7W/qb+ra6Nrop+in6BjqGOom7CbsAe0B7WXtZe0j - 7iPuF+4X7r/tv+0K7gruNO407nHuce4e7x7v6e/p75nxmfHN883zbfVt9bn3uffW+tb6z/zP/Mv9y/2j - /qP+Wf5Z/oz8jPyC+oL6SPlI+Zz4nPiC94L3KfYp9m72bvYn+Sf52vza/HgAeAA4BDgEOQc5B6YIpghV - CVUJnAmcCUMJQwlTCVMJSApICi8LLwv6C/oLhQ2FDcoPyg80EjQSRRRFFBgVGBVXFFcUGhMaE84RzhGx - D7EPAQ0BDSsKKwpMB0wHowWjBXYFdgUrBSsFdAR0BOUD5QNNA00DxQLFAlQCVAKwAbABUQFRAasBqwFd - Al0C3ALcAvwC/ALuAu4CtwK3AngCeAK7ArsCKwMrAxkDGQPhAuECqAKoAt8B3wHHAMcAFwAXAHT/dP/3 - /ff9CfwJ/Hv6e/rQ+ND4Ofc59/T29Pad9533WfhZ+F/5X/lu+m76T/tP+0v8S/xT/VP9nv6e/gAAAADJ - AMkANwE3ATYBNgFeAF4AEf8R//P88/z0+fT5mvea9w/2D/Zg9GD0nPKc8n/wf/Cg7aDtquqq6gHoAeg6 - 5TrlXOJc4l7gXuCi36LfS99L3z7fPt8B4AHgeOF44TXkNeR16HXo/uz+7J/xn/FW9lb2ovqi+tH/0f/c - BdwFcApwCiAOIA5TElMSNBU0FX8VfxU/FD8UpxKnEm0RbRFQEFAQ8Q7xDuMN4w0JDQkNvAu8C1gKWApc - CVwJpQilCN8H3wfaBtoGvAW8BeYE5gSGBIYEdgR2BLgEuARxBXEF4wXjBUYFRgVQBFAEmgOaA6oCqgKl - AaUB6QDpAKMAowB8AXwB7ALsAqUDpQNkBGQE5QXlBfQG9AaZB5kH2AjYCOQJ5AkxCjEKmQqZCvQK9ArL - CssK1ArUCmMLYwvbC9sLzwvPC2wLbAscCxwLzQrNCmgKaApmCmYKiQqJCuQJ5AmqCKoIgAeAB1sGWwb6 - BPoEOQM5A1MBUwHH/8f/wP7A/kD+QP76/fr9gv2C/T39Pf02/Tb9dvx2/Of65/o3+Tf5dfd19+X15fUK - 9Qr1k/ST9Av0C/Sw87DzsvOy85TzlPO88rzy7fDt8BruGu5L6kvqwOXA5ajhqOGK34rfGd8Z36ffp9/R - 4dHhVORU5F/lX+WQ5pDmtui26ArqCurt6u3qtuy27LzvvO/b9Nv06/vr+/4D/gOuDK4MYRRhFDYaNhrq - HuoeaSFpIaEgoSDAHcAdGhoaGvQW9BZuFG4UfhF+ESsPKw+BDoEORQ5FDsoNyg2fDJ8M3wnfCaoFqgUE - AAQAbvlu+b7zvvO/77/vqO2o7bvtu+0U7xTvffF98VH1UfWa+Zr5u/27/ZYBlgG/BL8ElweXB0YKRgpr - DGsMXg5eDuQP5A+dEJ0QJBEkEToROhFdEF0QHA8cD6YNpg0GDAYMrwqvCooJigllCGUIXgdeB20GbQaM - BYwFnwSfBKADoAPOAs4CAAIAAiYBJgGdAJ0AcwBzAI8AjwDIAMgAywDLAKYApgCDAIMAfQB9AJMAkwBZ - AFkA5v/m/9f/1/8BAAEATgBOAAIBAgGcAZwBygHKAesB6wEjAiMChQKFAgYDBgOeA54DrwSvBAgGCAZI - B0gHpwinCOMJ4wmwCrAKNgs2Cx0LHQuKCooKFAoUCkcJRwkXCBcI3AbcBuUE5QQ8AjwCd/93/0f8R/zu - +O74ovWi9cLxwvGz7bPtuOm46X/lf+VU4lTis+Cz4Gvfa98Y3xjfUeBR4NTh1OGZ45njIuYi5vfo9+go - 7CjsUe9R75rxmvGs86zz8/Xz9er36vff+d/5tvu2+/P88/xk/mT+cQBxAFUCVQLCA8ID4ATgBOMF4wXm - BuYGhQeFB+YH5gefCJ8IRAlECVMJUwkiCSIJuwi7CKcHpwfdBd0F6APoA0kCSQIEAQQBMgAyADMAMwDo - AOgAAQIBAmYDZgPBBMEE7wXvBRIHEge0B7QHfwd/B/8G/wZ4BngGwQXBBf4E/gRWBFYE5wPnA/cD9wOA - BIAETQVNBVcGVwaEB4QHmQiZCJEJkQlpCmkK5ArkCuYK5grECsQKpgqmCjUKNQo2CTYJ3gfeB3YGdgY2 - BTYFMQQxBEYDRgNiAmICegF6AYoAigCn/6f/qv6q/kT9RP2k+6T7VPpU+nj5ePnf+N/4hPiE+KH4ofhb - +Vv5b/pv+oL7gvu4/Lj8Kv4q/m3/bf9IAEgABQEFAcIBwgGAAoACIAMgA1kDWQNYA1gDXwNfAxADEANs - AmwC1QHVARcBFwE9AD0Aj/+P/7T+tP6s/az9n/yf/Or66vqD+IP40/XT9XTydPKJ7onuquqq6pvmm+bB - 4sHiPuA+4DjfON+X35ffX+Ff4cfjx+MJ5gnm6ufq57rpuumB7IHsTfBN8Nrz2vMP9w/3r/qv+jX+Nf4u - AS4BVARUBHsHewdWCVYJjwmPCRAJEAm6CLoIqgiqCMYIxgi6CboJ7QvtCzwOPA7XD9cPChEKEUgRSBEJ - EAkQGQ4ZDrgLuAunCKcIsAWwBXIDcgMAAgACzQHNAfQC9ALrBOsEFAcUB7EIsQhwCXAJlgmWCSgJKAlJ - CEkIcQdxB50GnQa8BbwFWQVZBaIFogXYBdgFeAV4Bd8E3wRQBFAEmwObA+EC4QKOAo4CfwJ/AmoCagKW - ApYCQgNCAycEJwQlBSUFXQZdBqIHogeqCKoIYwljCdEJ0QksCiwKlwqXCsgKyAqgCqAKLgouCkUJRQn7 - B/sHdwZ3BpkEmQSVApUCwgDCABf/F/+z/bP9lvyW/FP7U/vw+fD5wfjB+Lr3uvfR9tH2KvYq9rv1u/WD - 9YP1nfWd9RP2E/YE9wT3d/h3+OP54/np+un67vvu+wH9Af2q/ar9Av4C/kP+Q/4s/iz+eP14/dv72/tM - +Uz5UPZQ9vHy8fLP7s/uGeoZ6pblluVB4kHiZOBk4Off59924XbhtuS25BToFOge7B7s7fHt8R/4H/hP - /U/9QAFAAdoD2gOhBaEFsQaxBsMGwwb5BvkGqwerB70HvQfuB+4Hewl7CZkLmQuGDYYNGg8aD6MPow8m - DyYPTA5MDrwMvAzwCfAJrAasBsgDyAM4ATgB/f79/mn9af1g/GD8kvuS+xz7HPtp+2n7mvya/Oz97P3T - /tP+2//b/ycBJwE8AjwCZQNlA6oEqgQgBSAFvwS/BHAEcARfBF8EIwQjBLcDtwNZA1kDEQMRA8wCzAKu - Aq4C/AL8AqoDqgNJBEkEpgSmBPQE9AQ6BToFXAVcBVwFXAUWBRYFjwSPBBgEGASVA5UDDgMOAxYDFgOx - A7EDWQRZBOwE7ARvBW8F3QXdBfgF+AV5BXkFrgSuBOED4QPiAuIC6AHoAUcBRwHaANoAmQCZAJsAmwC8 - ALwAzgDOAMIAwgCWAJYAGwAbAFD/UP+w/rD+Y/5j/kL+Qv6I/oj+Ef8R/2T/ZP+Z/5n/rf+t/2L/Yv/k - /uT+O/47/jv9O/3s++z7Lvou+ur36vde9V71pvKm8rzvvO+17LXsq+mr6cbmxuac5Jzk5OPk40PkQ+Qm - 5SblKOco5yvqK+r27Pbswu/C7xjzGPNL9kv2C/kL+TX7NfvV/NX8zv7O/soAygD5AfkBYQNhAzYFNgU+ - Bj4GxQbFBoIHggc2CDYI8gjyCKEJoQnvCe8JTQpNCtcK1wrwCvAKggqCCgAKAAp8CXwJiQiJCP8G/wZH - BUcFpgOmA1ACUAK9Ab0B6wHrAWkCaQIVAxUD/gP+AxcFFwUKBgoGcwZzBocGhwZ0BnQG4wXjBfIE8gQq - BCoEtgO2A4QDhAOFA4UD1APUA4IEggQRBREFMgUyBVAFUAWaBZoF6QXpBSMGIwYoBigGKAYoBlQGVAYv - Bi8GogWiBTIFMgXFBMUEGwQbBFADUAOEAoQC3QHdAUUBRQF+AH4A0v/S/y//L/8i/iL+Fv0W/TD8MPzg - +uD6vfm9+YD5gPmU+ZT5uvm6+Tv6O/rK+sr6N/s3+6D7oPsN/A38p/yn/Gn9af0p/in+A/8D/wwADAAs - ASwBZgJmArMDswPnBOcE2gXaBX8GfwbdBt0G4AbgBokGiQb0BfQFFwUXBdgD2AMUAhQCp/+n/678rvxK - +Ur5oPWg9SXyJfJD70PvL+0v7SfsJ+ww7DDsE+0T7Yvui+5k8GTwj/KP8pz0nPTm9eb1ufa59r/3v/f+ - +P74QvpC+pf7l/t3/Xf9EAAQAKgCqALrBOsE/Qb9BiAIIAgACAAIMAcwB68FrwXPA88DcwJzAnUBdQGo - AKgAlgCWADEBMQHxAfEBjAKMAvEC8QI9Az0DMwMzA38CfwJ9AX0BdgB2AD3/Pf8Z/hn+jf2N/XX9df1K - /Ur9HP0c/W/9b/0l/iX+2v7a/r3/vf/gAOAA2gHaAX0CfQIBAwEDhAOEA9ED0QPoA+gDRAREBPoE+gSs - BawFTAZMBgMHAwfjB+MHrgiuCP4I/ggSCRIJLQktCeII4gg3CDcIpwenB1AHUAcvBy8HAAcAB5EGkQZa - BloGPQY9BqIFogW+BL4EygPKA5sCmwI4ATgBw//D/7D+sP4u/i7+nP2c/fT89Pyv/K/8jfyN/Gr8avxn - /Gf8VfxV/EP8Q/w7/Dv8G/wb/CH8Ifxs/Gz80/zT/F39Xf3y/fL9e/57/vv++/5Y/1j/mf+Z/7v/u/+o - /6j/i/+L/zT/NP9l/mX+n/2f/Sz9LP3Z/Nn8mPyY/ET8RPzQ+9D7gvuC+y37LfuP+o/64Png+Vv5W/kr - +Sv5VPlU+ZX5lfnS+dL5C/oL+kr6Svqx+rH6CvsK+zj7OPub+5v7DvwO/Af8B/zr++v7afxp/D39Pf3N - /c39Jv4m/qb+pv5N/03/4f/h/20AbQAwATABIgIiAg8DDwMEBAQECQUJBcsFywX6BfoFigWKBZ4EngSS - A5IDiQKJAkkBSQEBAAEAIf8h/5T+lP49/j3+Lf4t/kD+QP5f/l/+hP6E/o3+jf6L/ov+e/57/hz+HP65 - /bn90v3S/ST+JP5b/lv+u/67/kn/Sf/I/8j/XwBfAAoBCgFaAVoBaAFoAY4BjgG8AbwB/QH9AY4CjgJG - A0YD6APoA2kEaQSnBKcEkwSTBEsESwTPA88DMgMyA7UCtQJ6AnoChwKHAsMCwwL2AvYCLQMtA4EDgQO2 - A7YDsAOwA30DfQPyAvICJQIlAmkBaQG5ALkAJwAnAPv/+/8OAA4AOQA5AJAAkADsAOwAOAE4AYYBhgGf - AZ8BiQGJAZYBlgG4AbgBxAHEAd0B3QEjAiMChQKFAtYC1gLwAvACzQLNAmcCZwLFAcUBEgESAWEAYQCm - /6b/1/7X/uH94f2z/LP8Yfth++357flK+Er4pfal9gb1BvU78zvzk/GT8UnwSfAL7wvvDu4O7ovti+0J - 7Qntw+zD7BDtEO0v7S/tOe057e7t7u3b7tvu5u/m75nxmfHZ89nz5Pbk9q76rvoj/iP+XgFeAdoE2gSQ - B5AHFgkWCQwKDApzCnMKVwpXCjIKMgodCh0KKAooCo8KjwpKC0oLFwwXDOYM5gytDa0Nwg3CDboMugxL - C0sL2gnaCQEIAQj0BfQFJgQmBKQCpAKJAYkB0QDRAF0AXQATABMAtv+2/0H/Qf/3/vf+0v7S/rP+s/6+ - /r7+Hv8e/6H/of/t/+3/PwA/ANQA1AAeAR4BBAEEARkBGQFTAVMBcgFyAZ0BnQHdAd0BNwI3ArICsgIb - AxsDXQNdA3kDeQNfA18DKQMpA+8C7wKpAqkCYAJgAikCKQLxAfEBrAGsAXoBegE8ATwBrgCuABgAGACe - /57/z/7P/sL9wv3G/Mb8v/u/++X65fpk+mT6FvoW+j36PfrZ+tn6c/tz+wz8DPys/Kz8Iv0i/Zb9lv0b - /hv+qf6p/kn/Sf/S/9L/QQBBAK0ArQDcANwAtgC2AEYARgCM/4z/zv7O/kv+S/7j/eP9QP1A/UP8Q/ws - +yz7I/oj+hr5Gvnk9+T3LfYt9mz0bPS087TzDPQM9Gz1bPX/9//3g/qD+jb8Nvwi/iL+agBqAEYCRgJP - A08DAwMDA8YBxgG3ALcA1P/U/w3/Df8G/wb/jf+N/xQAFADYANgACwILAiUDJQN+A34DBgMGA/8B/wHY - ANgA6f/p/4/+j/6W/Jb8VftV+zb7Nvtk+2T73vve+5n8mfwr/Sv99P30/Tj/OP+0ALQAKAIoAkkDSQNN - BE0EbwVvBSkGKQZ5BnkGvga+BpYGlgbRBdEF3QTdBD8EPwQYBBgE3APcA3MDcwOdA50DLAQsBHkEeQSm - BKYE2gTaBBIFEgVEBUQFGgUaBacEpwRbBFsEIQQhBNED0QOYA5gDjQONA5EDkQNjA2MDCAMIA9UC1QLJ - AskCggKCAuYB5gE1ATUBnQCdAPP/8/8H/wf/Af4B/if9J/2c/Jz8SPxI/Az8DPwB/AH8Hfwd/DP8M/xj - /GP8zfzN/E39Tf3O/c79Rv5G/sn+yf50/3T/JAAkAMcAxwBrAWsB/QH9AXYCdgLUAtQCEAMQA0sDSwN6 - A3oDdwN3Az8DPwOjAqMCnAGcAYIAggB8/3z/fP58/pD9kP21/LX8HPwc/On76fvU+9T7q/ur+4j7iPtp - +2n7RftF+y37Lfs6+zr7aPto+5j7mPvR+9H7O/w7/O/87/zN/c39eP54/tf+1/43/zf/of+h/+3/7f8R - ABEAFQAVACEAIQBIAEgAdAB0ALgAuAAGAQYBLgEuAVABUAFrAWsBRAFEAeMA4wBEAEQAZP9k/6X+pf5J - /kn+JP4k/gr+Cv7+/f79Dv4O/iX+Jf49/j3+cv5y/o3+jf5e/l7+H/4f/uX95f2w/bD9mv2a/Zz9nP3B - /cH9HP4c/n7+fv7n/uf+Z/9n/9L/0v8bABsATQBNAGMAYwB8AHwAmQCZALEAsQDdAN0AHwEfAXIBcgHX - AdcBRQJFAsACwAI8AzwDqgOqAxYEFgR4BHgExgTGBP0E/QQGBQYF+wT7BO8E7wSjBKMELQQtBM8DzwN9 - A30DPwM/AxYDFgPPAs8CdgJ2AicCJwLOAc4BbQFtAQoBCgGrAKsAUQBRAPb/9v/H/8f/1v/W//j/+P8q - ACoAZQBlAIQAhACbAJsAqwCrAJwAnAB/AH8AUABQABcAFwD2//b/zf/N/5D/kP9P/0//AP8A/7X+tf5z - /nP+Kv4q/u797v2x/bH9Zf1l/Sv9K/30/PT8ufy5/Ij8iPwy/DL8yPvI+4f7h/tI+0j7+/r7+tL60vrN - +s365Prk+gP7A/sL+wv7FfsV+yb7Jvs0+zT7VftV+4b7hvus+6z7y/vL++/77/su/C78q/yr/Gf9Z/1E - /kT+Iv8i/wIAAgDmAOYAqQGpAUUCRQK7ArsC6gLqAtYC1gKoAqgCYAJgAgwCDAK8AbwBcQFxATsBOwEa - ARoB+QD5AN0A3QDIAMgArgCuAIQAhABLAEsADQANAMX/xf9m/2b/AP8A/6n+qf5u/m7+R/5H/iD+IP4O - /g7+KP4o/mD+YP6s/qz+BP8E/1n/Wf+v/6//AgACAE8ATwCbAJsA1gDWAPsA+wAkASQBTwFPAXsBewGq - AaoBxQHFAdMB0wHpAekB9QH1AfsB+wEMAgwCFwIXAhUCFQILAgsC9gH2AdcB1wGrAasBcwFzAUABQAEb - ARsB+AD4AM0AzQCfAJ8AdwB3AEsASwAlACUADgAOAP7//v/9//3/HgAeAF8AXwCsAKwA4QDhAP0A/QAn - AScBRQFFAT4BPgE6AToBKwErAfwA/ADhAOEA3QDdANoA2gDtAO0AAgECAf0A/QDnAOcAvgC+AI4AjgBV - AFUA/////6r/qv90/3T/Nv82/+T+5P6k/qT+df51/j7+Pv4M/gz+8v3y/db91v2m/ab9cv1y/S39Lf3D - /MP8SPxI/NT71Ptu+277GfsZ+9f61/qz+rP6mvqa+nL6cvpo+mj6j/qP+sf6x/oc+xz7jvuO+wP8A/yR - /JH8NP00/dL90v16/nr+I/8j/6r/qv8jACMAnQCdAAgBCAF2AXYB8QHxAV0CXQK4ArgCEgMSA0oDSgNA - A0ADEAMQA8wCzAJkAmQC3wHfAVABUAHPAM8AhgCGAG4AbgBjAGMAZgBmAHIAcgBzAHMAbQBtAGkAaQBp - AGkAcABwAGoAagBXAFcAWQBZAH8AfwCuAK4AygDKANUA1QDlAOUA7wDvAOAA4ADJAMkAtgC2AJcAlwB1 - AHUAZABkAFQAVAA3ADcAJAAkABwAHAAHAAcA+v/6//7//v/8//z/AgACACUAJQBNAE0AfQB9AK4ArgDK - AMoA4QDhAP0A/QAHAQcB+wD7AN8A3wC7ALsAmgCaAH8AfwBxAHEAaQBpAFYAVgBCAEIAOwA7ADEAMQAX - ABcA7f/t/8b/xv+z/7P/rv+u/8P/w//y//L/IQAhAF8AXwCeAJ4AwQDBANsA2wDkAOQAywDLAKwArACI - AIgAWABYADYANgARABEA4P/g/7j/uP+Y/5j/gv+C/3D/cP9B/0H/Bv8G/8D+wP5W/lb+4P3g/W/9b/3/ - /P/8k/yT/B38Hfyk+6T7R/tH+wj7CPv3+vf6AfsB+wb7Bvsn+yf7Xvte+4b7hvur+6v7uvu6+537nfuD - +4P7Z/tn+zn7Ofsf+x/7FfsV+yP7I/t++377Q/xD/Hj9eP3r/uv+PgA+AFkBWQEvAi8CvgK+Ah4DHgMo - AygD1ALUAlgCWALKAcoBYwFjAWkBaQG9Ab0BQAJAAuEC4QJmA2YDvAO8A+QD5APWA9YDngOeAzMDMwOt - Aq0CNwI3ArgBuAFMAUwBJAEkASABIAFRAVEBzwHPAUICQgKKAooCugK6AsQCxALCAsICwgLCAqwCrAKB - AoECPwI/Au4B7gGjAaMBWwFbATwBPAFTAVMBYQFhAV0BXQFPAU8BKAEoAQABAAHbANsApwCnAH4AfgBV - AFUAIQAhAPz//P/g/+D/3f/d//X/9f/x//H/4f/h/+P/4//U/9T/vf+9/6T/pP90/3T/W/9b/2L/Yv9c - /1z/VP9U/0v/S/84/zj/MP8w/y//L/8o/yj/Fv8W/+j+6P6x/rH+eP54/jP+M/73/ff9w/3D/ZH9kf1t - /W39K/0r/bn8ufw9/D38rPus+xL7EvuR+pH6D/oP+oP5g/kh+SH5Jfkl+cn5yfnx+vH6J/wn/CH9If3F - /cX9O/47/sb+xv5X/1f/xv/G/wEAAQAMAAwAPAA8AOEA4QDRAdEB0gLSArsDuwNFBEUEWgRaBCYEJgTM - A8wDVwNXA9wC3AKHAocCWAJYAhkCGQLAAcABUwFTAb8AvwA3ADcA4f/h/3T/dP/V/tX+Of45/tf91/3d - /d39Qv5C/s3+zf5T/1P/wv/C/xwAHABuAG4ArQCtANkA2QD6APoABwEHAREBEQEkASQBOQE5AVUBVQF4 - AXgBnwGfAeQB5AFBAkECgQKBApECkQKJAokCgwKDAnUCdQJYAlgCNgI2AgICAgK1AbUBdgF2AUIBQgEH - AQcB8wDzAAkBCQEWARYBFwEXAR0BHQEhASEBKgEqATMBMwEzATMBKwErAREBEQHmAOYAvwC/AKUApQCF - AIUAZQBlAF8AXwB4AHgAmACYALAAsAC8ALwAsQCxAJ0AnQCQAJAAiwCLAIoAigB+AH4AXwBfAEUARQA7 - ADsAPAA8AEkASQBPAE8ASwBLAEkASQA0ADQAAgACANP/0/+4/7j/sf+x/63/rf+I/4j/Ov86/9r+2v5y - /nL+Df4N/rf9t/1u/W79Pf09/Tb9Nv1S/VL9gP2A/bb9tv3Y/dj90/3T/cH9wf2v/a/9kP2Q/W39bf1Y - /Vj9Wf1Z/Zb9lv0e/h7+u/67/kf/R/+//7//FAAUAEwATABrAGsAYwBjAEgASAA2ADYAKwArACwALAAz - ADMANQA1AD8APwBGAEYANgA2ABkAGQDu/+7/of+h/07/Tv8h/yH/Hf8d/zj/OP9j/2P/fv9+/4P/g/+a - /5r/w//D/+X/5f8IAAgAKgAqAC0ALQAiACIAFwAXAAAAAADs/+z/5//n/+P/4//q/+r//////xwAHABA - AEAAXQBdAH8AfwC0ALQA4QDhAAIBAgEmASYBMwEzASoBKgEzATMBTQFNAW8BbwGiAaIB3AHcARICEgJA - AkACVwJXAlACUAI7AjsCJQIlAv8B/wHFAcUBiAGIAUMBQwH2APYAvwC/AJwAnAB8AHwAYwBjAEAAQAAT - ABMA8//z/9f/1/+//7//q/+r/4v/i/9z/3P/fP98/47/jv+w/7D/5f/l/x0AHQBfAF8AoQChAMkAyQDh - AOEA7QDtAOIA4gDRANEAvQC9AJ8AnwB9AH0AVgBWADAAMAATABMA/v/+/+b/5v/E/8T/mP+Y/2r/av86 - /zr/F/8X/wf/B//x/vH+0/7T/rb+tv6O/o7+bf5t/lz+XP5N/k3+SP5I/k3+Tf5K/kr+Wf5Z/oX+hf6z - /rP+1f7V/uv+6/78/vz+Ff8V/zX/Nf9d/13/g/+D/5T/lP+g/6D/qf+p/6D/oP+Q/5D/h/+H/3//f/+C - /4L/k/+T/6//r//X/9f//////xwAHAA5ADkATgBOAEsASwAzADMAHQAdAA0ADQD3//f/5P/k/+P/4//k - /+T/3v/e/+L/4v/m/+b/2//b/8z/zP+7/7v/r/+v/6T/pP+Q/5D/g/+D/5D/kP+t/63/xf/F/9b/1v/l - /+X/+P/4/woACgAeAB4ALwAvADIAMgAnACcAHgAeACYAJgA7ADsAUQBRAFwAXABlAGUAfAB8AJsAmwC3 - ALcAzADMAM0AzQC6ALoAqwCrAKAAoACPAI8AfQB9AGkAaQBJAEkAKQApABYAFgALAAsADQANAB4AHgA6 - ADoAXQBdAIIAggCiAKIAtgC2AMAAwADAAMAArgCuAI4AjgB7AHsAegB6AH4AfgCHAIcAnQCdAL4AvgDe - AN4A8wDzAPcA9wDcANwApACkAGgAaAAsACwA9v/2/9D/0P+t/63/lv+W/6D/oP+1/7X/yf/J/+r/6v8F - AAUAFAAUACcAJwAuAC4AHAAcAAAAAADr/+v/4f/h/8//z/+t/63/jP+M/2j/aP9K/0r/RP9E/0f/R/9K - /0r/S/9L/0b/Rv9F/0X/Rf9F/y7/Lv8H/wf/5v7m/tP+0/7b/tv+8P7w/g//D/85/zn/Y/9j/57/nv/u - /+7/KgAqAFEAUQB0AHQAhwCHAJUAlQCeAJ4AlACUAIcAhwBxAHEASgBKACEAIQD0//T/xP/E/6v/q/+g - /6D/oP+g/63/rf+2/7b/wf/B/9X/1f/m/+b/9P/0/+3/7f/I/8j/of+h/33/ff9e/17/TP9M/0b/Rv9U - /1T/ef95/53/nf/H/8f/8f/x//////8AAAAA+P/4/9L/0v+r/6v/hv+G/13/Xf9I/0j/S/9L/1z/XP98 - /3z/o/+j/9T/1P8FAAUAHAAcACAAIAAcABwADgAOAAMAAwD6//r/7//v//X/9f8HAAcAJAAkAFAAUAB4 - AHgAlwCXALUAtQDIAMgA1wDXAOQA5ADmAOYA6ADoAOMA4wDSANIAwwDDAKsAqwCKAIoAfgB+AH0AfQB2 - AHYAdAB0AHUAdQB7AHsAjwCPAKYApgC8ALwAxADEALUAtQCdAJ0AhwCHAGwAbABOAE4AKwArAAwADAAC - AAIAAwADAAgACAATABMAFwAXABUAFQAWABYAGQAZABYAFgABAAEA6P/o/9b/1v+//7//pv+m/5n/mf+P - /4//jf+N/5//n/+0/7T/xv/G/97/3v/1//X/BgAGABYAFgAUABQAAAAAAOX/5f/D/8P/of+h/4P/g/9q - /2r/Vv9W/0v/S/9T/1P/aP9o/3f/d/98/3z/fP98/3b/dv9v/2//bP9s/2b/Zv9f/1//Wv9a/13/Xf9q - /2r/ff99/5P/k/+n/6f/t/+3/8b/xv/V/9X/3//f/+f/5//u/+7/7v/u/+T/5P/Y/9j/zf/N/8n/yf/Q - /9D/3P/c/+X/5f/u/+7/+v/6/wsACwAfAB8ALAAsADEAMQAzADMAMwAzADQANAA2ADYANAA0AC8ALwAo - ACgAKAAoADIAMgA9AD0AQABAAD0APQA3ADcALgAuACMAIwAXABcADwAPAAsACwADAAMA/P/8//7//v8C - AAIAAwADAAUABQALAAsADQANAAkACQAFAAUAAwADAP7//v/1//X/8f/x//b/9v8CAAIAEgASACMAIwA5 - ADkATQBNAFwAXABtAG0AdwB3AHkAeQB9AH0AfgB+AH4AfgCCAIIAhQCFAIYAhgCJAIkAjQCNAJUAlQCe - AJ4AnQCdAJcAlwCLAIsAewB7AHEAcQBsAGwAZQBlAGIAYgBeAF4AVwBXAFEAUQBLAEsAPwA/ADAAMAAb - ABsAAQABAOr/6v/W/9b/xv/G/7z/vP+2/7b/sv+y/63/rf+p/6n/pP+k/5v/m/+Q/5D/g/+D/3H/cf9l - /2X/YP9g/2H/Yf9p/2n/c/9z/3//f/+W/5b/q/+r/7b/tv+6/7r/uv+6/7j/uP+2/7b/r/+v/6L/ov+a - /5r/mf+Z/6D/oP+u/67/uf+5/8D/wP/E/8T/wf/B/8D/wP/G/8b/zP/M/83/zf/L/8v/zP/M/9P/0//c - /9z/5//n//b/9v8IAAgAIAAgADMAMwA+AD4ARgBGAEkASQBKAEoATQBNAEwATABGAEYAPgA+ADgAOAA3 - ADcANgA2ADEAMQAuAC4ALQAtACwALAAxADEAMwAzAC0ALQAmACYAHwAfABUAFQANAA0ACgAKAAMAAwD8 - //z/+//7//7//v8DAAMADQANABQAFAATABMAFQAVABYAFgASABIADgAOAAwADAAKAAoACwALABAAEAAU - ABQAHAAcACYAJgArACsAKwArACkAKQAkACQAIAAgABkAGQAQABAADQANAA8ADwASABIAGQAZACAAIAAi - ACIAJAAkACgAKAApACkAKAAoACgAKAAnACcAKAAoACoAKgArACsAKgAqACwALAAvAC8AMQAxADMAMwAy - ADIALwAvACwALAAqACoAKQApACUAJQAdAB0AFgAWABEAEQAKAAoAAQABAPn/+f/y//L/7v/u/+n/6f/j - /+P/3f/d/9f/1//S/9L/zP/M/8X/xf+9/73/tf+1/7D/sP+v/6//sv+y/7b/tv+8/7z/wv/C/8b/xv/H - /8f/x//H/8X/xf/B/8H/u/+7/7b/tv+0/7T/tP+0/7X/tf+1/7X/s/+z/7b/tv+5/7n/uv+6/7r/uv+8 - /7z/vf+9/8D/wP/F/8X/y//L/9D/0P/X/9f/3//f/+f/5//u/+7/9f/1//7//v8GAAYADgAOABUAFQAc - ABwAJAAkACgAKAAqACoALwAvADMAMwA2ADYAOgA6ADwAPAA6ADoAOQA5ADkAOQA8ADwAQQBBAEkASQBS - AFIAWABYAFwAXABdAF0AXgBeAF8AXwBgAGAAXwBfAFoAWgBUAFQATwBPAEwATABIAEgAQQBBADYANgAq - ACoAHAAcABAAEAAFAAUA+v/6/+z/7P/f/9//1f/V/87/zv/I/8j/xP/E/8D/wP/A/8D/w//D/8X/xf/H - /8f/yP/I/8n/yf/O/87/2P/Y/+L/4v/r/+v/9f/1//7//v8FAAUADgAOABQAFAAYABgAGwAbAB4AHgAf - AB8AIQAhACMAIwAjACMAIgAiAB8AHwAbABsAEwATAAoACgADAAMAAAAAAPz//P/3//f/8//z//L/8v/y - //L/9P/0//f/9//6//r//v/+/wEAAQAGAAYACQAJAA0ADQAQABAAEgASABQAFAAWABYAFwAXABYAFgAV - ABUAFAAUABMAEwATABMAEgASAA8ADwAKAAoABgAGAAEAAQD8//z/9//3//P/8//w//D/6v/q/+P/4//b - /9v/1P/U/83/zf/I/8j/xv/G/8b/xv/I/8j/yv/K/8v/y//N/83/zv/O/87/zv/Q/9D/0v/S/9T/1P/Y - /9j/3//f/+f/5//w//D/9//3//v/+/8AAAAABwAHAA0ADQASABIAFgAWABsAGwAgACAAJQAlACgAKAAr - ACsALQAtAC4ALgAuAC4ALwAvADAAMAAwADAALgAuACwALAAqACoAJwAnACYAJgAlACUAIwAjACEAIQAh - ACEAHgAeABgAGAATABMAEQARAA4ADgAJAAkABgAGAAYABgAHAAcABgAGAAUABQAFAAUABgAGAAgACAAL - AAsADQANAA4ADgAOAA4ACwALAAYABgACAAIAAAAAAPz//P/5//n/9f/1//L/8v/v/+//6//r/+f/5//j - /+P/3f/d/9j/2P/U/9T/z//P/8r/yv/G/8b/w//D/8H/wf/B/8H/w//D/8n/yf/R/9H/2P/Y/+D/4P/p - /+n/8P/w//j/+P8AAAAABwAHAA4ADgAWABYAHAAcACAAIAAkACQAJAAkACMAIwAhACEAHwAfAB0AHQAa - ABoAFAAUAA8ADwALAAsACQAJAAcABwAHAAcACAAIAAgACAAHAAcABgAGAAYABgAJAAkADAAMABAAEAAS - ABIAEwATABUAFQAXABcAGQAZABoAGgAcABwAHgAeACAAIAAeAB4AGgAaABYAFgARABEADAAMAAkACQAE - AAQA//////v/+//2//b/8P/w/+3/7f/q/+r/5//n/+b/5v/l/+X/5P/k/+f/5//r/+v/7//v//P/8//3 - //f/+//7//7//v/////////////////+//7//f/9//7//v///////v/+//7//v/+//7//v/+//3//f/6 - //r/+P/4//j/+P/5//n/+//7//7//v8AAAAAAwADAAUABQAFAAUABQAFAAgACAANAA0AFAAUABkAGQAc - ABwAHgAeACIAIgAkACQAJQAlACUAJQAlACUAIwAjAB8AHwAaABoAFgAWABQAFAARABEADgAOAAwADAAI - AAgAAwADAAAAAAD//////v/+//v/+//1//X/8f/x/+7/7v/s/+z/7P/s/+//7//x//H/9f/1//n/+f/7 - //v/+v/6//n/+f/6//r/+//7//v/+//7//v/+v/6//j/+P/2//b/9v/2//X/9f/z//P/8f/x//H/8f/y - //L/9f/1//j/+P/8//z/AAAAAAQABAAFAAUACAAIAAkACQAKAAoACwALAAwADAAMAAwADgAOABAAEAAS - ABIAEwATABMAEwAVABUAFgAWABUAFQAUABQAEwATABEAEQAPAA8ADgAOAAwADAAKAAoACQAJAAkACQAK - AAoACQAJAAgACAAIAAgACQAJAAoACgAMAAwADAAMAAoACgAJAAkACQAJAAkACQAIAAgABgAGAAQABAAB - AAEAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAP/////+//7//f/9//r/+v/3//f/9v/2//b/9v/3 - //f/9//3//f/9//3//f/9//3//f/9//4//j/+P/4//f/9//4//j/+v/6//z//P/8//z//P/8//3//f/9 - //3//f/9//z//P/6//r/+P/4//f/9//3//f/9//3//n/+f/6//r/+f/5//r/+v/8//z//v/+/wAAAAAA - AAAAAAAAAAAAAAABAAEABAAEAAYABgAIAAgACAAIAAgACAAHAAcABQAFAAQABAAEAAQABQAFAAYABgAF - AAUABAAEAAIAAgABAAEAAAAAAP/////+//7//////wAAAAAAAAAAAgACAAMAAwADAAMABAAEAAYABgAG - AAYABQAFAAUABQAFAAUABgAGAAgACAAJAAkACAAIAAgACAAJAAkACgAKAAoACgAJAAkACAAIAAgACAAH - AAcABgAGAAIAAgD//////P/8//v/+//7//v//f/9////////////AAAAAAAAAAAAAAAAAAAAAAAAAAD/ - /////v/+//7//v/9//3//P/8//3//f8AAAAAAAAAAAAAAAD+//7//f/9//z//P/8//z//P/8//3//f/+ - //7//////wAAAAABAAEAAgACAAMAAwAEAAQABAAEAAQABAADAAMAAgACAAEAAQAAAAAAAAAAAP/////+ - //7//f/9//z//P/7//v//P/8//3//f/+//7//P/8//v/+//6//r/+//7//z//P////////////7//v/+ - //7//////wAAAAAAAAAAAAAAAP7//v/9//3//f/9//3//f/+//7//////wAAAAACAAIAAwADAAIAAgAA - AAAA//////7//v/+//7//f/9//3//f8AAAAAAgACAAQABAAHAAcACAAIAAkACQAKAAoACwALAAwADAAM - AAwACwALAAoACgAJAAkACQAJAAcABwAFAAUABAAEAAQABAAFAAUABAAEAAUABQAFAAUAAwADAAAAAAD/ - /////v/+//3//f/8//z/+v/6//n/+f/4//j/9//3//n/+f/8//z//v/+//////8AAAAAAAAAAAEAAQAC - AAIAAgACAAIAAgACAAIAAwADAAMAAwACAAIAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAA//////////8A - AAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAQABAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAMAAwAD - AAMAAwADAAMAAwACAAIAAQABAAEAAQACAAIAAgACAAIAAgABAAEAAAAAAP/////+//7///////7//v/8 - //z/+v/6//v/+//5//n/+P/4//n/+f/5//n/+f/5//v/+//9//3//v/+////////////AAAAAAEAAQAC - AAIAAwADAAQABAAGAAYACAAIAAoACgALAAsADAAMAAwADAAMAAwADAAMAAwADAALAAsACwALAAoACgAJ - AAkABwAHAAYABgAEAAQAAwADAAIAAgABAAEAAAAAAP/////9//3//P/8//z//P/7//v/+v/6//r/+v/5 - //n/+//7//z//P/9//3//////wAAAAABAAEAAgACAAMAAwADAAMABAAEAAUABQAGAAYABQAFAAQABAAE - AAQABAAEAAMAAwADAAMAAwADAAIAAgACAAIAAgACAAEAAQAAAAAAAQABAAAAAAD///////////////// - //////////7//v/+//7//v/+//7//v/9//3//v/+//7//v/+//7///////////8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAP/////////////////////+//7//f/9//v/+//6//r/+v/6//v/+//8 - //z//f/9//7//v8AAAAAAAAAAAEAAQADAAMABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAF - AAUABQAFAAUABQAFAAUABgAGAAYABgAFAAUABAAEAAMAAwADAAMAAgACAAEAAQAAAAAA//////7//v/+ - //7//////wAAAAAAAAAAAgACAAMAAwADAAMAAgACAAEAAQAAAAAAAAAAAP/////+//7//v/+//7//v/+ - //7//v/+//7//v/9//3//f/9//z//P/9//3//P/8//z//P/8//z//P/8//3//f//////AAAAAAAAAAD/ - /////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQACAAIAAQABAAEAAQAB - AAEAAgACAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQACAAIAAQABAAEAAQAB - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////7//v// - ////AAAAAAAAAAACAAIAAwADAAMAAwADAAMAAwADAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAQABAAD - AAMAAgACAAIAAgABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAD///////////7//v/+//7//f/9//7//v/+ - //7///////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAAAAAAA - AAAA/v/+//7//v/9//3//f/9//3//f/8//z//P/8//z//P/8//z//P/8//z//P/9//3//f/9//7//v// - ////AAAAAAAAAAABAAEAAgACAAMAAwADAAMAAwADAAMAAwADAAMAAgACAAIAAgACAAIAAgACAAEAAQAB - AAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAQABAAEAAQAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQAB - AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAP////////////////////8L - - ..\resources\b612mono-regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -802,4 +127,13 @@ ..\resources\oxygen-regular.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\cog-wheel-gear-setting.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Notification.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Oxygen-Bold.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/EasyCPDLC/Properties/Settings.Designer.cs b/EasyCPDLC/Properties/Settings.Designer.cs index 026e8a9..b220ce0 100644 --- a/EasyCPDLC/Properties/Settings.Designer.cs +++ b/EasyCPDLC/Properties/Settings.Designer.cs @@ -8,23 +8,43 @@ // //------------------------------------------------------------------------------ -namespace EasyCPDLC.Properties -{ - - +namespace EasyCPDLC.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool StayOnTop { + get { + return ((bool)(this["StayOnTop"])); + } + set { + this["StayOnTop"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool PlayAudibleAlert { + get { + return ((bool)(this["PlayAudibleAlert"])); + } + set { + this["PlayAudibleAlert"] = value; + } + } } } diff --git a/EasyCPDLC/Properties/Settings.settings b/EasyCPDLC/Properties/Settings.settings index 3964565..db3b95c 100644 --- a/EasyCPDLC/Properties/Settings.settings +++ b/EasyCPDLC/Properties/Settings.settings @@ -1,7 +1,12 @@  - - - - - - + + + + + False + + + True + + + \ No newline at end of file diff --git a/EasyCPDLC/RequestForm.Designer.cs b/EasyCPDLC/RequestForm.Designer.cs index aa57784..13293e4 100644 --- a/EasyCPDLC/RequestForm.Designer.cs +++ b/EasyCPDLC/RequestForm.Designer.cs @@ -236,6 +236,7 @@ private void InitializeComponent() this.reportButton.TabIndex = 13; this.reportButton.Text = "REPORT"; this.reportButton.UseVisualStyleBackColor = true; + this.reportButton.Click += new System.EventHandler(this.reportButton_Click); // // requestContainer // diff --git a/EasyCPDLC/RequestForm.cs b/EasyCPDLC/RequestForm.cs index bf7883c..ee88877 100644 --- a/EasyCPDLC/RequestForm.cs +++ b/EasyCPDLC/RequestForm.cs @@ -71,13 +71,13 @@ public bool needsLogon { logonButton.Text = "LOGON"; requestButton.Enabled = false; - //reportButton.Enabled = false; + reportButton.Enabled = false; } else { logonButton.Text = "LOGOFF"; requestButton.Enabled = true; - //reportButton.Enabled = true; + reportButton.Enabled = true; } } } @@ -86,6 +86,7 @@ public RequestForm(MainForm parent) { InitializeComponent(); this.parent = parent; + this.TopMost = parent.TopMost; if (this.parent.currentATCUnit != null) { @@ -259,6 +260,34 @@ private void pdcButton_Click(object sender, EventArgs e) pdcRadioButton.Checked = true; } + private void reportButton_Click(object sender, EventArgs e) + { + reportRadioButton.Checked = true; + messageFormatPanel.Controls.Clear(); + messageFormatPanel.Controls.Add(createTemplate("RECIPIENT:")); + messageFormatPanel.Controls.Add(createTextBox(parent.currentATCUnit, 4, true)); + messageFormatPanel.SetFlowBreak(messageFormatPanel.Controls[messageFormatPanel.Controls.Count - 1], true); + messageFormatPanel.Controls.Add(createTemplate("POSITION REPORT")); + messageFormatPanel.SetFlowBreak(messageFormatPanel.Controls[messageFormatPanel.Controls.Count - 1], true); + messageFormatPanel.Controls.Add(createTemplate("OVERHEAD")); + messageFormatPanel.Controls.Add(createTextBox("", 7)); + messageFormatPanel.Controls.Add(createTemplate("AT")); + messageFormatPanel.Controls.Add(createTextBox(DateTime.UtcNow.ToString("HHmm"), 4)); + messageFormatPanel.Controls.Add(createTemplate("Z")); + messageFormatPanel.Controls.Add(createTemplate("FL")); + messageFormatPanel.Controls.Add(createTextBox(userVATSIMData.flight_plan.altitude.Substring(0, 3), 3)); + messageFormatPanel.SetFlowBreak(messageFormatPanel.Controls[messageFormatPanel.Controls.Count - 1], true); + messageFormatPanel.Controls.Add(createTemplate("NEXT")); + messageFormatPanel.Controls.Add(createTextBox("", 7)); + messageFormatPanel.Controls.Add(createTemplate("AT")); + messageFormatPanel.Controls.Add(createTextBox("", 4)); + messageFormatPanel.Controls.Add(createTemplate("Z")); + messageFormatPanel.SetFlowBreak(messageFormatPanel.Controls[messageFormatPanel.Controls.Count - 1], true); + messageFormatPanel.Controls.Add(createTemplate("THEN")); + messageFormatPanel.Controls.Add(createTextBox("", 7)); + + } + private void logonButton_Click(object sender, EventArgs e) { messageFormatPanel.Controls.Clear(); @@ -435,6 +464,7 @@ private async void sendButton_Click(object sender, EventArgs e) if (needsLogon) { _formatMessage = String.Format("/data2/{0}//Y/REQUEST LOGON", parent.messageOutCounter); + parent.pendingLogon = _recipient; } else { @@ -474,6 +504,24 @@ private async void sendButton_Click(object sender, EventArgs e) break; + case "reportRadioButton": + + _formatMessage = String.Format("/data2/{0}//N/", parent.messageOutCounter); + _recipient = messageFormatPanel.Controls[1].Text; + string _messageContent = String.Format("POSITION REPORT PPOS {0} AT {1}Z FL{2} TO {3} AT {4}Z NEXT {5}", + messageFormatPanel.Controls[4].Text, + messageFormatPanel.Controls[6].Text, + messageFormatPanel.Controls[9].Text, + messageFormatPanel.Controls[11].Text, + messageFormatPanel.Controls[13].Text, + messageFormatPanel.Controls[16].Text); + _formatMessage += _messageContent; + + await parent.SendCPDLCMessage(_recipient, "CPDLC", _formatMessage); + parent.messageOutCounter += 1; + break; + + default: break; @@ -696,5 +744,7 @@ protected override void WndProc(ref Message m) } base.WndProc(ref m); } + + } } diff --git a/EasyCPDLC/Resources/Oxygen-Bold.ttf b/EasyCPDLC/Resources/Oxygen-Bold.ttf new file mode 100644 index 0000000..8a3d389 Binary files /dev/null and b/EasyCPDLC/Resources/Oxygen-Bold.ttf differ diff --git a/EasyCPDLC/Resources/cog-wheel-gear-setting.png b/EasyCPDLC/Resources/cog-wheel-gear-setting.png new file mode 100644 index 0000000..c14ac58 Binary files /dev/null and b/EasyCPDLC/Resources/cog-wheel-gear-setting.png differ diff --git a/EasyCPDLC/Resources/honk.wav b/EasyCPDLC/Resources/honk.wav deleted file mode 100644 index e7fab1f..0000000 Binary files a/EasyCPDLC/Resources/honk.wav and /dev/null differ diff --git a/EasyCPDLC/Resources/notification.wav b/EasyCPDLC/Resources/notification.wav new file mode 100644 index 0000000..d822a73 Binary files /dev/null and b/EasyCPDLC/Resources/notification.wav differ diff --git a/EasyCPDLC/SettingsForm.Designer.cs b/EasyCPDLC/SettingsForm.Designer.cs new file mode 100644 index 0000000..de07203 --- /dev/null +++ b/EasyCPDLC/SettingsForm.Designer.cs @@ -0,0 +1,138 @@ + +namespace EasyCPDLC +{ + partial class SettingsForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.exitButton = new System.Windows.Forms.Button(); + this.titleLabel = new System.Windows.Forms.Label(); + this.settingsFormatPanel = new System.Windows.Forms.FlowLayoutPanel(); + this.cancelButton = new System.Windows.Forms.Button(); + this.okButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // exitButton + // + this.exitButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.exitButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.exitButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); + this.exitButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.exitButton.Font = new System.Drawing.Font("Oxygen", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.exitButton.ForeColor = System.Drawing.SystemColors.ControlLight; + this.exitButton.Location = new System.Drawing.Point(514, -1); + this.exitButton.Name = "exitButton"; + this.exitButton.Size = new System.Drawing.Size(24, 24); + this.exitButton.TabIndex = 10; + this.exitButton.Text = "X"; + this.exitButton.UseVisualStyleBackColor = true; + this.exitButton.Click += new System.EventHandler(this.exitButton_Click); + // + // titleLabel + // + this.titleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.titleLabel.AutoSize = true; + this.titleLabel.Font = new System.Drawing.Font("Oxygen", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.titleLabel.ForeColor = System.Drawing.SystemColors.ControlLight; + this.titleLabel.Location = new System.Drawing.Point(335, -1); + this.titleLabel.Name = "titleLabel"; + this.titleLabel.Size = new System.Drawing.Size(186, 41); + this.titleLabel.TabIndex = 9; + this.titleLabel.Text = "EasyCPDLC"; + this.titleLabel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.WindowDrag); + // + // settingsFormatPanel + // + this.settingsFormatPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.settingsFormatPanel.AutoScroll = true; + this.settingsFormatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(5)))), ((int)(((byte)(5)))), ((int)(((byte)(5))))); + this.settingsFormatPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.settingsFormatPanel.Location = new System.Drawing.Point(11, 43); + this.settingsFormatPanel.Name = "settingsFormatPanel"; + this.settingsFormatPanel.Padding = new System.Windows.Forms.Padding(10, 0, 0, 30); + this.settingsFormatPanel.Size = new System.Drawing.Size(510, 136); + this.settingsFormatPanel.TabIndex = 13; + // + // cancelButton + // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cancelButton.Font = new System.Drawing.Font("Oxygen", 12F, System.Drawing.FontStyle.Bold); + this.cancelButton.ForeColor = System.Drawing.SystemColors.ControlLight; + this.cancelButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.cancelButton.Location = new System.Drawing.Point(307, 185); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(104, 37); + this.cancelButton.TabIndex = 15; + this.cancelButton.Text = "CANCEL"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.okButton.Font = new System.Drawing.Font("Oxygen", 12F, System.Drawing.FontStyle.Bold); + this.okButton.ForeColor = System.Drawing.SystemColors.ControlLight; + this.okButton.ImageAlign = System.Drawing.ContentAlignment.TopCenter; + this.okButton.Location = new System.Drawing.Point(417, 185); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(104, 37); + this.okButton.TabIndex = 14; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); + // + // SettingsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(28)))), ((int)(((byte)(28)))), ((int)(((byte)(28))))); + this.ClientSize = new System.Drawing.Size(537, 234); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.Controls.Add(this.settingsFormatPanel); + this.Controls.Add(this.exitButton); + this.Controls.Add(this.titleLabel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "SettingsForm"; + this.Text = "Settings"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Button exitButton; + private System.Windows.Forms.Label titleLabel; + private System.Windows.Forms.FlowLayoutPanel settingsFormatPanel; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.Button okButton; + } +} \ No newline at end of file diff --git a/EasyCPDLC/SettingsForm.cs b/EasyCPDLC/SettingsForm.cs new file mode 100644 index 0000000..d551ae7 --- /dev/null +++ b/EasyCPDLC/SettingsForm.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace EasyCPDLC +{ + + public partial class SettingsForm : Form + { + private MainForm parent; + public bool[] settings; + + public const int WM_NCLBUTTONDOWN = 0xA1; + public const int HT_CAPTION = 0x2; + private const int cGrip = 16; + private const int cCaption = 32; + [System.Runtime.InteropServices.DllImport("user32.dll")] + public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); + [System.Runtime.InteropServices.DllImport("user32.dll")] + public static extern bool ReleaseCapture(); + + public SettingsForm(MainForm _parent, bool[] _settings) + { + parent = _parent; + settings = _settings; + InitializeComponent(); + InitialiseSettings(); + } + + private void InitialiseSettings() + { + settingsFormatPanel.Controls.Clear(); + UICheckBox stayOnTopBox = createCheckBox("Keep Window On Top", "0"); + stayOnTopBox.Checked = settings[0]; + UICheckBox audiblePingBox = createCheckBox("Play Sound on Message Receive", "1"); + audiblePingBox.Checked = settings[1]; + + settingsFormatPanel.Controls.Add(stayOnTopBox); + settingsFormatPanel.SetFlowBreak(stayOnTopBox, true); + settingsFormatPanel.Controls.Add(audiblePingBox); + } + + private void ModifySettings(object sender, EventArgs e) + { + UICheckBox box = (UICheckBox)sender; + settings[Convert.ToInt32(box.group)] = box.Checked; + Console.WriteLine(settings[Convert.ToInt32(box.group)]); + } + private UICheckBox createCheckBox(string _text, string _group) + { + UICheckBox _temp = new UICheckBox(_group); + + _temp.BackColor = parent.controlBackColor; + _temp.ForeColor = parent.controlFrontColor; + _temp.Font = parent.textFont; + _temp.Text = _text; + _temp.Padding = new Padding(3, 10, 3, -30); + _temp.AutoSize = true; + _temp.Click += ModifySettings; + return _temp; + } + + private void cancelButton_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void okButton_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.OK; + } + + private void exitButton_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + + private void WindowDrag(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + ReleaseCapture(); + SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); + } + } + + protected override void WndProc(ref Message m) + { + if (m.Msg == 0x84) + { // Trap WM_NCHITTEST + Point pos = new Point(m.LParam.ToInt32()); + pos = this.PointToClient(pos); + if (pos.Y < cCaption) + { + m.Result = (IntPtr)2; // HTCAPTION + return; + } + if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip) + { + m.Result = (IntPtr)17; // HTBOTTOMRIGHT + return; + } + } + base.WndProc(ref m); + } + } +} diff --git a/EasyCPDLC/SettingsForm.resx b/EasyCPDLC/SettingsForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/EasyCPDLC/SettingsForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/EasyCPDLC/TelexForm.cs b/EasyCPDLC/TelexForm.cs index 1dabeca..a7cb5f1 100644 --- a/EasyCPDLC/TelexForm.cs +++ b/EasyCPDLC/TelexForm.cs @@ -58,6 +58,8 @@ public TelexForm(MainForm _parent, string _recipient = null) textFont = parent.textFont; textFontBold = parent.textFontBold; recipient = _recipient is null ? null : _recipient; + + this.TopMost = parent.TopMost; } private Label CreateTemplate(string _text)