diff --git a/TIAS_DataExtractor.sln b/TIAS_DataExtractor.sln new file mode 100644 index 0000000..432f6d5 --- /dev/null +++ b/TIAS_DataExtractor.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33122.133 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TIAS_DataExtractor", "TIAS_DataExtractor\TIAS_DataExtractor.csproj", "{248574A3-0A4B-4750-B6E3-2D591AD75016}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Debug|Any CPU.Build.0 = Debug|Any CPU + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Debug|x64.ActiveCfg = Debug|x64 + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Debug|x64.Build.0 = Debug|x64 + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Release|Any CPU.ActiveCfg = Release|Any CPU + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Release|Any CPU.Build.0 = Release|Any CPU + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Release|x64.ActiveCfg = Release|x64 + {248574A3-0A4B-4750-B6E3-2D591AD75016}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {8F539FE5-5C8B-4F4B-A9D8-14795B541C8E} + EndGlobalSection +EndGlobal diff --git a/TIAS_DataExtractor/App.config b/TIAS_DataExtractor/App.config new file mode 100644 index 0000000..7d84477 --- /dev/null +++ b/TIAS_DataExtractor/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/TIAS_DataExtractor/MainForm.Designer.cs b/TIAS_DataExtractor/MainForm.Designer.cs new file mode 100644 index 0000000..09a8f61 --- /dev/null +++ b/TIAS_DataExtractor/MainForm.Designer.cs @@ -0,0 +1,277 @@ +namespace TIAS_DataExtractor { + partial class MainForm { + /// + /// 必要なデザイナー変数です。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 使用中のリソースをすべてクリーンアップします。 + /// + /// マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。 + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows フォーム デザイナーで生成されたコード + + /// + /// デザイナー サポートに必要なメソッドです。このメソッドの内容を + /// コード エディターで変更しないでください。 + /// + private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.txtTiasDataDir = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtQuery = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.btnStart = new System.Windows.Forms.Button(); + this.txtLog = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.txtOutputDir = new System.Windows.Forms.TextBox(); + this.cboFileType = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.cboBright = new System.Windows.Forms.ComboBox(); + this.barTotal = new System.Windows.Forms.ProgressBar(); + this.barPart = new System.Windows.Forms.ProgressBar(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // txtTiasDataDir + // + this.txtTiasDataDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtTiasDataDir.Location = new System.Drawing.Point(123, 20); + this.txtTiasDataDir.Name = "txtTiasDataDir"; + this.txtTiasDataDir.Size = new System.Drawing.Size(419, 19); + this.txtTiasDataDir.TabIndex = 0; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 23); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(106, 12); + this.label1.TabIndex = 1; + this.label1.Text = "TIASデータ保管場所"; + // + // txtQuery + // + this.txtQuery.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left))); + this.txtQuery.Location = new System.Drawing.Point(12, 101); + this.txtQuery.Multiline = true; + this.txtQuery.Name = "txtQuery"; + this.txtQuery.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.txtQuery.Size = new System.Drawing.Size(152, 230); + this.txtQuery.TabIndex = 2; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 86); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(65, 12); + this.label2.TabIndex = 3; + this.label2.Text = "検索文字列"; + // + // btnStart + // + this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnStart.Location = new System.Drawing.Point(428, 337); + this.btnStart.Name = "btnStart"; + this.btnStart.Size = new System.Drawing.Size(114, 43); + this.btnStart.TabIndex = 4; + this.btnStart.Text = "データコピー開始"; + this.btnStart.UseVisualStyleBackColor = true; + this.btnStart.Click += new System.EventHandler(this.btnStart_Click); + // + // txtLog + // + this.txtLog.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.txtLog.BackColor = System.Drawing.Color.Beige; + this.txtLog.Location = new System.Drawing.Point(170, 101); + this.txtLog.Multiline = true; + this.txtLog.Name = "txtLog"; + this.txtLog.ReadOnly = true; + this.txtLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.txtLog.Size = new System.Drawing.Size(372, 230); + this.txtLog.TabIndex = 5; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(168, 86); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(57, 12); + this.label3.TabIndex = 3; + this.label3.Text = "処理のログ"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 51); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(64, 12); + this.label4.TabIndex = 6; + this.label4.Text = "出力フォルダ"; + // + // txtOutputDir + // + this.txtOutputDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtOutputDir.Location = new System.Drawing.Point(123, 48); + this.txtOutputDir.Name = "txtOutputDir"; + this.txtOutputDir.Size = new System.Drawing.Size(419, 19); + this.txtOutputDir.TabIndex = 7; + // + // cboFileType + // + this.cboFileType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cboFileType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboFileType.FormattingEnabled = true; + this.cboFileType.Items.AddRange(new object[] { + ".bmp", + ".jpg"}); + this.cboFileType.Location = new System.Drawing.Point(19, 360); + this.cboFileType.Name = "cboFileType"; + this.cboFileType.Size = new System.Drawing.Size(46, 20); + this.cboFileType.TabIndex = 8; + // + // label5 + // + this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(12, 345); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(53, 12); + this.label5.TabIndex = 9; + this.label5.Text = "保存形式"; + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(86, 345); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 12); + this.label6.TabIndex = 10; + this.label6.Text = "明度補正"; + // + // cboBright + // + this.cboBright.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cboBright.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboBright.FormattingEnabled = true; + this.cboBright.Items.AddRange(new object[] { + "1.0", + "1.25", + "1.5", + "1.75", + "2.0"}); + this.cboBright.Location = new System.Drawing.Point(93, 360); + this.cboBright.Name = "cboBright"; + this.cboBright.Size = new System.Drawing.Size(46, 20); + this.cboBright.TabIndex = 11; + // + // barTotal + // + this.barTotal.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.barTotal.Location = new System.Drawing.Point(203, 345); + this.barTotal.Name = "barTotal"; + this.barTotal.Size = new System.Drawing.Size(201, 13); + this.barTotal.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.barTotal.TabIndex = 12; + // + // barPart + // + this.barPart.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.barPart.Location = new System.Drawing.Point(203, 367); + this.barPart.Name = "barPart"; + this.barPart.Size = new System.Drawing.Size(201, 13); + this.barPart.Style = System.Windows.Forms.ProgressBarStyle.Continuous; + this.barPart.TabIndex = 13; + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(168, 345); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(29, 12); + this.label7.TabIndex = 14; + this.label7.Text = "全体"; + // + // label8 + // + this.label8.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(168, 368); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(29, 12); + this.label8.TabIndex = 15; + this.label8.Text = "個別"; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(554, 392); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.barPart); + this.Controls.Add(this.barTotal); + this.Controls.Add(this.cboBright); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.cboFileType); + this.Controls.Add(this.txtOutputDir); + this.Controls.Add(this.label4); + this.Controls.Add(this.txtLog); + this.Controls.Add(this.btnStart); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtQuery); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtTiasDataDir); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.Name = "MainForm"; + this.Text = "TIAS Data Extractor"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtTiasDataDir; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtQuery; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btnStart; + private System.Windows.Forms.TextBox txtLog; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtOutputDir; + private System.Windows.Forms.ComboBox cboFileType; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox cboBright; + private System.Windows.Forms.ProgressBar barTotal; + private System.Windows.Forms.ProgressBar barPart; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + } +} + diff --git a/TIAS_DataExtractor/MainForm.cs b/TIAS_DataExtractor/MainForm.cs new file mode 100644 index 0000000..b53862b --- /dev/null +++ b/TIAS_DataExtractor/MainForm.cs @@ -0,0 +1,185 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Imaging; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.IO; +using System.Diagnostics; +using System.Threading; +using OpenCvSharp; + +namespace TIAS_DataExtractor { + public partial class MainForm : Form { + + private readonly string INFO_FILE = "Info.txt"; + private Task _Process; + private double _BrightnessCorrection; + private string _OutputFileType; + private bool _Abort = false; + + /// + /// コンストラクタ + /// + public MainForm() { + InitializeComponent(); + + txtTiasDataDir.Text = @"\\gabor\Data\TongueImaging\臨床データ\2013-2015 千葉大外来\"; + txtQuery.Text = "6716396-1"; + txtOutputDir.Text = @"D:\usr\DL\舌画像データ\"; + cboFileType.SelectedIndex = 0; + cboBright.SelectedIndex = 0; +#if DEBUG + txtTiasDataDir.Text = @"\\gabor\Data\TongueImaging\臨床データ\2013-2015 千葉大外来\2013-07-23\"; + cboFileType.SelectedIndex = 1; + cboBright.SelectedIndex = 1; +#endif + } + + /// + /// 開始/中断ボタン + /// + /// + /// + private void btnStart_Click(object sender, EventArgs e) { + if (btnStart.Text == "中断") { + _Abort = true; + this.EnableControls(true); + return; + } + this.EnableControls(false); + _BrightnessCorrection = double.Parse(cboBright.Text); + _OutputFileType=cboFileType.Text; + _Abort = false; + _Process = Task.Run(() => this.Process()); + } + + /// + /// 処理スレッド + /// + private void Process() { + this.LogClear(); + this.Log("ディレクトリ一覧取得"); + var dataDirs = Directory.EnumerateFiles(txtTiasDataDir.Text, INFO_FILE + , SearchOption.AllDirectories).ToList(); + string[] del = { "\r\n" }; + var queries = txtQuery.Text.Split(del, StringSplitOptions.RemoveEmptyEntries); + this.Log("コピー開始"); + this.SetBar(true, 0, 0, queries.Count()); + foreach (var query in queries) { + this.CountBar(true); + var dataPath = dataDirs.Where(p => p.Contains(query)).OrderBy(p => p).FirstOrDefault(); + if (dataPath != default) { + this.Log($"フォルダ {dataPath} からコピー"); + var dataDir = Path.GetDirectoryName(dataPath); + var files = Directory.EnumerateFiles(dataDir, "*.*"); + var outputDir = Path.Combine(txtOutputDir.Text, query); + Directory.CreateDirectory(outputDir); + this.SetBar(false, 0, 0, files.Count()); + foreach (var file in files) { + this.CountBar(false); + var outputFile = Path.Combine(outputDir, Path.GetFileName(file)).ToLower(); + this.Log($"> {outputFile}"); + if (Path.GetExtension(file).ToLower().Equals(".bmp")) { + using (var img = new Mat(file)) + using (var outImg = new Mat()) { + img.ConvertTo(outImg, -1, _BrightnessCorrection); + outImg.ImWrite(outputFile.Replace(".bmp", _OutputFileType)); + } + } else { + File.Copy(file, outputFile, true); + } + if (_Abort) { + this.Log("中断しました"); + return; + } + } + + } else { + this.Log($"{query} は見つかりませんでした"); + } + if (_Abort) { + this.Log("中断しました"); + return; + } + } + this.Log("コピー終了"); + this.EnableControls(true); + } + + /// + /// プログレスバーを設定(スレッドセーフ) + /// + /// + /// + /// + /// + private void SetBar(bool isTotal, int val = 0, int minVal = -1, int maxVal = -1) { + if (this.InvokeRequired) { + this.Invoke((MethodInvoker)delegate { SetBar(isTotal, val, minVal, maxVal); }); + return; + } + var bar = isTotal ? barTotal : barPart; + if (minVal >= 0) bar.Minimum = minVal; + if (maxVal >= 0) bar.Maximum = maxVal; + bar.Value = val; + } + + /// + /// プログレスバーを1増加(スレッドセーフ) + /// + /// + private void CountBar(bool isTotal) { + if (this.InvokeRequired) { + this.Invoke((MethodInvoker)delegate { CountBar(isTotal); }); + return; + } + var bar = isTotal ? barTotal : barPart; + bar.Value++; + } + + /// + /// ログに追記(スレッドセーフ) + /// + /// + private void Log(string msg) { + if (this.InvokeRequired) { + this.Invoke((MethodInvoker)delegate { Log(msg); }); + return; + } + txtLog.AppendText(msg + "\r\n"); + } + + /// + /// ログ消去(スレッドセーフ) + /// + private void LogClear() { + if (this.InvokeRequired) { + this.Invoke((MethodInvoker)delegate { LogClear(); }); + return; + } + txtLog.Text = string.Empty; + } + + /// + /// コントロールの一括有効/無効(スレッドセーフ) + /// + /// + private void EnableControls(bool flag) { + if (this.InvokeRequired) { + this.Invoke((MethodInvoker)delegate { EnableControls(flag); }); + return; + } + foreach(Control ctr in this.Controls) { + if (!ctr.GetType().Equals(typeof(Label)) && !ctr.Name.Equals("btnStart")) { + ctr.Enabled = flag; + } + } + btnStart.Text = flag ? "データコピー開始" : "中断"; + } + } +} diff --git a/TIAS_DataExtractor/MainForm.resx b/TIAS_DataExtractor/MainForm.resx new file mode 100644 index 0000000..d888ed9 --- /dev/null +++ b/TIAS_DataExtractor/MainForm.resx @@ -0,0 +1,980 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + AAABAAEAgIAAAAEAGAAoyAAAFgAAACgAAACAAAAAAAEAAAEAGAAAAAAAAAAAAEgAAABIAAAAAAAAAAAA + AAD+/v7+/v7+/v7+/v7+/v7+/v7+///+///+///+///+///+///+///+///////+//////////////// + ///////////////////////+///+///+///+///+///////////+///////////+///+///////+///+ + ///////////+///////////////////////////////////////+///////////+///+///////+///+ + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////+///+///+//////////////////////////////////////////// + ///////////+///+///+///+///+///+///////////////////+///+///+//////////////////// + ///////+///////////////////////////+/fz///z///z///z///z+//36/v/6/v/6/v/6///7/v/8 + ///8///8///9///9//////////7///7///7///7///7///3+/vz9//z7//z7//v6//v7//38///9///9 + ///9///9///9///9///9///9///9///9///8/v78/v78//78/v78/v79/v7+///+///+///+///+///+ + ///9///9///9///9///9///9///9///9///9///9///+//////////////////////////////////// + ///////////////////////////////////////////////////////+///7//77//78//79//79//79 + //7+//7///7///7///7///7//v3//v3//v7//v79/v/7///7///6//76//77//z7//v+//r///v///v+ + //v8//z7//z7//39/v7//////f///P//+//+/f77/v78/v79/v7+///+///////+///+/v38/fv8/fr+ + /vv+/fr8/vz6/v76/v76/v76//77/v78//79//79//79//79//7+//7+//7+//7+//7+///+//79//z7 + //v6//v6//v5//r5//r6//z9///9///9///9///9///9///9///9///9///9///9///8/v77/v77//78 + /v78/v78/v79///+///+///+///+///9///8///8///8///8///8///8///8///8///8///8///9//// + //////////////////////////////////////////////////////////////////////////////// + ///////9///6//36//38//38//38//39//3///7///7///7///7///7+/vv+/vr9//z8/v76/v/5///4 + ///4//75//37//v7//r+//n///r///r+//r7//v5//v6//36///8///+/f/+/P/+/P/7/f75/v36//78 + /v79///9///////+///9/v/7/f75+/37/f78/v/9/f3///v///v///r///r///v///v///v///v///v/ + //r///r7//74///5///5///6///6//76//77//78//79//79//7+//7///////////////////////// + ///////////////////+/v7+/v79/v7+/v7+/v7+/v7////////////////////+/v79/v7+/v7+/v79 + /v79/v7+/v79/v79/v7+/v7+/v7+/v7///////////////////////////////////////////////// + ///////////////////////////////////////////9//39//3+//3+//3+//3+//3///7///7///7/ + //7///36//n2//j2//n2//v2//34///5///8/v/+/v7//f7//P3//P3//P7//P7//P79/f75/v72///0 + //7z//3z/v30/v32//35/v36/v37//78/v79///9///9///9///5+v77/P/8/P/4+v/3+f/8/P7///r/ + /vr///r///r//vv///v///v///v///v///v+//v6///4///6///7///9/v/+/v/+/P/+/P/++///+/// + +////P///v///v///v///v///v///v///v///v///v///v///v///f7//f7//v7//f7//f7//f7//v// + /v///v///v///////v7//v7//f7//f7//v7//v7//f7//v7//v7//f7//f7//v7////+///+///+///+ + ///+///+///+///+///+///+/////////////////////////////////////////////////////v7/ + /f///f7//f7//f///f7//////v///v///////v76//j1//b1//j2//r2//z4///6///9/v///P///P// + +///+v/++f/++f/9+v/7+//6+//3/f71/v3z//zx//vw//nv/vj4/vz7/f38/v78/v79///9///9///9 + ///+/f/+/P3++/39+f/6+P/9+v///f7//f7//f7//f7//f7+/f79/f78/P/7/f/6/f/5/f/7///6///7 + ///9/////v///v///P//+///+///+///+v///P///v7//f7//f7//v7//f7//f7//v7//v7//f7//v7/ + /v7//f7//f7//v7//f7//f7//v7//////////////////////v7//v7//v7//v7//v7//v7//v7//v7/ + /v7//v7//v7//v79///8///8///8///8///8///8///8///8///8///8///+//////////////////// + /////////////////////////////f///f///f///f///f///f/+/v/+/v/+/v/+/v/+/v/9//n7/vj7 + //n7//r6//37///7///7/v/7/v/9/v/8/f76/f72+//4+//6+//9+v/++//+/P78/P39/vv7/vn4/vb5 + //f8/vv+/f3+/v7+/v79///9///8///9///99/j27vD47u/++Pr/+v3/+Pz//P///P///P//+////P/8 + +//5/P/5+//4+//3+//2/P/6///7//37//38//39//79//79/v79/v/+/v/+/v/+/v/+/v79//3+//3+ + //39//3+//3+//39//39//3+//39//3+//3+//3+//3+//3+//3+//39//39//79//79//79//79//7+ + ///+///+///+///+///+///+///+///+///+///+///+///8///7///7///7///7///7///7///7///7 + ///7///8///+///////////////////////////////////////////////9/v/9/v/9/v/9/v/9/v/8 + /v/8///8///8///7///9/////f3//Pz//v3//v3//v7+///8//77//35//z5//z3//v1//v0/v32/v37 + /f3++/3/+v3/+/7/+fr/9fX/9fH/+fL//Pb//Pv//P3//v7+/v79///9///7///8///TycaKfXqVhoGo + lpLBranNvbvVycng1Nbq3+Hv5uj17u/38fL48/T79/n9+/z9/P37/P38/fr7/vr5//n4//n3//n2//r2 + //zz//rz//rz//vy//v2//v7//78//38//77//77/vz7/vz8//38/v38/v37/vz8/v38/vz8/vz8//38 + //38//36//36//34//z4//z5//35//36//76//74/fz6/v37///6//76//76//76//76/v36/v76/v78 + /v78/v79///9///9///8///7/v77/v77/v77/v77/f39/v7+/v7+/v7///////////////////////// + ///+/v78/v75/f77///7///5/f74/f75/v/5///5///4/f73/f36/v/7+v/++//9+v78+fz+/f7+/v3+ + /vr+/vj9//j9//f6/vT6+/D49uz07+fx6OPl19bTwcHIs7W5pKaumZmvm5u6qKXXycb48/P8+vv9+/v9 + /f36+/v6/v77///7///JwL1ZTUlSRD5WRD9XQj5XRD5gUEttXVh+bmmOf3mfkYusnpi8r6nPwrzcz8jl + 2tTp4tzt5eD17un79fD9+PP7+/X6/ff8/Pf4/vj0/vb0/vb2/vj5/vn7/vv7/vv7/fv7/fv8/fv6/Pn6 + /Pr6/Pr5+/n5+/j5+/n9//39/vv7/fv6/vv6/vv6/vv6//35//z3//v3/vz3/vz4//34/v33/fz5/v75 + //75/v74/v35/v75//75//76///7///8/v78/v78/v77/f38/f39/v79/v79/v79/v79/v79/v7+/v7+ + /v7+/v7+/v7+/v7+/v78/Pz9/f3+/v7+/v7+/v79///6///5///5///4/v32/v72/v32/v36/v/6/v/5 + /v34/f71+v/2+//3/P/6/P/+/f79+fn//vr/+vT+9+/38enq4tndzsLItamlkoeKdW53X11kS0xcQkVZ + QkVWQkRWREVUQ0FlV1W/tbX8+Pn++vv8+/v8/f37///7///7///NyMhlXl5YT09USUtQRUdTRkRSRT1S + QjpQQDhQQDlVRTtaST9iUEVqWEtuXE91Y1Z/a2GSeXehhYetk5S6o6PHs7HTwcDi0c3r3tr36+f88uz/ + 9u/8+PL7+fT//vv+/vv8/Pn8/Pn9/fn+/vv//vr++/j8+fb6+PX//vv//vv///v//vr//fr+/fr7/fn7 + /vr6//v5/vr5/fn5/vz5/v35/v36//75/v33/Pv4/f34/f34/f35/v34/v36/f39/v79/f38/Pz9/Pz+ + /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v79/f39/f3+/v7+/v7+/v78//73/fv2 + /fv3/fr4/vv5/vz7/vz8/vz7/fv7/fv9/vz8//7z/f/u+//w+v72/P78/Pv89vTv5uPXyMW6paCfiIWH + bGl0VlJsTEZeQDxbPz1aQEFSPEFSP0VURUlQREdUSUpORUJKQj2EeXjs4+X/+vv//v/7/Pz6/v76///7 + ///X3OSYnqqOlKOEipx5f5Jyd4Rwcnhra29jYWVcWFtWUFJXT09WS0lSRUJTRUFYSUNbSUZgRUtiQk1e + P0ldPUZkRUtuTlRyU1d3WVt/YGCKamqae3uijYunnJm1q6m/tbPKwL3Vy8jg1dPn3tvt4+Hy6ef07+32 + 8vD57+389PL9+Pb++ff/+vf/+/j++/j//fr//vr9/Pj9+/f7+/n7/Pz9/v7+///+/v7+/v79/v79/v7+ + /v7+/v7+/v7+/f3+/Pz++vv9+vr++vr++/z+/Pz+/Pz//P3+/P3//f3//f7+/f39/f39/f3///////// + ///8/Pz8/Pz8/Pz8/Pz9/f39/vz8/vv6/vn7/vn+//v+/vr+/fn//fr+/fn//Pn/+/f99/Xv7+3l6Obd + 39zKxsKpoJ2OgX9uXlxmU1NdR0lZQ0dZQUhZQkpZQkpZRk9cTllkW2Zwand1cXyCfoaMh4uNhoZvZWFU + R0JzZWXl2dv+9vf+/f35+vr6/v76///7///Q3u+YqcKKnr2Lo8aJoseHn8ONo8GLobyLnriLmrOHlKqD + jKB9g5V5e4x3doVua3pkYG9dWGhaVGNXT15SR1ZPQ1BQQUxUQ0pWQUdVPUJUPD5XPkBWQD9QPDtQOztT + Pj5aRUVkT09sWFdyXl16ZmWEcG+QfHuZhIOtl5a3oaDBrKvJtbTOvbzUxcTczMvj1tTp39zt5OHy6+j3 + 8PD69Pb89vj99vj+9/j/+fv//P3/+/3/+/z++fv9+fr9+fr//P3//f7//f7//P3/+vv/+vv/+/z//P3/ + /P3//f7//v/+/f79/f39/f3+/v79/f3+/v7+/v7+/v7+/v7+/v7+/v7//v3+/vn9/Pb+/Pb++/X79vH6 + 8ez57ejw4t7l1tLVw8DEsKuql4+MeG5xXVNbRz5TPzdTQDxSQUFTRUlTSFJXT11iXW9sbYF1e5KFj6aM + mrGQoLeUpLmXo7SepLCdmJ+Mfn9pUExfQj18aWno3+H++vv9+vv8/f33/Pv6///7///I3PKUrsyIps1/ + os90msl9otJ7oM96n8t9oMqCosuEn8eIoMaKocONnsGOnL6NmbuKmbeEmbJ8lal5kKN3i510hZZxfYxq + cYBna3hgYGtbWGJUUVlXTFNdS1FbR0xYRUpWQ0hVP0VVP0VVP0VUPEFSOz9VPkJZQkZbRUdfSEpfSUtg + SktlT1FsV1hzXl17aGeBb22CcW+HeHWLfXyPgoOajI6klZewoaO6rK3DtrfKvLzQwsLay8vh09Pj2Nfn + 3dvp4N/t5OPv5uTv5uXw5uXy6Ofy6Ofy6ejz6unz6+ry7e3x7u3x7Ozu6+rt6uns6Ofv6+nv6ujs5+Xn + 4+Dl4d3k3dra0s3RyMTHvLe8r6usnZmejImQfXqFbmt9ZGJyV1VpTElmRz5jQjVgQjdfRDxeSENhUVFr + Ymh1dH+BhpiFkaeGl7CDm7mAn76Fo8OEob+Iob2MoLiKlql5eYVkV1xjS0pkQDpzTkjCraz48fL//v/9 + +/z7/Pz6/v77///7///Q4/OcttKQsdWLsNmIr9qHrtiFqtWEqdSDqNODptGDpdCDpM+DpM2EpM2DosuD + osqCosl+osV9osR+osSAosSBosODosOFo8SGosOHocKHoMCHn8CKmreKkayEi6R/hJx4e5R1do1xcYdv + bIJrZ3tmYHNfV2taVGVUUl1RT1dTTVVVS1JWSU9XRkpWQ0VVQkNVREJVRkFSRUBTQ0BUQ0FWRENXREJY + REFZQkBZQT9bQT1dQT1eQT1eQj1dQjxZRjxbST9eTEJiUEZmU0tpVU5tWFFxWlR0XVZ4YFp5Ylx3ZGF0 + ZWR1ZGVzY2FwXlxvXFdwXFZuWlJpVUxkTkReSD5aQz1WQEBXQUNWQENUP0JXQENXQENXP0RaQEZcQUdg + RUtlS1BiUVRoX2FxbXF7fIWHjpyQnbCPo7mPpsGGocCDoMGFo8WHpMePqMqQosSOlbKIhptzZHJhSVJd + QUJmR0RtTEeTc2vVvLX89/X+/f3//v7//v7////+///+///+///R4/Oct9GQstSLsdiKsdiLsdmPst2O + sdyOsdyNsNuMr9qKrdiJrNeJrNeIq9aHqtWGqdSDqdGCqdCBqM6Bps2ApMt/o8t9och+oMh/oMh/n8eA + n8eBn8SCnsCFoMGJosKLo8SPpcOPor+OoLuNnbeLmbOIla+Fk62AjqR8ip96hJl6f5R4eo13dYZ0cIBx + bHtraHNlZG1fXmdcWWNcVmFZUl9WTllRSFNPRE9RRE5SRU1URExVRE1WREtVREpVRUlWREhVQ0hUQkdT + QEZTQEZVQUZVQEdVQEZVQEZVP0dUP0VUP0VVQEdWQUVVQERUPkJWQERXQURZQ0VbREZcREZZREVSQEJV + Q0ZWR0tXSU9YTFZeU2BkWmpoYHNvZ3x8dIuEgZiBiaKDlbCKnrqMob+LocGLosOLocKQpcWVqMaarMea + q8OTnriHiqZxb4dfVmlYSFNVPUJaQD9oTkmGb2m2pZ3s4dn69vH9/fv9/f3+/v7+/v7///////////// + ///R4/Oct9GQstSLsdiKsdiKsNiMr9qMr9qMr9qMr9qMr9qNsNuNsNuNsNuMr9qMr9qLrtmNs9uNtNuM + s9qMsNiKrtaKrtaLrtaLrNSKqtOHqNGHp9CCp89+qM59p818pct7pMd9pMZ9osR+o8KAo8KBpMKDpMGE + pMKGosOGoMOHocKLocONocKNocGPosGOn76MnbqLnLiJmbWIlrSKlrWIk7KGka+DjauAiad+h6N8hKB6 + gpx3fph0e5VzeJFxcIlwb4dubIRraoJpZ4BnZX5kYntjYXpiX3lgXnZfXXViXm9nYG1oYW9pY3JoY3Jn + YnRpZnlqZ3xtan9wbINwboZ0c4WCgouGh4+JjJeKj56Mk6aLla2IlrGImbmJm76InMGGnMV+nMp7nc59 + ns2Bn8yIosyRpcuZpsWbor2cnLCRi5l4bnlgUVtYRVFWQ0tZRUpeSkp0YVyWhn7Fu7Pq5t3y9+/2/vvy + /fr5/fz9/f3+/v7+/v7////////////////R4/Oct9GQstSLsdiKsdiKsNiMr9qMr9qMr9qNsNuNsNuN + sNuNsNuMr9qMr9qMr9qMr9qLstmLstmLstmNsdmMsNiMsNiQs9uPstqOsdmNsNiNsNiHsdqDstyCsduC + sNqCsNiDsNeDsNaDsdSCr9J/rM9/q81/qsyDp82DpMyDpMyDpcyCpMuAo8p/oMeAn8eCoMmEocuFocqD + nseDnseFnceFnciFnceEncWGn8eGn8aFoMWGn8SGn8SGn8OLo8aMo8WLo8WLpMWKo8SLpcaMpcaLpcaM + psaLpcaLpcWLpb+OpbqOpbuNpr6Lpr+LpsKHo8OHosSHo8eHo8qFosqHo8SJormMpLmJoruHoLuIoL6H + ocGEoMOCoMaBociAost+oMuCo9SGptiMqdiQqNOOocaNmLiCgppxaXlgUFhcRkdeQ0NiRUJiSURvV1GJ + dm2snZHg1cf59Of8/vT5/vfw/Pjs/Pvu/P34/v39/f3+/v7+/v7////////////////R4/Oct9GQstSL + sdiKsdiKr9iMr9qMr9qMr9qMr9qLrtmMr9qMr9qMr9qNsNuNsNuNsNuKsdiKsdiMsdmNsdmOstqOstqK + rtaLr9eMr9eNsNiNsdmLsduHr92Ir92Jsd6Jsd2Kst2IsdqHsNmIsdiHsdeHsdeIsdaOsdaNr9SMr9SK + sNSIsNOFrtKFrdKFq9KGqtKHqdSHp9OHpdGIpdCHptKIp9KHptCFps+CpM2BpMuBpMuAo8qAo8qAo8p8 + osV9osZ8o8Z9pMZ9pcd8pMZ6o8V5o8V6pMV6pcV5pMV8o8N/osF/osF+osR+osV+ocd9oMh9n8t9oM19 + oM58ns97oM59pc2Aps2BpsyCpcqHp8mOq82Src2RrMmTrcqVrsqUrMedrMiTnbeBh6Fuc4hgYnRZVWNS + R1FRQkZVQEBhRkNyVlCIcGeklIjLwLLo4dP38+P8++z8/vH3/fP3/vj4//73/f/0+v36/P79/f3+/v7+ + /v7////////////////R4/Oct9GQstSLsdiKsdiKr9iLrtmLrtmLrtmKrdiKrdiLrtmLrtmLrtmMr9qM + r9qMr9qKsNiKsNiLr9iLr9iMsNiMsNiLsNiLsNiMsNiMsNiMsNiMr9qOrtuOrtuPrtuOrtuOrtuNr9qM + sNmMsNmMsNiMsNiNsdeSs9aSs9SPstOPtdWMtNOKs9OLtNWKstWMsdaNsNiMrtmOrteOrteOr9iNrteM + rteKrdWKrtaIr9WIr9WIr9aFrtWHrtSKsNWKsNSIr9KGrtCGrc+Ers+HsdKHsdGFsdGDsM+Crs6CrNGF + q9WHrNWHq9WJq9WLrNeOrdiQrdmRrtmSrNmTq9qNq9mHrNyIr92MrtmRr9aYrtCdrsqfq8KdpbaWnKmC + h5Fzc3tnXWBiUE5cSklcSUhaSUdXR0RgUEtxYVyPgHqzop3cy8Tw7eX49uv9/fD4/O/4/vL3/vL4/vX7 + //n9/vv9/Pz//P/++f3+/P79/f3+/v7+/v7////////////////S4/OeudORs9WLsdeKsdiLsdmMr9qM + r9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qNsNuNsNuMr9qMr9qKr9mJr9mKsNqKsNqKsNqKsNqK + sNqNr9qPr9mQrtmPr9mOsNmPr9mOsNiNsdeNsdeMsdeMsdeMsdeLr9SNstaKsdOMtNWLstGOtdONs9WM + stWLsNaLr9iLr9qNsNmNsNmNsNmMr9iKr9iJsNiIr9iGsNmHsNmHsNqFsNqJsNmSr9iTrteTr9eTr9eU + sdeUsteTsdWTsdWTstSSs9WQsdSKr9eJstyMs92MsdqNrtWRr9SXsNSYsNGcsdGis9OistGer86csdOX + qcyPnLuRmbWKiaF/eot1a3hmWV9hUlVVRkVWRUFfRDtnRjttTkN6XlSQeG+plo7Kvrbf2NHy8Or5+/f6 + /fr4+/n6//36/vz4//v3//v2//r4//v6//z+//z//f7//P///P///v////////////////////////// + ///S4/OeudORs9WLsdeKsdiLsdmMr9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qMr9qNsNuNsNuM + r9qMr9qLsNqKsNqKsNqJsNqJsNqJsNqJsNqJsNiKsdaKsdeJsdeIstaIsdeIstaIstaHstaGstaGstaF + steJtN+Hsd2Js92KstmKr9SRs9iOsdaOsNaMr9eKrtmHrdqKrtuNsNuNsNyMsdyMst2Lsd2Ksd6Isd6H + sd6Hsd+Hsd+Isd2QsN2Sr9uRrtqQrtiOrNaRrteVstqRr9aRr9WSsdWSsdWLsNSHsNSJsdOOs9OTtNKX + tM+gudCes8aarL2YprWRnKqJj5x6doNvZ3NmWWVgT1heSVJgSE9cQkdaQEJdQ0ViTEtpVFGEa2qskpLI + srDgzcvx49/47Oj89/L8/Pj3/fry/Pnx/vv1+/z9+v/9+v/8/P75/f74/v34//75//76//78/v39/v3+ + /v7////////////////////////////////S4/OeudORs9WLsdeKsdiLsdmMr9qMr9qMr9qMr9qMr9qM + r9qMr9qMr9qMr9qMr9qMr9qNsNuMr9qMr9qMr9qLsNqKsNuJsNqIsNqIsNqHsNqHsNqFsdmDs9aEsteD + s9eDs9eDs9eDs9eDs9eCs9eCs9eCs9eBstmCsuF9qdmKsd6RsNqVrtWZrtGcsNKbsdOastaWs9iSs9qS + sNiTrtWSr9WRr9WRrtWPrdaPrdaNrtaOrtiOrtiOrtmOr9mLrNWNrteQsteTs9mWtdmWtNaUsNKWstSZ + tdWXstKRq8qUrMaVqL+QobWJmauAjJt3gY5tcnxlaG5eXWFVU1ROSEpNQj9aRT1dQzliQz1kQz1kQDxr + RkSIZWOtjY25oaHWwsP25uj+8vj/+P//+v7/9/z++vz//v7+/fz7/fz4/fv0/Pzz/f31+fz/+f//+v// + +v/++//9/f/8/v/6/v/4//72//32//33//38///////////////////////////////S4/OeudORs9WL + sdeKsdiLsdmLrtmLrtmLrtmLrtmLrtmMr9qMr9qMr9qMr9qMr9qMr9qMr9uMr9uMr9uMr9uMsNyLsNyI + r9uIr9uHr9uGsNuGsNuFsNqDstmEsdmFsdmFsdmFsdqFsdqFsdqFsdqGsNqFsdqFsduDrtmLsduNq9J2 + h6p8g6KJiaSTkaqWl6+YoLeXp76Xq8KbrcWfrsefrceerseersidrcmgr8ygsM2ersuaq8qYqciWqMaU + qsaTqsSPpb6Ln7iGmrGBlKl8jaF5iJt2hJZvfI9qdYZtbHlsYWtjVl9dT1ZZSlBXR0xWRUdXQ0RYQ0Jb + RUJgSUZkTkhwWk6AaFxyVUtjQzloRDx+WlSif3q4m5e2oZ23pKG0pKGvpaWro6Wxqam6sbHEubjTy8js + 5eD48+78/Pn4+Pj4+Pn6+vz9/P3+/P3//P7//f7//f7//f7+/v76/v74//70//31//78//////////// + ///////////////////S4/OeudORs9WLsdeKsdiLsdmLrtmLrtmLrtmLrtmLrtmMr9qMr9qMr9qMr9qM + r9qMr9qLrtqLrtqMr9uLr9uLsNyLsNyIr9uHsNuGsNuGsNuFsNuIsNuLr9uLr9uMrtuMrtuMrtyNrdyO + rdyOrdyPrdyPrdyQrtuSstSct9SCk6xGR1xKP09XQk5hSVJhTlReUlZYVFhQVFdWV1xdWmFgXWNkYGZn + ZGtqZ25pZW5nY2xlYWpiXWlfWmZeWWVaU19bVV9bVF1bUlpaT1VaTVJaS1BYR0pWREdXQ0RVQUJWQkBW + Qz1XQj1ZRkBiT0pqV1N2Y1+DcW2Ug36qmpXDs6/Yy8jo4t/u6ufRwb6Qe3dkSkRhRD1lRj9jRjtmSz1n + Tj9iSjteSjldTTpgTjtiTz1mUUBrWEdxYFOJeG6zo5/Wysnx5uj7/Pr2//f2//f6//r+//z///3//v3/ + /f7//f7+/v77/v76//7+///////////////////////////////S4/OeuNORs9WLsNmKsNuLsNuMr9qM + rtuMr9qLr9qLrtuLr9uJsNqJr9uJr9uJsNqJr9uMr9uNr9yNr9yNr9yMsN2Msd2Kr9uJr9uHsNuGr9uG + r9uJrtyMrN6Mrd6Nrd2OrdyOrdyPrtyQrtuRrtmRrtmRrtmRsNeWtNKZs85/kKhOU2dPSllSQ05SP0dV + QEVTQUZRQ0VMQkROQENTQURVQ0RXRUJYREBaRkFYRUBYRkFVREJWREVRQERUQUVXPz9ZQkFYRUFYRkBW + QzxdRz9jSUNrT0pwVFFzWlh2YF55aWWGeHGZi4WsnpjBtK7Nwr3e1dHw5+P99vP/+vf/+/j//f369/r4 + 9fj++vvj2tiTgnxeSD9fRTpjRDdkRTVhQzJlSzZfUC5gWC1hVyxfUytgUy1gUC5eTDBdSTRkTEJ7Y12u + lpXh19Lx9uv3/vb4/Pn8/v38/P7+/v3//fz//vv//vz//f/9+/7//v////////////////////////// + ///S4/Odt9OQsdWKr9qIr9uKsNyMr9uNr9uNsNuNsdyNsNyLr9uIrtmIrtqGrtqFr9mHrtqMr9yNr9yM + rtuMrtqMr9yMsNyLr9uKsNqJsNmIsNmIr9qIrtyJrN6Krd6Lrt6Lr9yMrtuMr9mMsNeMstWMstSNs9SO + tNSMr9GTtNSPq8qAlbN3hqB5gJd1d4tzbn9wZ3dwZHFrXWptW2hoUV5cQ0pYPz5dQTpjRTtnSz6AZVl/ + Z2B/amaCbnCJc3aSd3STfHaWiX6gmIqmnY62qJzBraTMubPRwL/Vy8zd3d/l5eXq6Ofv7ez18/L8+fj/ + /fz+/v3+/v3+/v3+/v3+/v3//f79+f3+/P7//v79+vbGvLRhUEZaQTVlRDdkQzRlRTV1W0Z9dkyAhUt+ + hEl7gEV5fURzdT9rZjphVTFfSzJgRTVpSkCAaWCxp5vn4d369fj9+//3+P35+fv9/fj9/fT+/ff//v79 + +v3//f/////////////////////////////S4/ScttOPsNWLr9qLsd2QtN2UtdqVttqWt9uYuN2Xud6Y + ut+Yu9+Xu9+Wu9+Vu9+Vu9+Rud2Out2Out2OudyMuNqMt9qLtdiLtNiKtNaKtNaLstaLsNaLrtiMr9qN + sdqNsdmOsdmNsNeMsNaNsdaOstaOstaQs9eQsNeQrtaSr9SXsNSZsNGdr8+jsc6irMaiqMGkqL+jp7yh + pryZnbJ9eIlfU1xZQkZgQD9tSkSujYXi0Mfv49zx5t/z6+f07O317O328O339u/7+vP9+PD/+vX/+vf/ + +Pf89/j5+vv8/f3+/v7+/v78/Pz8/Pz7+/v//////////////////////////P39+vz////+/frc08xo + Vk5bQjdmSTlmSjZdRS1mUjZ3aUSUjl+ZmWSPl1qPnlyJm1eGl1WEj1V2eEhlXDhcTDBYRjFeTzuQgHbe + z9D98ff89Pr+/P7+/vv9//j9/vj7/Pz9/P7//v/////////////////////////////R4fSdttKSstaQ + tN6UueSbv+afwuSgwuOgwuSgwuSgwuSfweOfweKgwOKfwOKfwOKeweKawuKYxOKaxeScxeWbw+ScwuOb + v+CbveCZu96YudyXt9qTttiNtNWOtdWOtNaOs9aOstWNsdeNsdeNsNmNsNmNr9iPr9mTr9yRrNmRrNeU + rtiWsNmWsNeXsNSVrtGVr9CXsdCWsc+TstCYttSSp8OAiKBuZXdYQ09dQ0hhREOTenTaycD79+z++e/+ + 9vn++Pz7/P7z9/n2+/37/fz//vz//fz//fz///3///z9/fz9/f3+/v7+/v7+/v7///////////////// + ///////////+///5+fr//v79+Pjo3NpwXFdeRTp4Xkt+ak5jVzNTSyRiTi94YkOLgViTmWGKoVqBpFOC + p1SAo1R/mVWEk1p4fk5fWzNbUS5jTjiFZ2DUt7n/8ff/9/r8+vn4/fj5//v4/f34/Pz9//////////// + ///////////////////Q4POettOWtNeYuOCbveagw+qfxOeewuaeweWdwOOdwOOewOOeweSgwOSgwOSg + wOSgweSevuGev+CgweKiwuWlwuamwuapw+qowumpwOmnvuimveihwOSbwuCYwN2VvNuSt9mOs9aLr9SK + rdWLrdiLrtqLrtqNrtySrdyVr96Trt2Pq9mNq9iMrNiKrdeKrteJsdiKs9mMtNqJs9mIstmLrdKPp8mO + mbd6e5NYUWBPQEdYR0Z9amLCsqX47+L++v349fz3+v/x+f3y/P73/f79/f7//P7//fz//vr+/fb+/fv+ + /v79/f38/Pz7+/v7+/v////////////////////+//77//z4+/r+///9+Prw5uaMdnNeRDp0XUeZjGmJ + iFhjZjRgTS5iRi9mWDV/g0+PpmCHrFuEr1iItF2Dq1mDo1qFnlyBjVRqaThaSiZqSDaFXFXfw8X/+Pn9 + /Pvz/fny/vr3//75//79///////////////////////////////U4vOjuNKas9SZtNmatdyZuN+Ttt+T + tN+TtN+TtN6Ts92SsduSsNqSsNqTr9qUr9qVsNmcs9uetNqetNmftNygtt6ftuKftuOguOWhueiju+yk + vO6hwOqew+aew+acwuWZv+OXveGUueCRt9+PtN6Nst6KsNyKr9qNrdmQr9uPr9uOsNyOsd6Msd6Isd2H + st2FsNuArtmArtiGrdmMrtuNr9uJrNeCpMyCoMJ8kq1faXtLSVNRP0BtUUyojIbm2tj8+fn6+/z4/P32 + /f/0+//5/f/8/f/+/f7+/vv///v//vz+/v7+/v7////+/v7+/v7////////////////////9//75//v5 + //z5/Pz/+/778/a6o6RkS0NeTTOQi2KcpmyImFl5c0llUzVVSydWVyhndDqAl1SRsGWJrF6GrVuHrl2C + qFeAoFSLn1x2dUBoTyxpQy+LZ1/Ywb769/X3//3v/fn2//35/v39//////////////////////////// + ///U4fGmt8+bsM6cs9Oes9Kds9Scs9iastaYsNSZrtObrtOcrdOarNGZqc6YqM2bqtCerdGerc6drc2d + rs6esdKes9actNiWstaUstiTs9qTtd2WueGXueKYueOcveecvuebv+ecwemcw+qYwOeTvOSRu+OLt96H + stmLstqLsNiMsdmMstqMstyLsNuGr9mHsNqHsNuHsNyIsNyPsNuTrdiQrtmMsd2ErtmAqNCFp8uClrNw + doxcT11VO0RlSkyOgHfVzsT79/L79/b8/v76/P73/P72+fz5+/38/v3+/vz+/v3////////////+/v7+ + /v7////////////////////9//35//r5//v5/Pz++///9/3Yx8pwWlNbTDN3dUqYpmmTqmSYpmx6fU5h + YTRSUSVRUSRjZDWDilWWpmqVrWqKrGCIsF6Erl2CpluGlFR9dEVoTi5jRjWNeXHk3tz6//7y/Pr3/fz5 + +/r+/v7+/v7////////////////////////Y4e+tus+ks8yfrsadqsKWoLWOlKmGiZ5+gZZ6fJF1dYpx + cIZubIJsaX9saX9wbIJ0cIV2dYZ6fIt/g5ODi5yIlKaOnbCUqryWrsKVssiVtcuWt82YtNWYsNuZsd+a + tOCat+Kau+OZveOYwOWYwuWVweSTweOTwuONudqMttmJs9eJstaJsdaKsdeMsNiMsNiMsNmNr9qOr9qU + sNiVsNaTr9eOrtmLrtqLrdqJqdOLosiPm76Dg6BjWnFLPUldUUV3alvKwLT69vD69PD8/Pr6/Pv6/f73 + /P34+/z5+/z8/f7////////////////////////////////////////9//77//r6//v7/v7+/P//+P/0 + 6OyRgHpVSTFcWzKKmF6Wr2qQrGaSq2mHl15paj9WTCtXSCpkVjZ6c0yVm2iWqmqOrGOJs2R+q1+Jp2KO + mF1zbUBaTTBcUD6nn5j18/L7/Pz5+/n8/Pr+/v7+/v7////////////////////////Y3uaNlaV3gJBh + aHldYnFaVl5aTVFWRklVREdWRUhTQURSQERUQkZVQUVWQkZYREhaRkhYQ0NbR0ZbSEhXSEdaTU5eVldg + Xl9naGt1e3yCjI+TnaKcp7qcqMycqdGfr9adstactNebt9qbvd6cwuKaxOOWw+GUwd+UwuGRv96NudqK + tNWIsdOKsNOPsdePsNeQr9aSrteTrteRsdaQsdWQsdaSrtiTrdmWrNqZrNuWp9OUpM2TosZ5iKhZYnZM + Rz9URzt3ZlvKtq357ub++/X8+fb6/Pv5/v72+/36/P/+/v////////////////////////////////// + //////////79//v6//35/v/7/P/++v//9/rHurRVSjVQTSpveEWTpmiOsmeLsWWQqmiQl2d7clBiTzVg + SjNbSy5uaEKOlGGYqGyLq2aErWaIrWaPqGaCj1ZeYDdORyxuYlba0c/++Pf//fz///3+/v7+/v7///// + ///////////////////DxMxRVV9ER1JBQUtGQklLPz9UPjpdRT9lTEZoUUpsU01uVVBwWFJwWFJwWFJw + WFJwV1FxU01xUElsS0VkRT9dQDpXPTdWQDlYQz1aR0JeTUdkU09jWmJnZnt+gZmTmbGcpb6hsMmgtc6Z + ss2Vs8+Xudadwt+exuOZxOOXw+OYwuKUvd2RuNqNs9aOsNSOrtWPrdSSrtWTsNeOsNeLsNaOr9eSrtiW + rdqYrdmZq9iartmTqdOLp86Eo8Z7la9nb3NQTElSREFuWFO/qqT37ub9/PT4+PL5/Pv7/f/7/P/+/f// + //////////////////////////////////////////////38///6/v/4/f/7/P/++vzy7eh+dWRRSjBa + WTOCi1mRr2mHrWCKp2OZqXGZnHGGgl1kXDtXTixaUy5kYjh9f0+Ypm+SrW+NrGmHp2GMpmRue0dVUS5f + TTyrlpL56+v//f77/fz9/v7+/v7///////////////////////++vcJQUFZPTVNmYGN6cG+UhYKtmZTA + q6bOurXVw73gzsjm1M/n19Ho2NLn19Hk1M7k0szdyMPTvbjIsq2+pqKxl5Oih4ONcW16XlpmSkVfQz9f + Qz9cRURUR0lRSUxZU1lkZGx5fYmNlqecq8GkuNGfttKXstCVs9OUut2Xv+KawuWbw+aZwOSWu+CQtNqO + stiMsNaMsNaPsNeLr9qJrtqLrtqMr9qPr9qQsNiQr9eRsdiPsdeOsteJrtOFp8iFmq5ocH5SS1RPPD5m + UEy2o5vv593+/PX7+/f9/P39+/79+/7//////////////////////////////////////////////v/+ + /f/5/f/3/v/4/f/9/Pz+/PjIv7JmW0hTSS5pZkKEk1qUrWqVsG2QqWmQqGuQpmyFlGBkbDxSUylUTShh + VjV6ckuRlGSdrnKNrGiNrmeEmFtpaDxfSDJ8XVfl09T++Pn5/fz7/v3+/v7///////////////////// + ///f3d+7t7vKxsjh2tj16eT++vf89PX/+Pr/+/z/+vz/+/3+/P7+/P3//f7+/f7+/P39+vz6/f74/f73 + +/z5+vz69/j58/Xz6uzs3+Pf0NPLuryolZeNenV4ZlpeT0NUSD9LQz5IREVNTFVaXm1xeo6MmLGerMmf + sdGUsdaStdqVuuCZvuWcweidwumZveWTueCNtNuIsdiHstiKrtuMq92LrNyJrtuGsNqEs9iEtdiCsdOI + stWMstWMrtKOrtKIp8iNob56fZJeU15VQUNoU06djYTn39b/+/b8+/n9+/3//f////////////////// + ///////////////+///9///+/v///P/+/f/5/f/2/v/2/v/7/v///Pn37ua4qp9gUD9WSTJpZj6LlV+Y + rG+OrmmHsGWEsmOErWOIp2V1gU1dWTJdSy9oUTRxYjqEiVKNqGSJrmSPp2OAgVBnTzVqRz7Bo6P89Pb4 + /Pz8/v7+/v7////////////////////////9/P37+vv//v7//v3//Pr//v3//////v///////v///f/+ + /f/+/v///v/+/v/+///9/v/5/v/4///5/v/7/v/9/v///////v/+/P3//P3/+/379vfz7uvj2tO9squW + jIVyaWJSSUZGPj1DPD9MREtfVmF9dISalqmfrsuZs9aPs9eMt92VvuafwOykv+yfu+SYu9+GtdZ6tdGF + s9WPrtiQsNuMrtiJr9iLstqIsdiIsNaLsteMsteMsNSNsdaHrdWJqM6On71/gJZmV2ZVO0BkRkekjInw + 5uH3+vPu+fP6/P3//P/+/P/+/f/8/f7+/v7//v7//v7+//76//73///4/v/+/P/+/f/7/v/5/v/4/v/6 + /fz+/fz++fX16uaSf3lVQTdfTTdwaUWOlmeSrXCEr2SEuGV7r1yJsmaSqWqIi1pwZD9dSiZaTSFobzWK + p1+Ls2SPrGWPmGJpWDhlRTmSdHD+9fX9+/r+//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9+/v9+fr//vz8+fXp49/Lw7ylmpR3aGNdTElUQEFUPkFhTVR4boKQla2XrMiN + sdCLtNaNtNubveWlxOyewOWWwOKJvNmGstKNsdSQsdeQsNmPsNmPrtqOr9qOr9qNsNmMsNiMsdeLsdiK + sNyJr9mMrM6SpMKHiKBvXW1fQ01gQ0aTgH3d2dD0/fP7/fr99/38+f719fn8/v74+Pn+/f3//v3+/v76 + /v72///3/v/9/P/+/f/9/v/7/v/6//77/v7+/v7//f3++vno2tqXgX9mSUJbQzFnWz59g1WMpGeKrWaJ + s2SHrGGOqmabq3GWnWx/fU9mZjVrfD6CpVuDr16JrWOUpmxzbkleSjhyXFPw4tz++fX///7///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////f7//Pr/+/j//fj/+/T58erf + 1tG9r6yMe3tfTE5TPkNZPUtkTV55dIeRo7iUtcyHs8+HttaNu96aweahweqgu+WYtt2Qs9iNsdeOsdiO + sduNrtqNrtuNrtuNr9qMr9mMsNiMsNiNsNuJrteIrdKPsdCPpb6Ei55mXmxUQUpXQUWFdXHo3db9+PX8 + 9/j+/fz7/fz3+vv4+fr+/f///f///f///f/9/v79/v7+/P7+/f/9///7/v/5//75/v35+/v//v769PT9 + +Pns3t2niohoSUFcRDNkVjdyb0OKkluTpGaYrm2VrW6Pp2uPpm6To3CRmWiLo2aKsGiEsWOJrmaVqW98 + fVZUSjRZT0HRzsP6/PX+//7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////f3/+vv//fz//vv//vr/+/b/+/X//fj89fLv5uXDubmHdnlsSU1lQEZbQklkXWZ/ipeTs8SLuM6G + tdGPuN2fuueruu2kvOiVut6NstiLsNeMsduNsNyMrtyMrtyMr9uNrtuNr9qNsNmRsNuMsdmFsteDtNaC + sM6Fpr+ClKlgXm1VRE5WPECdgX/p29X8+/X19vH6/Pr5/Pz5+/z8/f/+/f///P///P///f7//f7//P7+ + /f/9///7/v/5//74/v33+/v7/Pr9/fz/+fn++Pj26+2rk5VzWlVfRThjSjNrVzZ+cUeEf1GPlmOSpW+N + p3CQo3GZonWXqXOPq22MrGmTq2udqHOKhmFcUTlUSzq6va73/vL9//z///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////P3++/r++/n+/Pj+/fn//vn+/vr6+PX8+Pb8+vrv + 5ubDqqmHZmVnSEhZQkNZTVF2fYSQpbSZt86QsdOateGlu+2gveqbwOSQt92LstuJsNuLsd2Lr92Lrt2M + rtyNrtuOrtuQr9qSr9eOsdmEtNp+tdt5s9d+sNCNrsmDj6RnYG9WP0dkREeRfnjk39T9+/P9/Pf8+/v4 + +/z7/P/8/P/+/P///P///P7//P7//P7+/f/9///7/v/5//71+/r4/f34+/n7+/v9+/r7+fn8/P318/TS + xcWNd3NyVUtkQzVhQy1kTjFrYTxsbUJqdUd0elB9eld8f1d7g1N6hVGAglGHgFZ7aEphTDZWRzeyrqH6 + /fL+//z///////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////v3//v3/ + /v39/Pr+/Pr//vz+/fv7+vn+/fz6/Pr8+vn79vPk1tKjjYhsUExgQ0FdRkh1aHCdnrCgss2QrtGPt9+Y + weicxOeXvuSPt96IsNqIr9uKrt6Lrt2MrtyNrtyOrtuRrtqSsNePsdmGstt7sdx4sdx/tNyCq86Op8KK + kKNoXmtXQkhWRkGXjYHu5t3++PP9+fn6+f35/f/4/f/6/v/+/v///f7//f3//f3+/v79///7//75//72 + /fz3/f32/Pv3+/v9/v75/Pvy+/vu+fn3+vrp4ODCrK2VdnVyUEtkRTlcQy9aRy5XSy1dUDNeSzVbTDJb + UDJcUC9gTS5pTjNnRjFoRzlcQjixopv/+vX///7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////7///7////+/f3+/v3+/v78/v79///9//77/v37//74/Pz3+fjz8OvF + ta+IbGdpQkBrQkZ4XGaWlaaXscd+ssuLu9qZwOKaweWVvOKOtN6HrtqIr9yJr9yMr92NrtyOrtuQr9uP + sNeNsNiIsNqDr92Ar9+Csd6Er9iLrc2RqMCHlKVcXmlOR0ZfTkeejIfs3dv/+Pr++vz6/f/z/f70///3 + /v78/v/9/Pz////////9///8///6///6///5//75//75//76//75/v30/vvy//r2/vz7/f789fjz5erT + vsK0nZ6VfHiEaWFzW05mT0NlUEVlUERmUEVpUERtUEJxUEVxUEVrTUVsUk/NvLz/+Pn//v////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////7///7////9/v79/v78/v78 + /v79///7//77//76///0+v70/f7z+/r3+PLe0suigX12SUhmPUFlU1yBjpmVvsyJs8qXudqcv+Gfw+eV + vOOMs96Ir9uJr9uLr9yNrtyPrtuPrtqMsNmMsNmNr9uOrt2Mrd+Krt6Jr9yNtNiMsc+LrMN2jqFcYGlS + Q0VWQkSchYjy5+r++Pr7/f7z/v3x///y/v73/v/9///////////9///8///7///6///5//75//75//75 + //76//76//f5//X7//j7//76/f/4+f36+f768/n16u3s3uDg0tLXycjTysXUycjUycjWyMjXyMfcycbZ + xsLbzMnbzs727/H8+P3+/f7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////7///7+///8/v78/v/8/v/8/v/9///8//77//78///7+/74/v/s+fjs+/b3+/Xr4Nmri4do + RkdcREhaVluJnqWeucuZttOauNmiw+WdweeTuOKKsNuIrtqKr9uOr9yQrtuOrtqJr9uMrtuRrdyUrNyU + rN2PrNyIrdmHstmDsNGFsc6FqcKDkqReV2NUQ05dREywmp717Oz+/vr1//vx//3y///0/P36/f/+///+ + //79//78//78///7///6//77/v/7/v/6/v/8/v///ff//fT//ff+/v36///2/f/y+//0+//0+P719vz8 + +v79/f35/fn6+/z6+v77+f/7+f79/Pz6+fb9/vr7/vz5+/719fz8/f7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////+///9//39//79///8/v/8/f/8/f/8/v///v////7+//3/ + //3//P77+v73/f71///1/fr49/T67+23o6NmUFNUQUZeVFuQl6adss2ZsdCeutuixOecweiRt96LsdqJ + rtmNr9qQr9qNrtmGsNuKrtySrdyWrNyVrduQsNqJstqFtNqDsteJtdiNstWNqMaDjqZaVmpXRFFfR0ql + k4/w6+L5/vXx/Pb4//76+//+/f/+//79//79//79//7+///+///9/v7+/f/+/f/9/v/+/f///v7//Pv/ + /Pv//f39/v75/v7z+/z1/f32/v73///1/P71/Pr4//r5/v75/f/5+//3/f/z/fzz//rz//fx+vb5/f79 + /P///v////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+//78//38//79 + ///8/v/8/f/9/P/9/f///v////////3///38+vj///78/Pv6+vv8/f76+vr8+frx6uynlZpbQ0pdQUxr + ZHWLm7Wcs8+ctdWhweKfxOiXveOPtdyLr9iNr9iRsdqPsNuHr9yKrtyRrdyUrduTr9iMsdiFsteCstiE + sdiMsduUsNyMq9KOp8iCiaNhVWVSO0BhTUi8s6fy8+f4/fX9//7/+v//+//+//79//39//3+//7///// + /////v7//f///P///P/+/P/7/f/4/v/5/f78///+///9/fz4+/n6+/j7/Pn6/fr5/vv5/vj7//X7/vn7 + +/76+f/2+//x+vn0/vj2//b5/vj+/P3/9/3//f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+///8//79//79///8/v/8/f/9/f/+/f///v////////7///39/fn+/Pn//vz+ + /f3//P3//v/+/P3++fzs3+SiipJePklRQU9xd4qgsMibss+XutmaweOdwOWatt6VrdeSr9iMsdyHst2J + r9yLrd2Nrt2NrtyMrtmMsdiJsdWLtNiJsNeLrdmQrt6MsNyFqM6TpcWGh59bUFtSQkNjVEzDu67z8OT/ + /fr/+v3+/P7+//39//z9//z+//3+//7+/v3+//3+/v7//f7//f79/f71/f/x/P/1/P/7/v/+/v///v3/ + +/j//fr//fv+/vz+/v3+/vr///f+/fr//P3/+//7/P34/vn4/vX4/PL+//n//P//+f7//f////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////9///8///7///7/v78/f3//v//+vz+8vW4oqZhS05TQkdvbXqessWL + tM+IudiWudykr9Wqps6RmL+LrdGAsdONs9aMr9iIq9yLruWOruSOq9qUr9aVr9KRsdSLsdmDrNuFrdeM + sdaMrdWPqdGGk7VqaX9WSE1VQjyYh3vw6d75+vT6/vz8/Pj9/vr4/fj4/vr5//z4//z4//v6//z6//38 + //z7//z5/f75/v77//77//77//76/vv3+vj8/fz9/fz+/f38+/35+Pr6+f3//v////39/vn9/vj9//j+ + //n+//3+/v/+/P/++////v////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////9///8///6///6///4+vr9 + /f39+Pn9+fvr3eCNeHpYQkdbUl6IlKaOtc2Et9OGss+ZrcxubYtbWHJxepGSrMGJscuMstWUsuCSq+CQ + qd+RseCOtN2KtNaMstWRsNiUrdyPrNaPsteOsNeSr9eXrM6Jk6xjX2pPQ0NYSkKuo5r28Or+/Pn+/v39 + /vz9//37//74/vz3/v33//74///3/f72+/z4/f7y/fru/vjw/vjz/vf0//f2/vX3/fX7//b8/fb9/fj/ + /fn8+vj6+fn8+/r9/vz9/fr7/vr6/vr6/vv7//77///7/v/7/f/+//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////9///8///6///6///3/Pz9/f3+/Pz99/j99PXPvr5qUVNWQk1nZXaUr8aHt9CCtM6Kq8NS + WG1JPUxZSlN0dHqQrr6Ss82TrdKVqtqYs+WXu+qSvueLud2LsteUrdefrtubsdiQsNSOsNeRs92RrdWT + qMiEjaBeXGNORENjVU+2p6L69PH9+/r5+Pf7+/v7/v/5/f74/v76///3/P/2+f73+v75/f/1/v30/fr0 + //n3//f3/PP2+e/z8uby7OPy6OH16+X48u36+PL8+/f9/Pj5+PX7+/n+///8/f75/f76/v/5///3///3 + ///8//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////9///8///6///4/v72/fz6/v37/v3//v7++vr3 + 7euYgX9ZPkVcTFqLlq2Ptc+Dtc+LscuHlqpfU19aQkVZR0hqcnyVprmdsc+TrdOXt+KWvemWwOqUvOOS + tdyWr9earteZsNWSr9KPstmNst2IrdeSsteUq8V9hpdUUllQQkFsV1LQvbn79PP//f3//Pz//f3+///9 + ///8/f/6+/78+//+/P/9+f349vn38/Px6une1tLAtrCpnJWXhn+PfHSKcmySeXOkiYSvnZbEvLDj39X1 + 8ev++fj//P3++/79/P/8/v/6///2//72//z8//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////9///8 + ///6///5///1/fz5//74/Pz4+vn9/f3/+vXNvbdqS05YPEd7doqXr8uGstGJs9KZssyPjp9rW2JUQENT + RlBnZnWToLeYss+OsNOUuuKbv+qfwOmcvOSWtd2SstaRrtGWs9WRtNqGrtiFr9uIsduOr9GWqcN7gJBY + S1FaREOCaWbTwb/36+n/9/X/+vj///z//vz//P3++/z//f7++Pr36u7cy826o6OSeXhwWVRjS0RgRz1f + RjtfRTlfRDhgRDpiRDxeSTtfVUByaVeckobTycT78fP/+f3/+////f/9//75//z4//v9//7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////9///8///6///6///6///6///6///6//76//37//fu6t2Lb2lhO0Bv + V2mgpcKTsdiKst6QsdqdsM6TnK9jYGxXQExUQU5jXW2aobaescuXtNWau+CavuWYv+WYwOWOt9mQstST + sdOMsNSFrteBr9qBsNyJsduMqc2ap8J2cYBXRkxbQ0JoUk17ZmGijonDsavezsjz5uD58erq4drXxcCy + nZmAamVtUkhjRjZdRDBiSjRnUjhmVDdqXDxrYT5qYT9oYT5jXTtdVjNXTyxUSixXSTNgT0KjkIrd0dD9 + 8PL/+vv++/r9/fr5+/b+/v3///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////9///8///7///7///7///7 + ///7///6//76//32//f3+O2qk4ptRUdnSFeXk7CYr9mHrd+Gq96PrtiVs9GLnbFtYG5XQU1bRFJ1ZHOb + lqmmtc6SstCNuduUw+aYxeeZwOKWuNuRstaMsNSIsdeFsdyCsNyHsd+Lrdeds9WUmLB0a3pVQUZYQDxd + RT9fSUJkT0dzX1aMd22diH6JcmhsU0ljSD5fQzZiSjFmVDBsXTZ3bUGCfUyIiFSLklmKlluFllmDlVh+ + k1V+iVJ9ektpYjhfVDNXRy9dSzt+a2HOvLj57+v//Pn++vf9+/f///7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////+///9///9///9///8///8///8///8///7//77/v70/vr4/PXRvLVyTk1hQ02JhJ2ZrtaHqt+G + rOWEqtyHsNaQss2SlqVfTVllQ01iOUN0VmKfm62ds8uKtdSIuNmWweOjxOefwOSUuNyNstWMstWLs9qH + sd2HsOGHrN2QrNmcq8yQk6tkWmZaRUVYQT1WQDxlT0pZRDxfST5fRzxkSj5nSTxlRTdnSDVmUzF4cT+M + iVSTl1yTm1yQn1uHnVWGoVV+oFF8oVJ9pFSDnlaMllqQkluCgE9vZz9dUDJYSDFuXk66q6H27+n/+fb/ + +vn///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////9///9///9///9///+///+///+///////+///+/v79/v74 + //7z9/Tm1tF0VlJaR0t1eImUrc+EqduKr+eKsOKIs9qOtdKaqLtgWGRbO0FtQENnPUJ1Y22QlamXtdKP + ttaTuNuiv+Wgw+qXvuSRt9mQstSPsdWNsNqIsOGIr+OJqt2UrdabrM2DhJhjUllYRUZkUVGKdnWWg3+A + amNsVEtXPDBlRzliQTNrSzllUjFnXzNuazp2dkGBh0yLlleOn1qSqF+Pql+MqV6JqF6JpFqNoVyOn1yS + m16OkltxbT9aUS1YTDNuYVHHurH99/b/+fr///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////9///9///9///+ + /////////////////////////v7//v78/f/38/jv4uOAaWVPRkZbanWPr8uIrNmMrOGMrdyNstiQs9CV + pbtcWmhXQURqRkNpQj9iREppW2uPlrKbr9GVsdaZt96YvueWwOiZv+GauNiVstOQr9eIrd2FrOKIreOM + rNuWsNiYoryAdYBZSU9YSU2AcHLg0tHp3trBrKZiRz5iRDlnRjlsTDxgSDJaSC1aSixeUS1jWjFnYzRx + cT2AgUuMkFiWnGOfpmyarGuSrmOQqmCRpl6UoV+Ok1t3dkhbVTNUTDdvZFrc09L9+Pv//f7///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v////////7///7///3///3/ + //3///3//v7//v/////9/v79//79//7///7+/////////////v///v///f7//f7++f789Pzx5+qQf3xJ + Q0BUYWeOq8OMr9mOrd2SrdiUsteVstKZpL9cWGhWRUWIb2Wfg3pfQkBZP0lqXHGPk66cr82UsNWPt9+V + v+ejxOmlvuCbtdaRr9WNs9+ErN6Kr+KMrt6OsduXsNGdobVyanhMPUVWRUaml5X47urx496Gb2hhRjxn + SzuMc12Fclp0ZEtnWDxgVDRcUC1ZTShaTyhfUy1kVTFuXj1/bk6Fg1WGl1eSpWGXrWWTqF+Pn12QnF9u + dERTUjJORjaUhoXp3+P//f/////////+/v7+/v7+/v7///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v/9/v/8/v78//z8//r9//f8/vX///j//fr/+/z/+f3/+/38/Pr+/vv+//z8//37/v38/v39/f3+ + /P3//P7//f//+/z/+/v+9vX38fOdj4xURT9gWl2PnbiSrtyNqtmZsdeWsNaYsNebocRkVGhkSUikjn/o + 3s+VhoFhTExTQUReWmKIkaCcq8qTsteUueKjvOWqv+WmweWTuNqKtNeMsdiRsNuSst2IsduEr9WSrs6T + ma9oWWJXQT9pWFC/s6z48OzArKhrU0pgSzV5bkuVl2qapXGNl2KFj1lyfEZscz9gYTRbVzBbUDJaSTJb + RTNgSzRiUzBybj+Rml6armiQrWCMqWB+lVVncEJUTTNlTknCqKv9+Pn///7///75+vj7+/v9/f3////+ + /v////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////v/+/v/9/f/9//39//v8//j7/vj7/fj4+vj7/Pv+/f7+ + +/3//v/9/v35/f33/Pz1+/v1/Pv4/v74/v36/v78//79/v3++vX/+vfz6+2cjYlYRT5fUlSNmLKTrtqO + q9iZsdWVsdWVsNeYosVjV2lgSESXiHjz8eXp4t2eiopbR0ZNRUVZWWOSk66erM+Xsdacud6fwOOdxOea + wuSTt9uUstmUrteQsNmKsduJsdqRsNWersmGgpJkVltTQUF3ZWTg0NDt4+CVhHpeTjtZTjB6ek+cqHGe + qnGXpWqTpGaPn2KLmF+AiFV0d0ppZ0BeWTZdVTJTTCVTVCSCj1KXr2iOrF+PrmGNpWGDjFpjWzxbQDSP + cXDt5OL8/fv+/v35+vj7+/r+/v7////+/v////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////v///v7+ + /v7+/v79/f37/fz8//75/v34/Pz4/v35/v3++v7/+f7/+/79/P77/f74/f34/v32/vr3//n3//n4/ff5 + 9u/p3NacjY5jT0taQzleUFCIkKmUrtiQrtiWstSRstOQsNWPosBcWGVcTEeckYPs7uT7/Pv36+2nkpBd + TkxLQUVeUGOVi6eiqsiUttGHutaPxOOaw+aivOSgtd+Xr9qOrdaNr9iRsdmUrtWWrtCWqMR0doxZR1hd + QUyWeX/25ePl29N6bWBcSztbUjN7fFCXm2uapGyXpmicrGybrmqYrGeXq2iSpmSJnFp8jVJwgEl2iE2N + o2KTr2iTr2aVrWeUomaam2yAclJlSjhhRTzEu7f6+/n+/v37+/r+/v76+vr////+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////7//v3//f///P/++//8+/38/f73/Pv2+/j2/fj0+PT67/P05Orp2t/j + 19vh2Nnf2Nfc2NXb19Pb2NHa19DZ1c3Etq+PeXRVQUJcQz5aQDZWRUSBiZ+VrteRsNmUstKOstKLsdOP + pr9cXGZSRj+XkYTu8+36/v//+fvw5OKnl5FhU1FWP0pqT2KSi5+at8qGvNGIv9uWvuCqv+iou+ectuCR + sNmQr9aUr9WZtNqOsNeOr9aImr5mXHpbPFBnRU3DsKz58uvIvbZwXldZSjdaUTB4c06SlWeYo2uZqmmW + rGWUr2KSr2CSsWCSsV6Oq2KOqmqOqWuNqGiRq2iWqmqZp2yZnWmXkWd+bk5nTTlgRjmRiYTx8fD+/v33 + +Pb+//7+/v7////+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////3///z//v3//f///P//+v//+v/+ + /P749fTr6eHKzMCop5mbiH+SeHCBaGF6Ylt4YFl2Xlh0XFVzW1V2XFZ3XFd2WlVsT0pgREBiSkx1WFJi + QzdfTEiBhpuVr9WRs9qQs9GKstKIsNGPpLtgXGZaSUWTjILp8O30/P/59vr+/Pjt596nmpJlS01cOkJs + VmOEjpqOsMGPuNGWuNmkvualv+mfvueUuN+SsteTsNKRstSIsNiGsN2PrNqIiK9gSmRiREx7ZWDWx7/3 + 8ezIurl6aV9XSTRaTzRoZEGFiFuQmmSUpWaYrWeUrWKSrF6Vr2GTrmaQq22PqGyQpGyPnGeMkWCCgVZy + akVkVjhfTjVaRTFYRTaBe3Xq6+n+/v39/fz+/v3+/v7////+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+//38/fn+//v9+/v++fz/+f7+9Pnl29q4q6WCeGlgWERZUDdeTzJeSy1eSS5jSjNoSzhoRzhmQjZo + QDlrPzttPzxtPz1oQT5qTEmmj4/IrKR5WUtYQz58gZSXsNWQstiRs9GJstGJsdKUprxfVV9gSUeajYXt + 8vDy/P/4+v7+/vr9/PD17+OkjopsTU9cQEVlWGGOkqGfssiYs9CavN6bweadxOmavuOVt9uRtNWNtdOG + sdaGsd6Fp9iXps54dI1ZR05iSEKSfnTx5+L89/fXy8d8a2FaTDxSSzNSUDFjZT16gVGHkFuPmmGSnmKW + oWOSnmSKmGOFkWCAhlpsa0VdVTRbTjNcSzVaSTdhUD9tXk+IfG/Gwrz6+/n9/fz+//3+/v3+/v7////+ + /v////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+/v79/vz5/Pb8/fj49PL89/fz5+e8qqeCb2ZjUEFZSTJWSCpc + Ui1eXCpnZTBwajp0aD14ZUF/ZEd9XEZzSTtuPjZzPztxPDtsQ0CTdXPy4OHmz8d2WElZRj95fpCXsNWP + sNWTtNKJsdGMstSZpb1oVWJmRkafioXy8vD0/f/x+Pv7/vr1++76/PDq39qkj4tkSEhePENzVmWgma2h + ssqNtdGOvNuXw+WexOeZvuGQuNeKutSHs9WKr9yNr96PrNONnbRoZW1ZQT1oTkfEtK/9+vn++fjc0Myh + k41lWk5QSDdNRzJRTTNcVzpnYEFrY0JvZUJtZkFjYTldWTVcUTVZSjNbRjdeRzxvWVGRf3ewoprTysHt + 6OD7+vb7/Pr8/fv9/vz///7////////+/v////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////+/v77/Pn8/ff9/vb6 + +PLVzMSOfnNtWkpbSDFcSy1pWjV2aj6Efkt9kEt9lk+HmVaNlluPj1yMgll8aUlqTzdoRTVtRTtoPzll + RUCmjY3+8vTp1dB1WUpaRz91eIuWrtOPr9aTs9WLstaOs9iapL5qVWJsRUemiYX28fD1/f/x+/31//rz + //P1//L9+/jx6eWdh4VzR0xrOUR4WmqQkqOSsseNudKRu9mcweOfxOeUwd+JutWLtNSQsdmQs9uLs9aQ + sciHlqFaTVBXQD9+bGjf2tX89vL++Pj47evUysWdkotwZF5hVExbSkJZRT1eRz9gRj5aRTdZSTRgTjti + Tj9vWU+cg4DFra3j0NH15+f58PD9/Pr8/fn9/vv9/vz+//3+//3///7////////+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////+/v7+/vz//ff38+q+t6pxZ1NVSjBYTSxjWTF5c0OPjVeUl1yRm1qDoVd+oFaEoFuI + mlx6hU5oaTpbVC1TRiZpVj1zXEliSjpfSUGyoaL+9fjx39p9Y1ZVQj1ucYWXrdSTr9iWstWNsNeNsdmX + pMFnVGRtRUeqiYX38PD4/f/2/f/w/vfw/fX1/vj89vn++/ru5OGtiox6S1NjPkhiVV+Jl6SZtceVtM6V + tdagxOeawuaWweCVudqTstWQs9WJtdSLtc+VssZyc4NURk9bSEmbjIby6eX//fv++fj++vj48O7p4uLE + ubq0o6afi4+Wf4OVfICYgH+di4OunZTMvrnr3dv+8PH/9fj/+v3/+/37+vv2+vv2+/r8/v3///7///7/ + //7////////////+/v////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////+/v7//fv/9/LDua5wZlRVSzBbUy1uazyG + iVCQmlmKm1WHnlWMplyHo12OqGWNomJ2g0lbYi1OTh9XUyplXTiJf16FeVxdUDhcUEPDubj/+v3z5N97 + Y1dUQz5qboKXrNWWsNyWsdaPr9eMr9qQpMRgVWdoRUiqiYT38e76/P34/P70/fnu/PT2/vz/+f/8+vz6 + +vfr3tyihYZkQ0ZaP0VmW2WXnaylt86Zs9ObuuCevualxOufveKVttiPs9KJs9KLtNWStNSElbBgYXJR + PkRxVVLNu7b++vb++vf//Pv9+/vz7/D++Pn+9/n47fDy4+jy5Oj17O748O778O399fT//Pv8+Pf7+fn4 + 9/j4+vv7/v/2+/z2/Pz8//7///7///7///7////+/v7////+/v////////////////////////////// + ///////////////////////////////////////////////////////+///+///+///////////////+ + /v779fPJt7RkU0hURy9cVDB3d0SKklSLnVaKpVeJrVuItF+ErV6ZpmyNj1xucD1YVSNWUCBfWit6c0ec + lG2mnnl3bkxSSipza1re2tr79/v26eV9amBVRkJlaHyXq9KWsdyXsNiQr9qNsNyIpMVZVWhkRkioiYT3 + 8e78/P34+/35/vv4//r4/Pz/8///9//3+/n2+/by7OieiYZ0T09kP0ZrV2WKjKGestKYs9mbtOGnuuuk + v+mbwOCUu9ePs9OMsNeJr9qLrNGAjqheTVdnPz6Ea2Xq4tz+/Pf9+/b9/fr9/vz+/v35+vj7/Pr9/v39 + /vz59/X8+fn9/v37/Pv4/Pr4/fv3/fv4//z1/vv2/fz1+/rz+Pf7/vz+//3+//3+//3+/v7+/v7////+ + /v///////////////////////////////////////////////////////////////////v///f///f/+ + /v78//77//77//78/f/8/P7+/f7+/Pv+/PrYx8aAY2FaRTViWDd5e0ePmliNnlWXrWCTrF+Nq2CQs2mI + pWSAgVtsYkBcUipXThxmYSqChEmbomigpnGTkGVoWzpeRy+Zh3rx6+n7+Pv26+yAb2pTQkFmYXCcq8uU + r9qRsd2Lr9eQs9iMpMNcVmdjR0mhioP18e/8///7/f36/fj6//j8//r/+v//+P78/P7y+fb5/Pfo3tmt + jYt1SExhOUVnUmWTm7aUsM+NstuVteegv+ykweOjv92duNmNrNOLr9qPsNmYqMZ5bXxjP0JoQEO7pab3 + 8vD0/fjz/fb8/fr//f7+/f78/f34/v33//z7//z+/v77/Pz6/Pv6/v34/Pr3/fr6//75/v35/f38///7 + /v79//7+//7///7///7//////////////v////////////////////////////////////////////// + /////////////////////v///P///P/+/v78//z5//z5/v74+/36+Pz//f/89/bu496Te3VjRDpfUDVu + ckGInVmMrFyStWGRrmCVq2SbrW2Jml5teEVaUzpSRi5aUCx1cj2UmVmcq2SXqmSZqGx7e1BcTC90VEbH + sKb89/P++/337/OFdXZWQ0NnXGWiq8aSrNiKsOCGrtWQstKTpMBfV2ZiSEedioPz8u/5///8/v79//n7 + //X8//f//v7/+//++/73/Prz+vX9/Pb15N+shYdvP0poRFVjW3GJnLSLsdOGr92XuOSsxOmsv+KettqP + rtaNsNyPr9idr9CUkqZtV2BoP0iAX2XSzs3n+PDx/vf6+vb//P7//P/9/f/4/v/3//36//z9/v7+/v7+ + /v7+/v7+/v7///////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////v///P///P/+/v78//z6//z6/v34 + +vv7+Pz//f779PK3q6NdTDtZRyttb0F+llaCrl9+tF2BtV+Hr2KOqWeEk1hmazdYVilYUTBYVTN3fE+O + m2GVqGWYq2abqWiWnGZnYTtWSTCDbmPr39f++/f//P748PSLfH1WREJiV1+jrMWSrNaHr96IsNeQsdCU + pMBhVmZiSEedioPz8u/5///8/v/8//n5//X4//j+/v7//f/8+vr4/v30/vr1/vf8/fft2tqdfoRjR1JI + OkldXm6NobiRs9eQr9WivOGkveOTsdqNst2Hr9uMsdmXstOmsMaEfItlR1NcPkWVjYvn7uX3/vX6+/b/ + /f7//P/9/f/5/v/5//37//39/v7+/v7+/v7+/v7+/v7///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////f///f/+/v78//z6//z6//77/P7++/7/+vvr4t55bmJVTTFgXzF8jVGEp2B7q1t5r16CsWeG + p2h6jFZiZjhVTyZWTiVhYjV5hVOQpm6OrG2RrmyVqGmfpW6AfE9WTC1cUT2ln5T9+vL9+fT/+/348vWS + g4RYRENfUlqkq8WSrdaHr96KstqSsdGUpL9iV2VjR0edioPz8vD5///7/f/6//r2//f1//n7/v/////6 + +vj2/Pny/vny/vnz/Pb5+/ni19mId3xSPkZVQUpwbHqVqb+Zsc+Sr9OWteCLsN+GsN+CrtmKtNqQsdOf + tNGUnrRoXmxXQ0plVVXVzsb8+vD+/vj+//39/f/9/f/7/v/6//37//7+//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////f///f/+//38//v7//z7/f36+fv/+v399vW4rqdZ + TT5UUi9reUOFnl6NrmiLr2iNrWuInGRsc0daVzNXTS5dUjRwakaOml+QqWeLrWuFqmeRrnCVpG+Ih1xi + VjVZSTR8dGXi49n9//f+/Pf//v789ficjY1WQj9dUFWiqMGVrtiKseCKsdmUtNSUpL5iV2RkSEafioP0 + 8fD5/v/6/f/6//z1//jy//r6/v/6/f35/vr6/vzy+/jy/v3y/v7x/vzz+ffc19aIdHNhQEFcREhucHmY + prmZsdOOr9yFreB/rN6Cr9qKtdmKsdOOrtGUrs9/iZ1SSU9VQEKcg3/57eb9/PT5//z5/v78/v/+/f/9 + /v79//7///////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////f///f/+ + //38//v8//z9/v79+/3++Pru5uOKfHJYSTdaXDeAlV6NpGiXqm2apmuJhlRtXzlhSi5cRS1lVj2AeV6T + mXGTrGiLrWCLrWSMqmmUqHGJjmNhWjtXSTRxY1bHwbn9/Pj+/vj///r8+vz89/mmmJZWQj1cT1Kdo7mV + rtaLseCGrdWVtdSWpL5jV2RlSEagioP18fD8/v/9/f/8//z2//jz//r6/f/4/f31/Pn8/f38/P35+/31 + +/7x/f7w/fz2+/ff0s6Qcm5jRUBVSERvbniZp8aSrduIrOGErd6KtN2Ls9aLstWMstuLsNqSrcZhZG1Y + QUZ0T07QuLH79+72//r1//37/v///f/+/v79/v7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////f///v/+//38//v7/vz9/f3++/z9+PrTyMNyY1dYSDJvcUmLomiSqGua + qWyLjldrYTFhTSZjTCtzYUCIg1+TnnOQqHGOsmaOsGKUrGabp2yNkGFqZEJSSDFXTD2qoJj18e7+9vX/ + /Pn///r7+/39+fq0paNYQz1eUFKZnrSXr9eJr96IsNiRsdGXpr9kV2RhQ0GMdG3d1tT6+fz//f/8+vb4 + /PP4//n7/f75///0+/n7+Pn/+P7/9/7++//5/f/z/f3y/Pn7+fTg0cqCaF5YQzdOQkZ+gJuYp9KXseKO + rtuRs9mMrtGLr9SJsNyHr+CQtdR+i5ldSFRuSEuVd3Pt5Nz1/vb0/frz+Pb//v/7+vr+//////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v/+/v/9//38//z8/v39/f3/ + /f7/+/uwoZpdTDtiUDaKiVyZrW2UrGeUrGZ6jUpRXR5ZXyV7fkiWnmaXqWyLqmWKsWeIrWOVrWmZomeH + fVBsWzlZSTJbUUOempLx7er/9/j/+/7//fz7/fr6+/z/+/zBs65aRT5bTE2Tl6yYr9SJrtuKsdqSsdGR + orpgVWFoR0ddQTprXluvp6rp3eH28uz18ejz8ur17e3v8O7u8u728fH67fH+6PD/7fT++Pv2+Pj4/vv5 + /fj9+/XczMKFa15bRUNTSVlxcI+ao8mertScs9WZttiPsdeJr9yFrd+GsNWUq8N+dYVcPkRnS0i1qKH5 + /PX2/ff3+/n8+vr+/Pz+/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v/+///8//38//39/v3+/f3//f/89POVhHtZRjRwXD6Yk2OfrGuSq2GPsWSCqlprk0VylkyH + pl+PrGWMq2COsV+QtWOQqmuJlGB6dElpVTRfRzBjUEKelo3m5uH6+fn++vz/+fz//Pv6/fn5/P3+/PzK + vbZeST5ZSUiMkKKYr9SKr9yKsdqSstOSo7tiVmJjQT9lRT1RPzxiU1WMd3mmk4ufkoOdk4ajko6blI6W + k4ugkIqsj4u8mZfGqqjTxsLh29Tx8ev4+vP9/fn68urUwrl4X1tTP0ZSRFSLhZ+utNChss+Vr8+UstiM + rtqJr92Gr9iXs9KUmK5gTlpVPj5+bmjs6eP7/vn6/fz3+Pj+/v7+/f3///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////v/+///8//38//39/v3//f3/+v336+mCcGZdSDN7 + ZUWnnG+iqG+XqWiPrmaLsmaIsWaLr2iQrWuTqWqWqmiSp2GDlVN0dU1kXD5fUTdVQy9vXlC4rqTv6uT8 + +/b6+/r8+/z59fn9/fv5/vr7///8+vjRxLtjTUFXR0SFh5mYr9SLr92Ir9iPsdKUpr9hVmJlQj93VU11 + XlpZQ0VgQkNlSD1iSzleSjlhRT1cST5TSjhYSDdgSTdnTTtpUDxqV0V4a1uWjoG/uK/n39v79/P98+7R + vbhuVlNaQkRiUVqNi5qgrMOZs9KQsNaNr9eQsduJr9uNrteXqcd3doZRQkddSkbCtLD9+vb6/fn5/fz9 + /v3///7///////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////+/v/9///8 + //38//39/v3//P3+9/rz5+ZyX1RcRS97Y0KfkGqTkWmRmmiJmmKHnF+HmV+KlWCPkWOMiF6BfFJtaz9f + XDNYRC5ZQzVYSDqBd2vIwbf8+vH7+fT+/fv7+/v1+fr1/P3z+fj5//r7///8+vjbzcRqVEhVRUJ8f5CZ + sNSLsN2HrtiPsNKTpb9jWGVpRkOjf3fPt7JqTk9lQD9jPzJoSTRmSTRoQzhqTj1kVDtgUzVgUjJiVDJe + Ty1fUDFQQSdSQi5mVEmOenXPwb/38/L88u67ophwUkZcRj9fWV6FkqKeutmMsNSOstaQr9aKq9yKrd2U + sdSFk6VYUVdWPz+SeXfp3dr3+vb5//75+/n///7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////+/v/9///8//38//39/v3//f3//P3v5ONkUUdiTDdrUzVuXUBjW0NiX0Jg + XjxnYzxsXzxwWj1xVD9xUkFpTT5bRTVaRTZnSER/ZGGpm5Xd2tP2+PH7/Pb+/Pj//fv7+vr2/Pzs+fjz + /Pv4/vr6/v/8+/rl2dJzXFJVQj94eYiYsNCKstyJr9mSsdWRpL5eVGFpR0Oph33w5N1uUVBqQkBtQzZn + Qy1oSDFxSTqAX0uJdlmJgFyBglZ8gU54fUhxcD5tYzljUTFeRjRgRTx1Yl+tqKjs49726Ny2nIxiTD9M + Q0FcYm6LobuXtdWQstSOr9SLrN6Gq96NsteRp71ycnxYQ0ZqUU7DtrH5+vT2/fr5/Pv+/f3///////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////+/f/+/f/+///8///8//78//3+ + /vrx7edsX1dUQzdeSjpZRjhWRjlVRjlVRjdXRzdZRjddRjlfRjtlS0NqU0t4Y1uTgHnCtLPk2tr59vX8 + /Pr7/Pr9/vz///7///7//v79///5/v75/fz8/vz5/v76/Pzq396CZGNgQEJ2cXuNrcCBt9SIr9ebrtiU + o79eV2FhSD+hjXvt6N57Y2BrQ0N0ST95VkNhRi9kRzVmSjpzYEqDhV+Em2F3nVJ9plCFoU+KmE6Ihkx4 + akNlUTdbRzZdTEGOgXjs49727eibjopVRUFWRER2a3OlqbyYsdCHsNmCrNqJr9+QsN2br9SOlKxYUlpR + Rz6DfWzx8OH5+fX7+Pv8+P7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////f///f/+///8///6//76//z4+vb29e+4saqmmZKkkoulk42llY+llY+llY+llY+llY+llY+m + l5C3qKHQwLro2dL78Ov7+fj+/v78/Pz5+fn9/f3////////////////////////+/f39/v35/v74/fzw + 6OmNbXFlPUNyaXCMr7l9uM6JsdidqtmZosJjWWZeRz+fjX7w7OKTgoBkQ0R0UESZgGiCdVVnWz1aRS9f + SzRhXDdxfkaHoluIqFeHp1KMpVWPn1qJk1p3fU5iYDpYSzBURDSYiofh2dri3d2JfHdhSUNfREJ8bXmd + qcWHrtaKtd+Mst6NrNqXrdmfq8tscH9HRDtdWEXMx7X//vr99/3//P////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////f///f/+///8///6//75//z0+PP6+/X59e758+z4 + 8Oj69e748+z48+348+348+348+379/H69e/79/H++vX++/b//fj7+vn8/Pz+/v7+/v79/f37+/v///// + ///////////////+//76/fv7///2+/r17/CYeXxlPURrXmeOrbh9tsyMs9qcqdicocVmV2tgREShjIL1 + 7Oa2qalfR0ZiSjmTiWifo3eFiV5vZkJgTi1bSCRmVS19cUKTkFyYo2iSp2eFoF6CoF6An150ilBcYDZY + TDJfST+ciojw7OnZ1c6BdGtdPzxgR1F/f5aXtNWKr9OKr9iOsN2Nqtags9aJkqdMSEhUSj+aj4L89O/7 + 9vn//f////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////f///v/+ + ///8///6//75//34/vr7/vn+/vj//vj/+/T//fj+//v+//z+//z+//v+//z+//z+//r+//r9/fn5+vX6 + +vf///7+/v7+/v78/Pz9/f3///////////////////////////78/fv9///2+vn59PWojI9nQEZkVFyO + prGDts2OtNqcq9qbn8VnU2tkQUehiIX16urVzNBsXF1aUTxpcEaOo2qUqG2WpGx/gE1uXTRpSChuQyp3 + UzuKfFyTm2+OqW+Fq2KCrFh8olJ+lFdlYDZjRzFjSD6yq6T0+O7T0cZ6YVtdP0JbTFmEkKSctM6Pr9KM + sdiHrdiUs9qbqshnYm5URUVvW1fazsn//vv5+vn///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7//v7+///8///6//74//z2/fn2/Pj7/vn8/fj+/vj8/fn6//z6/v36 + /v36//z6/v36/vz6//z6/vz5/fv4/fr6/v36/Pz9/f3////+/v78/Pz+/v7////////////////////9 + /v39/vz+/v75+/v89ve8oqVqRElhTlaJm6aJtsyNsdacrtmaoMRpVmxjQUaYfnzy6evr4+uQg4dPSTZV + YDWAllySqWqNqmeRqmiNj1x9aERyTjVqRjNiTTRyb0yGlF+SrGWTsV6LrFaFpFmFiVFtVTRlSjdxZVrg + 4df08+jAr6ZyWFZWP0JgWWOQmayYstCJrtGFsNqOs92ar9OHg5lXRE9gSEmunpr59e/7/Pf///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7//v7+///8///6//75//33 + /vz0+/f4/vr4/Pj7/vn8//37///7///7///7///7///7///7///6//76/v76/v76/v38/v78/Pz+/v7/ + ///+/v7////////////////////////8/fz8/v39/f38/f38+PjLtrhrSExgSVCGkJmOtcqMr9GZr9eX + pcJrYG5hQkOMc2/u5+j88/3IusFhWEtLTyxdaTeWoWuPrWiDrGGRq2uao3CBfFVnWzpbTy5VTSZhXy5/ + hkaYoliesWGOrVuXpWJ/dUdlUDRgTT6knJD08uf07+azo51nTUlbQENnYW6arMOStNKDr9WErtiVr9ef + n75sW25YQUl9a2jg2tD///j///7////+/v7////+/v7///////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////+///8///7///6///6//76//76//76//77//7+/////v///v///v///v///v///f/+ + /f/+/f///f/+/f/+/f/////////////////////////////////////////////8//77/v37+vr9/f3/ + +/vh0tF8XF5eQ0h3cnyYs8iTs9WTsNSTsMNydXhXQjh7Z1no3tv/9/7/8PzGtbRnWkpWSTFzXUKZlWST + qGSQsGmFrmaBq2OQsW2HmlpscTZcWSNRThxjYzKRnF+WsF+PrmGLnmJ1c0piSDNxU0nPv7j3/fTz+O7I + tq55UExeRUlbXWqQoLWNrsuRttqPrdOfrdGQj6xRRVRYSUudkIn//Pb7+/n8/Pz+/v7+/v79/f3///// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////9///9///8///7///8///8///7///7///8 + ///+/////v///v///v///v///v///f///f///f///f///f///f////////////////////////////// + ///////////////7///7///++/38+/z+/fzt4+KRcnNgQEZpX2mZrsKQsNCOsNKRs8d6goVYRjtwXU3U + zMb9+Pz/9f705eafkIVgTD1tTD94Xz+almGXp2mMrGeJtGmFrWGQrGSSomF+iE1faTdqd0qPo2uTr2CN + sWONqmuHj2FoUDdlQjiqk4/4/Pf0/Pb17Oe2kI1fQ0VPR090eIeZrMWUsM+Rr9KYr9Ggq8dZWWpNREdx + Ylz27Ob7+/r7+/v+/v77+/v+/v7+/v7///////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////9///9///9 + ///9///9///9///+///+///+///+/////v///v///v///v///v///v///v///f///f///f///f///f// + /f/////////////////////////////////////////////6///6//7//P7+/Pz9/vz58vGniolhP0Nj + UFyUpLiRsM+NsdSOsc2Hj5pbSENjUEO1sKr4+Pv7+P379fTp4dmVhnxmRUBhQzF1Y0GKh1uZpG2Pp2aP + rGaQrGaTrGiOpWaLoWmLonCLo2qOq2KIrmKJqmuRn29vXUFjQTaNcnD38vL1+fn9+vnr2diKcnJPP0JX + T1iSl6mesMmYtNKRsdGWsc1yf5JGQUhfSUnQwLz9+/v7+/v////8/Pz9/f39/f3///////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////9///8///9///+/////////////////////////v///v///v/+/v///v// + /v/+/v///v///f/+/f/+/f/+/f/+/f/+/f/////////////////////////////////////////////6 + ///4/fz//P/+/f7+/v3/+ffIrKxlQENcRVCGkaWVs9GPstiOr9SVmbFiTU9aRj6TkYr2/Pz1+fz7/vn4 + +/Do5NqWfXtmUEdXSDVdTzZ4bEqSjmCYnWaYqm2SqmqUr2+TrW+Qp2yTq22NrWeLsWmMqmyYp3Z6b1Fb + QTR8YF7t4OT+/P/7+vz79fbXxsRfRkdWQUdwaHSkrcKas82OtdOMtM2HoLNSUVtbQkWfh4fw7Oz7+/v9 + /f38/Pz9/f39/f3///////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////9///8///9//////////////// + /////v///v///v///v///v/+///+///+///9///+///9/v78/v78/v79/v78/v79/v7///////////// + //////////////7///////7///7///77//33+/n//P7//v/8/fz8+vfoz8xqSElWP0d4f5KVsc6KrdSQ + r9ikp8VuWmNYREF3cm7n7ezy+fny/PX1/vP4+/Hn2tail5NeVk1SQzZdRzRrVzt4bEiDhliNmmWPnmiU + oWmaomuSnWWLo2aPqG2PoWuZn3R9c1ZdRThvVFHk09b48vf5+/31+/v49PGVf31fR0ldS1SLjZycs8qJ + s9CMt9SOqL9pZ3ZXPUWAaGre2Nf9/Pv6/Pv4+/v7//79//7////////////////+//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////9///9///9//////////7///7///3///3///z///z///z///n8/fT6/fr2/f74 + /f7//fn26t+AbGFTRUFhY3CYqceTsNaStdWfsst5coNWQ0tbSEzi2Nr8+vr7/Pz4/Pn9/vr++/f79fTP + xMOQgH5oVlBbRz1ZQzddSDhgSjZmTjdtUzxyVT1sVTxiWDtkWT5qWUFqUz5oSjtlRj5mTEbYy8b8/Pj3 + //zy//r1/fvZ0M17ZGFiSUlfWWGPorSOstKTsdejrtOJgZlaSFRaSEi1qaX39fD0+/fv+/nz/v73/v79 + /////v/////+//77//39//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////9///9///9//////////////7///3/ + //3///3+//z+//z+/vf+//j3/fvy+vz5/v///vr79+yfjn9SQzxVUl6UnbqdtNmSs9OYsMuIi59QQk5c + Rky+qq7/+Pn7/Pv6/v73+/n+/Pr++fj++fnu5+fJvbyThIF4ZmBhS0RhST9kSTxoSTxnSDphRjdYRTRY + RTVdRTdhRDliQztdQTpqVE7a0Mv8+/b3/vnw/fny+/n38vCznpphR0NTSUt6hZOWsdKUrNSjrNKdmbRe + UWBWRkiQgX318+73/fnz//3y/f31/Pz+/v///v/////9//36//z9//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///9///9///9///////////////+//7+///9//79//79///7/Pj+/vr5/v/3/f/6+/3+/Pn38eWZhHZZ + RT5RSFCCg5ygr9KTsNOUsM+WpLlXU2BbRU2Ven7z6ur5+/nz/fvy+fj+/P3++vn8+/r9/Pv8+vjx6ube + 1dDIvba3qaGjkomXhHiUgHWVgneVhnuUhHiVgniXgXqYgn2XhICxoZ727uz9/fv2+/n0+/r7/f779fXZ + ycVqUUxPQD5XVl+aq8SdstScrtGlq8drZXhQQEZsW1jq4d35+/j2/fv2/v75/v7+/v///v/////8//76 + //79//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////9///9///8///7///8///7///7///7///+ + /v79/f38/v/6+//59vn99/Tcyb9rUURcQzxUREpxan6jqcmYr9WSstSSq8Rka3tUQEl/XmLh0dD6/Pnt + +vbx/Pv++/7//v/8//37/fv4+vb7+/f8+/f+/Pj++vT+9/H/9/D/9/D/9/D/9vH/9vH/9fH/8/H+8vH8 + 8vH89PX++vr8+vr9///7/f7+9/r67/C3paBmUEdUPzlUR0uGjJ6dsMuWr82gsMyCg5tOQExcSEnKvrz9 + /fv5/Pr4/Pz9/////v/////////8//77//79//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////9 + ///8///7///6/v/6/v/7/v/8/v/8/v/+/v/59/r8+//9+f7/+/706OaljINYOy5iRDxYQUVkVWOdmrae + rdeSs9mMrsp0hZlUQ1BvS1DDpqX4+fPt/Pfz//7++f79/P36//36/v35/Pr6/Pr6+vj+/fv+/vv8/fr9 + /fr+/Pn/+/n/+/v//Pz//fz//Pz/+/z59/n5+Pn+/P79+vz++v3/+v3/8/ri09R5aWNZQzdcQjdeRUNz + bHeYp7mWs8yWsMqRmLRSRVZXQ0ShkpD9+Pf+/Pv8+vr+/v7////////////8///7///9//////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////8///7///7///4/f75/P/7/P/8/P/9/P/+/P779vr//P/68vbz + 6uq9qaRtUkhsSz96WVJiRUdbRk+Je5Kkq9KUstmOt9WFnrRiV2ZjP0aTc3Hr6uHv/vfy/v3++v7+/P79 + //79//78/v35/Pr3+vj8/f38/f39/v79/v7+/v7//v7+/f///P/7/P/5+//6/f/7/P77+v3++v789/r+ + 9/r98/fy5OmYgYFiUEhjTT9/YFNpRkFfT1OIkZ6VtMiWtc6bqcdfVmpYRUd8aWjv5OL/+vn//v3///7/ + ///////+///9///9//////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////+///8///7///5/v74/Pv7 + /f79/P7/+/3/+/z/+vz/+Pv27u/Qw8KahoJqUElhQjh3U0nQrqeAYGBeQ0hsWGehn8Kas9eMt9WQsMp8 + eIxePkpmR0fFwbfw/PLy/Pr++P3/+/7+//3///7////////+/v7//v///v///v///v/+/v/+/f/8+/76 + +v76/f74/P76/v/6/P79/Pz++/v/+vrw5eXHs7SUentcQ0BbST2AaVnWtKaGYVhZRERrb3eRrLyXtc+f + r9F1cIhVREdjUlDSxcP/+Pb//vv//Pr//v39/v79///8/v79/f7///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////9///8///7//77/v35/Pr8/Pv//f3+9/f/+fj/+fjc0tCll5JwXldfSD5hRjllRjl2VErU + s6y3mJdgQ0VaQ02MhqGgs9CMs9CRtM+VmrNbRFNaP0OSiYHv9enw+PH//f///f7//v3//v///v////// + /v7//////////v///v///v/+/v/7+/75+v78/v/9/v78/f38/Pv++/n37erWycSVgn5qVE9aQTpdRTpe + STl8YlLpzb+piX9ZREBTUlaPobCdts6bq82NjqVYTFFWRke1pKT79PL//Pn//vv+//z7//79///+/f/+ + /P7///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////9///7///8//77/fv5+vf+/fn89/H58+7ayMSb + jIRnWE1cSjtbRDNlSzhmSDZnSDlgQjeVeHLkx8SBZmVeRkptYG6YobWTssyRs9Khsc1yan1XREpkVk/R + zMH6+fH//fz//fz//v3//////////////v7//v7//v7//v7//f/+/f/9/P74+vv8/f38+vv9+vj++/fw + 6OLUxb2Qf3RiTkJeSDpeRjdhSzpfSTZjSTdkRTS6mo3fw7laSENPSEtzeIWmssqgrs+aoLdkXmNOQkKN + fX3x6+n/9vP//vr7//v4//36///+/f///P7//v////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////f/9/v/8/v/6 + //77//39/vr7+/X++/Lt5Nu2pZt3YFdjTkFYRjRgSTRjSDBnSi9nSTFsTjtjRzx2XFbq0M2oj41dRkVZ + SEuCg4+cssqXttaXrs+IjKJZTlZXQ0Cikoj28Ob+/vj9/vv8//79///9///9///9/v79/v79//39//39 + //3+//39//37/f39/fz+/Pr++vXbzsehkIV2YFRZQDFgRzViSTVeRzFdTDNaRy5sTzptSzuWeGzo08p1 + aGRRR0tgWmeipLyjrcyhq8BtbXFNRkVyZWTm29n/+PT///n6//r3//36///+/f//+////v////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/f/9/v/7/v/5//77//z9/vj49e3TysCFdWphSz9iSTxeSDZtWkJ6Y0ZtUTNp + Si14Wj+Ga1VeRjlgSULTvrzh0M5/amZUQj1fWV+GlKqVsdKTsdOYp79xa3hZQ0J1XlTMv7P9/vX5//r5 + /v/6///6///6//76//35/vz5/vz5//r5//r6//r7//r9//v+/vns5N6+samAbGBgSTpiSTZrUDt8YUl2 + XUNjTTBcTy99bE1+YEluSzx5XlXbzcWtpaJaTlFZSVaOhpymrMumssd+goZRTExbTk3PwL3//Pj+//r6 + //r3//36///+/f//+////v////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////+///+///+///9///9///9///////+/f75/f3x//vy//v6/fr89/bMuLdz + XFdbSjxaTTZgVTZ6c0+SimV+Z0llSC1rUDOPfVubkG5gUztdST+xnJv98vK7sKtcS0ROQEBtbXuQpLyW + udSXs8yFip5hRVJjQEOZgnzv9Of0/ff2/vz4/v76///6/f36/f35/f33/Pr5//v3/vr3/vr5//n9/vX2 + 7OmvmZdpUklURi1cVDBqYTmMe1iXgWRzXUBdSythVTCZj2iOfl1jSzhiTUPPwr7Z0sxxY1tcR0Z7bXmi + q8iZsMuHlZ9ZUFFYQz26p6D/+/f+/fv9/vv7//r6//v9/f7/+f///f////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////9///9///9///7///8///7///+ + ///+/fzy/Pfl//jm//b2+PTOt7uJXmRfPztaSzdqbEV/iVKNmmCCh1ZpVTphRTJxX0SVmGuYoW9aWTVb + Sj2eiYv+9fbo6eF+dmxbSEJeS1CAg4+Pr8CQt8+XqMV1WndkOktqTE/O1Mfz/PX0+/j6/vz7/Pz7/Pz6 + +vv7/P319/j5/f33/fzz/Pr3/vfx8ea/qKlwSk5hQjdaVytneDeBk0+Uk2GCc1FfTDBZTix4bkafnm+K + j2RSTDNdTUbBsLLw6uCZiXRkSjZtWlqMmbWNr9SOprxgUVVgQTmeiHr9+vb+/P3//Pv///X6//X6/fv/ + +P///f////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////9///9///9///7///7///7///+////+/z4/fvt/frp+vLTz8p6X1lhQTViUThwc0qBkluKnVuK + mVtqbD1dTTBgTjSKhWCYpnCUo2tiYDxcSDyTe3/78/P2/PTHysB1ZF9hQEJnTlh9gZGatsubts6Hhp5f + TFxVP0KUjILs6OH7/Pn9/fz7+/v9/f34+vv5+/z5/Pz6/Pz4/Pv0+vb09u23rqJuU1BnRkBnUDt7gUyG + m1SPol2Qi11rWzpYSiteXDOTlGOgpnKLlmdUUDVbSkS1pKb9+/LJvaZjTDZeSkh9hJuTsdObs8xuYWdi + RTx7ZVjz8e39+/z//Pz///b7//b7/vv/+f///f////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////9///9///9///7///7///7///+////+v3/+/719ffi + 3t2LfXZeSTVeUS5vdkKCmlqIpl+QpmCDi1NdVy9YTipraECWomyTqmqSoWhnXz9gRD2WfIH78vL3//fw + 9u/FtbJ6UlVpP0dkT1uJkqCbtMSWqrhlaXNUSElnUUvDsq78+fb79fX+/f35+vr5/f34/P36/v79/v73 + 9vT8/PnQysFwY1ZZQzduW0V/eVKPnl+RpF+XoWR+cUpgTi5bUy90fkyXqW2WpmuMlWVbTzZeR0S1oqb+ + +/Xs5tR0Y1BYQ0FnZHebrsydssx9dYBeR0NnVUzg3Nr+/P7//Pz///f7//b7/vv/+v///f////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////9///9///9 + ///7///7///7///+///++vz+8vf78/m0n6NlTkVYSilqbzeDnlOBqFaKrWCQomBtajxbSipfWjF+ilKR + r2iNrWWUomtmVzxfPjujhoz78/H3//X2+/f78/K4mJhzSk1XOD5jXWV+i5SetLyJlptXUlJbQD2Hbmrv + 4+D/+ff/+vn5+vv3/f33/f7z+fn9/v3++/j27+yUhX1XRjZaSzR2cEqRmmONo12drWmamWVsVzdcSCpj + YjiFm1+OrWiPp2WKj19eSzVhRkS8qrD9/fr6+OuUiHhXQT9XS1mbo72iss2Mh5VVREZdTkrEwL///f// + /f7///r8//n8/vz//P///v////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////9///9///9///7///7///7///8///9/Pr/9vnn0Nh9XmJdQzZmYDR+k0uD + rFOLtl+LqWF+g1FiUTJfSi90d0eOq2WGs1+Ns2aNmWNgTThmQkK6n6P89fL6/vb/+vv89fX18u2vo51u + WldVQEFXSEx7eX2io6WHgIBcREFeQDyzmZb88vD9+ff9///1/f30/f32/Pv7+fj99/TGs65pUkhdSTVu + aESOnGGPq2KUr2SZpGV8ckdgSCxgUDCAh1eOr2qEsGGOrGeBglNiRzVoTEvMu8H6/f36/fbHv7ViTUpa + QkqGgJWlscqVladYTlZRRUennp769ff//f///f7+//z+//z//v3///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////9///9///9///7///7///7///6 + //74/fn++viznKBpSEpcRTN6fUyKqFqJtFqMsF+RoWZsX0BkSDVpVDmHkluHrV6Ft1+Kr2KFillfRTRr + SUfNtbf7+PT6/Pb/+Pz8+/3x/ffn8OezqqFxVlJfPkBYREh6bXCShYZuVVRgQDuCY17i0Mv+9vP9/v70 + /Pz0/v75/v38+vbw496chH5gRDdmUzmHiFmQqmSNsWCQq2GJj1ZlVzBiTC9wZkGQn2iIr2V/r1+Oqmd5 + cklmRzh6XF3Xy8/4/f34/fjh29Z3Y2FeQUV0ZnOjqL+doLJhXmhORUmUiIjz7Oz/+/3+/P7+/f78/fr9 + /vn///3///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////9///9///9///7///7///7///6//7z//fs6+SMeHVfQTtnVj2KlF+NrmOPtGORp2SBf1RkTDlm + SDeBclKVqWqGsl+HtmCMp2N0cEhgRjZ2WVTl1dH+/vj9/fr++v72/Pzn/vbq/fL29OvLsKyQa21gRUhY + RUhlUlNuUE1mRD5oSD+ljYjy5+L6+/r2/v74//75/fv+/PjZx8B7YFhdQzF2aUeUn2eMrmCOtWKMo15w + cD1YSSZlVzSBglSUrG2HrmSBr2KInWNzYkNmQjqQdnfp4+T3/fz7//707u+ci4tlSUhpU1ubmKuip7pm + Z3RKQkl/bm/p393/+vz9+v79/P/5+vj6/vb+//3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////9///9///9///7///7///7///6//7z//XU0spsW1Jd + RjV3cU+RpGqLrWWTsGmOmGBmWjhgRTVrVECXlWuSr2qItmOHrWGLmGJlWDpjSjqQfHH16+P+/Pf9/f35 + +f3v+/zs//rv/vP9/vb/8/Dky8uLenxTRkdUQD9oQ0BqRD1kRTpuV1DSxsH39fT3/f34/f36+/r9+ve5 + p59iST5iTTaDgVWXq2qJrV6PsmR+ik9bVStXSyZzcUOOnWORrmuJq2WIq2d8hldtUz5oREGumpvz9PH2 + /Pj9/v/99vvBsrVrUU5fRkmLgI+orr5ydoNLREt0X1zh087//Pz++v/++//5+vj5//b9//z///////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////9///9///9 + ///7///7///7///7///2+vbCurNgSz1hUDWEh1uPqWuKq2eUqml8f0tfUy1bSC+CeliZp2+Gq2GGsGKP + qGl9elRjTDdnUEC8sZ/7+er9/Pf+/P/3/f7x/v3y/vn4/fb+/ff/9vX99PXi4eGkoZ9oWFRkQjxoRDpg + RDdZQzqWioT28vD4+fn5+vv9/fz79vGejYRdRjhrWj+PlmKWsGqKrmCKpF5ucT9USiZfWDOEklmUsGuL + rGOSrWqQp21vakdnRDl+Wlzay8z1/PP6/vn9/P3/9/3f0td2YV1bQUB3Zm+qr75+hI9NQ0pwVVDaxL3/ + /Pr++v/++f/6+/n5//X9//v///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////9///9///9///7///7///7///8///69Pa0oZ1jSzhoWzWMl2GKqmmMrmyL + nmBeXilZUSNhXTOSnWiNqmeGsWOLsGmNmGdrWEFfQDSDb13j4Mr6/+z/+/r++P71+fv5///6/fr9+/j+ + /fv++/z19/rt9vjw9fPUzMaReW9xVEdfRjhYRDpxZV7y7ev9/fz9/f3+/vz38euEdWpYRTdsYkOSomeP + rmWKrGJ9kFNeVjFYSCpxb0WLqGSMtmWKr2OYq2+Bi1teSzRpPDynhIv28O3z//T6/fT99/r/+P/26/OV + hoBYPzlpU1iiprCJkJtTSU5sTEXKsab++vf8+P/9+P/6+/r4//P9//r///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////9///9///9///7///8///7///+ + /v/37fKojYtmSzdnXjKPn2OKr2eLrmmJnV1gZSpbWyN+iU6TqmiJrGKJs2aFomJsbEZkRjluSkTGtaX4 + +OL2/+z9+/r+9/77+fv9/fz//fz///38+fr5+vz1/f/z/f71/Pv8/ffp4dXAr6CGcWR2ZVylmZPz7e38 + +/v9/f37+vj48et1Z1xUQzNzbEuRpmiNrmWKqmN/jlZcVDFnWzqMkWKMsGaDsF2Mr2SFkFtgXjleQjWJ + WF/ixc75+vfx//L7/fT/9vj/9/7+9/zCuLNZQjteQ0WRkZmSl6BeVFdoRz+3npP8+PX79//8+f/6/Pv1 + //H8//r///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////+///+///+///9///9///9/////v/z6u2eh4JYSTJhYzaJoWKErmGDsWGLsmR+mFB+jkyWo2Sb + qmqXqWeVpGhvdkVcUTNiSDqXfXbx5Nz9/PD6/vP7/fv9/f7////+/f3//v3////+/v79/v/5/v/6///8 + //79/vv///n++vLt5Nzk2tX07On//P39/v/9/v79/fr18Oh0ZlpYQzR3bU6VqHCNrGmOr2mNqGV/klSD + lFiRqGiNq2aSr2yJmmJmZj9VSTRmTUq6mp777vT7+vn4/vn7/fn8+fr++/7/+/3e19ZhUE1bQkR+cneh + m59mWlxZQ0Chjon69vP+9/z++/76/Pn3//b8//z///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////v/17O6djIZQSTNZ + YjaKoWWMs2WFtWGArluKrWGXrWqcp22doWuenWtwaj9gVjNURS2Le2zm2NH//Pr++fj+//73+/r3/fv+ + ///////////////////////////////////+/v7+/v7///z//fn++/r//f3//v/+///4+/z6+/j08Oh1 + Z1pZQjJ1aEqSpm+Nq2uLrGeKrmSNsWSNrmORrWiWp26Jj2JkYD9RRzFYSEGkkZTs3+L//P3//f39///5 + /v33+vr8/v7////x7e6EdXdXP0FwXFykk5RvYGBOQUKMfn728PD/+fn///z5/Pj4/vn8//3///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////v/57/Cmlo9WTTdbXjaNnGSQq2aPsWaMrmSRrWeWpmuWm2iLiV1mYTlUTCpTSS6B + dWPZzcP99vL/+vn++fj+/v32+ff6/fz+///////////////////////////////////+/v7+/v79/vv9 + /fn+/Pv//f7//f/8/f75/Pz4+vf38+t8bmFaQjRvZkaNpGiMrGiMrGePrWeUr2uVqmySoGp4fFJiXj9T + RzJdTECVhIHp3N7++fv9+vv+/v77/v37///4+/v8/v7+/f38+Pmxo6NgSUhkTkyXg4F3ZmNQQD+CdHLz + 6uj/+/n///z5/fj5/vr9//7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v/79fSzpp9WTTpbVjSPkWKZo2mWqGmZ + rG+UpGuJkmFwcEdbVTRYTzRZTzqEe2rY0cX79/H9+fj//f3+/v79/vz6+vj8/fr///////////////// + ///////////////////+/v7+/v76/Pr6/fn+/vz//P79+/36+/z5/f35+/j48+2OgHVaQzZqYUGNpWaP + rGeRqmmYq26UoGuBhlhraERYTjVYSTlgTkafjovo3Nz+/P38+vr7+/v4+vr5/f35/v76/f39/v7+/Pz+ + /P3Yysp3X1teRUGIcWx/aWRTPzt7aWbx6eX//fr//vz5/fv7//79//////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///9+vnIvrdeUkJZTDCJf1ukoXOgo3KSl2d1eU9bWzdQSixTSDNkVkiUin/l3db8+/X4+Pb8///6/f34 + +/v8/fz///37+/j////////////////////////////////////+/v79/v75/fz6//z9//7//v78/P78 + /v75/v35+vf69e+qnJJeRzxiVzqGl1yZrG6YpG2MkmNxbkhXTjFXSjRWRTpxXlm2pqPw5+f+/P38+vr9 + /f37/v72/Pv4/v73/fz6/v39/////v7//v/u5uSSenNgRkB6X1h+ZV5WPzpzYVvw5+P//fn//vz8/v37 + //7+//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////7+/Pnj3NV1Z1pcSTV6Z0uajGqCeVVgWzlZVDZPRy9bUD2F + d23Bs7Dw6Of89vb9/v75/v73/f71+vz5/f37/v3+/vv//vv///////////////////////////////// + ///+/v79/v75//36//78///9/f38/P38/v/5/fz7/fr9/PfJu7RmUEdeUDh3e02LkGBzcElfVTZZSTRW + QjRpVUyZh4LQxML58e/9+vj9/Pz4+/v6//73/fz5//70+/v4/v37/v78/f3+/Pz++/z8+PS0o5pmTURn + SUB1Vk5dQzxvW1Tu49z++/b+/fz///79/f3///////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////7+/vrw7eaXi4Fc + RzllTTtnUT1bSzNWSTVYTTxxZ1i5rqLs4d378vb/+P39+v75/P/2/v/2///2/v/6///9//////z///z/ + ///////////////////////////////////////+///7//76//78///////+///9///5/f33+vb+/vrk + 29V9bGVbSTtfUjhnWD5eSzdWPzFtUkyWfXrItbP26+j9+vb9/vj2/fb4/vz6///5///3/v74///3/v75 + //77///9/v7+/v7//Pz//Pje0chtU0xhQjtpSUFhRjxoVEvr4dn//vj8/fr6+vr9/P3+/v7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////77/vn9/PbPw7xoU0xfRj1ZQzdfTEB1aV6xpp3l3tb99/L+9/j/+P3++f/7+v/4 + /P/2/v/3///5///7///9//////7///7////////////////////////////////////////+///7//77 + //79///////////+///3/Pr4/fr5+vb28u2xo55bR0BbQzpdRDxvVE+SdnTUu7z66Or/9vb8+/f3+/T1 + //X0//j3//z6///5///5///5///6///6//78/////////////f3//Pn67+mQenRiRD1bOTJkRj1nU0rm + 3tX8/Pb9//36+fr+/P3//v////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////+//78/vv9/fjy7uqLeXVjTkpyX1uilI/d + 1tH38u789vL++fb++vv++//8+//7/P/5/f74/f76/v/7///8///+//////////////////////////// + ///////////////////////+///8///8///+///////////+///3/Pv3/fr09/P+/fnf1tR2ZGJjSUuG + bG7Ms7bx4uX+9vj/+fn++ff7+vb5/vf0//fv/fT3/vz6///6///7///7///8///7/v79//////////// + /f3//fz99/TArqpmSENkQTthQzttWlDq49r7/fb8/vz7+vv/+/7//v////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////+ + //76/fv8/Pj++vjq397Sw8Tn3d779vb9/fz5+fj9+/v+/fz8/Pz6/v/6/v78/v7+/f3+/f3//v////// + /////v/8///8///+///////////////////////////////////////////+///+/////////v///v/+ + //73/vvz/Pn3/vz8/v3+/fzb0NHRwsbu3+P/+fr/+/z+/fv8/vr7/fn6/vr8/vz7/vz7//z8///8///8 + ///9///+///////+/v7////////////9/f37/f35+vru4OGQdXRnQ0BgQTtyXlfp49v7/vn7/vz+/f7/ + +v3//v////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+//75/Pr+/fr79vX/+/z+9vn++/76+vz5/f35/f35+/v9+/r5 + /Pr4//36//z+//z///z//v3//v7//v7//v/+/v/7///6///+//////////////////////////////// + ///////////+/v///v///////v///v/+//75/v3z/Pn2/vz0+ff7/Pr+/Pz++vz++vz7/fr5/vj2//j1 + /vf1/Pf6/fv+/f7++///+P7//P7+///+///+/////////////v7////////////8/f33+/z4+/368PPJ + r7F0UlFgQTyGc2zt6eD8//v6/vv//v//+Pz//f7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////6/Pv4+fj+/P3+ + +vv8+Pr+/f/5+/31+fr5/f37/v7+//37//z4//z6//z+//z///z///3//v7///7//////v/8///7///+ + /////////////////////////////////////////////v///v///////v///v////75/vv2/fv0/Pr1 + +/n7/Pz//v/+/v/5/Pz2/fr1//n1//j0//j5//v6/Pv7+Pv/+v//+f///f////////////////////// + /v7////////////8/f35/f71+fv++fz57O7Grq6SfHnEt7H6+fT6/vr6/Pr+/P3//f7///////////// + //////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/TIAS_DataExtractor/Program.cs b/TIAS_DataExtractor/Program.cs new file mode 100644 index 0000000..5a5d001 --- /dev/null +++ b/TIAS_DataExtractor/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace TIAS_DataExtractor { + internal static class Program { + /// + /// アプリケーションのメイン エントリ ポイントです。 + /// + [STAThread] + static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} diff --git a/TIAS_DataExtractor/Properties/AssemblyInfo.cs b/TIAS_DataExtractor/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e1e03b5 --- /dev/null +++ b/TIAS_DataExtractor/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 +// 制御されます。アセンブリに関連付けられている情報を変更するには、 +// これらの属性値を変更します。 +[assembly: AssemblyTitle("TIAS_DataExtractor")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("TIAS_DataExtractor")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントから +// 参照できなくなります。COM からこのアセンブリ内の型にアクセスする必要がある場合は、 +// その型の ComVisible 属性を true に設定してください。 +[assembly: ComVisible(false)] + +// このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります +[assembly: Guid("248574a3-0a4b-4750-b6e3-2d591ad75016")] + +// アセンブリのバージョン情報は、以下の 4 つの値で構成されています: +// +// メジャー バージョン +// マイナー バージョン +// ビルド番号 +// リビジョン +// +// すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます +// 既定値にすることができます: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/TIAS_DataExtractor/Properties/Resources.Designer.cs b/TIAS_DataExtractor/Properties/Resources.Designer.cs new file mode 100644 index 0000000..938f3c1 --- /dev/null +++ b/TIAS_DataExtractor/Properties/Resources.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// このコードはツールによって生成されました。 +// ランタイム バージョン:4.0.30319.42000 +// +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 +// コードが再生成されるときに損失したりします +// +//------------------------------------------------------------------------------ + +namespace TIAS_DataExtractor.Properties { + + + /// + /// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 + /// + // このクラスは StronglyTypedResourceBuilder クラスが ResGen + // または Visual Studio のようなツールを使用して自動生成されました。 + // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に + // ResGen を実行し直すか、または VS プロジェクトをリビルドします。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// このクラスで使用されるキャッシュされた ResourceManager インスタンスを返します。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if ((resourceMan == null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TIAS_DataExtractor.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// すべてについて、現在のスレッドの CurrentUICulture プロパティをオーバーライドします + /// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/TIAS_DataExtractor/Properties/Resources.resx b/TIAS_DataExtractor/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/TIAS_DataExtractor/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TIAS_DataExtractor/Properties/Settings.Designer.cs b/TIAS_DataExtractor/Properties/Settings.Designer.cs new file mode 100644 index 0000000..61d9625 --- /dev/null +++ b/TIAS_DataExtractor/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TIAS_DataExtractor.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 { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/TIAS_DataExtractor/Properties/Settings.settings b/TIAS_DataExtractor/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/TIAS_DataExtractor/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/TIAS_DataExtractor/TIAS_DataExtractor.csproj b/TIAS_DataExtractor/TIAS_DataExtractor.csproj new file mode 100644 index 0000000..49a2118 --- /dev/null +++ b/TIAS_DataExtractor/TIAS_DataExtractor.csproj @@ -0,0 +1,135 @@ + + + + + + Debug + AnyCPU + {248574A3-0A4B-4750-B6E3-2D591AD75016} + WinExe + TIAS_DataExtractor + TIAS_DataExtractor + v4.7.2 + 512 + true + true + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + 7.3 + prompt + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + 7.3 + prompt + true + + + tree.ico + + + + ..\packages\OpenCvSharp4.4.7.0.20230115\lib\netstandard2.0\OpenCvSharp.dll + + + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + + ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + このプロジェクトは、このコンピューター上にない NuGet パッケージを参照しています。それらのパッケージをダウンロードするには、[NuGet パッケージの復元] を使用します。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。見つからないファイルは {0} です。 + + + + \ No newline at end of file diff --git a/TIAS_DataExtractor/packages.config b/TIAS_DataExtractor/packages.config new file mode 100644 index 0000000..839d916 --- /dev/null +++ b/TIAS_DataExtractor/packages.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/TIAS_DataExtractor/tree.ico b/TIAS_DataExtractor/tree.ico new file mode 100644 index 0000000..1c5bb53 --- /dev/null +++ b/TIAS_DataExtractor/tree.ico Binary files differ