From f89794569a89ef0f4e3c5935e29989c005ec8137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C4=B1rat=20Lo=C4=9Fo=C4=9Flu?= Date: Thu, 7 Sep 2023 22:04:53 +0300 Subject: [PATCH] VLC URL List added. (v1.0.0.5) VLC URL List added. Fix VLC (YouTube) - MyScreenSaver.FixVLC_Administrator is created. White Screen Issue in VideoPlayerVLCForm (Fixed) Updated btnOK in OptionsForm Many changes have been made. --- MyScreenSaver.FixVLC_Administrator/App.config | 6 + .../MainForm.Designer.cs | 52 + .../MainForm.cs | 132 ++ .../MainForm.resx | 1253 +++++++++++++++++ .../Methods/SettingsMethods.cs | 32 + .../MyScreenSaver.FixVLC_Administrator.csproj | 93 ++ MyScreenSaver.FixVLC_Administrator/Program.cs | 19 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 70 + .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 29 + .../Properties/Settings.settings | 7 + .../app.manifest | 80 ++ MyScreenSaver.FixVLC_Administrator/icon.ico | Bin 0 -> 67646 bytes .../MyScreenSaver.Setup.x86.vdproj | 242 ++-- MyScreenSaver.sln | 6 + MyScreenSaver/App.config | 6 + MyScreenSaver/Forms/OptionsForm.Designer.cs | 268 +++- MyScreenSaver/Forms/OptionsForm.cs | 286 +++- .../Forms/ShowScreenSaverForm.Designer.cs | 2 + MyScreenSaver/Forms/ShowScreenSaverForm.cs | 34 +- MyScreenSaver/Forms/ShowScreenSaverForm.resx | 2 +- .../Forms/VideoPlayerVLCForm.Designer.cs | 3 + MyScreenSaver/Forms/VideoPlayerVLCForm.cs | 33 +- .../Forms/VideoPlayerWMPForm.Designer.cs | 4 + MyScreenSaver/Forms/VideoPlayerWMPForm.cs | 4 +- .../Languages/Localization.Designer.cs | 54 + .../Languages/Localization.en-GB.resx | 18 + .../Languages/Localization.en-US.resx | 18 + MyScreenSaver/Languages/Localization.resx | 18 + MyScreenSaver/Methods/SettingsMethods.cs | 175 +++ MyScreenSaver/MyScreenSaver.csproj | 12 +- MyScreenSaver/Properties/AssemblyInfo.cs | 4 +- MyScreenSaver/Properties/Settings.Designer.cs | 13 + MyScreenSaver/Properties/Settings.settings | 4 + MyScreenSaver/Units/VLC/README.md | 1 + MyScreenSaver/Units/VLC/youtube.lua | 1115 +++++++++++++++ NEWVERSION | 2 +- 38 files changed, 3988 insertions(+), 262 deletions(-) create mode 100644 MyScreenSaver.FixVLC_Administrator/App.config create mode 100644 MyScreenSaver.FixVLC_Administrator/MainForm.Designer.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/MainForm.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/MainForm.resx create mode 100644 MyScreenSaver.FixVLC_Administrator/Methods/SettingsMethods.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/MyScreenSaver.FixVLC_Administrator.csproj create mode 100644 MyScreenSaver.FixVLC_Administrator/Program.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/Properties/AssemblyInfo.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/Properties/Resources.Designer.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/Properties/Resources.resx create mode 100644 MyScreenSaver.FixVLC_Administrator/Properties/Settings.Designer.cs create mode 100644 MyScreenSaver.FixVLC_Administrator/Properties/Settings.settings create mode 100644 MyScreenSaver.FixVLC_Administrator/app.manifest create mode 100644 MyScreenSaver.FixVLC_Administrator/icon.ico create mode 100644 MyScreenSaver/Units/VLC/README.md create mode 100644 MyScreenSaver/Units/VLC/youtube.lua diff --git a/MyScreenSaver.FixVLC_Administrator/App.config b/MyScreenSaver.FixVLC_Administrator/App.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/MyScreenSaver.FixVLC_Administrator/MainForm.Designer.cs b/MyScreenSaver.FixVLC_Administrator/MainForm.Designer.cs new file mode 100644 index 0000000..203e11f --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/MainForm.Designer.cs @@ -0,0 +1,52 @@ + +namespace MyScreenSaver.FixVLC_Administrator +{ + partial class MainForm + { + /// + ///Gerekli tasarımcı değişkeni. + /// + private System.ComponentModel.IContainer components = null; + + /// + ///Kullanılan tüm kaynakları temizleyin. + /// + ///yönetilen kaynaklar dispose edilmeliyse doğru; aksi halde yanlış. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer üretilen kod + + /// + /// Tasarımcı desteği için gerekli metot - bu metodun + ///içeriğini kod düzenleyici ile değiştirmeyin. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.SuspendLayout(); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(104, 0); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "MainForm"; + this.Text = "Fix VLC"; + this.WindowState = System.Windows.Forms.FormWindowState.Minimized; + this.Load += new System.EventHandler(this.MainForm_Load); + this.ResumeLayout(false); + + } + + #endregion + } +} + diff --git a/MyScreenSaver.FixVLC_Administrator/MainForm.cs b/MyScreenSaver.FixVLC_Administrator/MainForm.cs new file mode 100644 index 0000000..0a5741f --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/MainForm.cs @@ -0,0 +1,132 @@ +using MyScreenSaver.FixVLC_Administrator.Methods; +using System; +using System.IO; +using System.Security.Principal; +using System.Windows.Forms; + +namespace MyScreenSaver.FixVLC_Administrator +{ + public partial class MainForm : Form + { + public MainForm() + { + InitializeComponent(); + } + + private void MainForm_Load(object sender, EventArgs e) + { + try + { + bool isElevated; + using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) + { + WindowsPrincipal principal = new WindowsPrincipal(identity); + isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator); + } + if (isElevated) + { + string x86; + string x64; + if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess) + { + x86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86); + x64 = @"C:\Program Files"; + } + else + { + x86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + x64 = ""; + } + + string path = @"\VideoLAN\VLC\lua\playlist\"; + + string filename = "youtube.luac"; + string filenamebak = "youtube.luac.bak"; + string filename2 = "youtube.lua"; + string filename2bak = "youtube.lua.bak"; + string x86fullPath = x86 + path; + string x64fullPath = x64 + path; + + string fullpath = Application.StartupPath + @"\Units\VLC\" + filename2; + + if (SettingsMethods.IsDirExists(x86fullPath)) + { + if (SettingsMethods.IsFileExists(x86fullPath + filename)) + { + File.Copy(x86fullPath + filename, x86fullPath + filenamebak, true); + File.Delete(x86fullPath + filename); + if (SettingsMethods.IsFileExists(x86fullPath + filename2)) + { + File.Copy(x86fullPath + filename2, x86fullPath + filename2bak, true); + File.Delete(x86fullPath + filename2); + + File.Copy(fullpath, x86fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x86fullPath + filename2, true); + } + } + else + { + if (SettingsMethods.IsFileExists(x86fullPath + filename2)) + { + File.Copy(x86fullPath + filename2, x86fullPath + filename2bak, true); + File.Delete(x86fullPath + filename2); + + File.Copy(fullpath, x86fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x86fullPath + filename2, true); + } + } + } + + if (!string.IsNullOrEmpty(x64) && SettingsMethods.IsDirExists(x64fullPath)) + { + if (SettingsMethods.IsFileExists(x64fullPath + filename)) + { + File.Copy(x64fullPath + filename, x64fullPath + filenamebak, true); + File.Delete(x64fullPath + filename); + if (SettingsMethods.IsFileExists(x64fullPath + filename2)) + { + File.Copy(x64fullPath + filename2, x64fullPath + filename2bak, true); + File.Delete(x64fullPath + filename2); + + File.Copy(fullpath, x64fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x64fullPath + filename2, true); + } + } + else + { + if (SettingsMethods.IsFileExists(x64fullPath + filename2)) + { + File.Copy(x64fullPath + filename2, x64fullPath + filename2bak, true); + File.Delete(x64fullPath + filename2); + + File.Copy(fullpath, x64fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x64fullPath + filename2, true); + } + } + } + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + Application.Exit(); + } + finally + { + Application.Exit(); + } + } + } +} \ No newline at end of file diff --git a/MyScreenSaver.FixVLC_Administrator/MainForm.resx b/MyScreenSaver.FixVLC_Administrator/MainForm.resx new file mode 100644 index 0000000..d387ec4 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/MainForm.resx @@ -0,0 +1,1253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + 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 + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAEAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8CAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8IAAD/CAAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD/IAAA/wsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAAEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + //8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + //8AAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAD//wAA//8AAAAAAAD/LQAA/wQAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAA + AAAAAP//AAD//wAA//8AAP//AAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA/wIAAP8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA/wsAAP8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAP8IAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP8tAAD/BAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + /+YAAAAAAAD/KQAA/wYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + //8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + /zYAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA/xAAAP8QAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAAEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/+YAAP/NAAAAAAAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP8HAAD/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + //8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA/wEAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP8LAAD/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP+uAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP/5AAAAAAAA + /y4AAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAADAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP/pAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP+/AAAAAAAA/yIAAP8GAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAMAAAAAAAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA + //8AAP+AAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA//8AAP//AAAAAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA + AAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + //8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + //8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//MAAP/mAAD/5gAA + /+YAAP/mAAD/5gAA/+YAAP/mAAD/5gAA/+YAAP/mAAD/5gAA/+YAAP/mAAD/5gAA/+YAAP/mAAD/8wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + //8AAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAAAAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + AAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA + AAAAAP+YAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAAAAAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wgAAAAAAAD/5gAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP+YAAAAAAAA/y0AAP8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAAAAAAAAAAAAAAAAP8AAAD/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAA + 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 + 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 + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////4AAAAAAAAAAAAH/ + //////x////////////+P//////7gAAAAAAAAAAAAf//////5AAAAAAAAAAAAAAn/////9AAAAAAAAAA + AAAAC/////+gAAAAAAAAAAAAAAX/////QAAAAAAAAAAAAAAC/////oAAAAAAAAAAAAAAAX////6AAAAA + AAAAAAAAAAF////9AAAAAAAAAAAAAAAAv////QAAAAAAAAAAAAAAAL////0AAAAAAAAAAAAAAAC////6 + AAAAAAAAAAAAAAAAX///+gAAAAAAAAAAAAAAAF////oAF///////////6ABf///6ABAAAAAAAAAAAAgA + X///+gAX///////////oAF////oAF///////////6ABf///6ABf//////////+gAX///+gAX//////// + ///oAF////oAF///////////6ABf///6ABf//////////+gAX///+gAX///////////oAF////oAF/// + ////////6ABf///6ABf//////////+gAX///+gAX///////////oAF////oAF///////////6ABf///6 + ABf///v//////+gAX///+gAX///9///////oAF////oAF///+///////6ABf///6ABf//+k//////+gA + X///+gAX///oX//////oAF////oAF///6C//////6ABf///6ABf//+gX/////+gAX///+gAX///oCf// + ///oAF////oAF///6AL/////6ABf///6ABf//+gBf////+gAX///+gAX///oAL/////oAF////oAF/// + 6ABP////6ABf///6ABf//+gAF////+gAX///+gAX///oAAv////oAF////oAF///6AAH////6ABf///6 + ABf//+gAAn///+gAX///+gAX///oAAC////oAF////oAF///6AAAX///6ABf///6ABf//+gAAC///+gA + X///+gAX///oAAAT///oAF////oAF///6AAABf//6ABf///6ABf//+gAAAL//+gAX///+gAX///oAAAB + f//oAF////oAF///6AAAAL//6ABf///6ABf//+gAAAC//+gAX///+gAX///oAAABf//oAF////oAF/// + 6AAAAv//6ABf///6ABf//+gAAAX//+gAX///+gAX///oAAAf///oAF////oAF///6AAAL///6ABf///6 + ABf//+gAAF///+gAX///+gAX///oAAC////oAF////oAF///6AAC////6ABf///6ABf//+gABf///+gA + X///+gAX///oAAv////oAF////oAF///6AAX////6ABf///6ABf//+gAX////+gAX///+gAX///oAP// + ///oAF////oAF///6AF/////6ABf///6ABf//+gC/////+gAX///+gAX///oCf/////oAF////oAF/// + 6B//////6ABf///6ABf//+gv/////+gAX///+gAX///oX//////oAF////oAF///6f//////6ABf///6 + ABf///v//////+gAX///+gAX///////////oAF////oAF///+///////6ABf///6ABf//////////+gA + X///+gAX///////////oAF////oAF///////////6ABf///6ABf//////////+gAX///+gAX//////// + ///oAF////oAF///////////6ABf///6ABf//////////+gAX///+gAX///////////oAF////oAF/// + ////////6ABf///6ABf//////////+gAX///+gAX///////////oAF////oAEAAAAAAAAAAACABf///6 + ABf//////////+gAX///+gAAAAAAAAAAAAAAAF////oAAAAAAAAAAAAAAABf///9AAAAAAAAAAAAAAAA + v////QAAAAAAAAAAAAAAAL////0AAAAAAAAAAAAAAAC////+gAAAAAAAAAAAAAABf////oAAAAAAAAAA + AAAAAX////9AAAAAAAAAAAAAAAL/////oAAAAAAAAAAAAAAF/////9AAAAAAAAAAAAAAC//////0AAAA + AAAAAAAAACf//////4AAAAAAAAAAAAH///////5////////////+P///////gAAAAAAAAAAAAf////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/MyScreenSaver.FixVLC_Administrator/Methods/SettingsMethods.cs b/MyScreenSaver.FixVLC_Administrator/Methods/SettingsMethods.cs new file mode 100644 index 0000000..48fcc96 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/Methods/SettingsMethods.cs @@ -0,0 +1,32 @@ +using System; +using System.IO; + +namespace MyScreenSaver.FixVLC_Administrator.Methods +{ + internal class SettingsMethods + { + internal static bool IsDirExists(string dirPath) + { + try + { + return Directory.Exists(dirPath); + } + catch (Exception) + { + throw; + } + } + + internal static bool IsFileExists(string filePath) + { + try + { + return File.Exists(filePath); + } + catch (Exception) + { + throw; + } + } + } +} diff --git a/MyScreenSaver.FixVLC_Administrator/MyScreenSaver.FixVLC_Administrator.csproj b/MyScreenSaver.FixVLC_Administrator/MyScreenSaver.FixVLC_Administrator.csproj new file mode 100644 index 0000000..e45d021 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/MyScreenSaver.FixVLC_Administrator.csproj @@ -0,0 +1,93 @@ + + + + + Debug + AnyCPU + {B511D058-9BE9-4C6C-BAB8-C7409F938140} + WinExe + MyScreenSaver.FixVLC_Administrator + MyScreenSaver.FixVLC_Administrator + v4.5 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + app.manifest + + + icon.ico + + + + + + + + + + + + + + + + + Form + + + MainForm.cs + + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + \ No newline at end of file diff --git a/MyScreenSaver.FixVLC_Administrator/Program.cs b/MyScreenSaver.FixVLC_Administrator/Program.cs new file mode 100644 index 0000000..c346410 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Windows.Forms; + +namespace MyScreenSaver.FixVLC_Administrator +{ + internal static class Program + { + /// + /// Uygulamanın ana girdi noktası. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} \ No newline at end of file diff --git a/MyScreenSaver.FixVLC_Administrator/Properties/AssemblyInfo.cs b/MyScreenSaver.FixVLC_Administrator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8d33d01 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Bir bütünleştirilmiş koda ilişkin Genel Bilgiler aşağıdaki öznitelikler kümesiyle +// denetlenir. Bütünleştirilmiş kod ile ilişkili bilgileri değiştirmek için +// bu öznitelik değerlerini değiştirin. +[assembly: AssemblyTitle("MyScreenSaver.FixVLC_Administrator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Fırat Loğoğlu")] +[assembly: AssemblyProduct("MyScreenSaver.FixVLC_Administrator")] +[assembly: AssemblyCopyright("Fırat Loğoğlu © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible özniteliğinin false olarak ayarlanması bu bütünleştirilmiş koddaki türleri +// COM bileşenleri için görünmez yapar. Bu bütünleştirilmiş koddaki bir türe +// erişmeniz gerekirse ComVisible özniteliğini o türde true olarak ayarlayın. +[assembly: ComVisible(false)] + +// Bu proje COM'un kullanımına sunulursa, aşağıdaki GUID tür kitaplığının kimliği içindir +[assembly: Guid("b511d058-9be9-4c6c-bab8-c7409f938140")] + +// Bir derlemenin sürüm bilgileri aşağıdaki dört değerden oluşur: +// +// Ana Sürüm +// İkincil Sürüm +// Yapı Numarası +// Düzeltme +// +// Tüm değerleri belirtebilir veya varsayılan Derleme ve Düzeltme Numaralarını kullanmak için +// aşağıda gösterildiği gibi '*' kullanabilirsiniz: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MyScreenSaver.FixVLC_Administrator/Properties/Resources.Designer.cs b/MyScreenSaver.FixVLC_Administrator/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4f850ed --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// Bu kod bir araç tarafından oluşturuldu. +// Çalışma Zamanı Sürümü: 4.0.30319.42000 +// +// Bu dosyada yapılan değişiklikler yanlış davranışa yol açabilir ve şu durumda kaybolur +// kod yeniden oluşturulduğunda. +// +//------------------------------------------------------------------------------ + + +namespace MyScreenSaver.FixVLC_Administrator.Properties +{ + /// + /// Yerelleştirilmiş dizeleri vs. aramak için türü kesin belirlenmiş bir kaynak sınıfı. + /// + // Bu sınıf, StronglyTypedResourceBuilder tarafından otomatik olarak + // ResGen ya da Visual Studio gibi bir araç ile oluşturuldu. + // Bir üye eklemek ya da kaldırmak için .ResX dosyanızı düyenleyin, sonra da ResGen + // öğesini /str seçeneğiyle yeniden çalıştırın veya VS projenizi yeniden derleyin. + [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() + { + } + + /// + /// Bu sınıf tarafından kullanılan, önbelleğe alınmış ResourceManager örneğini döndürür. + /// + [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("MyScreenSaver.FixVLC_Administrator.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Geçerli iş parçacığının CurrentUICulture özelliğini, türü kesin belirlenmiş + /// bu kaynak sınıfını kullanan tüm kaynak aramaları için geçersiz kılar. + /// + [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/MyScreenSaver.FixVLC_Administrator/Properties/Resources.resx b/MyScreenSaver.FixVLC_Administrator/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/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/MyScreenSaver.FixVLC_Administrator/Properties/Settings.Designer.cs b/MyScreenSaver.FixVLC_Administrator/Properties/Settings.Designer.cs new file mode 100644 index 0000000..1638839 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// 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 MyScreenSaver.FixVLC_Administrator.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/MyScreenSaver.FixVLC_Administrator/Properties/Settings.settings b/MyScreenSaver.FixVLC_Administrator/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/MyScreenSaver.FixVLC_Administrator/app.manifest b/MyScreenSaver.FixVLC_Administrator/app.manifest new file mode 100644 index 0000000..15744cb --- /dev/null +++ b/MyScreenSaver.FixVLC_Administrator/app.manifest @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MyScreenSaver.FixVLC_Administrator/icon.ico b/MyScreenSaver.FixVLC_Administrator/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cc7b7ef05a32e4c7aad71b33c9e82a3d9ea0a003 GIT binary patch literal 67646 zcmeI5Pmf+*TdnWclKlLhCslRj{+-X2+rF$`-CR{)S5@`Ot?m?^4 zpV3i)%V&*G;GUMd){|BCS{D-qV4rooD=G%SJ}Y|}4~mEZ`b_5*@d^99TCn(@0Uzhy z`1^ct&&yr(X58wtR<;lT`y$4@&0>I_?YKo^5&LblUPix3;qL14s`4WNrQQ>?K7zjqds}#df2*&1hq}b~s9XQQzeQ>~ zn8BYk7M&|!-c-kmg~c!Naqga7!uVeaPm^v1#Q^v(>|BQaFEK(j^4~34Sapia!GEEO z5&T=t3wTb@`hxjCE)XL5hhu@vA#n~Yy9)f5=_l-jXUv{G*yx@B{I}=dGH|ZAVL0p3 z){XH$PWOf5e>-0M*;HSD?_%JKI9Fn>0{Ie~E{b zF#!HOn)U?v+ck^1VyD0Vl0KVi&(dN1pZ%tYm+f)C;b|KikSM*S9_g2k8HS7%_)S`2XrFO!z#{+63^oDyGWE z@c*Z=QU92KyjR}0&qgT@EGyf=^S`L)f218vySe9jW~Mgi|4I;R(%ApmyuZd;)f(l& zf1#>#`QQ0^Hk|9nS_=MSsu<2q@qgdgs=syPea81X=C%O*=PLC;xe5MsRVj1*SPQ^^ zOcleq3;fwiVdK4S8Te~OjOj7{XKy3t=Od%rQXKq6iO9Y0-=t%!r88B+XS+EqYJK+p zOFO3aY&&Os`?{w5()r{kom+d6I;g4))g^0A>o@o(({xXUz&{bKoMT}km&pwHClqss zroexP&=R@~{t3n0p(*g+A+&@pgMUIXcW4UycL*(^%iy0-%pIBn{~bb0=rZ^x6my5B zz<-C(61oij3B}x@siW|xc5br%rl1!lj+?^^vkvf!A8W2}zMe~b5( z(f`f&X|aqiUAI~Pr-~5+o5sMV?5Xm|&w-cX8F};P6Xu`uzMm^po3VE;R(w8!_-NvT zDR}J_k^D)-K-PJnDE1O-*Cpg_-FTjq~(uXYU$H9AMwD zoU6mkFhMaW00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7KmjPwC{RDX zs_!WO_b&a6((k(T6H347($_9|f9}#(x5M5pN1oWGw`TIb)rrUJhGuKb6SO8=zN ztU*xzOO;O~LwiIrOcS|Y`WKa^3Ih8Tg-)1$s?yiD{d}q*EKewVY1g7&`YV-wqSCHK zz4ER_y|ke6PGqhH2NDUYe>4^L0GD zQ29EZPW}8lN(T0HymGc7UzaZ`JvH9QaOC!<;rKN*{^|Uw@wI-_)yGudb!iHs!Fc|6 cm(SyUeU=l=d~ttESJBeU7dpSmdo0`k0gI}!(EtDd literal 0 HcmV?d00001 diff --git a/MyScreenSaver.Setup.x86/MyScreenSaver.Setup.x86.vdproj b/MyScreenSaver.Setup.x86/MyScreenSaver.Setup.x86.vdproj index f8abc30..8c5123e 100644 --- a/MyScreenSaver.Setup.x86/MyScreenSaver.Setup.x86.vdproj +++ b/MyScreenSaver.Setup.x86/MyScreenSaver.Setup.x86.vdproj @@ -21,104 +21,104 @@ } "Entry" { - "MsmKey" = "8:_1DD375D338C84E82CA68F4DF5C3880DD" - "OwnerKey" = "8:_C5D5BE27EEE48F6B31DDD8B4A2442948" + "MsmKey" = "8:_3A84EF92579F08AA4526BCEB6E1B4E88" + "OwnerKey" = "8:_4D94F0A2FF03E12A099224DFC63F1410" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_1DD375D338C84E82CA68F4DF5C3880DD" + "MsmKey" = "8:_3A84EF92579F08AA4526BCEB6E1B4E88" "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_1DD375D338C84E82CA68F4DF5C3880DD" + "MsmKey" = "8:_3A84EF92579F08AA4526BCEB6E1B4E88" "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_2116A9C1DD7DB3765C5F787FA14A06B0" - "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" + "MsmKey" = "8:_400B122068E9B29F6A2D5D1A30D754AE" + "OwnerKey" = "8:_5AB2F21F436ECE41EAD68C11C62844E3" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_3D486C059A60A281C732DE7EABDEC352" + "MsmKey" = "8:_400B122068E9B29F6A2D5D1A30D754AE" "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_4F3211DC976D0DCAE39901F08C6EE052" + "MsmKey" = "8:_400B122068E9B29F6A2D5D1A30D754AE" "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_557B2D6D6342A12F31703E38586254FD" + "MsmKey" = "8:_4D94F0A2FF03E12A099224DFC63F1410" "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_557B2D6D6342A12F31703E38586254FD" + "MsmKey" = "8:_4D94F0A2FF03E12A099224DFC63F1410" "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_578214F3B283445694E17F8F6F136098" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_4F3211DC976D0DCAE39901F08C6EE052" + "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_6778EE535E0C14A068067C1691E845C2" - "OwnerKey" = "8:_557B2D6D6342A12F31703E38586254FD" + "MsmKey" = "8:_578214F3B283445694E17F8F6F136098" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_6778EE535E0C14A068067C1691E845C2" - "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" + "MsmKey" = "8:_5AB2F21F436ECE41EAD68C11C62844E3" + "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_6778EE535E0C14A068067C1691E845C2" - "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" + "MsmKey" = "8:_5AB2F21F436ECE41EAD68C11C62844E3" + "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_97B7D2EC66634B3E870FE1FF8E76CFAA" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_9052DCD01FB7AC83D19011F58DB05C8E" + "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_C5D5BE27EEE48F6B31DDD8B4A2442948" - "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" + "MsmKey" = "8:_9052DCD01FB7AC83D19011F58DB05C8E" + "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_C5D5BE27EEE48F6B31DDD8B4A2442948" - "OwnerKey" = "8:_578214F3B283445694E17F8F6F136098" + "MsmKey" = "8:_97B7D2EC66634B3E870FE1FF8E76CFAA" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_C87636DD260B49455A522EA46F77041D" - "OwnerKey" = "8:_6778EE535E0C14A068067C1691E845C2" + "MsmKey" = "8:_AC44743AAEE2472E887D9D8E7942EF47" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_DD24E67AEB5C99800D58A254E1F420FA" - "OwnerKey" = "8:_1DD375D338C84E82CA68F4DF5C3880DD" + "OwnerKey" = "8:_400B122068E9B29F6A2D5D1A30D754AE" "MsmSig" = "8:_UNDEFINED" } "Entry" @@ -142,43 +142,37 @@ "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_3D486C059A60A281C732DE7EABDEC352" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" + "OwnerKey" = "8:_9052DCD01FB7AC83D19011F58DB05C8E" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_2116A9C1DD7DB3765C5F787FA14A06B0" + "OwnerKey" = "8:_5AB2F21F436ECE41EAD68C11C62844E3" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_C5D5BE27EEE48F6B31DDD8B4A2442948" + "OwnerKey" = "8:_400B122068E9B29F6A2D5D1A30D754AE" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_1DD375D338C84E82CA68F4DF5C3880DD" + "OwnerKey" = "8:_4D94F0A2FF03E12A099224DFC63F1410" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_557B2D6D6342A12F31703E38586254FD" + "OwnerKey" = "8:_3A84EF92579F08AA4526BCEB6E1B4E88" "MsmSig" = "8:_UNDEFINED" } "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_6778EE535E0C14A068067C1691E845C2" + "OwnerKey" = "8:_FB42499CE34C438D86E7CFD257EF178D" "MsmSig" = "8:_UNDEFINED" } "Entry" @@ -227,7 +221,7 @@ "DisplayName" = "8:Release" "IsDebugOnly" = "11:FALSE" "IsReleaseOnly" = "11:TRUE" - "OutputFilename" = "8:Release\\MyScreenSaver.Setup_v1.0.0.0_x86.msi" + "OutputFilename" = "8:Release\\MyScreenSaver.Setup_v1.0.0.5_x86.msi" "PackageFilesAs" = "3:2" "PackageFileSize" = "3:-2147483648" "CabType" = "3:1" @@ -302,24 +296,24 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_1DD375D338C84E82CA68F4DF5C3880DD" + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3A84EF92579F08AA4526BCEB6E1B4E88" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Interop.WMPLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Interop.AXVLC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { - "_1DD375D338C84E82CA68F4DF5C3880DD" + "_3A84EF92579F08AA4526BCEB6E1B4E88" { - "Name" = "8:Interop.WMPLib.dll" + "Name" = "8:Interop.AXVLC.dll" "Attributes" = "3:512" } } - "SourcePath" = "8:Interop.WMPLib.dll" + "SourcePath" = "8:Interop.AXVLC.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" - "Condition" = "8:" + "Condition" = "8:AXVLC.DLL" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" @@ -333,20 +327,20 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2116A9C1DD7DB3765C5F787FA14A06B0" + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_400B122068E9B29F6A2D5D1A30D754AE" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:UpdateManager, Version=1.0.0.5, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Interop.WMPLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { - "_2116A9C1DD7DB3765C5F787FA14A06B0" + "_400B122068E9B29F6A2D5D1A30D754AE" { - "Name" = "8:UpdateManager.dll" + "Name" = "8:Interop.WMPLib.dll" "Attributes" = "3:512" } } - "SourcePath" = "8:UpdateManager.dll" + "SourcePath" = "8:Interop.WMPLib.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" @@ -364,24 +358,24 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3D486C059A60A281C732DE7EABDEC352" + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_4D94F0A2FF03E12A099224DFC63F1410" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:UpdateManager, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:AxInterop.AXVLC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { - "_3D486C059A60A281C732DE7EABDEC352" + "_4D94F0A2FF03E12A099224DFC63F1410" { - "Name" = "8:UpdateManager.dll" + "Name" = "8:AxInterop.AXVLC.dll" "Attributes" = "3:512" } } - "SourcePath" = "8:UpdateManager.dll" + "SourcePath" = "8:AxInterop.AXVLC.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" - "Condition" = "8:" + "Condition" = "8:AXVLC.DLL" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" @@ -426,24 +420,24 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_557B2D6D6342A12F31703E38586254FD" + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_578214F3B283445694E17F8F6F136098" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:AxInterop.AXVLC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:MyScreenSaver, Version=1.0.0.5, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { - "_557B2D6D6342A12F31703E38586254FD" + "_578214F3B283445694E17F8F6F136098" { - "Name" = "8:AxInterop.AXVLC.dll" + "Name" = "8:MyScreenSaver.scr" "Attributes" = "3:512" } } - "SourcePath" = "8:AxInterop.AXVLC.dll" + "SourcePath" = "8:..\\MyScreenSaver\\bin\\Release\\MyScreenSaver.scr" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" - "Condition" = "8:AXVLC.DLL" + "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" @@ -454,23 +448,23 @@ "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" + "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_578214F3B283445694E17F8F6F136098" + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5AB2F21F436ECE41EAD68C11C62844E3" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:MyScreenSaver, Version=1.0.0.3, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:AxInterop.WMPLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { - "_578214F3B283445694E17F8F6F136098" + "_5AB2F21F436ECE41EAD68C11C62844E3" { - "Name" = "8:MyScreenSaver.scr" + "Name" = "8:AxInterop.WMPLib.dll" "Attributes" = "3:512" } } - "SourcePath" = "8:..\\MyScreenSaver\\bin\\Release\\MyScreenSaver.scr" + "SourcePath" = "8:AxInterop.WMPLib.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" @@ -485,27 +479,27 @@ "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" + "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_6778EE535E0C14A068067C1691E845C2" + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9052DCD01FB7AC83D19011F58DB05C8E" { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Interop.AXVLC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:UpdateManager, Version=1.0.0.5, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { - "_6778EE535E0C14A068067C1691E845C2" + "_9052DCD01FB7AC83D19011F58DB05C8E" { - "Name" = "8:Interop.AXVLC.dll" + "Name" = "8:UpdateManager.dll" "Attributes" = "3:512" } } - "SourcePath" = "8:Interop.AXVLC.dll" + "SourcePath" = "8:UpdateManager.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" - "Condition" = "8:AXVLC.DLL" + "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" @@ -539,23 +533,12 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_C5D5BE27EEE48F6B31DDD8B4A2442948" + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_AC44743AAEE2472E887D9D8E7942EF47" { - "AssemblyRegister" = "3:1" - "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:AxInterop.WMPLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" - "ScatterAssemblies" - { - "_C5D5BE27EEE48F6B31DDD8B4A2442948" - { - "Name" = "8:AxInterop.WMPLib.dll" - "Attributes" = "3:512" - } - } - "SourcePath" = "8:AxInterop.WMPLib.dll" - "TargetName" = "8:" + "SourcePath" = "8:..\\MyScreenSaver\\Units\\VLC\\youtube.lua" + "TargetName" = "8:youtube.lua" "Tag" = "8:" - "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" + "Folder" = "8:_4461B5937A344FE0B9AE4BA1DB054C02" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" @@ -567,27 +550,7 @@ "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C87636DD260B49455A522EA46F77041D" - { - "SourcePath" = "8:axvlc.dll" - "TargetName" = "8:axvlc.dll" - "Tag" = "8:" - "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" - "Condition" = "8:Not AXVLC.DLL" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:4" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" + "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DD24E67AEB5C99800D58A254E1F420FA" @@ -701,15 +664,26 @@ "Property" = "8:TARGETDIR" "Folders" { - "{9EF0B969-E518-4E46-987F-47570745A589}:_65F8110C34A74EC3A830056417002DF4" + "{9EF0B969-E518-4E46-987F-47570745A589}:_ED641F119A134D4BAAC64BCF1970CADD" { - "Name" = "8:Tools" + "Name" = "8:Units" "AlwaysCreate" = "11:FALSE" "Condition" = "8:" "Transitive" = "11:FALSE" - "Property" = "8:_32D5DE42AD434A7DA25D56892E09D04E" + "Property" = "8:_7BC9D899FEC54772AC2B230498BCCD93" "Folders" { + "{9EF0B969-E518-4E46-987F-47570745A589}:_4461B5937A344FE0B9AE4BA1DB054C02" + { + "Name" = "8:VLC" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:_7BB49FF6E2404AF09477E8DA3DBD0F83" + "Folders" + { + } + } } } } @@ -752,15 +726,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:MyScreenSaver" - "ProductCode" = "8:{5147155F-2510-4D9B-B4FB-AC7B4093408B}" - "PackageCode" = "8:{1F9AAE8A-23A1-44AF-9390-8D7412934268}" - "UpgradeCode" = "8:{1132711B-8CDF-4239-A098-D1E586BDCA10}" + "ProductCode" = "8:{6AD7699A-F6DA-478F-9432-5A52F13B0815}" + "PackageCode" = "8:{1515B41C-330F-425D-8CE8-BA5D0FDB0E97}" + "UpgradeCode" = "8:{3822ECF3-48AA-492C-B21E-149B58180735}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.0.0" + "ProductVersion" = "8:1.0.5" "Manufacturer" = "8:Fırat Loğoğlu" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:https://github.com/firatlogoglu/MyScreenSaver/issues" @@ -1300,6 +1274,34 @@ } "ProjectOutput" { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_86844457E07D4BE7911EFACE2068FC8A" + { + "SourcePath" = "8:" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:Release|Any CPU" + "OutputGroupCanonicalName" = "8:LocalizedResourceDlls" + "OutputProjectGuid" = "8:{2A2C7A23-60E4-4CC8-BD84-8E3A46565953}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F5E2679BFB8E4C7A81BE8D3E9B1E1042" { "SourcePath" = "8:" @@ -1330,7 +1332,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FB42499CE34C438D86E7CFD257EF178D" { - "SourcePath" = "8:..\\MyScreenSaver\\obj\\Debug\\MyScreenSaver.exe" + "SourcePath" = "8:..\\MyScreenSaver\\obj\\Release\\MyScreenSaver.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_E568AD305EEF4AED8589C0DFB5FF4046" diff --git a/MyScreenSaver.sln b/MyScreenSaver.sln index ba90907..fcd73b3 100644 --- a/MyScreenSaver.sln +++ b/MyScreenSaver.sln @@ -21,6 +21,8 @@ Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "MyScreenSaver.x86.Setup", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateManager", "UpdateManager\UpdateManager.csproj", "{2A2C7A23-60E4-4CC8-BD84-8E3A46565953}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyScreenSaver.FixVLC_Administrator", "MyScreenSaver.FixVLC_Administrator\MyScreenSaver.FixVLC_Administrator.csproj", "{B511D058-9BE9-4C6C-BAB8-C7409F938140}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {2A2C7A23-60E4-4CC8-BD84-8E3A46565953}.Debug|Any CPU.Build.0 = Debug|Any CPU {2A2C7A23-60E4-4CC8-BD84-8E3A46565953}.Release|Any CPU.ActiveCfg = Release|Any CPU {2A2C7A23-60E4-4CC8-BD84-8E3A46565953}.Release|Any CPU.Build.0 = Release|Any CPU + {B511D058-9BE9-4C6C-BAB8-C7409F938140}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B511D058-9BE9-4C6C-BAB8-C7409F938140}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B511D058-9BE9-4C6C-BAB8-C7409F938140}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B511D058-9BE9-4C6C-BAB8-C7409F938140}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MyScreenSaver/App.config b/MyScreenSaver/App.config index 82523c5..d1a017f 100644 --- a/MyScreenSaver/App.config +++ b/MyScreenSaver/App.config @@ -79,6 +79,12 @@ False + + + + + diff --git a/MyScreenSaver/Forms/OptionsForm.Designer.cs b/MyScreenSaver/Forms/OptionsForm.Designer.cs index 1824c67..86ac3c0 100644 --- a/MyScreenSaver/Forms/OptionsForm.Designer.cs +++ b/MyScreenSaver/Forms/OptionsForm.Designer.cs @@ -72,6 +72,7 @@ private void InitializeComponent() this.btnPictureExtensionDefault = new System.Windows.Forms.Button(); this.btnRemovePictureExtension = new System.Windows.Forms.Button(); this.grpBoxGeneralSettings = new System.Windows.Forms.GroupBox(); + this.btnYoutubeSt = new System.Windows.Forms.Button(); this.btnOpenUpdateManager = new System.Windows.Forms.Button(); this.chkBoxRememberRemoveFileList = new System.Windows.Forms.CheckBox(); this.chkBoxShowClockAndDate = new System.Windows.Forms.CheckBox(); @@ -93,6 +94,14 @@ private void InitializeComponent() this.btnRemoveVideoExtension = new System.Windows.Forms.Button(); this.btnAddVideoExtension = new System.Windows.Forms.Button(); this.radioBtnWMP = new System.Windows.Forms.RadioButton(); + this.grpBoxURLforVLC = new System.Windows.Forms.GroupBox(); + this.txtboxURLforVLC = new System.Windows.Forms.TextBox(); + this.listboxURLforVLC = new System.Windows.Forms.ListBox(); + this.btnAllRemoveURLforVLC = new System.Windows.Forms.Button(); + this.btnAddURLforVLC = new System.Windows.Forms.Button(); + this.btnRemoveURLforVLC = new System.Windows.Forms.Button(); + this.lblLVC_URL = new System.Windows.Forms.Label(); + this.btnEditURLforVLC = new System.Windows.Forms.Button(); this.grpBoxPictureSlideShow.SuspendLayout(); this.grpBoxMusicPlayer.SuspendLayout(); this.grpBoxMusicDirList.SuspendLayout(); @@ -104,6 +113,7 @@ private void InitializeComponent() this.grpBoxVideoSlideShow.SuspendLayout(); this.grpBoxVideoDirList.SuspendLayout(); this.grpBoxVideoExtension.SuspendLayout(); + this.grpBoxURLforVLC.SuspendLayout(); this.SuspendLayout(); // // chkBoxMouseDbClick @@ -114,7 +124,7 @@ private void InitializeComponent() this.chkBoxMouseDbClick.Location = new System.Drawing.Point(6, 60); this.chkBoxMouseDbClick.Name = "chkBoxMouseDbClick"; this.chkBoxMouseDbClick.Size = new System.Drawing.Size(106, 17); - this.chkBoxMouseDbClick.TabIndex = 0; + this.chkBoxMouseDbClick.TabIndex = 2; this.chkBoxMouseDbClick.Text = "Çift tıklayarak çık"; this.chkBoxMouseDbClick.UseVisualStyleBackColor = true; this.chkBoxMouseDbClick.CheckedChanged += new System.EventHandler(this.chkBoxMouseDbClick_CheckedChanged); @@ -146,14 +156,14 @@ private void InitializeComponent() this.listboxPictureDirs.Location = new System.Drawing.Point(6, 19); this.listboxPictureDirs.Name = "listboxPictureDirs"; this.listboxPictureDirs.Size = new System.Drawing.Size(491, 82); - this.listboxPictureDirs.TabIndex = 3; + this.listboxPictureDirs.TabIndex = 34; // // btnAdd // this.btnAdd.Location = new System.Drawing.Point(6, 107); this.btnAdd.Name = "btnAdd"; this.btnAdd.Size = new System.Drawing.Size(75, 23); - this.btnAdd.TabIndex = 4; + this.btnAdd.TabIndex = 35; this.btnAdd.Text = "Ekle"; this.btnAdd.UseVisualStyleBackColor = true; this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); @@ -163,7 +173,7 @@ private void InitializeComponent() this.btnRemove.Location = new System.Drawing.Point(87, 107); this.btnRemove.Name = "btnRemove"; this.btnRemove.Size = new System.Drawing.Size(75, 23); - this.btnRemove.TabIndex = 5; + this.btnRemove.TabIndex = 36; this.btnRemove.Text = "Kaldır"; this.btnRemove.UseVisualStyleBackColor = true; this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click); @@ -173,17 +183,17 @@ private void InitializeComponent() this.btnDefault.Location = new System.Drawing.Point(416, 107); this.btnDefault.Name = "btnDefault"; this.btnDefault.Size = new System.Drawing.Size(75, 23); - this.btnDefault.TabIndex = 6; + this.btnDefault.TabIndex = 38; this.btnDefault.Text = "Varsayılan"; this.btnDefault.UseVisualStyleBackColor = true; this.btnDefault.Click += new System.EventHandler(this.btnDefault_Click); // // btnShow // - this.btnShow.Location = new System.Drawing.Point(12, 860); + this.btnShow.Location = new System.Drawing.Point(9, 803); this.btnShow.Name = "btnShow"; this.btnShow.Size = new System.Drawing.Size(75, 23); - this.btnShow.TabIndex = 7; + this.btnShow.TabIndex = 67; this.btnShow.Text = "Göster"; this.btnShow.UseVisualStyleBackColor = true; this.btnShow.Click += new System.EventHandler(this.btnShow_Click); @@ -193,7 +203,7 @@ private void InitializeComponent() this.btnAllRemove.Location = new System.Drawing.Point(168, 107); this.btnAllRemove.Name = "btnAllRemove"; this.btnAllRemove.Size = new System.Drawing.Size(96, 23); - this.btnAllRemove.TabIndex = 8; + this.btnAllRemove.TabIndex = 37; this.btnAllRemove.Text = "Tümünü Kaldır"; this.btnAllRemove.UseVisualStyleBackColor = true; this.btnAllRemove.Click += new System.EventHandler(this.btnAllRemove_Click); @@ -212,7 +222,7 @@ private void InitializeComponent() this.txtboxTime.Location = new System.Drawing.Point(44, 26); this.txtboxTime.Name = "txtboxTime"; this.txtboxTime.Size = new System.Drawing.Size(164, 20); - this.txtboxTime.TabIndex = 10; + this.txtboxTime.TabIndex = 47; this.txtboxTime.TextChanged += new System.EventHandler(this.txtboxTime_TextChanged); // // chkBoxPictureAuto @@ -221,17 +231,17 @@ private void InitializeComponent() this.chkBoxPictureAuto.Location = new System.Drawing.Point(272, 19); this.chkBoxPictureAuto.Name = "chkBoxPictureAuto"; this.chkBoxPictureAuto.Size = new System.Drawing.Size(194, 17); - this.chkBoxPictureAuto.TabIndex = 11; + this.chkBoxPictureAuto.TabIndex = 48; this.chkBoxPictureAuto.Text = "Resimleri slayt gösterisi olarak oynat"; this.chkBoxPictureAuto.UseVisualStyleBackColor = true; this.chkBoxPictureAuto.CheckedChanged += new System.EventHandler(this.chkBoxPictureAuto_CheckedChanged); // // btnOK // - this.btnOK.Location = new System.Drawing.Point(983, 853); + this.btnOK.Location = new System.Drawing.Point(971, 803); this.btnOK.Name = "btnOK"; this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 12; + this.btnOK.TabIndex = 68; this.btnOK.Text = "Tamam"; this.btnOK.UseVisualStyleBackColor = true; this.btnOK.Click += new System.EventHandler(this.btnOK_Click); @@ -243,14 +253,14 @@ private void InitializeComponent() this.listboxPictureExtensions.Location = new System.Drawing.Point(6, 19); this.listboxPictureExtensions.Name = "listboxPictureExtensions"; this.listboxPictureExtensions.Size = new System.Drawing.Size(481, 95); - this.listboxPictureExtensions.TabIndex = 13; + this.listboxPictureExtensions.TabIndex = 40; // // btnAddPictureExtension // this.btnAddPictureExtension.Location = new System.Drawing.Point(112, 118); this.btnAddPictureExtension.Name = "btnAddPictureExtension"; this.btnAddPictureExtension.Size = new System.Drawing.Size(75, 23); - this.btnAddPictureExtension.TabIndex = 4; + this.btnAddPictureExtension.TabIndex = 42; this.btnAddPictureExtension.Text = "Ekle"; this.btnAddPictureExtension.UseVisualStyleBackColor = true; this.btnAddPictureExtension.Click += new System.EventHandler(this.btnAddPictureExtension_Click); @@ -260,7 +270,7 @@ private void InitializeComponent() this.txtboxPictureExtension.Location = new System.Drawing.Point(6, 120); this.txtboxPictureExtension.Name = "txtboxPictureExtension"; this.txtboxPictureExtension.Size = new System.Drawing.Size(100, 20); - this.txtboxPictureExtension.TabIndex = 14; + this.txtboxPictureExtension.TabIndex = 41; // // grpBoxPictureSlideShow // @@ -273,18 +283,18 @@ private void InitializeComponent() this.grpBoxPictureSlideShow.Controls.Add(this.grpBoxPictureExtension); this.grpBoxPictureSlideShow.Location = new System.Drawing.Point(612, 12); this.grpBoxPictureSlideShow.Name = "grpBoxPictureSlideShow"; - this.grpBoxPictureSlideShow.Size = new System.Drawing.Size(514, 789); - this.grpBoxPictureSlideShow.TabIndex = 15; + this.grpBoxPictureSlideShow.Size = new System.Drawing.Size(514, 785); + this.grpBoxPictureSlideShow.TabIndex = 32; this.grpBoxPictureSlideShow.TabStop = false; this.grpBoxPictureSlideShow.Text = "Slayt Gösterisi"; // // radioBtnVLC2 // this.radioBtnVLC2.AutoSize = true; - this.radioBtnVLC2.Location = new System.Drawing.Point(145, 758); + this.radioBtnVLC2.Location = new System.Drawing.Point(145, 756); this.radioBtnVLC2.Name = "radioBtnVLC2"; this.radioBtnVLC2.Size = new System.Drawing.Size(109, 17); - this.radioBtnVLC2.TabIndex = 20; + this.radioBtnVLC2.TabIndex = 66; this.radioBtnVLC2.TabStop = true; this.radioBtnVLC2.Tag = "radioBtnWMP2"; this.radioBtnVLC2.Text = "VLC Media Player"; @@ -294,10 +304,10 @@ private void InitializeComponent() // radioBtnWMP2 // this.radioBtnWMP2.AutoSize = true; - this.radioBtnWMP2.Location = new System.Drawing.Point(6, 758); + this.radioBtnWMP2.Location = new System.Drawing.Point(6, 756); this.radioBtnWMP2.Name = "radioBtnWMP2"; this.radioBtnWMP2.Size = new System.Drawing.Size(133, 17); - this.radioBtnWMP2.TabIndex = 19; + this.radioBtnWMP2.TabIndex = 65; this.radioBtnWMP2.TabStop = true; this.radioBtnWMP2.Tag = "radioBtnWMP2"; this.radioBtnWMP2.Text = "Windows Media Player"; @@ -307,10 +317,10 @@ private void InitializeComponent() // grpBoxMusicPlayer // this.grpBoxMusicPlayer.Controls.Add(this.grpBoxMusicDirList); - this.grpBoxMusicPlayer.Location = new System.Drawing.Point(6, 392); + this.grpBoxMusicPlayer.Location = new System.Drawing.Point(6, 396); this.grpBoxMusicPlayer.Name = "grpBoxMusicPlayer"; - this.grpBoxMusicPlayer.Size = new System.Drawing.Size(502, 319); - this.grpBoxMusicPlayer.TabIndex = 17; + this.grpBoxMusicPlayer.Size = new System.Drawing.Size(502, 323); + this.grpBoxMusicPlayer.TabIndex = 50; this.grpBoxMusicPlayer.TabStop = false; this.grpBoxMusicPlayer.Text = "Müzik Oynatıcısı"; // @@ -324,10 +334,10 @@ private void InitializeComponent() this.grpBoxMusicDirList.Controls.Add(this.btnRemoveMusic); this.grpBoxMusicDirList.Controls.Add(this.btnDefaultMusic); this.grpBoxMusicDirList.Controls.Add(this.btnAllRemoveMusic); - this.grpBoxMusicDirList.Location = new System.Drawing.Point(6, 19); + this.grpBoxMusicDirList.Location = new System.Drawing.Point(10, 19); this.grpBoxMusicDirList.Name = "grpBoxMusicDirList"; this.grpBoxMusicDirList.Size = new System.Drawing.Size(490, 294); - this.grpBoxMusicDirList.TabIndex = 17; + this.grpBoxMusicDirList.TabIndex = 51; this.grpBoxMusicDirList.TabStop = false; this.grpBoxMusicDirList.Text = "Müzik Klasör Listesi"; // @@ -344,7 +354,7 @@ private void InitializeComponent() this.grpBoxMusicExtension.Location = new System.Drawing.Point(5, 136); this.grpBoxMusicExtension.Name = "grpBoxMusicExtension"; this.grpBoxMusicExtension.Size = new System.Drawing.Size(478, 146); - this.grpBoxMusicExtension.TabIndex = 19; + this.grpBoxMusicExtension.TabIndex = 57; this.grpBoxMusicExtension.TabStop = false; this.grpBoxMusicExtension.Text = "Dosya Türleri"; // @@ -353,7 +363,7 @@ private void InitializeComponent() this.txtboxMusicExtension.Location = new System.Drawing.Point(6, 120); this.txtboxMusicExtension.Name = "txtboxMusicExtension"; this.txtboxMusicExtension.Size = new System.Drawing.Size(100, 20); - this.txtboxMusicExtension.TabIndex = 14; + this.txtboxMusicExtension.TabIndex = 59; // // listboxMusicExtensions // @@ -362,14 +372,14 @@ private void InitializeComponent() this.listboxMusicExtensions.Location = new System.Drawing.Point(6, 19); this.listboxMusicExtensions.Name = "listboxMusicExtensions"; this.listboxMusicExtensions.Size = new System.Drawing.Size(466, 95); - this.listboxMusicExtensions.TabIndex = 13; + this.listboxMusicExtensions.TabIndex = 58; // // btnAllRemoveMusicExtension // this.btnAllRemoveMusicExtension.Location = new System.Drawing.Point(274, 117); this.btnAllRemoveMusicExtension.Name = "btnAllRemoveMusicExtension"; this.btnAllRemoveMusicExtension.Size = new System.Drawing.Size(90, 23); - this.btnAllRemoveMusicExtension.TabIndex = 5; + this.btnAllRemoveMusicExtension.TabIndex = 62; this.btnAllRemoveMusicExtension.Text = "Tümünü Kaldır"; this.btnAllRemoveMusicExtension.UseVisualStyleBackColor = true; this.btnAllRemoveMusicExtension.Click += new System.EventHandler(this.btnAllRemoveMusicExtension_Click); @@ -379,7 +389,7 @@ private void InitializeComponent() this.btnMusicExtensionDefault.Location = new System.Drawing.Point(397, 117); this.btnMusicExtensionDefault.Name = "btnMusicExtensionDefault"; this.btnMusicExtensionDefault.Size = new System.Drawing.Size(75, 23); - this.btnMusicExtensionDefault.TabIndex = 6; + this.btnMusicExtensionDefault.TabIndex = 63; this.btnMusicExtensionDefault.Text = "Varsayılan"; this.btnMusicExtensionDefault.UseVisualStyleBackColor = true; this.btnMusicExtensionDefault.Click += new System.EventHandler(this.btnMusicExtensionDefault_Click); @@ -389,7 +399,7 @@ private void InitializeComponent() this.btnRemoveMusicExtension.Location = new System.Drawing.Point(193, 117); this.btnRemoveMusicExtension.Name = "btnRemoveMusicExtension"; this.btnRemoveMusicExtension.Size = new System.Drawing.Size(75, 23); - this.btnRemoveMusicExtension.TabIndex = 5; + this.btnRemoveMusicExtension.TabIndex = 61; this.btnRemoveMusicExtension.Text = "Kaldır"; this.btnRemoveMusicExtension.UseVisualStyleBackColor = true; this.btnRemoveMusicExtension.Click += new System.EventHandler(this.btnRemoveMusicExtension_Click); @@ -399,7 +409,7 @@ private void InitializeComponent() this.btnAddMusicExtension.Location = new System.Drawing.Point(112, 118); this.btnAddMusicExtension.Name = "btnAddMusicExtension"; this.btnAddMusicExtension.Size = new System.Drawing.Size(75, 23); - this.btnAddMusicExtension.TabIndex = 4; + this.btnAddMusicExtension.TabIndex = 60; this.btnAddMusicExtension.Text = "Ekle"; this.btnAddMusicExtension.UseVisualStyleBackColor = true; this.btnAddMusicExtension.Click += new System.EventHandler(this.btnAddMusicExtension_Click); @@ -411,14 +421,14 @@ private void InitializeComponent() this.listboxMusicDirs.Location = new System.Drawing.Point(6, 19); this.listboxMusicDirs.Name = "listboxMusicDirs"; this.listboxMusicDirs.Size = new System.Drawing.Size(475, 82); - this.listboxMusicDirs.TabIndex = 3; + this.listboxMusicDirs.TabIndex = 52; // // btnAddMusic // this.btnAddMusic.Location = new System.Drawing.Point(6, 107); this.btnAddMusic.Name = "btnAddMusic"; this.btnAddMusic.Size = new System.Drawing.Size(75, 23); - this.btnAddMusic.TabIndex = 4; + this.btnAddMusic.TabIndex = 53; this.btnAddMusic.Text = "Ekle"; this.btnAddMusic.UseVisualStyleBackColor = true; this.btnAddMusic.Click += new System.EventHandler(this.btnAddMusic_Click); @@ -428,7 +438,7 @@ private void InitializeComponent() this.btnRemoveMusic.Location = new System.Drawing.Point(87, 106); this.btnRemoveMusic.Name = "btnRemoveMusic"; this.btnRemoveMusic.Size = new System.Drawing.Size(75, 23); - this.btnRemoveMusic.TabIndex = 5; + this.btnRemoveMusic.TabIndex = 54; this.btnRemoveMusic.Text = "Kaldır"; this.btnRemoveMusic.UseVisualStyleBackColor = true; this.btnRemoveMusic.Click += new System.EventHandler(this.btnRemoveMusic_Click); @@ -438,7 +448,7 @@ private void InitializeComponent() this.btnDefaultMusic.Location = new System.Drawing.Point(406, 107); this.btnDefaultMusic.Name = "btnDefaultMusic"; this.btnDefaultMusic.Size = new System.Drawing.Size(75, 23); - this.btnDefaultMusic.TabIndex = 6; + this.btnDefaultMusic.TabIndex = 56; this.btnDefaultMusic.Text = "Varsayılan"; this.btnDefaultMusic.UseVisualStyleBackColor = true; this.btnDefaultMusic.Click += new System.EventHandler(this.btnDefaultMusic_Click); @@ -448,7 +458,7 @@ private void InitializeComponent() this.btnAllRemoveMusic.Location = new System.Drawing.Point(168, 106); this.btnAllRemoveMusic.Name = "btnAllRemoveMusic"; this.btnAllRemoveMusic.Size = new System.Drawing.Size(96, 23); - this.btnAllRemoveMusic.TabIndex = 8; + this.btnAllRemoveMusic.TabIndex = 55; this.btnAllRemoveMusic.Text = "Tümünü Kaldır"; this.btnAllRemoveMusic.UseVisualStyleBackColor = true; this.btnAllRemoveMusic.Click += new System.EventHandler(this.btnAllRemoveMusic_Click); @@ -456,10 +466,10 @@ private void InitializeComponent() // chkBoxMusicPlayer // this.chkBoxMusicPlayer.AutoSize = true; - this.chkBoxMusicPlayer.Location = new System.Drawing.Point(6, 726); + this.chkBoxMusicPlayer.Location = new System.Drawing.Point(6, 733); this.chkBoxMusicPlayer.Name = "chkBoxMusicPlayer"; this.chkBoxMusicPlayer.Size = new System.Drawing.Size(129, 17); - this.chkBoxMusicPlayer.TabIndex = 18; + this.chkBoxMusicPlayer.TabIndex = 64; this.chkBoxMusicPlayer.Text = "Müzik Oynatıcısı Etkin"; this.chkBoxMusicPlayer.UseVisualStyleBackColor = true; this.chkBoxMusicPlayer.CheckedChanged += new System.EventHandler(this.chkBoxMusicPlayer_CheckedChanged); @@ -474,10 +484,10 @@ private void InitializeComponent() this.grpBoxSlideShowAndTime.Controls.Add(this.lblTime); this.grpBoxSlideShowAndTime.Controls.Add(this.txtboxTime); this.grpBoxSlideShowAndTime.Controls.Add(this.chkBoxPictureAuto); - this.grpBoxSlideShowAndTime.Location = new System.Drawing.Point(6, 326); + this.grpBoxSlideShowAndTime.Location = new System.Drawing.Point(6, 322); this.grpBoxSlideShowAndTime.Name = "grpBoxSlideShowAndTime"; - this.grpBoxSlideShowAndTime.Size = new System.Drawing.Size(500, 115); - this.grpBoxSlideShowAndTime.TabIndex = 16; + this.grpBoxSlideShowAndTime.Size = new System.Drawing.Size(500, 68); + this.grpBoxSlideShowAndTime.TabIndex = 46; this.grpBoxSlideShowAndTime.TabStop = false; this.grpBoxSlideShowAndTime.Text = "Süre"; // @@ -487,7 +497,7 @@ private void InitializeComponent() this.chkBoxShowTime.Location = new System.Drawing.Point(272, 42); this.chkBoxShowTime.Name = "chkBoxShowTime"; this.chkBoxShowTime.Size = new System.Drawing.Size(89, 17); - this.chkBoxShowTime.TabIndex = 13; + this.chkBoxShowTime.TabIndex = 49; this.chkBoxShowTime.Text = "Süreyi Göster"; this.chkBoxShowTime.UseVisualStyleBackColor = true; this.chkBoxShowTime.CheckedChanged += new System.EventHandler(this.chkBoxShowTime_CheckedChanged); @@ -513,7 +523,7 @@ private void InitializeComponent() this.grpBoxPictureDirList.Location = new System.Drawing.Point(6, 19); this.grpBoxPictureDirList.Name = "grpBoxPictureDirList"; this.grpBoxPictureDirList.Size = new System.Drawing.Size(502, 135); - this.grpBoxPictureDirList.TabIndex = 16; + this.grpBoxPictureDirList.TabIndex = 33; this.grpBoxPictureDirList.TabStop = false; this.grpBoxPictureDirList.Text = "Resim Klasör Listesi"; // @@ -530,8 +540,8 @@ private void InitializeComponent() this.grpBoxPictureExtension.Controls.Add(this.btnAddPictureExtension); this.grpBoxPictureExtension.Location = new System.Drawing.Point(6, 160); this.grpBoxPictureExtension.Name = "grpBoxPictureExtension"; - this.grpBoxPictureExtension.Size = new System.Drawing.Size(502, 195); - this.grpBoxPictureExtension.TabIndex = 16; + this.grpBoxPictureExtension.Size = new System.Drawing.Size(502, 156); + this.grpBoxPictureExtension.TabIndex = 39; this.grpBoxPictureExtension.TabStop = false; this.grpBoxPictureExtension.Text = "Dosya Türleri"; // @@ -540,7 +550,7 @@ private void InitializeComponent() this.btnAllRemovePictureExtension.Location = new System.Drawing.Point(274, 117); this.btnAllRemovePictureExtension.Name = "btnAllRemovePictureExtension"; this.btnAllRemovePictureExtension.Size = new System.Drawing.Size(90, 23); - this.btnAllRemovePictureExtension.TabIndex = 5; + this.btnAllRemovePictureExtension.TabIndex = 44; this.btnAllRemovePictureExtension.Text = "Tümünü Kaldır"; this.btnAllRemovePictureExtension.UseVisualStyleBackColor = true; this.btnAllRemovePictureExtension.Click += new System.EventHandler(this.btnAllRemovePictureExtension_Click); @@ -550,7 +560,7 @@ private void InitializeComponent() this.btnPictureExtensionDefault.Location = new System.Drawing.Point(412, 117); this.btnPictureExtensionDefault.Name = "btnPictureExtensionDefault"; this.btnPictureExtensionDefault.Size = new System.Drawing.Size(75, 23); - this.btnPictureExtensionDefault.TabIndex = 6; + this.btnPictureExtensionDefault.TabIndex = 45; this.btnPictureExtensionDefault.Text = "Varsayılan"; this.btnPictureExtensionDefault.UseVisualStyleBackColor = true; this.btnPictureExtensionDefault.Click += new System.EventHandler(this.btnPictureExtensionDefault_Click); @@ -560,13 +570,14 @@ private void InitializeComponent() this.btnRemovePictureExtension.Location = new System.Drawing.Point(193, 117); this.btnRemovePictureExtension.Name = "btnRemovePictureExtension"; this.btnRemovePictureExtension.Size = new System.Drawing.Size(75, 23); - this.btnRemovePictureExtension.TabIndex = 5; + this.btnRemovePictureExtension.TabIndex = 43; this.btnRemovePictureExtension.Text = "Kaldır"; this.btnRemovePictureExtension.UseVisualStyleBackColor = true; this.btnRemovePictureExtension.Click += new System.EventHandler(this.btnRemovePictureExtension_Click); // // grpBoxGeneralSettings // + this.grpBoxGeneralSettings.Controls.Add(this.btnYoutubeSt); this.grpBoxGeneralSettings.Controls.Add(this.btnOpenUpdateManager); this.grpBoxGeneralSettings.Controls.Add(this.chkBoxRememberRemoveFileList); this.grpBoxGeneralSettings.Controls.Add(this.chkBoxShowClockAndDate); @@ -578,17 +589,28 @@ private void InitializeComponent() this.grpBoxGeneralSettings.Location = new System.Drawing.Point(12, 12); this.grpBoxGeneralSettings.Name = "grpBoxGeneralSettings"; this.grpBoxGeneralSettings.Size = new System.Drawing.Size(514, 195); - this.grpBoxGeneralSettings.TabIndex = 16; + this.grpBoxGeneralSettings.TabIndex = 0; this.grpBoxGeneralSettings.TabStop = false; this.grpBoxGeneralSettings.Text = "Genel Ayarlar"; // + // btnYoutubeSt + // + this.btnYoutubeSt.AutoSize = true; + this.btnYoutubeSt.Location = new System.Drawing.Point(157, 160); + this.btnYoutubeSt.Name = "btnYoutubeSt"; + this.btnYoutubeSt.Size = new System.Drawing.Size(111, 23); + this.btnYoutubeSt.TabIndex = 8; + this.btnYoutubeSt.Text = "VLC\'yi Düzelt"; + this.btnYoutubeSt.UseVisualStyleBackColor = true; + this.btnYoutubeSt.Click += new System.EventHandler(this.btnYoutubeSt_Click); + // // btnOpenUpdateManager // this.btnOpenUpdateManager.AutoSize = true; this.btnOpenUpdateManager.Location = new System.Drawing.Point(6, 160); this.btnOpenUpdateManager.Name = "btnOpenUpdateManager"; this.btnOpenUpdateManager.Size = new System.Drawing.Size(145, 23); - this.btnOpenUpdateManager.TabIndex = 20; + this.btnOpenUpdateManager.TabIndex = 7; this.btnOpenUpdateManager.Text = "&Güncelleme Yöneticisini Aç"; this.btnOpenUpdateManager.UseVisualStyleBackColor = true; this.btnOpenUpdateManager.Click += new System.EventHandler(this.btnOpenUpdateManager_Click); @@ -599,7 +621,7 @@ private void InitializeComponent() this.chkBoxRememberRemoveFileList.Location = new System.Drawing.Point(6, 115); this.chkBoxRememberRemoveFileList.Name = "chkBoxRememberRemoveFileList"; this.chkBoxRememberRemoveFileList.Size = new System.Drawing.Size(237, 17); - this.chkBoxRememberRemoveFileList.TabIndex = 19; + this.chkBoxRememberRemoveFileList.TabIndex = 6; this.chkBoxRememberRemoveFileList.Text = "Tüm listeden çıkarmaları \"Evet\" olarak hatırla"; this.chkBoxRememberRemoveFileList.UseVisualStyleBackColor = true; this.chkBoxRememberRemoveFileList.CheckedChanged += new System.EventHandler(this.chkBoxRememberRemoveFileList_CheckedChanged); @@ -610,7 +632,7 @@ private void InitializeComponent() this.chkBoxShowClockAndDate.Location = new System.Drawing.Point(6, 92); this.chkBoxShowClockAndDate.Name = "chkBoxShowClockAndDate"; this.chkBoxShowClockAndDate.Size = new System.Drawing.Size(128, 17); - this.chkBoxShowClockAndDate.TabIndex = 19; + this.chkBoxShowClockAndDate.TabIndex = 5; this.chkBoxShowClockAndDate.Text = "Saati ve Tarihi Göster"; this.chkBoxShowClockAndDate.UseVisualStyleBackColor = true; this.chkBoxShowClockAndDate.CheckedChanged += new System.EventHandler(this.chkBoxShowClockAndDate_CheckedChanged); @@ -621,8 +643,9 @@ private void InitializeComponent() this.radioBtnVideoSlideshow.Location = new System.Drawing.Point(312, 60); this.radioBtnVideoSlideshow.Name = "radioBtnVideoSlideshow"; this.radioBtnVideoSlideshow.Size = new System.Drawing.Size(121, 17); - this.radioBtnVideoSlideshow.TabIndex = 18; + this.radioBtnVideoSlideshow.TabIndex = 4; this.radioBtnVideoSlideshow.TabStop = true; + this.radioBtnVideoSlideshow.Tag = "pic"; this.radioBtnVideoSlideshow.Text = "Video Slayt Gösterisi"; this.radioBtnVideoSlideshow.UseVisualStyleBackColor = true; this.radioBtnVideoSlideshow.CheckedChanged += new System.EventHandler(this.radioBtnVideoSlideshow_CheckedChanged); @@ -635,6 +658,7 @@ private void InitializeComponent() this.radioBtnImageSlideshow.Size = new System.Drawing.Size(123, 17); this.radioBtnImageSlideshow.TabIndex = 3; this.radioBtnImageSlideshow.TabStop = true; + this.radioBtnImageSlideshow.Tag = "pic"; this.radioBtnImageSlideshow.Text = "Resim Slayt Gösterisi"; this.radioBtnImageSlideshow.UseVisualStyleBackColor = true; this.radioBtnImageSlideshow.CheckedChanged += new System.EventHandler(this.radioBtnImageSlideshow_CheckedChanged); @@ -648,9 +672,9 @@ private void InitializeComponent() this.grpBoxVideoSlideShow.Location = new System.Drawing.Point(12, 213); this.grpBoxVideoSlideShow.Name = "grpBoxVideoSlideShow"; this.grpBoxVideoSlideShow.Size = new System.Drawing.Size(514, 350); - this.grpBoxVideoSlideShow.TabIndex = 17; + this.grpBoxVideoSlideShow.TabIndex = 9; this.grpBoxVideoSlideShow.TabStop = false; - this.grpBoxVideoSlideShow.Text = "Slayt Gösterisi"; + this.grpBoxVideoSlideShow.Text = "Video Slayt Gösterisi"; // // grpBoxVideoDirList // @@ -663,7 +687,7 @@ private void InitializeComponent() this.grpBoxVideoDirList.Location = new System.Drawing.Point(6, 54); this.grpBoxVideoDirList.Name = "grpBoxVideoDirList"; this.grpBoxVideoDirList.Size = new System.Drawing.Size(502, 135); - this.grpBoxVideoDirList.TabIndex = 16; + this.grpBoxVideoDirList.TabIndex = 12; this.grpBoxVideoDirList.TabStop = false; this.grpBoxVideoDirList.Text = "Video Klasör Listesi"; // @@ -674,14 +698,14 @@ private void InitializeComponent() this.listboxVideoDirs.Location = new System.Drawing.Point(6, 19); this.listboxVideoDirs.Name = "listboxVideoDirs"; this.listboxVideoDirs.Size = new System.Drawing.Size(491, 82); - this.listboxVideoDirs.TabIndex = 3; + this.listboxVideoDirs.TabIndex = 13; // // btnAddVideo // this.btnAddVideo.Location = new System.Drawing.Point(6, 107); this.btnAddVideo.Name = "btnAddVideo"; this.btnAddVideo.Size = new System.Drawing.Size(75, 23); - this.btnAddVideo.TabIndex = 4; + this.btnAddVideo.TabIndex = 14; this.btnAddVideo.Text = "Ekle"; this.btnAddVideo.UseVisualStyleBackColor = true; this.btnAddVideo.Click += new System.EventHandler(this.btnAddVideo_Click); @@ -691,7 +715,7 @@ private void InitializeComponent() this.btnRemoveVideo.Location = new System.Drawing.Point(87, 107); this.btnRemoveVideo.Name = "btnRemoveVideo"; this.btnRemoveVideo.Size = new System.Drawing.Size(75, 23); - this.btnRemoveVideo.TabIndex = 5; + this.btnRemoveVideo.TabIndex = 15; this.btnRemoveVideo.Text = "Kaldır"; this.btnRemoveVideo.UseVisualStyleBackColor = true; this.btnRemoveVideo.Click += new System.EventHandler(this.btnRemoveVideo_Click); @@ -701,7 +725,7 @@ private void InitializeComponent() this.btnDefaultVideo.Location = new System.Drawing.Point(416, 107); this.btnDefaultVideo.Name = "btnDefaultVideo"; this.btnDefaultVideo.Size = new System.Drawing.Size(75, 23); - this.btnDefaultVideo.TabIndex = 6; + this.btnDefaultVideo.TabIndex = 17; this.btnDefaultVideo.Text = "Varsayılan"; this.btnDefaultVideo.UseVisualStyleBackColor = true; this.btnDefaultVideo.Click += new System.EventHandler(this.btnDefaultVideo_Click); @@ -711,7 +735,7 @@ private void InitializeComponent() this.btnAllRemoveVideo.Location = new System.Drawing.Point(168, 107); this.btnAllRemoveVideo.Name = "btnAllRemoveVideo"; this.btnAllRemoveVideo.Size = new System.Drawing.Size(96, 23); - this.btnAllRemoveVideo.TabIndex = 8; + this.btnAllRemoveVideo.TabIndex = 16; this.btnAllRemoveVideo.Text = "Tümünü Kaldır"; this.btnAllRemoveVideo.UseVisualStyleBackColor = true; this.btnAllRemoveVideo.Click += new System.EventHandler(this.btnAllRemoveVideo_Click); @@ -722,7 +746,7 @@ private void InitializeComponent() this.radioBtnVLC.Location = new System.Drawing.Point(153, 21); this.radioBtnVLC.Name = "radioBtnVLC"; this.radioBtnVLC.Size = new System.Drawing.Size(109, 17); - this.radioBtnVLC.TabIndex = 18; + this.radioBtnVLC.TabIndex = 11; this.radioBtnVLC.TabStop = true; this.radioBtnVLC.Tag = "radioBtnWMP"; this.radioBtnVLC.Text = "VLC Media Player"; @@ -741,7 +765,7 @@ private void InitializeComponent() this.grpBoxVideoExtension.Location = new System.Drawing.Point(6, 195); this.grpBoxVideoExtension.Name = "grpBoxVideoExtension"; this.grpBoxVideoExtension.Size = new System.Drawing.Size(502, 149); - this.grpBoxVideoExtension.TabIndex = 16; + this.grpBoxVideoExtension.TabIndex = 18; this.grpBoxVideoExtension.TabStop = false; this.grpBoxVideoExtension.Text = "Dosya Türleri"; // @@ -750,7 +774,7 @@ private void InitializeComponent() this.txtboxVideoExtension.Location = new System.Drawing.Point(6, 120); this.txtboxVideoExtension.Name = "txtboxVideoExtension"; this.txtboxVideoExtension.Size = new System.Drawing.Size(100, 20); - this.txtboxVideoExtension.TabIndex = 14; + this.txtboxVideoExtension.TabIndex = 20; // // listboxVideoExtensions // @@ -759,14 +783,14 @@ private void InitializeComponent() this.listboxVideoExtensions.Location = new System.Drawing.Point(6, 19); this.listboxVideoExtensions.Name = "listboxVideoExtensions"; this.listboxVideoExtensions.Size = new System.Drawing.Size(481, 95); - this.listboxVideoExtensions.TabIndex = 13; + this.listboxVideoExtensions.TabIndex = 19; // // btnAllRemoveVideoExtension // this.btnAllRemoveVideoExtension.Location = new System.Drawing.Point(274, 117); this.btnAllRemoveVideoExtension.Name = "btnAllRemoveVideoExtension"; this.btnAllRemoveVideoExtension.Size = new System.Drawing.Size(90, 23); - this.btnAllRemoveVideoExtension.TabIndex = 5; + this.btnAllRemoveVideoExtension.TabIndex = 23; this.btnAllRemoveVideoExtension.Text = "Tümünü Kaldır"; this.btnAllRemoveVideoExtension.UseVisualStyleBackColor = true; this.btnAllRemoveVideoExtension.Click += new System.EventHandler(this.btnAllRemoveVideoExtension_Click); @@ -776,7 +800,7 @@ private void InitializeComponent() this.btnVideoExtensionDefault.Location = new System.Drawing.Point(412, 117); this.btnVideoExtensionDefault.Name = "btnVideoExtensionDefault"; this.btnVideoExtensionDefault.Size = new System.Drawing.Size(75, 23); - this.btnVideoExtensionDefault.TabIndex = 6; + this.btnVideoExtensionDefault.TabIndex = 24; this.btnVideoExtensionDefault.Text = "Varsayılan"; this.btnVideoExtensionDefault.UseVisualStyleBackColor = true; this.btnVideoExtensionDefault.Click += new System.EventHandler(this.btnVideoExtensionDefault_Click); @@ -786,7 +810,7 @@ private void InitializeComponent() this.btnRemoveVideoExtension.Location = new System.Drawing.Point(193, 117); this.btnRemoveVideoExtension.Name = "btnRemoveVideoExtension"; this.btnRemoveVideoExtension.Size = new System.Drawing.Size(75, 23); - this.btnRemoveVideoExtension.TabIndex = 5; + this.btnRemoveVideoExtension.TabIndex = 22; this.btnRemoveVideoExtension.Text = "Kaldır"; this.btnRemoveVideoExtension.UseVisualStyleBackColor = true; this.btnRemoveVideoExtension.Click += new System.EventHandler(this.btnRemoveVideoExtension_Click); @@ -796,7 +820,7 @@ private void InitializeComponent() this.btnAddVideoExtension.Location = new System.Drawing.Point(112, 118); this.btnAddVideoExtension.Name = "btnAddVideoExtension"; this.btnAddVideoExtension.Size = new System.Drawing.Size(75, 23); - this.btnAddVideoExtension.TabIndex = 4; + this.btnAddVideoExtension.TabIndex = 21; this.btnAddVideoExtension.Text = "Ekle"; this.btnAddVideoExtension.UseVisualStyleBackColor = true; this.btnAddVideoExtension.Click += new System.EventHandler(this.btnAddVideoExtension_Click); @@ -807,26 +831,113 @@ private void InitializeComponent() this.radioBtnWMP.Location = new System.Drawing.Point(9, 21); this.radioBtnWMP.Name = "radioBtnWMP"; this.radioBtnWMP.Size = new System.Drawing.Size(133, 17); - this.radioBtnWMP.TabIndex = 3; + this.radioBtnWMP.TabIndex = 10; this.radioBtnWMP.TabStop = true; this.radioBtnWMP.Tag = "radioBtnWMP"; this.radioBtnWMP.Text = "Windows Media Player"; this.radioBtnWMP.UseVisualStyleBackColor = true; this.radioBtnWMP.CheckedChanged += new System.EventHandler(this.radioBtnWMP_CheckedChanged); // + // grpBoxURLforVLC + // + this.grpBoxURLforVLC.Controls.Add(this.lblLVC_URL); + this.grpBoxURLforVLC.Controls.Add(this.txtboxURLforVLC); + this.grpBoxURLforVLC.Controls.Add(this.listboxURLforVLC); + this.grpBoxURLforVLC.Controls.Add(this.btnAllRemoveURLforVLC); + this.grpBoxURLforVLC.Controls.Add(this.btnEditURLforVLC); + this.grpBoxURLforVLC.Controls.Add(this.btnAddURLforVLC); + this.grpBoxURLforVLC.Controls.Add(this.btnRemoveURLforVLC); + this.grpBoxURLforVLC.Location = new System.Drawing.Point(12, 578); + this.grpBoxURLforVLC.Name = "grpBoxURLforVLC"; + this.grpBoxURLforVLC.Size = new System.Drawing.Size(514, 190); + this.grpBoxURLforVLC.TabIndex = 25; + this.grpBoxURLforVLC.TabStop = false; + this.grpBoxURLforVLC.Text = "VLC URL Listesi"; + // + // txtboxURLforVLC + // + this.txtboxURLforVLC.Location = new System.Drawing.Point(45, 161); + this.txtboxURLforVLC.Name = "txtboxURLforVLC"; + this.txtboxURLforVLC.Size = new System.Drawing.Size(106, 20); + this.txtboxURLforVLC.TabIndex = 27; + this.txtboxURLforVLC.MouseHover += new System.EventHandler(this.txtboxURLforVLC_MouseHover); + // + // listboxURLforVLC + // + this.listboxURLforVLC.FormattingEnabled = true; + this.listboxURLforVLC.HorizontalScrollbar = true; + this.listboxURLforVLC.Location = new System.Drawing.Point(7, 19); + this.listboxURLforVLC.Name = "listboxURLforVLC"; + this.listboxURLforVLC.Size = new System.Drawing.Size(496, 134); + this.listboxURLforVLC.TabIndex = 26; + this.listboxURLforVLC.SelectedIndexChanged += new System.EventHandler(this.listboxURLforVLC_SelectedIndexChanged); + // + // btnAllRemoveURLforVLC + // + this.btnAllRemoveURLforVLC.Location = new System.Drawing.Point(413, 158); + this.btnAllRemoveURLforVLC.Name = "btnAllRemoveURLforVLC"; + this.btnAllRemoveURLforVLC.Size = new System.Drawing.Size(90, 23); + this.btnAllRemoveURLforVLC.TabIndex = 31; + this.btnAllRemoveURLforVLC.Text = "Tümünü Kaldır"; + this.btnAllRemoveURLforVLC.UseVisualStyleBackColor = true; + this.btnAllRemoveURLforVLC.Click += new System.EventHandler(this.btnAllRemoveURLforVLC_Click); + // + // btnAddURLforVLC + // + this.btnAddURLforVLC.Location = new System.Drawing.Point(170, 158); + this.btnAddURLforVLC.Name = "btnAddURLforVLC"; + this.btnAddURLforVLC.Size = new System.Drawing.Size(75, 23); + this.btnAddURLforVLC.TabIndex = 28; + this.btnAddURLforVLC.Text = "Ekle"; + this.btnAddURLforVLC.UseVisualStyleBackColor = true; + this.btnAddURLforVLC.Click += new System.EventHandler(this.btnAddURLforVLC_Click); + // + // btnRemoveURLforVLC + // + this.btnRemoveURLforVLC.Location = new System.Drawing.Point(332, 158); + this.btnRemoveURLforVLC.Name = "btnRemoveURLforVLC"; + this.btnRemoveURLforVLC.Size = new System.Drawing.Size(75, 23); + this.btnRemoveURLforVLC.TabIndex = 30; + this.btnRemoveURLforVLC.Text = "Kaldır"; + this.btnRemoveURLforVLC.UseVisualStyleBackColor = true; + this.btnRemoveURLforVLC.Click += new System.EventHandler(this.btnRemoveURLforVLC_Click); + // + // lblLVC_URL + // + this.lblLVC_URL.AutoSize = true; + this.lblLVC_URL.Location = new System.Drawing.Point(7, 168); + this.lblLVC_URL.Name = "lblLVC_URL"; + this.lblLVC_URL.Size = new System.Drawing.Size(32, 13); + this.lblLVC_URL.TabIndex = 21; + this.lblLVC_URL.Text = "URL:"; + // + // btnEditURLforVLC + // + this.btnEditURLforVLC.Location = new System.Drawing.Point(251, 158); + this.btnEditURLforVLC.Name = "btnEditURLforVLC"; + this.btnEditURLforVLC.Size = new System.Drawing.Size(75, 23); + this.btnEditURLforVLC.TabIndex = 29; + this.btnEditURLforVLC.Text = "Düzenle"; + this.btnEditURLforVLC.UseVisualStyleBackColor = true; + this.btnEditURLforVLC.Click += new System.EventHandler(this.btnEditURLforVLC_Click); + // // OptionsForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScroll = true; - this.ClientSize = new System.Drawing.Size(1541, 885); + this.ClientSize = new System.Drawing.Size(1146, 832); + this.Controls.Add(this.grpBoxURLforVLC); this.Controls.Add(this.grpBoxVideoSlideShow); this.Controls.Add(this.grpBoxGeneralSettings); this.Controls.Add(this.grpBoxPictureSlideShow); this.Controls.Add(this.btnOK); this.Controls.Add(this.btnShow); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; this.Name = "OptionsForm"; + this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Ayarlar"; this.grpBoxPictureSlideShow.ResumeLayout(false); @@ -847,6 +958,8 @@ private void InitializeComponent() this.grpBoxVideoDirList.ResumeLayout(false); this.grpBoxVideoExtension.ResumeLayout(false); this.grpBoxVideoExtension.PerformLayout(); + this.grpBoxURLforVLC.ResumeLayout(false); + this.grpBoxURLforVLC.PerformLayout(); this.ResumeLayout(false); } @@ -917,5 +1030,14 @@ private void InitializeComponent() private System.Windows.Forms.Button btnOpenUpdateManager; private System.Windows.Forms.RadioButton radioBtnVLC2; private System.Windows.Forms.RadioButton radioBtnWMP2; + private System.Windows.Forms.Button btnYoutubeSt; + private System.Windows.Forms.GroupBox grpBoxURLforVLC; + private System.Windows.Forms.ListBox listboxURLforVLC; + private System.Windows.Forms.TextBox txtboxURLforVLC; + private System.Windows.Forms.Button btnAllRemoveURLforVLC; + private System.Windows.Forms.Button btnAddURLforVLC; + private System.Windows.Forms.Button btnRemoveURLforVLC; + private System.Windows.Forms.Label lblLVC_URL; + private System.Windows.Forms.Button btnEditURLforVLC; } } \ No newline at end of file diff --git a/MyScreenSaver/Forms/OptionsForm.cs b/MyScreenSaver/Forms/OptionsForm.cs index c52ec7b..2d13fc4 100644 --- a/MyScreenSaver/Forms/OptionsForm.cs +++ b/MyScreenSaver/Forms/OptionsForm.cs @@ -10,7 +10,7 @@ namespace MyScreenSaver public partial class OptionsForm : Form { private bool cmbBoxLangsec; - + private bool getFirstSettings = true; public OptionsForm() { InitializeComponent(); @@ -22,6 +22,7 @@ public OptionsForm() GetMusicExtensions(); GetVideoDirs(); GetVideoExtensions(); + GetVLC_URLS(); Lang(); } @@ -51,7 +52,6 @@ private void GetSettings() radioBtnVLC2.Enabled = false; } - if (Settings.Default.ImageSlideshow) { radioBtnImageSlideshow.Checked = true; @@ -63,6 +63,7 @@ private void GetSettings() { radioBtnImageSlideshow.Checked = false; radioBtnVideoSlideshow.Checked = true; + grpBoxPictureSlideShow.Enabled = false; grpBoxVideoSlideShow.Enabled = true; } @@ -88,6 +89,30 @@ private void GetSettings() radioBtnVLC2.Checked = true; radioBtnWMP2.Checked = false; } + + if (Settings.Default.ImageSlideshow) + { + if (!Settings.Default.MusicAppWMP) + { + grpBoxURLforVLC.Enabled = true; + } + else + { + grpBoxURLforVLC.Enabled = false; + } + } + else + { + if (!Settings.Default.VideoAppWMP) + { + grpBoxURLforVLC.Enabled = true; + } + else + { + grpBoxURLforVLC.Enabled = false; + } + } + getFirstSettings = false; } private void GetLanguagesList() @@ -186,6 +211,21 @@ private void GetVideoExtensions() } } + private void GetVLC_URLS() + { + try + { + foreach (var item in Settings.Default.VLC_URL) + { + listboxURLforVLC.Items.Add(item); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + private void Lang() { this.Text = Localization.Settings; @@ -193,7 +233,6 @@ private void Lang() lbLang.Text = Localization.Language; lblSec.Text = Localization.seconds; lblTime.Text = Localization.Time; - btnOpenUpdateManager.Text = Localization.OpenUpdateManager; grpBoxGeneralSettings.Text = Localization.GeneralSettings; @@ -255,16 +294,30 @@ private void Lang() btnRemoveVideoExtension.Text = Localization.Remove; btnAllRemoveVideoExtension.Text = Localization.AllRemove; btnVideoExtensionDefault.Text = Localization.Default; + + grpBoxURLforVLC.Text = Localization.VLCURLList; + lblLVC_URL.Text = Localization.URL; + btnYoutubeSt.Text = Localization.FixVLC; + btnAddURLforVLC.Text = Localization.Add; + btnEditURLforVLC.Text = Localization.Edit; + btnRemoveURLforVLC.Text = Localization.Remove; + btnAllRemoveURLforVLC.Text = Localization.AllRemove; } private void chkBoxMouseDbClick_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.SetAppCloseMouseDbClick(chkBoxMouseDbClick.Checked); + if (!getFirstSettings) + { + SettingsMethods.SetAppCloseMouseDbClick(chkBoxMouseDbClick.Checked); + } } private void chkBoxShowTime_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.ChkBoxShowTime(chkBoxShowTime.Checked); + if (!getFirstSettings) + { + SettingsMethods.ChkBoxShowTime(chkBoxShowTime.Checked); + } } private void cmbBoxLang_SelectedIndexChanged(object sender, EventArgs e) @@ -345,8 +398,24 @@ private void btnAddPictureExtension_Click(object sender, EventArgs e) private void btnShow_Click(object sender, EventArgs e) { - ShowScreenSaverForm screenSaverForm = new ShowScreenSaverForm(); - screenSaverForm.Show(); + if (radioBtnImageSlideshow.Checked) + { + ShowScreenSaverForm screenSaverForm = new ShowScreenSaverForm(); + screenSaverForm.Show(); + } + else + { + if (radioBtnWMP.Checked) + { + VideoPlayerWMPForm videoPlayerWMPForm = new VideoPlayerWMPForm(); + videoPlayerWMPForm.Show(); + } + else + { + VideoPlayerVLCForm videoPlayerVLCForm = new VideoPlayerVLCForm(); + videoPlayerVLCForm.Show(); + } + } } private void txtboxTime_TextChanged(object sender, EventArgs e) @@ -363,8 +432,11 @@ private void txtboxTime_TextChanged(object sender, EventArgs e) private void chkBoxPictureAuto_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.SetPictureAuto(chkBoxPictureAuto.Checked); - txtboxTime.Enabled = Settings.Default.PictureAuto; + if (!getFirstSettings) + { + SettingsMethods.SetPictureAuto(chkBoxPictureAuto.Checked); + txtboxTime.Enabled = Settings.Default.PictureAuto; + } } private void btnOK_Click(object sender, EventArgs e) @@ -410,10 +482,22 @@ private void btnDefaultMusic_Click(object sender, EventArgs e) private void chkBoxMusicPlayer_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.ChkBoxMusicPlayer(chkBoxMusicPlayer.Checked); - grpBoxMusicPlayer.Enabled = Settings.Default.MusicPlayer; - radioBtnWMP2.Enabled = Settings.Default.MusicPlayer; - radioBtnVLC2.Enabled = Settings.Default.MusicPlayer; + if (!getFirstSettings) + { + SettingsMethods.ChkBoxMusicPlayer(chkBoxMusicPlayer.Checked); + grpBoxMusicPlayer.Enabled = Settings.Default.MusicPlayer; + radioBtnWMP2.Enabled = Settings.Default.MusicPlayer; + radioBtnVLC2.Enabled = Settings.Default.MusicPlayer; + + if (chkBoxMusicPlayer.Checked && chkBoxMusicPlayer.Enabled) + { + grpBoxURLforVLC.Enabled = radioBtnVLC2.Checked; + } + else + { + grpBoxURLforVLC.Enabled = false; + } + } } private void btnAddMusic_Click(object sender, EventArgs e) @@ -486,16 +570,32 @@ private void btnAllRemoveMusicExtension_Click(object sender, EventArgs e) private void radioBtnImageSlideshow_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.RadioBtnImageSlideshow(radioBtnImageSlideshow.Checked); - grpBoxPictureSlideShow.Enabled = true; - grpBoxVideoSlideShow.Enabled = false; + if (!getFirstSettings) + { + SettingsMethods.RadioBtnImageSlideshow(radioBtnImageSlideshow.Checked); + grpBoxPictureSlideShow.Enabled = true; + grpBoxVideoSlideShow.Enabled = false; + + if (grpBoxPictureSlideShow.Enabled) + { + grpBoxURLforVLC.Enabled = radioBtnVLC2.Checked; + } + } } private void radioBtnVideoSlideshow_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.RadioBtnImageSlideshow(radioBtnImageSlideshow.Checked); - grpBoxPictureSlideShow.Enabled = false; - grpBoxVideoSlideShow.Enabled = true; + if (!getFirstSettings) + { + SettingsMethods.RadioBtnImageSlideshow(radioBtnImageSlideshow.Checked); + grpBoxPictureSlideShow.Enabled = false; + grpBoxVideoSlideShow.Enabled = true; + + if (grpBoxVideoSlideShow.Enabled) + { + grpBoxURLforVLC.Enabled = radioBtnVLC.Checked; + } + } } private void btnAddVideo_Click(object sender, EventArgs e) @@ -507,22 +607,6 @@ private void btnAddVideo_Click(object sender, EventArgs e) listboxVideoDirs.Items.Add(folderBrowserDialog.SelectedPath); SettingsMethods.AddVideoDirs(folderBrowserDialog.SelectedPath); } - - //OpenFileDialog openFileDialog = new OpenFileDialog(); - //string filter = "Video Files"; - //foreach (var item in listboxVideoExtensions.Items) - //{ - - //} - //filter += String.Format(" ({0})|{0}", "*.mkv"); - //openFileDialog.Filter = filter; - ////"txt files (*.txt)|*.txt|All files (*.*)|*.*"; - //if (openFileDialog.ShowDialog()==DialogResult.OK) - //{ - // listboxVideoDirs.Items.Add(openFileDialog.FileName); - // SettingsMethods.AddVideoDirs(openFileDialog.FileName); - //} - } private void btnRemoveVideo_Click(object sender, EventArgs e) @@ -593,22 +677,36 @@ private void btnVideoExtensionDefault_Click(object sender, EventArgs e) private void chkBoxShowClockAndDate_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.SetClockAndDate(chkBoxShowClockAndDate.Checked); + if (!getFirstSettings) + { + SettingsMethods.SetClockAndDate(chkBoxShowClockAndDate.Checked); + } } private void radioBtnWMP_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.RadioBtnWPA(radioBtnWMP.Checked); + if (!getFirstSettings) + { + SettingsMethods.RadioBtnWPA(radioBtnWMP.Checked); + grpBoxURLforVLC.Enabled = !radioBtnWMP.Checked; + } } private void radioBtnVLC_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.RadioBtnWPA(radioBtnWMP.Checked); + if (!getFirstSettings) + { + SettingsMethods.RadioBtnWPA(radioBtnWMP.Checked); + grpBoxURLforVLC.Enabled = radioBtnVLC.Checked; + } } private void chkBoxRememberRemoveFileList_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.SetRememberRemoveFileList(chkBoxRememberRemoveFileList.Checked); + if (!getFirstSettings) + { + SettingsMethods.SetRememberRemoveFileList(chkBoxRememberRemoveFileList.Checked); + } } @@ -620,12 +718,118 @@ private void btnOpenUpdateManager_Click(object sender, EventArgs e) private void radioBtnWMP2_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.RadioBtnWPA2(radioBtnWMP2.Checked); + if (!getFirstSettings) + { + SettingsMethods.RadioBtnWPA2(radioBtnWMP2.Checked); + + if (grpBoxMusicPlayer.Enabled) + { + grpBoxURLforVLC.Enabled = !radioBtnWMP2.Checked; + } + } } private void radioBtnVLC2_CheckedChanged(object sender, EventArgs e) { - SettingsMethods.RadioBtnWPA2(radioBtnWMP2.Checked); + if (!getFirstSettings) + { + SettingsMethods.RadioBtnWPA2(radioBtnWMP2.Checked); + + if (grpBoxMusicPlayer.Enabled) + { + grpBoxURLforVLC.Enabled = radioBtnVLC2.Checked; + } + } + } + + private void btnYoutubeSt_Click(object sender, EventArgs e) + { + try + { + SettingsMethods.VlcYoutubeSt(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + + private void btnAddURLforVLC_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(txtboxURLforVLC.Text)) + { + string url = txtboxURLforVLC.Text; + listboxURLforVLC.Items.Add(url); + SettingsMethods.AddVLC_URL(url); + } + else + { + MessageBox.Show("Text Box is empty"); + } + } + + private void btnRemoveURLforVLC_Click(object sender, EventArgs e) + { + try + { + SettingsMethods.RemoveVLC_URL(listboxURLforVLC.SelectedIndex); + listboxURLforVLC.Items.RemoveAt(listboxURLforVLC.SelectedIndex); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + } + + private void btnAllRemoveURLforVLC_Click(object sender, EventArgs e) + { + listboxURLforVLC.Items.Clear(); + SettingsMethods.AllRemoveVLC_URLS(); + } + + private void txtboxURLforVLC_MouseHover(object sender, EventArgs e) + { + ToolTip toolTip = new ToolTip(); + toolTip.ToolTipIcon = ToolTipIcon.Info; + toolTip.UseAnimation = true; + toolTip.UseFading = true; + toolTip.AutoPopDelay = 10000; + toolTip.ToolTipTitle = Localization.VLC_SupportedWebsites; + toolTip.SetToolTip(txtboxURLforVLC, "youtube.com\ndailymotion.com\nsoundcloud.com"); + } + + private void listboxURLforVLC_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + txtboxURLforVLC.Text = listboxURLforVLC.SelectedItem.ToString(); + } + catch (Exception ex) + { + if (ex.HResult == -2147467261) + { + + } + else + { + MessageBox.Show(ex.Message); + } + } + } + + private void btnEditURLforVLC_Click(object sender, EventArgs e) + { + try + { + int i = listboxURLforVLC.SelectedIndex; + listboxURLforVLC.Items.RemoveAt(i); + SettingsMethods.UpdateVLC_URL(i, txtboxURLforVLC.Text); + listboxURLforVLC.Items.Insert(i, txtboxURLforVLC.Text); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } } } } \ No newline at end of file diff --git a/MyScreenSaver/Forms/ShowScreenSaverForm.Designer.cs b/MyScreenSaver/Forms/ShowScreenSaverForm.Designer.cs index 19acd88..777e55d 100644 --- a/MyScreenSaver/Forms/ShowScreenSaverForm.Designer.cs +++ b/MyScreenSaver/Forms/ShowScreenSaverForm.Designer.cs @@ -169,8 +169,10 @@ private void InitializeComponent() this.axVLCPlugin.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axVLCPlugin.OcxState"))); this.axVLCPlugin.Size = new System.Drawing.Size(12, 240); this.axVLCPlugin.TabIndex = 1; + this.axVLCPlugin.TabStop = false; this.axVLCPlugin.Visible = false; this.axVLCPlugin.MediaPlayerPlaying += new System.EventHandler(this.axVLCPlugin_MediaPlayerPlaying); + this.axVLCPlugin.MediaPlayerPaused += new System.EventHandler(this.axVLCPlugin_MediaPlayerPaused); this.axVLCPlugin.MediaPlayerStopped += new System.EventHandler(this.axVLCPlugin_MediaPlayerStopped); // // listBoxMusicList diff --git a/MyScreenSaver/Forms/ShowScreenSaverForm.cs b/MyScreenSaver/Forms/ShowScreenSaverForm.cs index 870f96b..01cb215 100644 --- a/MyScreenSaver/Forms/ShowScreenSaverForm.cs +++ b/MyScreenSaver/Forms/ShowScreenSaverForm.cs @@ -22,6 +22,7 @@ public partial class ShowScreenSaverForm : Form private int z = 0; private int music_i = 0; private int music_z = 0; + private int vlc_music_z = 0; private int tick; private int msplayerstatus; private bool msplayerstart; @@ -155,8 +156,17 @@ private void GetSettings() foreach (var it in musicfiles) { axVLCPlugin.playlist.add(fi + it); - axVLCPlugin.playlist.play(); } + + if (Properties.Settings.Default.VLC_URL != null) + { + foreach (var url in Properties.Settings.Default.VLC_URL) + { + musicfiles.Add(url); + axVLCPlugin.playlist.add(url); + } + } + axVLCPlugin.playlist.play(); } catch (Exception ex) { @@ -396,6 +406,7 @@ private void ShowOptionsForm() z = 0; music_i = 0; music_z = 0; + vlc_music_z = 0; axVLCPlugin.playlist.stop(); axVLCPlugin.playlist.items.clear(); axWinMediaPlayer.close(); @@ -521,7 +532,6 @@ private void LblmusicBox_Text(string part) listBoxMusicList.SelectedIndex = music_i; axWinMediaPlayer.Ctlcontrols.play(); } - } catch (Exception ex) { @@ -570,7 +580,6 @@ private void axWinMediaPlayer_PlayStateChange(object sender, AxWMPLib._WMPOCXEve timer2.Start(); NextMusic(); } - } } int sd = 1; @@ -744,16 +753,19 @@ private void axVLCPlugin_MediaPlayerPlaying(object sender, EventArgs e) try { - if (music_i == -1) + if(string.IsNullOrEmpty(axVLCPlugin.mediaDescription.url)) { - axVLCPlugin.playlist.playItem(music_z + 1); - } - else - { - music_z = axVLCPlugin.playlist.currentItem; + if (music_i == -1) + { + axVLCPlugin.playlist.playItem(vlc_music_z + 1); + } + else + { + vlc_music_z = axVLCPlugin.playlist.currentItem; + } + lblmusicBox.Text = string.Format("{0} {1}/{2}", musicfiles[music_i], music_i + 1, musicfiles.Count); + listBoxMusicList.SelectedIndex = axVLCPlugin.playlist.currentItem; } - lblmusicBox.Text = string.Format("{0} {1}/{2}", musicfiles[music_i], music_i + 1, musicfiles.Count); - listBoxMusicList.SelectedIndex = axVLCPlugin.playlist.currentItem; } catch (Exception ex) { diff --git a/MyScreenSaver/Forms/ShowScreenSaverForm.resx b/MyScreenSaver/Forms/ShowScreenSaverForm.resx index be55dc0..376635d 100644 --- a/MyScreenSaver/Forms/ShowScreenSaverForm.resx +++ b/MyScreenSaver/Forms/ShowScreenSaverForm.resx @@ -143,7 +143,7 @@ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5BeEhvc3QrU3RhdGUBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAgwEAAAIB AAAAAQAAAAAAAAAAAAAAAG4BAAAHAAAAKABDAG8AdQBuAHQAKQADAA0AAAAIAAAAQQB1AHQAbwBMAG8A - bwBwAAsAAAAIAAAAQQB1AHQAbwBQAGwAYQB5AAsA//8JAAAAQgBhAGMAawBDAG8AbABvAHIAAwAAAAAA + bwBwAAsA//8IAAAAQQB1AHQAbwBQAGwAYQB5AAsA//8JAAAAQgBhAGMAawBDAG8AbABvAHIAAwAAAAAA BwAAAEIAYQBzAGUAVQBSAEwACAAAAAAACAAAAEIAcgBhAG4AZABpAG4AZwALAP//DAAAAEUAeAB0AGUA bgB0AEgAZQBpAGcAaAB0AAMAzhgAAAsAAABFAHgAdABlAG4AdABXAGkAZAB0AGgAAwA+AQAAEQAAAEYA dQBsAGwAcwBjAHIAZQBlAG4ARQBuAGEAYgBsAGUAZAALAAAAAwAAAE0AUgBMAAgAAAAAAAkAAABTAHQA diff --git a/MyScreenSaver/Forms/VideoPlayerVLCForm.Designer.cs b/MyScreenSaver/Forms/VideoPlayerVLCForm.Designer.cs index 547f52e..ff0ff76 100644 --- a/MyScreenSaver/Forms/VideoPlayerVLCForm.Designer.cs +++ b/MyScreenSaver/Forms/VideoPlayerVLCForm.Designer.cs @@ -67,6 +67,7 @@ private void InitializeComponent() // listBoxVideoList // this.listBoxVideoList.BackColor = System.Drawing.SystemColors.HighlightText; + this.listBoxVideoList.BorderStyle = System.Windows.Forms.BorderStyle.None; this.listBoxVideoList.Dock = System.Windows.Forms.DockStyle.Right; this.listBoxVideoList.FormattingEnabled = true; this.listBoxVideoList.HorizontalScrollbar = true; @@ -76,6 +77,8 @@ private void InitializeComponent() this.listBoxVideoList.ScrollAlwaysVisible = true; this.listBoxVideoList.Size = new System.Drawing.Size(315, 434); this.listBoxVideoList.TabIndex = 2; + this.listBoxVideoList.TabStop = false; + this.listBoxVideoList.UseTabStops = false; this.listBoxVideoList.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBoxVideoList_KeyDown); this.listBoxVideoList.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBoxVideoList_MouseDoubleClick); // diff --git a/MyScreenSaver/Forms/VideoPlayerVLCForm.cs b/MyScreenSaver/Forms/VideoPlayerVLCForm.cs index 8974493..12cec4e 100644 --- a/MyScreenSaver/Forms/VideoPlayerVLCForm.cs +++ b/MyScreenSaver/Forms/VideoPlayerVLCForm.cs @@ -10,6 +10,7 @@ public partial class VideoPlayerVLCForm : Form { private List videofiles = new List(); private static List video_extensions = new List(); + private int z = 0; private bool playing; public VideoPlayerVLCForm() { @@ -24,6 +25,8 @@ private void GetSettings() listBoxVideoList.Enabled = false; axVLCPlugin.Toolbar = false; axVLCPlugin.CtlVisible = false; + axVLCPlugin.AutoPlay = true; + axVLCPlugin.Show(); listBoxVideoList.Visible = false; try @@ -59,8 +62,17 @@ private void GetSettings() MessageBox.Show(ex.Message); continue; } + } + if(Properties.Settings.Default.VLC_URL != null) + { + foreach (var item in Properties.Settings.Default.VLC_URL) + { + videofiles.Add(item); + axVLCPlugin.playlist.add(item); + } } + PlayVideo(); listBoxVideoList.DataSource = videofiles; } @@ -115,6 +127,7 @@ private void ShowOptionsForm() } else { + z = 0; videofiles.Clear(); video_extensions.Clear(); axVLCPlugin.playlist.stop(); @@ -214,7 +227,6 @@ private void axVLCPlugin_KeyDownEvent(object sender, AxAXVLC.DVLCEvents_KeyDownE //} } - private int z = 0; private void axVLCPlugin_MediaPlayerPlaying(object sender, EventArgs e) { playing = true; @@ -222,16 +234,19 @@ private void axVLCPlugin_MediaPlayerPlaying(object sender, EventArgs e) try { - if (i == -1) + if(string.IsNullOrEmpty(axVLCPlugin.mediaDescription.url)) { - axVLCPlugin.playlist.playItem(z + 1); - } - else - { - z = axVLCPlugin.playlist.currentItem; + if (i == -1) + { + axVLCPlugin.playlist.playItem(z + 1); + } + else + { + z = axVLCPlugin.playlist.currentItem; + } + lblVideoBox.Text =string.Format("{0} {1}/{2}", videofiles[i], i + 1, videofiles.Count); + listBoxVideoList.SelectedIndex = axVLCPlugin.playlist.currentItem; } - lblVideoBox.Text = string.Format("{0} {1}/{2}", videofiles[i], i + 1, videofiles.Count); - listBoxVideoList.SelectedIndex = axVLCPlugin.playlist.currentItem; } catch (Exception ex) { diff --git a/MyScreenSaver/Forms/VideoPlayerWMPForm.Designer.cs b/MyScreenSaver/Forms/VideoPlayerWMPForm.Designer.cs index b2ada68..ad8b70d 100644 --- a/MyScreenSaver/Forms/VideoPlayerWMPForm.Designer.cs +++ b/MyScreenSaver/Forms/VideoPlayerWMPForm.Designer.cs @@ -53,6 +53,7 @@ private void InitializeComponent() // listBoxVideoList // this.listBoxVideoList.BackColor = System.Drawing.SystemColors.HighlightText; + this.listBoxVideoList.BorderStyle = System.Windows.Forms.BorderStyle.None; this.listBoxVideoList.Dock = System.Windows.Forms.DockStyle.Right; this.listBoxVideoList.FormattingEnabled = true; this.listBoxVideoList.HorizontalScrollbar = true; @@ -62,6 +63,8 @@ private void InitializeComponent() this.listBoxVideoList.ScrollAlwaysVisible = true; this.listBoxVideoList.Size = new System.Drawing.Size(315, 434); this.listBoxVideoList.TabIndex = 2; + this.listBoxVideoList.TabStop = false; + this.listBoxVideoList.UseTabStops = false; this.listBoxVideoList.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBoxVideoList_KeyDown); this.listBoxVideoList.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBoxVideoList_MouseDoubleClick); // @@ -74,6 +77,7 @@ private void InitializeComponent() this.axWindowsMediaPlayer.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axWindowsMediaPlayer.OcxState"))); this.axWindowsMediaPlayer.Size = new System.Drawing.Size(800, 434); this.axWindowsMediaPlayer.TabIndex = 3; + this.axWindowsMediaPlayer.TabStop = false; this.axWindowsMediaPlayer.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(this.axWindowsMediaPlayer_PlayStateChange); this.axWindowsMediaPlayer.MediaError += new AxWMPLib._WMPOCXEvents_MediaErrorEventHandler(this.axWindowsMediaPlayer_MediaError); this.axWindowsMediaPlayer.DoubleClickEvent += new AxWMPLib._WMPOCXEvents_DoubleClickEventHandler(this.axWindowsMediaPlayer_DoubleClickEvent); diff --git a/MyScreenSaver/Forms/VideoPlayerWMPForm.cs b/MyScreenSaver/Forms/VideoPlayerWMPForm.cs index 8abedff..64a53a9 100644 --- a/MyScreenSaver/Forms/VideoPlayerWMPForm.cs +++ b/MyScreenSaver/Forms/VideoPlayerWMPForm.cs @@ -63,8 +63,10 @@ private void ShowOptionsForm() } else { + i = 0; videofiles.Clear(); video_extensions.Clear(); + lblVideoBox.Text = Localization.Loading; axWindowsMediaPlayer.Ctlcontrols.stop(); listBoxVideoList.DataSource = null; GetSettings(); @@ -143,8 +145,6 @@ private void PauseVideo() private void StopVideo() { axWindowsMediaPlayer.Ctlcontrols.stop(); - - var assss = axWindowsMediaPlayer; } private void NextVideo() diff --git a/MyScreenSaver/Languages/Localization.Designer.cs b/MyScreenSaver/Languages/Localization.Designer.cs index 7455f88..1bf3767 100644 --- a/MyScreenSaver/Languages/Localization.Designer.cs +++ b/MyScreenSaver/Languages/Localization.Designer.cs @@ -96,6 +96,15 @@ internal static string Delete_File_List { } } + /// + /// Düzenle benzeri yerelleştirilmiş bir dize arar. + /// + internal static string Edit { + get { + return ResourceManager.GetString("Edit", resourceCulture); + } + } + /// /// Hata benzeri yerelleştirilmiş bir dize arar. /// @@ -159,6 +168,15 @@ internal static string FileTypes { } } + /// + /// VLC'yi Düzelt benzeri yerelleştirilmiş bir dize arar. + /// + internal static string FixVLC { + get { + return ResourceManager.GetString("FixVLC", resourceCulture); + } + } + /// /// Genel Ayarlar benzeri yerelleştirilmiş bir dize arar. /// @@ -213,6 +231,15 @@ internal static string ListofVideoFolders { } } + /// + /// Yükleniyor... benzeri yerelleştirilmiş bir dize arar. + /// + internal static string Loading { + get { + return ResourceManager.GetString("Loading", resourceCulture); + } + } + /// /// Müzik Oynatıcısı benzeri yerelleştirilmiş bir dize arar. /// @@ -348,6 +375,15 @@ internal static string TTime { } } + /// + /// URL: benzeri yerelleştirilmiş bir dize arar. + /// + internal static string URL { + get { + return ResourceManager.GetString("URL", resourceCulture); + } + } + /// /// Video Slayt Gösterisi benzeri yerelleştirilmiş bir dize arar. /// @@ -366,6 +402,24 @@ internal static string VLC { } } + /// + /// Desteklenen Web Siteler: benzeri yerelleştirilmiş bir dize arar. + /// + internal static string VLC_SupportedWebsites { + get { + return ResourceManager.GetString("VLC_SupportedWebsites", resourceCulture); + } + } + + /// + /// VLC URL Listesi benzeri yerelleştirilmiş bir dize arar. + /// + internal static string VLCURLList { + get { + return ResourceManager.GetString("VLCURLList", resourceCulture); + } + } + /// /// Windows Media Player benzeri yerelleştirilmiş bir dize arar. /// diff --git a/MyScreenSaver/Languages/Localization.en-GB.resx b/MyScreenSaver/Languages/Localization.en-GB.resx index 39fb5eb..646f040 100644 --- a/MyScreenSaver/Languages/Localization.en-GB.resx +++ b/MyScreenSaver/Languages/Localization.en-GB.resx @@ -129,6 +129,9 @@ Do you want to remove the file from the list? + + Edit + Error @@ -150,6 +153,9 @@ File Types + + Fix VLC + General Settings @@ -168,6 +174,9 @@ List of Video Folders + + Loading... + Music Player @@ -213,12 +222,21 @@ Time + + URL: + Video Slideshow VLC Media Player + + VLC URL List + + + Supported Websites: + Windows Media Player diff --git a/MyScreenSaver/Languages/Localization.en-US.resx b/MyScreenSaver/Languages/Localization.en-US.resx index 39fb5eb..646f040 100644 --- a/MyScreenSaver/Languages/Localization.en-US.resx +++ b/MyScreenSaver/Languages/Localization.en-US.resx @@ -129,6 +129,9 @@ Do you want to remove the file from the list? + + Edit + Error @@ -150,6 +153,9 @@ File Types + + Fix VLC + General Settings @@ -168,6 +174,9 @@ List of Video Folders + + Loading... + Music Player @@ -213,12 +222,21 @@ Time + + URL: + Video Slideshow VLC Media Player + + VLC URL List + + + Supported Websites: + Windows Media Player diff --git a/MyScreenSaver/Languages/Localization.resx b/MyScreenSaver/Languages/Localization.resx index 168ba10..9fc0ccc 100644 --- a/MyScreenSaver/Languages/Localization.resx +++ b/MyScreenSaver/Languages/Localization.resx @@ -129,6 +129,9 @@ Dosyayı listeden çıkartmak istiyor musun? + + Düzenle + Hata @@ -150,6 +153,9 @@ Dosya Türleri + + VLC'yi Düzelt + Genel Ayarlar @@ -168,6 +174,9 @@ Video Klasör Listesi + + Yükleniyor... + Müzik Oynatıcısı @@ -213,12 +222,21 @@ Süre + + URL: + Video Slayt Gösterisi VLC Media Player + + VLC URL Listesi + + + Desteklenen Web Siteler: + Windows Media Player diff --git a/MyScreenSaver/Methods/SettingsMethods.cs b/MyScreenSaver/Methods/SettingsMethods.cs index c393c4d..27f964a 100644 --- a/MyScreenSaver/Methods/SettingsMethods.cs +++ b/MyScreenSaver/Methods/SettingsMethods.cs @@ -3,6 +3,8 @@ using MyScreenSaver.Properties; using System; using System.Globalization; +using System.IO; +using System.Security.Principal; using System.Threading; using System.Windows.Forms; @@ -474,5 +476,178 @@ internal static void SetClockAndDate(bool chk) } Settings.Default.Save(); } + + internal static void AddVLC_URL(string selectedpath) + { + Settings.Default.VLC_URL.Add(selectedpath); + Settings.Default.Save(); + } + + internal static void UpdateVLC_URL(int index, string selectedpath) + { + Settings.Default.VLC_URL.RemoveAt(index); + Settings.Default.VLC_URL.Insert(index, selectedpath); + Settings.Default.Save(); + } + + internal static void RemoveVLC_URL(int index) + { + Settings.Default.VLC_URL.RemoveAt(index); + Settings.Default.Save(); + } + + internal static void AllRemoveVLC_URLS() + { + Settings.Default.VLC_URL.Clear(); + Settings.Default.Save(); + } + + internal static void VlcYoutubeSt() + { + try + { + bool isElevated; + using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) + { + WindowsPrincipal principal = new WindowsPrincipal(identity); + isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator); + } + if (isElevated) + { + string x86; + string x64; + if (Environment.Is64BitOperatingSystem && !Environment.Is64BitProcess) + { + x86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86); + x64 = @"C:\Program Files"; + } + else + { + x86 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); + x64 = ""; + } + + string path = @"\VideoLAN\VLC\lua\playlist\"; + + string filename = "youtube.luac"; + string filenamebak = "youtube.luac.bak"; + string filename2 = "youtube.lua"; + string filename2bak = "youtube.lua.bak"; + string x86fullPath = x86 + path; + string x64fullPath = x64 + path; + + string fullpath = Application.StartupPath + @"\Units\VLC\" + filename2; + + if (IsDirExists(x86fullPath)) + { + if (IsFileExists(x86fullPath + filename)) + { + File.Copy(x86fullPath + filename, x86fullPath + filenamebak, true); + File.Delete(x86fullPath + filename); + if (IsFileExists(x86fullPath + filename2)) + { + File.Copy(x86fullPath + filename2, x86fullPath + filename2bak, true); + File.Delete(x86fullPath + filename2); + + File.Copy(fullpath, x86fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x86fullPath + filename2, true); + } + } + else + { + if (IsFileExists(x86fullPath + filename2)) + { + File.Copy(x86fullPath + filename2, x86fullPath + filename2bak, true); + File.Delete(x86fullPath + filename2); + + File.Copy(fullpath, x86fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x86fullPath + filename2, true); + } + } + } + + if (!string.IsNullOrEmpty(x64) && IsDirExists(x64fullPath)) + { + if (IsFileExists(x64fullPath + filename)) + { + File.Copy(x64fullPath + filename, x64fullPath + filenamebak, true); + File.Delete(x64fullPath + filename); + if (IsFileExists(x64fullPath + filename2)) + { + File.Copy(x64fullPath + filename2, x64fullPath + filename2bak, true); + File.Delete(x64fullPath + filename2); + + File.Copy(fullpath, x64fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x64fullPath + filename2, true); + } + } + else + { + if (IsFileExists(x64fullPath + filename2)) + { + File.Copy(x64fullPath + filename2, x64fullPath + filename2bak, true); + File.Delete(x64fullPath + filename2); + + File.Copy(fullpath, x64fullPath + filename2, true); + } + else + { + File.Copy(fullpath, x64fullPath + filename2, true); + } + } + } + } + else + { + try + { + System.Diagnostics.Process pr = new System.Diagnostics.Process(); + pr.StartInfo.FileName = Application.StartupPath + "/MyScreenSaver.FixVLC_Administrator.exe"; + pr.Start(); + } + catch (Exception) + { + throw; + } + } + } + catch (Exception) + { + throw; + } + } + + internal static bool IsDirExists(string dirPath) + { + try + { + return Directory.Exists(dirPath); + } + catch (Exception) + { + throw; + } + } + + internal static bool IsFileExists(string filePath) + { + try + { + return File.Exists(filePath); + } + catch (Exception) + { + throw; + } + } } } \ No newline at end of file diff --git a/MyScreenSaver/MyScreenSaver.csproj b/MyScreenSaver/MyScreenSaver.csproj index 7ab331a..5d56018 100644 --- a/MyScreenSaver/MyScreenSaver.csproj +++ b/MyScreenSaver/MyScreenSaver.csproj @@ -12,6 +12,8 @@ 512 true true + false + publish\ true Disk @@ -24,10 +26,8 @@ true 0 1.0.0.%2a - false false true - AnyCPU @@ -74,6 +74,7 @@ prompt true + @@ -184,6 +185,8 @@ Settings.settings True + + @@ -246,11 +249,16 @@ + + {b511d058-9be9-4c6c-bab8-c7409f938140} + MyScreenSaver.FixVLC_Administrator + {2a2c7a23-60e4-4cc8-bd84-8e3a46565953} UpdateManager + diff --git a/MyScreenSaver/Properties/AssemblyInfo.cs b/MyScreenSaver/Properties/AssemblyInfo.cs index 49e4a58..7d1a74f 100644 --- a/MyScreenSaver/Properties/AssemblyInfo.cs +++ b/MyScreenSaver/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // Tüm değerleri belirtebilir veya varsayılan Derleme ve Düzeltme Numaralarını kullanmak için // aşağıda gösterildiği gibi '*' kullanabilirsiniz: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.3")] -[assembly: AssemblyFileVersion("1.0.0.3")] +[assembly: AssemblyVersion("1.0.0.5")] +[assembly: AssemblyFileVersion("1.0.0.5")] diff --git a/MyScreenSaver/Properties/Settings.Designer.cs b/MyScreenSaver/Properties/Settings.Designer.cs index c3a0939..e4fd856 100644 --- a/MyScreenSaver/Properties/Settings.Designer.cs +++ b/MyScreenSaver/Properties/Settings.Designer.cs @@ -232,5 +232,18 @@ public bool MusicAppWMP { this["MusicAppWMP"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("\r\n")] + public global::System.Collections.Specialized.StringCollection VLC_URL { + get { + return ((global::System.Collections.Specialized.StringCollection)(this["VLC_URL"])); + } + set { + this["VLC_URL"] = value; + } + } } } diff --git a/MyScreenSaver/Properties/Settings.settings b/MyScreenSaver/Properties/Settings.settings index e1a1ad3..89b9cc7 100644 --- a/MyScreenSaver/Properties/Settings.settings +++ b/MyScreenSaver/Properties/Settings.settings @@ -59,5 +59,9 @@ False + + <?xml version="1.0" encoding="utf-16"?> +<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> + \ No newline at end of file diff --git a/MyScreenSaver/Units/VLC/README.md b/MyScreenSaver/Units/VLC/README.md new file mode 100644 index 0000000..c4ac357 --- /dev/null +++ b/MyScreenSaver/Units/VLC/README.md @@ -0,0 +1 @@ +[https://github.com/videolan/vlc/blob/master/share/lua/playlist/youtube.lua](https://raw.githubusercontent.com/videolan/vlc/master/share/lua/playlist/youtube.lua) \ No newline at end of file diff --git a/MyScreenSaver/Units/VLC/youtube.lua b/MyScreenSaver/Units/VLC/youtube.lua new file mode 100644 index 0000000..29bd00e --- /dev/null +++ b/MyScreenSaver/Units/VLC/youtube.lua @@ -0,0 +1,1115 @@ +--[[ + + Copyright © 2007-2023 the VideoLAN team + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. +--]] + +-- Helper function to get a parameter's value in a URL +function get_url_param( url, name ) + local _, _, res = string.find( url, "[&?]"..name.."=([^&]*)" ) + return res +end + +-- Helper function to copy a parameter when building a new URL +function copy_url_param( url, name ) + local value = get_url_param( url, name ) + return ( value and "&"..name.."="..value or "" ) -- Ternary operator +end + +function get_arturl() + local iurl = get_url_param( vlc.path, "iurl" ) + if iurl then + return iurl + end + local video_id = get_url_param( vlc.path, "v" ) + if not video_id then + return nil + end + return vlc.access.."://img.youtube.com/vi/"..video_id.."/default.jpg" +end + +-- Pick the most suited format available +function get_fmt( fmt_list ) + local prefres = vlc.var.inherit(nil, "preferred-resolution") + if prefres < 0 then + return nil + end + + local fmt = nil + for itag,height in string.gmatch( fmt_list, "(%d+)/%d+x(%d+)[^,]*" ) do + -- Apparently formats are listed in quality + -- order, so we take the first one that works, + -- or fallback to the lowest quality + fmt = itag + if tonumber(height) <= prefres then + break + end + end + return fmt +end + +-- Helper emulating vlc.readline() to work around its failure on +-- very long lines (see #24957) +function read_long_line() + local eol + local pos = 0 + local len = 32768 + repeat + len = len * 2 + local line = vlc.peek( len ) + if not line then return nil end + eol = string.find( line, "\n", pos + 1 ) + pos = len + until eol or len >= 1024 * 1024 -- No EOF detection, loop until limit + return vlc.read( eol or len ) +end + +-- Buffering iterator to parse through the HTTP stream several times +-- without making several HTTP requests +function buf_iter( s ) + s.i = s.i + 1 + local line = s.lines[s.i] + if not line then + -- Put back together statements split across several lines, + -- otherwise we won't be able to parse them + repeat + local l = s.stream:readline() + if not l then break end + line = line and line..l or l -- Ternary operator + until string.match( line, "};$" ) + + if line then + s.lines[s.i] = line + end + end + return line +end + +-- Helper to search and extract code from javascript stream +function js_extract( js, pattern ) + js.i = 0 -- Reset to beginning + for line in buf_iter, js do + local ex = string.match( line, pattern ) + if ex then + return ex + end + end + return nil +end + +-- Descramble the "n" parameter using the javascript code that does that +-- in the web page +function n_descramble( nparam, js ) + if not js.stream then + if not js.url then + return nil + end + js.stream = vlc.stream( js_url ) + if not js.stream then + -- Retry once for transient errors + js.stream = vlc.stream( js_url ) + if not js.stream then + return nil + end + end + end + + -- Look for the descrambler function's name + -- a.C&&(b=a.get("n"))&&(b=Bpa[0](b),a.set("n",b),Bpa.length||iha(""))}}; + -- var Bpa=[iha]; + local callsite = js_extract( js, '[^;]*%.set%("n",[^};]*' ) + if not callsite then + vlc.msg.dbg( "Couldn't extract YouTube video throttling parameter descrambling function name" ) + return nil + end + + -- Try direct function name from following clause + local descrambler = string.match( callsite, '%.set%("n",.%),...?%.length||(...?)%(' ) + local itm = nil + if not descrambler then + -- Try from main call site + descrambler = string.match( callsite, '[=%(,&|]([a-zA-Z0-9_$%[%]]+)%(.%),.%.set%("n",' ) + if descrambler then + -- Check if this is only an intermediate variable + itm = string.match( descrambler, '^([^%[%]]+)%[' ) + if itm then + descrambler = nil + end + else + -- Last chance: intermediate variable in following clause + itm = string.match( callsite, '%.set%("n",.%),(...?)%.length' ) + end + end + + if not descrambler and itm then + -- Resolve intermediate variable + descrambler = js_extract( js, 'var '..itm..'=%[(...?)[%],]' ) + end + + if not descrambler then + vlc.msg.dbg( "Couldn't extract YouTube video throttling parameter descrambling function name" ) + return nil + end + + -- Fetch the code of the descrambler function + -- lha=function(a){var b=a.split(""),c=[310282131,"KLf3",b,null,function(d,e){d.push(e)},-45817231, [data and transformations...] ,1248130556];c[3]=c;c[15]=c;c[18]=c;try{c[40](c[14],c[2]),c[25](c[48]),c[21](c[32],c[23]), [scripted calls...] ,c[25](c[33],c[3])}catch(d){return"enhanced_except_4ZMBnuz-_w8_"+a}return b.join("")}; + local code = js_extract( js, "^"..descrambler.."=function%([^)]*%){(.-)};" ) + if not code then + vlc.msg.dbg( "Couldn't extract YouTube video throttling parameter descrambling code" ) + return nil + end + + -- Split code into two main sections: 1/ data and transformations, + -- and 2/ a script of calls + local datac, script = string.match( code, "c=%[(.*)%];.-;try{(.*)}catch%(" ) + if ( not datac ) or ( not script ) then + vlc.msg.dbg( "Couldn't extract YouTube video throttling parameter descrambling rules" ) + return nil + end + + -- Split "n" parameter into a table as descrambling operates on it + -- as one of several arrays + local n = {} + for c in string.gmatch( nparam, "." ) do + table.insert( n, c ) + end + + -- Helper + local table_len = function( tab ) + local len = 0 + for i, val in ipairs( tab ) do + len = len + 1 + end + return len + end + + -- Shared core section of compound transformations: it compounds + -- the "n" parameter with an input string, character by character, + -- using a Base64 alphabet as algebraic modulo group. + -- var h=f.length;d.forEach(function(l,m,n){this.push(n[m]=f[(f.indexOf(l)-f.indexOf(this[m])+m+h--)%f.length])},e.split("")) + local compound = function( ntab, str, alphabet ) + if ntab ~= n or + type( str ) ~= "string" or + type( alphabet ) ~= "string" then + return true + end + local input = {} + for c in string.gmatch( str, "." ) do + table.insert( input, c ) + end + + local len = string.len( alphabet ) + for i, c in ipairs( ntab ) do + if type( c ) ~= "string" then + return true + end + local pos1 = string.find( alphabet, c, 1, true ) + local pos2 = string.find( alphabet, input[i], 1, true ) + if ( not pos1 ) or ( not pos2 ) then + return true + end + local pos = ( pos1 - pos2 ) % len + local newc = string.sub( alphabet, pos + 1, pos + 1 ) + ntab[i] = newc + table.insert( input, newc ) + end + end + + -- The data section contains among others function code for a number + -- of transformations, most of which are basic array operations. + -- We can match these functions' code to identify them, and emulate + -- the corresponding transformations. + local trans = { + reverse = { + func = function( tab ) + local len = table_len( tab ) + local tmp = {} + for i, val in ipairs( tab ) do + tmp[len - i + 1] = val + end + for i, val in ipairs( tmp ) do + tab[i] = val + end + end, + match = { + -- function(d){d.reverse()} + -- function(d){for(var e=d.length;e;)d.push(d.splice(--e,1)[0])} + "^function%(d%)", + } + }, + append = { + func = function( tab, val ) + table.insert( tab, val ) + end, + match = { + -- function(d,e){d.push(e)} + "^function%(d,e%){d%.push%(e%)},", + } + }, + remove = { + func = function( tab, i ) + if type( i ) ~= "number" then + return true + end + i = i % table_len( tab ) + table.remove( tab, i + 1 ) + end, + match = { + -- function(d,e){e=(e%d.length+d.length)%d.length;d.splice(e,1)} + "^[^}]-;d%.splice%(e,1%)},", + } + }, + swap = { + func = function( tab, i ) + if type( i ) ~= "number" then + return true + end + i = i % table_len( tab ) + local tmp = tab[1] + tab[1] = tab[i + 1] + tab[i + 1] = tmp + end, + match = { + -- function(d,e){e=(e%d.length+d.length)%d.length;var f=d[0];d[0]=d[e];d[e]=f} + -- function(d,e){e=(e%d.length+d.length)%d.length;d.splice(0,1,d.splice(e,1,d[0])[0])} + "^[^}]-;var f=d%[0%];d%[0%]=d%[e%];d%[e%]=f},", + "^[^}]-;d%.splice%(0,1,d%.splice%(e,1,d%[0%]%)%[0%]%)},", + } + }, + rotate = { + func = function( tab, shift ) + if type( shift ) ~= "number" then + return true + end + local len = table_len( tab ) + shift = shift % len + local tmp = {} + for i, val in ipairs( tab ) do + tmp[( i - 1 + shift ) % len + 1] = val + end + for i, val in ipairs( tmp ) do + tab[i] = val + end + end, + match = { + -- function(d,e){for(e=(e%d.length+d.length)%d.length;e--;)d.unshift(d.pop())} + -- function(d,e){e=(e%d.length+d.length)%d.length;d.splice(-e).reverse().forEach(function(f){d.unshift(f)})} + "^[^}]-d%.unshift%(d.pop%(%)%)},", + "^[^}]-d%.unshift%(f%)}%)},", + } + }, + -- Here functions with no arguments are not really functions, + -- they're constants: treat them as such. These alphabets are + -- passed to and used by the compound transformations. + alphabet1 = { + func = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_", + match = { + -- function(){for(var d=64,e=[];++d-e.length-32;){switch(d){case 91:d=44;continue;case 123:d=65;break;case 65:d-=18;continue;case 58:d=96;continue;case 46:d=95}e.push(String.fromCharCode(d))}return e} + "^function%(%){[^}]-case 58:d=96;", + } + }, + alphabet2 = { + func = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", + match = { + -- function(){for(var d=64,e=[];++d-e.length-32;){switch(d){case 58:d-=14;case 91:case 92:case 93:continue;case 123:d=47;case 94:case 95:case 96:continue;case 46:d=95}e.push(String.fromCharCode(d))}return e} + -- function(){for(var d=64,e=[];++d-e.length-32;)switch(d){case 46:d=95;default:e.push(String.fromCharCode(d));case 94:case 95:case 96:break;case 123:d-=76;case 92:case 93:continue;case 58:d=44;case 91:}return e} + "^function%(%){[^}]-case 58:d%-=14;", + "^function%(%){[^}]-case 58:d=44;", + } + }, + -- Compound transformations are based on a shared core section + -- that compounds the "n" parameter with an input string, + -- character by character, using a variation of a Base64 + -- alphabet as algebraic modulo group. + compound = { + func = compound, + match = { + -- function(d,e,f){var h=f.length;d.forEach(function(l,m,n){this.push(n[m]=f[(f.indexOf(l)-f.indexOf(this[m])+m+h--)%f.length])},e.split(""))} + "^function%(d,e,f%)", + } + }, + -- These compound transformation variants first build their + -- Base64 alphabet themselves, before using it. + compound1 = { + func = function( ntab, str ) + return compound( ntab, str, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_" ) + end, + match = { + -- function(d,e){for(var f=64,h=[];++f-h.length-32;)switch(f){case 58:f=96;continue;case 91:f=44;break;case 65:f=47;continue;case 46:f=153;case 123:f-=58;default:h.push(String.fromCharCode(f))} [ compound... ] } + "^function%(d,e%){[^}]-case 58:f=96;", + } + }, + compound2 = { + func = function( ntab, str ) + return compound( ntab, str,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" ) + end, + match = { + -- function(d,e){for(var f=64,h=[];++f-h.length-32;){switch(f){case 58:f-=14;case 91:case 92:case 93:continue;case 123:f=47;case 94:case 95:case 96:continue;case 46:f=95}h.push(String.fromCharCode(f))} [ compound... ] } + -- function(d,e){for(var f=64,h=[];++f-h.length-32;)switch(f){case 46:f=95;default:h.push(String.fromCharCode(f));case 94:case 95:case 96:break;case 123:f-=76;case 92:case 93:continue;case 58:f=44;case 91:} [ compound... ] } + "^function%(d,e%){[^}]-case 58:f%-=14;", + "^function%(d,e%){[^}]-case 58:f=44;", + } + }, + -- Fallback + unid = { + func = function( ) + vlc.msg.dbg( "Couldn't apply unidentified YouTube video throttling parameter transformation, aborting descrambling" ) + return true + end, + match = { + } + }, + } + + -- The data section actually mixes input data, reference to the + -- "n" parameter array, and self-reference to its own array, with + -- transformation functions used to modify itself. We parse it + -- as such into a table. + local data = {} + datac = datac.."," + while datac and datac ~= "" do + local el = nil + -- Transformation functions + if string.match( datac, "^function%(" ) then + for name, tr in pairs( trans ) do + for i, match in ipairs( tr.match ) do + if string.match( datac, match ) then + el = tr.func + break + end + end + if el then + break + end + end + if not el then + el = trans.unid.func + vlc.msg.warn( "Couldn't parse unidentified YouTube video throttling parameter transformation" ) + end + + -- Compounding functions use a subfunction, so we need to be + -- more specific in how much parsed data we consume. + if el == trans.compound.func or + el == trans.compound1.func or + el == trans.compound2.func then + datac = string.match( datac, '^.-},e%.split%(""%)%)},(.*)$' ) + or string.match( datac, "^.-},(.*)$" ) + else + datac = string.match( datac, "^.-},(.*)$" ) + end + + -- String input data + elseif string.match( datac, '^"[^"]*",' ) then + el, datac = string.match( datac, '^"([^"]*)",(.*)$' ) + -- Integer input data + -- 1818016376,-648890305,-1200559E3, ... + elseif string.match( datac, '^%-?%d+,' ) or + string.match( datac, '^%-?%d+[eE]%-?%d+,' ) then + el, datac = string.match( datac, "^(.-),(.*)$" ) + el = tonumber( el ) + -- Reference to "n" parameter array + elseif string.match( datac, '^b,' ) then + el = n + datac = string.match( datac, "^b,(.*)$" ) + -- Replaced by self-reference to data array after its declaration + elseif string.match( datac, '^null,' ) then + el = data + datac = string.match( datac, "^null,(.*)$" ) + else + vlc.msg.warn( "Couldn't parse unidentified YouTube video throttling parameter descrambling data" ) + el = false -- Lua tables can't contain nil values + datac = string.match( datac, "^[^,]-,(.*)$" ) + end + + table.insert( data, el ) + end + + -- Debugging helper to print data array elements + local prd = function( el, tab ) + if not el then + return "???" + elseif el == n then + return "n" + elseif el == data then + return "data" + elseif type( el ) == "string" then + return '"'..el..'"' + elseif type( el ) == "number" then + el = tostring( el ) + if type( tab ) == "table" then + el = el.." -> "..( el % table_len( tab ) ) + end + return el + else + for name, tr in pairs( trans ) do + if el == tr.func then + return name + end + end + return tostring( el ) + end + end + + -- The script section contains a series of calls to elements of + -- the data section array onto other elements of it: calls to + -- transformations, with a reference to the data array itself or + -- the "n" parameter array as first argument, and often input data + -- as a second argument. We parse and emulate those calls to follow + -- the descrambling script. + -- c[40](c[14],c[2]),c[25](c[48]),c[14](c[1],c[24],c[42]()), [...] + if not string.match( script, "c%[(%d+)%]%(c%[(%d+)%]([^)]-)%)" ) then + vlc.msg.dbg( "Couldn't parse and execute YouTube video throttling parameter descrambling rules" ) + return nil + end + for ifunc, itab, args in string.gmatch( script, "c%[(%d+)%]%(c%[(%d+)%]([^)]-)%)" ) do + local iarg1 = string.match( args, "^,c%[(%d+)%]" ) + local iarg2 = string.match( args, "^,[^,]-,c%[(%d+)%]" ) + + local func = data[tonumber( ifunc ) + 1] + local tab = data[tonumber( itab ) + 1] + local arg1 = iarg1 and data[tonumber( iarg1 ) + 1] + local arg2 = iarg2 and data[tonumber( iarg2 ) + 1] + + -- Uncomment to debug transformation chain + --vlc.msg.err( '"n" parameter transformation: '..prd( func ).."("..prd( tab )..( arg1 ~= nil and ( ", "..prd( arg1, tab ) ) or "" )..( arg2 ~= nil and ( ", "..prd( arg2, tab ) ) or "" )..") "..ifunc.."("..itab..( iarg1 and ( ", "..iarg1 ) or "" )..( iarg2 and ( ", "..iarg2 ) or "" )..")" ) + --local nprev = table.concat( n ) + + if type( func ) ~= "function" or type( tab ) ~= "table" + or func( tab, arg1, arg2 ) then + vlc.msg.dbg( "Invalid data type encountered during YouTube video throttling parameter descrambling transformation chain, aborting" ) + vlc.msg.dbg( "Couldn't descramble YouTube throttling URL parameter: data transfer will get throttled" ) + vlc.msg.err( "Couldn't process youtube video URL, please check for updates to this script" ) + break + end + + -- Uncomment to debug transformation chain + --local nnew = table.concat( n ) + --if nprev ~= nnew then + -- vlc.msg.dbg( '"n" parameter transformation: '..nprev.." -> "..nnew ) + --end + end + + return table.concat( n ) +end + +-- Descramble the URL signature using the javascript code that does that +-- in the web page +function sig_descramble( sig, js ) + if not js.stream then + if not js.url then + return nil + end + js.stream = vlc.stream( js.url ) + if not js.stream then + -- Retry once for transient errors + js.stream = vlc.stream( js.url ) + if not js.stream then + return nil + end + end + end + + -- Look for the descrambler function's name + -- if(h.s){var l=h.sp,m=wja(decodeURIComponent(h.s));f.set(l,encodeURIComponent(m))} + -- k.s (from stream map field "s") holds the input scrambled signature + -- k.sp (from stream map field "sp") holds a parameter name (normally + -- "signature" or "sig") to set with the output, descrambled signature + local descrambler = js_extract( js, "[=%(,&|](...?)%(decodeURIComponent%(.%.s%)%)" ) + if not descrambler then + vlc.msg.dbg( "Couldn't extract youtube video URL signature descrambling function name" ) + return nil + end + + -- Fetch the code of the descrambler function + -- Go=function(a){a=a.split("");Fo.sH(a,2);Fo.TU(a,28);Fo.TU(a,44);Fo.TU(a,26);Fo.TU(a,40);Fo.TU(a,64);Fo.TR(a,26);Fo.sH(a,1);return a.join("")}; + local rules = js_extract( js, "^"..descrambler.."=function%([^)]*%){(.-)};" ) + if not rules then + vlc.msg.dbg( "Couldn't extract youtube video URL signature descrambling rules" ) + return nil + end + + -- Get the name of the helper object providing transformation definitions + local helper = string.match( rules, ";(..)%...%(" ) + if not helper then + vlc.msg.dbg( "Couldn't extract youtube video URL signature transformation helper name" ) + return nil + end + + -- Fetch the helper object code + -- var Fo={TR:function(a){a.reverse()},TU:function(a,b){var c=a[0];a[0]=a[b%a.length];a[b]=c},sH:function(a,b){a.splice(0,b)}}; + local transformations = js_extract( js, "[ ,]"..helper.."={(.-)};" ) + if not transformations then + vlc.msg.dbg( "Couldn't extract youtube video URL signature transformation code" ) + return nil + end + + -- Parse the helper object to map available transformations + local trans = {} + for meth,code in string.gmatch( transformations, "(..):function%([^)]*%){([^}]*)}" ) do + -- a=a.reverse() + if string.match( code, "%.reverse%(" ) then + trans[meth] = "reverse" + + -- a.splice(0,b) + elseif string.match( code, "%.splice%(") then + trans[meth] = "slice" + + -- var c=a[0];a[0]=a[b%a.length];a[b]=c + elseif string.match( code, "var c=" ) then + trans[meth] = "swap" + else + vlc.msg.warn("Couldn't parse unknown youtube video URL signature transformation") + end + end + + -- Parse descrambling rules, map them to known transformations + -- and apply them on the signature + local missing = false + for meth,idx in string.gmatch( rules, "..%.(..)%([^,]+,(%d+)%)" ) do + idx = tonumber( idx ) + + if trans[meth] == "reverse" then + sig = string.reverse( sig ) + + elseif trans[meth] == "slice" then + sig = string.sub( sig, idx + 1 ) + + elseif trans[meth] == "swap" then + if idx > 1 then + sig = string.gsub( sig, "^(.)("..string.rep( ".", idx - 1 )..")(.)(.*)$", "%3%2%1%4" ) + elseif idx == 1 then + sig = string.gsub( sig, "^(.)(.)", "%2%1" ) + end + else + vlc.msg.dbg("Couldn't apply unknown youtube video URL signature transformation") + missing = true + end + end + if missing then + vlc.msg.err( "Couldn't process youtube video URL, please check for updates to this script" ) + end + return sig +end + +-- Parse and assemble video stream URL +function stream_url( params, js ) + local url = string.match( params, "url=([^&]+)" ) + if not url then + return nil + end + url = vlc.strings.decode_uri( url ) + + -- Descramble any scrambled signature and append it to URL + local s = string.match( params, "s=([^&]+)" ) + if s then + s = vlc.strings.decode_uri( s ) + vlc.msg.dbg( "Found "..string.len( s ).."-character scrambled signature for youtube video URL, attempting to descramble... " ) + local ds = sig_descramble( s, js ) + if not ds then + vlc.msg.dbg( "Couldn't descramble YouTube video URL signature" ) + vlc.msg.err( "Couldn't process youtube video URL, please check for updates to this script" ) + ds = s + end + + local sp = string.match( params, "sp=([^&]+)" ) + if not sp then + vlc.msg.warn( "Couldn't extract signature parameters for youtube video URL, guessing" ) + sp = "signature" + end + url = url.."&"..sp.."="..vlc.strings.encode_uri_component( ds ) + end + + return url +end + +-- Parse and pick our video stream URL (classic parameters, out of use) +function pick_url( url_map, fmt, js_url ) + for stream in string.gmatch( url_map, "[^,]+" ) do + local itag = string.match( stream, "itag=(%d+)" ) + if not fmt or not itag or tonumber( itag ) == tonumber( fmt ) then + return nil -- stream_url( stream, js_url ) + end + end + return nil +end + +-- Pick suitable stream among available formats +function pick_stream( formats, fmt ) + if not formats then + return nil + end + + -- Remove subobject fields to ease parsing of stream object array + formats = string.gsub( formats, '"[^"]-":{[^{}]-},?', '' ) + + if tonumber( fmt ) then + -- Legacy match from URL parameter + fmt = tonumber( fmt ) + for stream in string.gmatch( formats, '{(.-)}' ) do + local itag = tonumber( string.match( stream, '"itag":(%d+)' ) ) + if fmt == itag then + return stream + end + end + return nil + else + -- Compare the different available formats listed with our + -- quality targets + local prefres = vlc.var.inherit( nil, "preferred-resolution" ) + local bestres, pick + for stream in string.gmatch( formats, '{(.-)}' ) do + local height = tonumber( string.match( stream, '"height":(%d+)' ) ) + + -- We have no preference mechanism for audio formats, + -- so just pick the first one + if fmt == "audio" and not height then + return stream + end + + -- Better than nothing + if ( not pick and fmt ~= "video" ) or ( height and ( not bestres + -- Better quality within limits + or ( ( prefres < 0 or height <= prefres ) and height > bestres ) + -- Lower quality more suited to limits + or ( prefres > -1 and bestres > prefres and height < bestres ) + ) ) then + bestres = height + pick = stream + end + end + return pick + end +end + +-- Parse and pick our video stream URL (new-style parameters) +function pick_stream_url( muxed, adaptive, js_url, fmt ) + -- Shared JavaScript resources - lazy initialization + local js = { url = js_url, stream = nil, lines = {}, i = 0 } + if not js.url then + vlc.msg.warn( "Couldn't extract YouTube JavaScript player code URL, descrambling functions unavailable" ) + end + + local pick = nil + if tonumber( fmt ) then + -- Specific numeric itag, search in both lists + pick = pick_stream( muxed, fmt ) + if not pick then + pick = pick_stream( adaptive, fmt ) + end + elseif ( fmt == "audio" or fmt == "video" ) then + -- Specifically audio or video only, no fallback + pick = pick_stream( adaptive, fmt ) + else + if fmt == "hd" then + -- Try and leverage full array of adaptive formats + local audio = pick_stream( adaptive, "audio" ) + local video = pick_stream( adaptive, "video" ) + if audio and video then + local audio_url = assemble_stream_url( audio, js ) + local video_url = assemble_stream_url( video, js ) + if audio_url and video_url then + return video_url, audio_url + end + end + end + + if not pick then + -- Default or fallback: safe old multiplexed streams, + -- but reduced to a single, low-definition format + -- available in some cases + pick = pick_stream( muxed, fmt ) + end + end + + if not pick then + return nil + end + return assemble_stream_url( pick, js ) +end + +-- Parse, descramble and assemble elements of video stream URL +function assemble_stream_url( pick, js ) + -- 1/ URL signature + -- Either the "url" or the "signatureCipher" parameter is present, + -- depending on whether the URL signature is scrambled. + local url + local cipher = string.match( pick, '"signatureCipher":"(.-)"' ) + or string.match( pick, '"[a-zA-Z]*[Cc]ipher":"(.-)"' ) + if cipher then + -- Scrambled signature: some assembly required + url = stream_url( cipher, js ) + end + if not url then + -- Unscrambled signature, already included in ready-to-use URL + url = string.match( pick, '"url":"(.-)"' ) + end + + if not url then + return nil + end + + -- 2/ Data transfer throttling + -- The "n" parameter is scrambled too, and needs to be descrambled + -- and replaced in place, otherwise the data transfer gets throttled + -- down to between 40 and 80 kB/s, below real-time playability level. + local n = string.match( url, "[?&]n=([^&]+)" ) + if n then + n = vlc.strings.decode_uri( n ) + local dn = nil -- n_descramble( n, js ) + if dn then + url = string.gsub( url, "([?&])n=[^&]+", "%1n="..vlc.strings.encode_uri_component( dn ), 1 ) + else + vlc.msg.err( "Couldn't descramble YouTube throttling URL parameter: data transfer will get throttled" ) + --vlc.msg.err( "Couldn't process youtube video URL, please check for updates to this script" ) + end + end + + return url +end + +-- Probe function. +function probe() + return ( ( vlc.access == "http" or vlc.access == "https" ) and ( + (( + string.match( vlc.path, "^www%.youtube%.com/" ) + or string.match( vlc.path, "^music%.youtube%.com/" ) + or string.match( vlc.path, "^gaming%.youtube%.com/" ) -- out of use + ) and ( + string.match( vlc.path, "/watch%?" ) -- the html page + or string.match( vlc.path, "/live$" ) -- user live stream html page + or string.match( vlc.path, "/live%?" ) -- user live stream html page + or string.match( vlc.path, "/shorts/" ) -- YouTube Shorts HTML page + or string.match( vlc.path, "/get_video_info%?" ) -- info API + or string.match( vlc.path, "/v/" ) -- video in swf player + or string.match( vlc.path, "/embed/" ) -- embedded player iframe + )) or + string.match( vlc.path, "^consent%.youtube%.com/" ) + ) ) +end + +-- Parse function. +function parse() + if string.match( vlc.path, "^consent%.youtube%.com/" ) then + -- Cookie consent redirection + -- Location: https://consent.youtube.com/m?continue=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXXXXXXXXXXX&gl=FR&m=0&pc=yt&uxe=23983172&hl=fr&src=1 + -- Set-Cookie: CONSENT=PENDING+355; expires=Fri, 01-Jan-2038 00:00:00 GMT; path=/; domain=.youtube.com + local url = get_url_param( vlc.path, "continue" ) + if not url then + vlc.msg.err( "Couldn't handle YouTube cookie consent redirection, please check for updates to this script or try disabling HTTP cookie forwarding" ) + return { } + end + return { { path = vlc.strings.decode_uri( url ), options = { ":no-http-forward-cookies" } } } + elseif not string.match( vlc.path, "^www%.youtube%.com/" ) then + -- Skin subdomain + return { { path = vlc.access.."://"..string.gsub( vlc.path, "^([^/]*)/", "www.youtube.com/" ) } } + + elseif string.match( vlc.path, "/watch%?" ) + or string.match( vlc.path, "/live$" ) + or string.match( vlc.path, "/live%?" ) + or string.match( vlc.path, "/shorts/" ) + then -- This is the HTML page's URL + local path, path2, title, description, artist, arturl, js_url + + -- Retired YouTube API for video format itag parameter, + -- still supported and extended as youtube.lua API + -- https://en.wikipedia.org/w/index.php?title=YouTube&oldid=716878321#Quality_and_formats + local fmt = get_url_param( vlc.path, "fmt" ) + + while true do + -- The new HTML code layout has fewer and longer lines; always + -- use the long line workaround until we get more visibility. + local line = new_layout and read_long_line() or vlc.readline() + if not line then break end + + -- The next line is the major configuration line that we need. + -- It is very long so we need this workaround (see #24957). + if string.match( line, '^ *
' ) then + line = read_long_line() + if not line then break end + end + + if not title then + local meta = string.match( line, '' ) + if meta then + title = string.match( meta, ' content="(.-)"' ) + if title then + title = vlc.strings.resolve_xml_special_chars( title ) + end + end + end + + if not description then + -- FIXME: there is another version of this available, + -- without the double JSON string encoding, but we're + -- unlikely to access it due to #24957 + description = string.match( line, '\\"shortDescription\\":\\"(.-[^\\])\\"') + if description then + -- FIXME: do this properly (see #24958) + description = string.gsub( description, '\\(["\\/])', '%1' ) + else + description = string.match( line, '"shortDescription":"(.-[^\\])"') + end + if description then + if string.match( description, '^"' ) then + description = "" + end + -- FIXME: do this properly (see #24958) + -- This way of unescaping is technically wrong + -- so as little as possible of it should be done + description = string.gsub( description, '\\(["\\/])', '%1' ) + description = string.gsub( description, '\\n', '\n' ) + description = string.gsub( description, '\\r', '\r' ) + description = string.gsub( description, "\\u0026", "&" ) + end + end + + if not arturl then + local meta = string.match( line, '' ) + if meta then + arturl = string.match( meta, ' content="(.-)"' ) + if arturl then + arturl = vlc.strings.resolve_xml_special_chars( arturl ) + end + end + end + + if not artist then + artist = string.match(line, '\\"author\\":\\"(.-)\\"') + if artist then + -- FIXME: do this properly (see #24958) + artist = string.gsub( artist, '\\(["\\/])', '%1' ) + else + artist = string.match( line, '"author":"(.-)"' ) + end + if artist then + -- FIXME: do this properly (see #24958) + artist = string.gsub( artist, "\\u0026", "&" ) + end + end + + if not new_layout then + if string.match( line, '