├── .tfignore ├── WindowsFormsApplication1 ├── ClassDiagram1.cd ├── tool.ico ├── Resources │ ├── pkgID.png │ ├── react.png │ ├── rotesX.png │ ├── iconawap2.png │ ├── stuff_split.png │ └── gruener-haken.gif ├── Properties │ ├── Settings.settings │ ├── AssemblyInfo.cs │ ├── Settings.Designer.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── Program.cs ├── App.config ├── settingswin.cs ├── pkgINFO.cs ├── psnstuff.csproj ├── settingswin.Designer.cs ├── pkgINFO.Designer.cs ├── pkgID.cs ├── pkgID.Designer.cs ├── main.cs └── pkgID.resx ├── Download Helper ├── tool.ico ├── App.config ├── Properties │ └── AssemblyInfo.cs ├── Program.cs ├── Download Helper.csproj └── app.manifest ├── .gitignore └── psnstuff.sln /.tfignore: -------------------------------------------------------------------------------- 1 | \.git -------------------------------------------------------------------------------- /WindowsFormsApplication1/ClassDiagram1.cd: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Download Helper/tool.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/Download Helper/tool.ico -------------------------------------------------------------------------------- /WindowsFormsApplication1/tool.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/tool.ico -------------------------------------------------------------------------------- /WindowsFormsApplication1/Resources/pkgID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/pkgID.png -------------------------------------------------------------------------------- /WindowsFormsApplication1/Resources/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/react.png -------------------------------------------------------------------------------- /WindowsFormsApplication1/Resources/rotesX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/rotesX.png -------------------------------------------------------------------------------- /WindowsFormsApplication1/Resources/iconawap2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/iconawap2.png -------------------------------------------------------------------------------- /WindowsFormsApplication1/Resources/stuff_split.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/stuff_split.png -------------------------------------------------------------------------------- /WindowsFormsApplication1/Resources/gruener-haken.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xXxTheDarkprogramerxXx/psnstuff/HEAD/WindowsFormsApplication1/Resources/gruener-haken.gif -------------------------------------------------------------------------------- /Download Helper/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Thumbs.db 2 | *.obj 3 | *.exe 4 | *.pdb 5 | *.user 6 | *.aps 7 | *.pch 8 | *.vspscc 9 | *_i.c 10 | *_p.c 11 | *.ncb 12 | *.suo 13 | *.sln.docstates 14 | *.tlb 15 | *.tlh 16 | *.bak 17 | *.cache 18 | *.ilk 19 | *.log 20 | [Bb]in 21 | [Dd]ebug*/ 22 | *.lib 23 | *.sbr 24 | obj/ 25 | [Rr]elease*/ 26 | _ReSharper*/ 27 | [Tt]est[Rr]esult* 28 | *.vssscc 29 | $tf*/ -------------------------------------------------------------------------------- /WindowsFormsApplication1/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace WindowsFormsApplication1 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new psnStuff()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Download Helper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Download Helper")] 9 | [assembly: AssemblyDescription("Download helper for psnstuff")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("The Darkprogramer")] 12 | [assembly: AssemblyProduct("Download Helper")] 13 | [assembly: AssemblyCopyright("Copyright © 2016")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(true)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("02513d7b-5683-4966-a5e6-acd9a30ffc99")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 7 | // die mit einer Assembly verknüpft sind. 8 | [assembly: AssemblyTitle("PSNStuff")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("PSNStuff")] 13 | [assembly: AssemblyCopyright("LoOzers © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar 18 | // für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("917e7732-6e59-484d-9876-343a4879cb64")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern 33 | // übernehmen, indem Sie "*" eingeben: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("3.0.0.0")] 36 | [assembly: AssemblyFileVersion("3.0.0.0")] 37 | -------------------------------------------------------------------------------- /Download Helper/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Download_Helper 8 | { 9 | class Program 10 | { 11 | static void Main(string[] args) 12 | { 13 | 14 | string mainstr = @" 15 | ********************************************************* 16 | * PSNStuff Download Helper * 17 | ********************************************************* 18 | "; 19 | 20 | if (args.Length == 0) 21 | { 22 | Console.WriteLine(mainstr); 23 | Console.WriteLine("Arguments where incorectly passed \n\nPress any key to exit."); 24 | Console.ReadKey(); 25 | } 26 | else 27 | { 28 | Console.WriteLine(mainstr); 29 | 30 | //copy the data 31 | string fileName = args[0]; 32 | string sourcePath = args[1]; 33 | string targetPath = args[2]; 34 | 35 | Console.WriteLine("Replacing '{0}'\n\nsourcepath: '{1}'\n\ntargetpath: '{2}'",fileName,sourcePath,targetPath); 36 | 37 | // Use Path class to manipulate file and directory paths. 38 | string sourceFile = sourcePath; 39 | string destFile = targetPath; 40 | 41 | // To copy a file to another location and 42 | // overwrite the destination file if it already exists. 43 | System.IO.File.Copy(sourceFile, destFile, true); 44 | 45 | Console.WriteLine("Done... starting new version of psnstuff"); 46 | 47 | // Keep console window open in debug mode. 48 | //Console.WriteLine("Press any key to exit."); 49 | // Console.ReadKey(); 50 | if (System.IO.File.Exists("psnstuff.exe")) 51 | { 52 | System.Diagnostics.Process.Start("psnstuff.exe"); 53 | } 54 | } 55 | } 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace psnstuff.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string DownloadDirectory { 30 | get { 31 | return ((string)(this["DownloadDirectory"])); 32 | } 33 | set { 34 | this["DownloadDirectory"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("")] 41 | public string USBToSaveTo { 42 | get { 43 | return ((string)(this["USBToSaveTo"])); 44 | } 45 | set { 46 | this["USBToSaveTo"] = value; 47 | } 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /psnstuff.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "psnstuff", "WindowsFormsApplication1\psnstuff.csproj", "{3334D56D-6118-4A4B-A982-2458ADD2B9A7}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Download Helper", "Download Helper\Download Helper.csproj", "{F13AA45C-78B8-4DE0-AC1A-7EBD55273633}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|Mixed Platforms = Debug|Mixed Platforms 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|Mixed Platforms = Release|Mixed Platforms 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Any CPU.ActiveCfg = Debug|x86 19 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Any CPU.Build.0 = Debug|x86 20 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 21 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|Mixed Platforms.Build.0 = Debug|x86 22 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|x86.ActiveCfg = Debug|x86 23 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Debug|x86.Build.0 = Debug|x86 24 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Any CPU.ActiveCfg = Debug|x86 25 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Any CPU.Build.0 = Debug|x86 26 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Mixed Platforms.ActiveCfg = Release|x86 27 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|Mixed Platforms.Build.0 = Release|x86 28 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|x86.ActiveCfg = Release|x86 29 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7}.Release|x86.Build.0 = Release|x86 30 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 31 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Any CPU.Build.0 = Debug|Any CPU 32 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU 33 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU 34 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Debug|x86.ActiveCfg = Debug|Any CPU 35 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Any CPU.ActiveCfg = Release|Any CPU 36 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Any CPU.Build.0 = Release|Any CPU 37 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU 38 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|Mixed Platforms.Build.0 = Release|Any CPU 39 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633}.Release|x86.ActiveCfg = Release|Any CPU 40 | EndGlobalSection 41 | GlobalSection(SolutionProperties) = preSolution 42 | HideSolutionNode = FALSE 43 | EndGlobalSection 44 | EndGlobal 45 | -------------------------------------------------------------------------------- /Download Helper/Download Helper.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {F13AA45C-78B8-4DE0-AC1A-7EBD55273633} 8 | Exe 9 | Properties 10 | Download_Helper 11 | Download Helper 12 | v4.5 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | tool.ico 37 | 38 | 39 | 40 | 41 | 42 | 43 | app.manifest 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Always 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 75 | -------------------------------------------------------------------------------- /Download Helper/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 59 | 60 | 61 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/settingswin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.IO; 11 | 12 | namespace psnstuff 13 | { 14 | public partial class settingswin : Form 15 | { 16 | public settingswin() 17 | { 18 | InitializeComponent(); 19 | } 20 | 21 | private void button1_Click(object sender, EventArgs e) 22 | { 23 | FolderBrowserDialog savepath = new FolderBrowserDialog(); 24 | savepath.RootFolder = Environment.SpecialFolder.MyDocuments; 25 | savepath.ShowNewFolderButton = true; 26 | savepath.Description = "Please select a location to save your psn titles"; 27 | if (savepath.ShowDialog() == DialogResult.OK) 28 | { 29 | textBox1.Text = savepath.SelectedPath + "\\PSNStuff\\Downloads"; 30 | if(!Directory.Exists(savepath.SelectedPath + "\\PSNStuff\\Downloads")) 31 | { 32 | Directory.CreateDirectory(savepath.SelectedPath + "\\PSNStuff\\Downloads"); 33 | } 34 | Properties.Settings.Default.DownloadDirectory = textBox1.Text; 35 | Properties.Settings.Default.Save(); 36 | } 37 | } 38 | 39 | private void settingswin_Load(object sender, EventArgs e) 40 | { 41 | if (Properties.Settings.Default.DownloadDirectory != string.Empty) 42 | { 43 | textBox1.Text = Properties.Settings.Default.DownloadDirectory.ToString(); 44 | } 45 | else 46 | { 47 | textBox1.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\PSNStuff\\Downloads"; 48 | Properties.Settings.Default.DownloadDirectory = textBox1.Text; 49 | Properties.Settings.Default.Save(); 50 | } 51 | 52 | //load the usb drives 53 | var drives = DriveInfo.GetDrives(); 54 | foreach (var drive in drives) 55 | { 56 | if (drive.DriveType == DriveType.Removable) 57 | { 58 | comboBox1.Items.Add(drive.Name); 59 | } 60 | } 61 | if (comboBox1.Items.Count == 0) 62 | { 63 | comboBox1.Text = "No Removable Drives detected"; 64 | } 65 | //check for download helper 66 | 67 | if (File.Exists(Application.StartupPath + "\\Download Helper.exe")) 68 | { 69 | pictureBox1.Image = Properties.Resources.gruener_haken; 70 | } 71 | else 72 | { 73 | pictureBox1.Image = Properties.Resources.rotesX; 74 | if (MessageBox.Show("Download Helper is not installed would you like to download it now ?", "Download Helper", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) 75 | { 76 | //download the file to the startup path 77 | } 78 | } 79 | 80 | //Load Versions From Servers 81 | lblCurV.Text = Application.ProductVersion; 82 | 83 | if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) 84 | { 85 | 86 | lblServerV.Text = "Network not avaialable"; 87 | } 88 | else 89 | { 90 | //load from server here 91 | lblServerV.Text = "3.0.0.0"; 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Dieser Code wurde von einem Tool generiert. 4 | // Laufzeitversion:4.0.30319.34003 5 | // 6 | // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn 7 | // der Code erneut generiert wird. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace psnstuff.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. 17 | /// 18 | // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert 19 | // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. 20 | // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen 21 | // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("psnstuff.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle 51 | /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap gruener_haken { 67 | get { 68 | object obj = ResourceManager.GetObject("gruener_haken", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 75 | /// 76 | internal static System.Drawing.Bitmap iconawap2 { 77 | get { 78 | object obj = ResourceManager.GetObject("iconawap2", resourceCulture); 79 | return ((System.Drawing.Bitmap)(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 85 | /// 86 | internal static System.Drawing.Bitmap pkgID { 87 | get { 88 | object obj = ResourceManager.GetObject("pkgID", resourceCulture); 89 | return ((System.Drawing.Bitmap)(obj)); 90 | } 91 | } 92 | 93 | /// 94 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 95 | /// 96 | internal static System.Drawing.Bitmap react { 97 | get { 98 | object obj = ResourceManager.GetObject("react", resourceCulture); 99 | return ((System.Drawing.Bitmap)(obj)); 100 | } 101 | } 102 | 103 | /// 104 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 105 | /// 106 | internal static System.Drawing.Bitmap rotesX { 107 | get { 108 | object obj = ResourceManager.GetObject("rotesX", resourceCulture); 109 | return ((System.Drawing.Bitmap)(obj)); 110 | } 111 | } 112 | 113 | /// 114 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 115 | /// 116 | internal static System.Drawing.Bitmap stuff_split { 117 | get { 118 | object obj = ResourceManager.GetObject("stuff_split", resourceCulture); 119 | return ((System.Drawing.Bitmap)(obj)); 120 | } 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/pkgINFO.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.Net; 11 | using System.IO; 12 | 13 | namespace psnstuff 14 | { 15 | public partial class pkgINFO : Form 16 | { 17 | public pkgINFO(string url, string png) 18 | { 19 | InitializeComponent(); 20 | textBox1.Text = url; 21 | pictureBox1.ImageLocation = png; 22 | long sha1pos; 23 | long sizebyte; 24 | 25 | try 26 | { 27 | textBox2.Text = ""; 28 | textBox3.Text = ""; 29 | textBox4.Text = ""; 30 | textBox5.Text = ""; 31 | textBox6.Text = ""; 32 | textBox7.Text = ""; 33 | 34 | string link = textBox1.Text; 35 | string URL; 36 | if (!link.StartsWith("http://", StringComparison.OrdinalIgnoreCase)) 37 | { 38 | URL = ("http://" + link); 39 | } 40 | else 41 | { 42 | URL = link; 43 | } 44 | 45 | if (textBox1.Text.Contains(".pkg")) 46 | { 47 | HttpWebRequest request; 48 | request = WebRequest.Create(URL) as HttpWebRequest; 49 | 50 | request.AddRange(0, 319); //48, 83 51 | 52 | 53 | using (WebResponse response = request.GetResponse()) 54 | { 55 | string[] contran = response.Headers.GetValues(0); 56 | string[] contrans = contran[0].Split('/'); 57 | double b = Convert.ToInt64(contrans[1]); 58 | string sizeb = contrans[1]; 59 | 60 | sizebyte = Convert.ToInt64(contrans[1]); 61 | sha1pos = Convert.ToInt64(sizeb) - 32; 62 | 63 | 64 | 65 | 66 | //rest infos 67 | if (b < 1048576) 68 | { 69 | double kb = Math.Round(b / 1024, 2); 70 | textBox4.Text = kb + " KB" + " " + "(" + sizeb + " Byte)"; 71 | } 72 | else 73 | { 74 | double mb = Math.Round(b / 1024 / 1024, 2); 75 | textBox4.Text = mb + " MB" + " " + "(" + sizeb + " Byte)"; 76 | } 77 | try 78 | { 79 | using (Stream stream = response.GetResponseStream()) 80 | { 81 | byte[] buffer = new byte[319]; 82 | int read = stream.Read(buffer, 0, 319); 83 | //Array.Resize(ref buffer, read); 84 | 85 | byte[] contentID = new byte[36]; 86 | Array.Copy(buffer, 48, contentID, 0, 36); 87 | 88 | //contentID 89 | textBox2.Text = Encoding.ASCII.GetString(contentID); 90 | 91 | //id 92 | textBox3.Text = textBox2.Text.Substring(7, 9); 93 | 94 | //pkgver 95 | byte[] ver = new byte[2]; 96 | Array.Copy(buffer, 254, ver, 0, 2); 97 | string verstr = BitConverter.ToString(ver); 98 | verstr = verstr.Replace("-", "."); 99 | textBox6.Text = verstr; 100 | 101 | 102 | //fwcalc 103 | byte[] fwcal = new byte[2]; 104 | Array.Copy(buffer, 38, fwcal, 0, 2); 105 | string fwcalcstr = BitConverter.ToString(fwcal); 106 | fwcalcstr = fwcalcstr.Replace("-", ""); 107 | string fwcalc = (Convert.ToInt32(fwcalcstr) - 60 + 9).ToString(); 108 | int fwcalcs = Convert.ToInt32(fwcalc, 16); 109 | 110 | //fw 111 | byte[] fw = new byte[2]; 112 | Array.Copy(buffer, fwcalcs, fw, 0, 2); 113 | string fwstr = BitConverter.ToString(fw); 114 | fwstr = fwstr.Replace("-", "."); 115 | textBox5.Text = fwstr; 116 | 117 | } 118 | } 119 | catch { } 120 | } 121 | //sha1 122 | HttpWebRequest request2; 123 | request2 = WebRequest.Create(URL) as HttpWebRequest; 124 | 125 | request2.AddRange(sha1pos, sizebyte); 126 | 127 | using (WebResponse response2 = request2.GetResponse()) 128 | { 129 | using (Stream stream2 = response2.GetResponseStream()) 130 | { 131 | byte[] buffer2 = new byte[20]; 132 | int read = stream2.Read(buffer2, 0, 20); 133 | string sha1 = BitConverter.ToString(buffer2); 134 | sha1 = sha1.Replace("-", ""); 135 | textBox7.Text = sha1; 136 | } 137 | } 138 | } 139 | else { MessageBox.Show("Link missing or wrong"); } 140 | } 141 | catch { } 142 | 143 | 144 | } 145 | 146 | 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/psnstuff.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {3334D56D-6118-4A4B-A982-2458ADD2B9A7} 8 | WinExe 9 | Properties 10 | psnstuff 11 | psnstuff 12 | v4.5 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | AnyCPU 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | tool.ico 39 | 40 | 41 | true 42 | bin\x86\Debug\ 43 | DEBUG;TRACE 44 | full 45 | x86 46 | prompt 47 | MinimumRecommendedRules.ruleset 48 | false 49 | 50 | 51 | bin\x86\Release\ 52 | TRACE 53 | true 54 | pdbonly 55 | x86 56 | prompt 57 | MinimumRecommendedRules.ruleset 58 | false 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | Form 79 | 80 | 81 | main.cs 82 | 83 | 84 | Form 85 | 86 | 87 | pkgID.cs 88 | 89 | 90 | Form 91 | 92 | 93 | pkgINFO.cs 94 | 95 | 96 | 97 | 98 | Form 99 | 100 | 101 | settingswin.cs 102 | 103 | 104 | main.cs 105 | 106 | 107 | pkgID.cs 108 | 109 | 110 | pkgINFO.cs 111 | 112 | 113 | ResXFileCodeGenerator 114 | Resources.Designer.cs 115 | Designer 116 | 117 | 118 | True 119 | Resources.resx 120 | True 121 | 122 | 123 | settingswin.cs 124 | 125 | 126 | 127 | SettingsSingleFileGenerator 128 | Settings.Designer.cs 129 | 130 | 131 | True 132 | Settings.settings 133 | True 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | {f13aa45c-78b8-4de0-ac1a-7ebd55273633} 154 | Download Helper 155 | 156 | 157 | 158 | 165 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\rotesX.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | 125 | ..\Resources\gruener-haken.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 126 | 127 | 128 | ..\Resources\react.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 129 | 130 | 131 | ..\Resources\iconawap2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 132 | 133 | 134 | ..\Resources\stuff_split.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 135 | 136 | 137 | ..\Resources\pkgID.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 138 | 139 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/settingswin.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace psnstuff 2 | { 3 | partial class settingswin 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(settingswin)); 32 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.textBox1 = new System.Windows.Forms.TextBox(); 35 | this.button1 = new System.Windows.Forms.Button(); 36 | this.label2 = new System.Windows.Forms.Label(); 37 | this.comboBox1 = new System.Windows.Forms.ComboBox(); 38 | this.label3 = new System.Windows.Forms.Label(); 39 | this.lblCurV = new System.Windows.Forms.Label(); 40 | this.label5 = new System.Windows.Forms.Label(); 41 | this.lblServerV = new System.Windows.Forms.Label(); 42 | this.label4 = new System.Windows.Forms.Label(); 43 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 44 | this.groupBox1.SuspendLayout(); 45 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 46 | this.SuspendLayout(); 47 | // 48 | // groupBox1 49 | // 50 | this.groupBox1.Controls.Add(this.comboBox1); 51 | this.groupBox1.Controls.Add(this.label2); 52 | this.groupBox1.Controls.Add(this.button1); 53 | this.groupBox1.Controls.Add(this.textBox1); 54 | this.groupBox1.Controls.Add(this.label1); 55 | this.groupBox1.Location = new System.Drawing.Point(12, 12); 56 | this.groupBox1.Name = "groupBox1"; 57 | this.groupBox1.Size = new System.Drawing.Size(913, 123); 58 | this.groupBox1.TabIndex = 0; 59 | this.groupBox1.TabStop = false; 60 | this.groupBox1.Text = "Settings"; 61 | // 62 | // label1 63 | // 64 | this.label1.AutoSize = true; 65 | this.label1.Location = new System.Drawing.Point(7, 41); 66 | this.label1.Name = "label1"; 67 | this.label1.Size = new System.Drawing.Size(136, 17); 68 | this.label1.TabIndex = 0; 69 | this.label1.Text = "Download Location :"; 70 | // 71 | // textBox1 72 | // 73 | this.textBox1.Location = new System.Drawing.Point(149, 38); 74 | this.textBox1.Name = "textBox1"; 75 | this.textBox1.Size = new System.Drawing.Size(653, 22); 76 | this.textBox1.TabIndex = 1; 77 | // 78 | // button1 79 | // 80 | this.button1.Location = new System.Drawing.Point(823, 35); 81 | this.button1.Name = "button1"; 82 | this.button1.Size = new System.Drawing.Size(75, 23); 83 | this.button1.TabIndex = 2; 84 | this.button1.Text = "..."; 85 | this.button1.UseVisualStyleBackColor = true; 86 | this.button1.Click += new System.EventHandler(this.button1_Click); 87 | // 88 | // label2 89 | // 90 | this.label2.AutoSize = true; 91 | this.label2.Location = new System.Drawing.Point(7, 85); 92 | this.label2.Name = "label2"; 93 | this.label2.Size = new System.Drawing.Size(120, 17); 94 | this.label2.TabIndex = 3; 95 | this.label2.Text = "Removable Drive:"; 96 | // 97 | // comboBox1 98 | // 99 | this.comboBox1.FormattingEnabled = true; 100 | this.comboBox1.Location = new System.Drawing.Point(149, 85); 101 | this.comboBox1.Name = "comboBox1"; 102 | this.comboBox1.Size = new System.Drawing.Size(164, 24); 103 | this.comboBox1.TabIndex = 4; 104 | // 105 | // label3 106 | // 107 | this.label3.AutoSize = true; 108 | this.label3.Location = new System.Drawing.Point(22, 191); 109 | this.label3.Name = "label3"; 110 | this.label3.Size = new System.Drawing.Size(121, 17); 111 | this.label3.TabIndex = 1; 112 | this.label3.Text = "PSNStuff Version:"; 113 | // 114 | // lblCurV 115 | // 116 | this.lblCurV.AutoSize = true; 117 | this.lblCurV.Location = new System.Drawing.Point(158, 191); 118 | this.lblCurV.Name = "lblCurV"; 119 | this.lblCurV.Size = new System.Drawing.Size(121, 17); 120 | this.lblCurV.TabIndex = 2; 121 | this.lblCurV.Text = "PSNStuff Version:"; 122 | // 123 | // label5 124 | // 125 | this.label5.AutoSize = true; 126 | this.label5.Location = new System.Drawing.Point(388, 191); 127 | this.label5.Name = "label5"; 128 | this.label5.Size = new System.Drawing.Size(102, 17); 129 | this.label5.TabIndex = 3; 130 | this.label5.Text = "Server Version"; 131 | // 132 | // lblServerV 133 | // 134 | this.lblServerV.AutoSize = true; 135 | this.lblServerV.Location = new System.Drawing.Point(515, 191); 136 | this.lblServerV.Name = "lblServerV"; 137 | this.lblServerV.Size = new System.Drawing.Size(121, 17); 138 | this.lblServerV.TabIndex = 4; 139 | this.lblServerV.Text = "PSNStuff Version:"; 140 | // 141 | // label4 142 | // 143 | this.label4.AutoSize = true; 144 | this.label4.Location = new System.Drawing.Point(753, 148); 145 | this.label4.Name = "label4"; 146 | this.label4.Size = new System.Drawing.Size(172, 17); 147 | this.label4.TabIndex = 5; 148 | this.label4.Text = "Download Helper Installed"; 149 | // 150 | // pictureBox1 151 | // 152 | this.pictureBox1.Image = global::psnstuff.Properties.Resources.rotesX; 153 | this.pictureBox1.Location = new System.Drawing.Point(795, 168); 154 | this.pictureBox1.Name = "pictureBox1"; 155 | this.pictureBox1.Size = new System.Drawing.Size(100, 50); 156 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; 157 | this.pictureBox1.TabIndex = 6; 158 | this.pictureBox1.TabStop = false; 159 | // 160 | // settingswin 161 | // 162 | this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); 163 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 164 | this.BackColor = System.Drawing.Color.White; 165 | this.ClientSize = new System.Drawing.Size(936, 220); 166 | this.Controls.Add(this.groupBox1); 167 | this.Controls.Add(this.pictureBox1); 168 | this.Controls.Add(this.label4); 169 | this.Controls.Add(this.lblServerV); 170 | this.Controls.Add(this.label5); 171 | this.Controls.Add(this.lblCurV); 172 | this.Controls.Add(this.label3); 173 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 174 | this.Name = "settingswin"; 175 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 176 | this.Text = "Settings"; 177 | this.Load += new System.EventHandler(this.settingswin_Load); 178 | this.groupBox1.ResumeLayout(false); 179 | this.groupBox1.PerformLayout(); 180 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 181 | this.ResumeLayout(false); 182 | this.PerformLayout(); 183 | 184 | } 185 | 186 | #endregion 187 | 188 | private System.Windows.Forms.GroupBox groupBox1; 189 | private System.Windows.Forms.Label label1; 190 | private System.Windows.Forms.TextBox textBox1; 191 | private System.Windows.Forms.Button button1; 192 | private System.Windows.Forms.Label label2; 193 | private System.Windows.Forms.ComboBox comboBox1; 194 | private System.Windows.Forms.Label label3; 195 | private System.Windows.Forms.Label lblCurV; 196 | private System.Windows.Forms.Label label5; 197 | private System.Windows.Forms.Label lblServerV; 198 | private System.Windows.Forms.Label label4; 199 | private System.Windows.Forms.PictureBox pictureBox1; 200 | } 201 | } -------------------------------------------------------------------------------- /WindowsFormsApplication1/pkgINFO.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace psnstuff 2 | { 3 | partial class pkgINFO 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(pkgINFO)); 32 | this.textBox1 = new System.Windows.Forms.TextBox(); 33 | this.textBox2 = new System.Windows.Forms.TextBox(); 34 | this.textBox3 = new System.Windows.Forms.TextBox(); 35 | this.label1 = new System.Windows.Forms.Label(); 36 | this.label2 = new System.Windows.Forms.Label(); 37 | this.label3 = new System.Windows.Forms.Label(); 38 | this.textBox4 = new System.Windows.Forms.TextBox(); 39 | this.label4 = new System.Windows.Forms.Label(); 40 | this.label5 = new System.Windows.Forms.Label(); 41 | this.label6 = new System.Windows.Forms.Label(); 42 | this.textBox5 = new System.Windows.Forms.TextBox(); 43 | this.textBox6 = new System.Windows.Forms.TextBox(); 44 | this.textBox7 = new System.Windows.Forms.TextBox(); 45 | this.label7 = new System.Windows.Forms.Label(); 46 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 47 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 48 | this.SuspendLayout(); 49 | // 50 | // textBox1 51 | // 52 | this.textBox1.Location = new System.Drawing.Point(73, 12); 53 | this.textBox1.Name = "textBox1"; 54 | this.textBox1.ReadOnly = true; 55 | this.textBox1.Size = new System.Drawing.Size(410, 20); 56 | this.textBox1.TabIndex = 0; 57 | // 58 | // textBox2 59 | // 60 | this.textBox2.Location = new System.Drawing.Point(73, 38); 61 | this.textBox2.Name = "textBox2"; 62 | this.textBox2.ReadOnly = true; 63 | this.textBox2.Size = new System.Drawing.Size(410, 20); 64 | this.textBox2.TabIndex = 1; 65 | // 66 | // textBox3 67 | // 68 | this.textBox3.Location = new System.Drawing.Point(73, 62); 69 | this.textBox3.Name = "textBox3"; 70 | this.textBox3.ReadOnly = true; 71 | this.textBox3.Size = new System.Drawing.Size(142, 20); 72 | this.textBox3.TabIndex = 2; 73 | // 74 | // label1 75 | // 76 | this.label1.AutoSize = true; 77 | this.label1.Location = new System.Drawing.Point(12, 15); 78 | this.label1.Name = "label1"; 79 | this.label1.Size = new System.Drawing.Size(53, 13); 80 | this.label1.TabIndex = 3; 81 | this.label1.Text = "pkg URL:"; 82 | // 83 | // label2 84 | // 85 | this.label2.AutoSize = true; 86 | this.label2.Location = new System.Drawing.Point(6, 41); 87 | this.label2.Name = "label2"; 88 | this.label2.Size = new System.Drawing.Size(61, 13); 89 | this.label2.TabIndex = 4; 90 | this.label2.Text = "Content ID:"; 91 | // 92 | // label3 93 | // 94 | this.label3.AutoSize = true; 95 | this.label3.Location = new System.Drawing.Point(23, 65); 96 | this.label3.Name = "label3"; 97 | this.label3.Size = new System.Drawing.Size(44, 13); 98 | this.label3.TabIndex = 5; 99 | this.label3.Text = "Title ID:"; 100 | // 101 | // textBox4 102 | // 103 | this.textBox4.Location = new System.Drawing.Point(73, 89); 104 | this.textBox4.Name = "textBox4"; 105 | this.textBox4.ReadOnly = true; 106 | this.textBox4.Size = new System.Drawing.Size(298, 20); 107 | this.textBox4.TabIndex = 7; 108 | // 109 | // label4 110 | // 111 | this.label4.AutoSize = true; 112 | this.label4.Location = new System.Drawing.Point(37, 92); 113 | this.label4.Name = "label4"; 114 | this.label4.Size = new System.Drawing.Size(30, 13); 115 | this.label4.TabIndex = 8; 116 | this.label4.Text = "Size:"; 117 | // 118 | // label5 119 | // 120 | this.label5.AutoSize = true; 121 | this.label5.Location = new System.Drawing.Point(37, 119); 122 | this.label5.Name = "label5"; 123 | this.label5.Size = new System.Drawing.Size(27, 13); 124 | this.label5.TabIndex = 9; 125 | this.label5.Text = "FW:"; 126 | // 127 | // label6 128 | // 129 | this.label6.AutoSize = true; 130 | this.label6.Location = new System.Drawing.Point(4, 146); 131 | this.label6.Name = "label6"; 132 | this.label6.Size = new System.Drawing.Size(63, 13); 133 | this.label6.TabIndex = 10; 134 | this.label6.Text = "pkgVersion:"; 135 | // 136 | // textBox5 137 | // 138 | this.textBox5.Location = new System.Drawing.Point(73, 116); 139 | this.textBox5.Name = "textBox5"; 140 | this.textBox5.ReadOnly = true; 141 | this.textBox5.Size = new System.Drawing.Size(142, 20); 142 | this.textBox5.TabIndex = 11; 143 | // 144 | // textBox6 145 | // 146 | this.textBox6.Location = new System.Drawing.Point(73, 143); 147 | this.textBox6.Name = "textBox6"; 148 | this.textBox6.ReadOnly = true; 149 | this.textBox6.Size = new System.Drawing.Size(142, 20); 150 | this.textBox6.TabIndex = 12; 151 | // 152 | // textBox7 153 | // 154 | this.textBox7.Location = new System.Drawing.Point(73, 170); 155 | this.textBox7.Name = "textBox7"; 156 | this.textBox7.ReadOnly = true; 157 | this.textBox7.Size = new System.Drawing.Size(298, 20); 158 | this.textBox7.TabIndex = 13; 159 | // 160 | // label7 161 | // 162 | this.label7.AutoSize = true; 163 | this.label7.Location = new System.Drawing.Point(27, 173); 164 | this.label7.Name = "label7"; 165 | this.label7.Size = new System.Drawing.Size(38, 13); 166 | this.label7.TabIndex = 14; 167 | this.label7.Text = "SHA1:"; 168 | // 169 | // pictureBox1 170 | // 171 | this.pictureBox1.ErrorImage = global::psnstuff.Properties.Resources.iconawap2; 172 | this.pictureBox1.Image = global::psnstuff.Properties.Resources.iconawap2; 173 | this.pictureBox1.InitialImage = global::psnstuff.Properties.Resources.iconawap2; 174 | this.pictureBox1.Location = new System.Drawing.Point(377, 65); 175 | this.pictureBox1.Name = "pictureBox1"; 176 | this.pictureBox1.Size = new System.Drawing.Size(106, 101); 177 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; 178 | this.pictureBox1.TabIndex = 15; 179 | this.pictureBox1.TabStop = false; 180 | // 181 | // pkgINFO 182 | // 183 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 184 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 185 | this.ClientSize = new System.Drawing.Size(495, 223); 186 | this.Controls.Add(this.pictureBox1); 187 | this.Controls.Add(this.label7); 188 | this.Controls.Add(this.textBox7); 189 | this.Controls.Add(this.textBox6); 190 | this.Controls.Add(this.textBox5); 191 | this.Controls.Add(this.label6); 192 | this.Controls.Add(this.label5); 193 | this.Controls.Add(this.label4); 194 | this.Controls.Add(this.textBox4); 195 | this.Controls.Add(this.label3); 196 | this.Controls.Add(this.label2); 197 | this.Controls.Add(this.label1); 198 | this.Controls.Add(this.textBox3); 199 | this.Controls.Add(this.textBox2); 200 | this.Controls.Add(this.textBox1); 201 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 202 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 203 | this.MaximizeBox = false; 204 | this.Name = "pkgINFO"; 205 | this.Text = "pkgINFO"; 206 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 207 | this.ResumeLayout(false); 208 | this.PerformLayout(); 209 | 210 | } 211 | 212 | #endregion 213 | 214 | private System.Windows.Forms.TextBox textBox1; 215 | private System.Windows.Forms.TextBox textBox2; 216 | private System.Windows.Forms.TextBox textBox3; 217 | private System.Windows.Forms.Label label1; 218 | private System.Windows.Forms.Label label2; 219 | private System.Windows.Forms.Label label3; 220 | private System.Windows.Forms.TextBox textBox4; 221 | private System.Windows.Forms.Label label4; 222 | private System.Windows.Forms.Label label5; 223 | private System.Windows.Forms.Label label6; 224 | private System.Windows.Forms.TextBox textBox5; 225 | private System.Windows.Forms.TextBox textBox6; 226 | private System.Windows.Forms.TextBox textBox7; 227 | private System.Windows.Forms.Label label7; 228 | private System.Windows.Forms.PictureBox pictureBox1; 229 | } 230 | } -------------------------------------------------------------------------------- /WindowsFormsApplication1/pkgID.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.IO; 11 | using System.Net; 12 | using System.Security.Cryptography; 13 | 14 | namespace psnstuff 15 | { 16 | public partial class pkgID : Form 17 | { 18 | public pkgID() 19 | { 20 | InitializeComponent(); 21 | } 22 | string shavalue; 23 | private void button1_Click_1(object sender, EventArgs e) 24 | { 25 | 26 | if (textBox1.Text.Contains("/cdn/")) 27 | { 28 | button2.Enabled = false; 29 | long sha1pos; 30 | long sizebyte; 31 | 32 | 33 | try 34 | { 35 | textBox2.Text = ""; 36 | textBox3.Text = ""; 37 | textBox4.Text = ""; 38 | textBox5.Text = ""; 39 | textBox6.Text = ""; 40 | textBox7.Text = ""; 41 | pictureBox2.Image = null; 42 | 43 | string link = textBox1.Text; 44 | string URL; 45 | if (!link.StartsWith("http://", StringComparison.OrdinalIgnoreCase)) 46 | { 47 | URL = ("http://" + link); 48 | } 49 | else 50 | { 51 | URL = link; 52 | } 53 | 54 | if (textBox1.Text.Contains(".pkg")) 55 | { 56 | HttpWebRequest request; 57 | request = WebRequest.Create(URL) as HttpWebRequest; 58 | 59 | request.AddRange(0, 319); //48, 83 60 | 61 | 62 | using (WebResponse response = request.GetResponse()) 63 | { 64 | string[] contran = response.Headers.GetValues(0); 65 | string[] contrans = contran[0].Split('/'); 66 | double b = Convert.ToInt64(contrans[1]); 67 | string sizeb = contrans[1]; 68 | 69 | sizebyte = Convert.ToInt64(contrans[1]); 70 | sha1pos = Convert.ToInt64(sizeb) - 32; 71 | 72 | 73 | 74 | 75 | //rest infos 76 | if (b < 1048576) 77 | { 78 | double kb = Math.Round(b / 1024, 2); 79 | textBox4.Text = kb + " KB" + " " + "(" + sizeb + " Byte)"; 80 | } 81 | else 82 | { 83 | double mb = Math.Round(b / 1024 / 1024, 2); 84 | textBox4.Text = mb + " MB" + " " + "(" + sizeb + " Byte)"; 85 | } 86 | try 87 | { 88 | using (Stream stream = response.GetResponseStream()) 89 | { 90 | byte[] buffer = new byte[319]; 91 | int read = stream.Read(buffer, 0, 319); 92 | //Array.Resize(ref buffer, read); 93 | 94 | byte[] contentID = new byte[36]; 95 | Array.Copy(buffer, 48, contentID, 0, 36); 96 | 97 | //contentID 98 | textBox2.Text = Encoding.ASCII.GetString(contentID); 99 | 100 | //id 101 | textBox3.Text = textBox2.Text.Substring(7, 9); 102 | 103 | //pkgver 104 | byte[] ver = new byte[2]; 105 | Array.Copy(buffer, 254, ver, 0, 2); 106 | string verstr = BitConverter.ToString(ver); 107 | verstr = verstr.Replace("-", "."); 108 | textBox6.Text = verstr; 109 | 110 | 111 | //fwcalc 112 | byte[] fwcal = new byte[2]; 113 | Array.Copy(buffer, 38, fwcal, 0, 2); 114 | string fwcalcstr = BitConverter.ToString(fwcal); 115 | fwcalcstr = fwcalcstr.Replace("-", ""); 116 | string fwcalc = (Convert.ToInt32(fwcalcstr) - 60 + 9).ToString(); 117 | int fwcalcs = Convert.ToInt32(fwcalc, 16); 118 | 119 | //fw 120 | byte[] fw = new byte[2]; 121 | Array.Copy(buffer, fwcalcs, fw, 0, 2); 122 | string fwstr = BitConverter.ToString(fw); 123 | fwstr = fwstr.Replace("-", "."); 124 | textBox5.Text = fwstr; 125 | 126 | } 127 | } 128 | catch { } 129 | } 130 | 131 | 132 | //sha1 133 | 134 | HttpWebRequest request2; 135 | request2 = WebRequest.Create(URL) as HttpWebRequest; 136 | 137 | request2.AddRange(sha1pos, sizebyte); 138 | 139 | using (WebResponse response2 = request2.GetResponse()) 140 | { 141 | using (Stream stream2 = response2.GetResponseStream()) 142 | { 143 | byte[] buffer2 = new byte[20]; 144 | int read = stream2.Read(buffer2, 0, 20); 145 | string sha1 = BitConverter.ToString(buffer2).ToLower(); 146 | sha1 = sha1.Replace("-", ""); 147 | textBox7.Text = sha1; 148 | } 149 | } 150 | 151 | } 152 | else { MessageBox.Show("Link missing or wrong"); } 153 | } 154 | catch { } 155 | } 156 | 157 | else if (textBox1.Text.Contains(".pkg")) 158 | { 159 | 160 | button2.Enabled = true; 161 | // Local pkg 162 | BinaryReader local = new BinaryReader(File.OpenRead(textBox1.Text)); 163 | 164 | //contentID 165 | local.BaseStream.Position = 0x30; 166 | byte[] contID = local.ReadBytes(0x24); 167 | textBox2.Text = Encoding.ASCII.GetString(contID); 168 | 169 | //id 170 | textBox3.Text = textBox2.Text.Substring(7, 9); 171 | try 172 | { 173 | //pkgversion 174 | local.BaseStream.Position = 0xfe; 175 | byte[] pkgversion = local.ReadBytes(0x2); 176 | string pkgver = BitConverter.ToString(pkgversion); 177 | pkgver = pkgver.Replace("-", "."); 178 | textBox6.Text = pkgver; 179 | } 180 | catch { } 181 | //size 182 | double si = local.BaseStream.Length; 183 | if (si < 1048576) 184 | { 185 | double kb = Math.Round(si / 1024, 2); 186 | textBox4.Text = kb + " KB" + " " + "(" + si + " Byte)"; 187 | } 188 | else 189 | { 190 | double mb = Math.Round(si / 1024 / 1024, 2); 191 | textBox4.Text = mb + " MB" + " " + "(" + si + " Byte)"; 192 | } 193 | try 194 | { 195 | //FWcalc 196 | local.BaseStream.Position = 0x26; 197 | byte[] cal = local.ReadBytes(0x2); 198 | string calc = BitConverter.ToString(cal); 199 | calc = calc.Replace("-", ""); 200 | string offset = (Convert.ToInt32(calc) - 60 + 9).ToString(); 201 | int off = Convert.ToInt32(offset, 16); 202 | 203 | //FW 204 | local.BaseStream.Position = off; 205 | byte[] fwbyte = local.ReadBytes(0x2); 206 | string fwby = BitConverter.ToString(fwbyte); 207 | fwby = fwby.Replace("-", "."); 208 | textBox5.Text = fwby; 209 | } 210 | catch { } 211 | //SHA1 212 | long shaoffset = Convert.ToInt64(si) - 32; 213 | local.BaseStream.Position = shaoffset; 214 | byte[] sha = local.ReadBytes(20); 215 | shavalue = BitConverter.ToString(sha).ToLower(); 216 | shavalue = shavalue.Replace("-", ""); 217 | textBox7.Text = shavalue; 218 | 219 | local.Close(); 220 | 221 | } 222 | else { MessageBox.Show("Wrong URL or file!"); } 223 | } 224 | //Drag & Drop 225 | private void textBox1_DragEnter(object sender, DragEventArgs e) 226 | { 227 | e.Effect = DragDropEffects.All; 228 | } 229 | 230 | private void textBox1_DragDrop(object sender, DragEventArgs e) 231 | { 232 | textBox1.Text = null; 233 | string[] filename =(string[]) e.Data.GetData(DataFormats.FileDrop); 234 | if (filename[0].Contains(".pkg")) 235 | { 236 | textBox1.Text = filename[0]; 237 | textBox2.Text = ""; 238 | textBox3.Text = ""; 239 | textBox4.Text = ""; 240 | textBox5.Text = ""; 241 | textBox6.Text = ""; 242 | textBox7.Text = ""; 243 | pictureBox2.Image = null; 244 | } 245 | else 246 | MessageBox.Show("File not supported"); 247 | 248 | } 249 | 250 | private void button2_Click(object sender, EventArgs e) 251 | { 252 | backgroundWorker1.RunWorkerAsync(shavalue); 253 | } 254 | 255 | private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 256 | { 257 | string filePath = textBox1.Text; 258 | 259 | byte[] buffer; 260 | int bytesRead; 261 | long size; 262 | long totalBytesRead = 0; 263 | 264 | using (Stream file = File.OpenRead(filePath)) 265 | { 266 | size = file.Length -32 ; 267 | 268 | 269 | using (HashAlgorithm hasher = SHA1.Create()) 270 | { 271 | do 272 | { 273 | buffer = new byte[4096]; 274 | if (totalBytesRead + 4096 > size) 275 | { 276 | int last = (int)(size - totalBytesRead); 277 | buffer = new byte[last]; 278 | } 279 | bytesRead = file.Read(buffer, 0, buffer.Length); 280 | 281 | totalBytesRead += bytesRead; 282 | 283 | hasher.TransformBlock(buffer, 0, bytesRead, null, 0); 284 | 285 | backgroundWorker1.ReportProgress((int)((double)totalBytesRead / size * 100)); 286 | } 287 | while (totalBytesRead < size); 288 | 289 | hasher.TransformFinalBlock(buffer, 0, 0); 290 | 291 | e.Result = MakeHashString(hasher.Hash); 292 | } 293 | } 294 | } 295 | private static string MakeHashString(byte[] hashBytes) 296 | { 297 | StringBuilder hash = new StringBuilder(32); 298 | 299 | foreach (byte b in hashBytes) 300 | hash.Append(b.ToString("X2").ToLower()); 301 | 302 | return hash.ToString(); 303 | } 304 | 305 | private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 306 | { 307 | progressBar1.Value = e.ProgressPercentage; 308 | } 309 | 310 | private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 311 | { 312 | button2.Enabled = false; 313 | progressBar1.Value = 0; 314 | try 315 | { 316 | if (textBox7.Text == e.Result.ToString()) 317 | { 318 | MessageBox.Show("Package is valid!", "Validating"); 319 | pictureBox2.Image = psnstuff.Properties.Resources.gruener_haken; 320 | } 321 | else 322 | { 323 | MessageBox.Show("Package is corrupt!", "Validating"); 324 | pictureBox2.Image = psnstuff.Properties.Resources.rotesX; 325 | } 326 | } 327 | catch { } 328 | } 329 | 330 | private void button3_Click(object sender, EventArgs e) 331 | { 332 | if (openFileDialog1.ShowDialog() == DialogResult.OK) 333 | { 334 | textBox1.Text = openFileDialog1.FileName; 335 | textBox2.Text = ""; 336 | textBox3.Text = ""; 337 | textBox4.Text = ""; 338 | textBox5.Text = ""; 339 | textBox6.Text = ""; 340 | textBox7.Text = ""; 341 | pictureBox2.Image = null; 342 | } 343 | } 344 | } 345 | } 346 | -------------------------------------------------------------------------------- /WindowsFormsApplication1/pkgID.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace psnstuff 2 | { 3 | partial class pkgID 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(pkgID)); 32 | this.label7 = new System.Windows.Forms.Label(); 33 | this.textBox7 = new System.Windows.Forms.TextBox(); 34 | this.textBox6 = new System.Windows.Forms.TextBox(); 35 | this.textBox5 = new System.Windows.Forms.TextBox(); 36 | this.label6 = new System.Windows.Forms.Label(); 37 | this.label5 = new System.Windows.Forms.Label(); 38 | this.label4 = new System.Windows.Forms.Label(); 39 | this.textBox4 = new System.Windows.Forms.TextBox(); 40 | this.button1 = new System.Windows.Forms.Button(); 41 | this.label3 = new System.Windows.Forms.Label(); 42 | this.label2 = new System.Windows.Forms.Label(); 43 | this.label1 = new System.Windows.Forms.Label(); 44 | this.textBox3 = new System.Windows.Forms.TextBox(); 45 | this.textBox2 = new System.Windows.Forms.TextBox(); 46 | this.textBox1 = new System.Windows.Forms.TextBox(); 47 | this.button2 = new System.Windows.Forms.Button(); 48 | this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); 49 | this.progressBar1 = new System.Windows.Forms.ProgressBar(); 50 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); 51 | this.button3 = new System.Windows.Forms.Button(); 52 | this.pictureBox2 = new System.Windows.Forms.PictureBox(); 53 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 54 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); 55 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); 56 | this.SuspendLayout(); 57 | // 58 | // label7 59 | // 60 | this.label7.AutoSize = true; 61 | this.label7.Location = new System.Drawing.Point(59, 167); 62 | this.label7.Name = "label7"; 63 | this.label7.Size = new System.Drawing.Size(38, 13); 64 | this.label7.TabIndex = 29; 65 | this.label7.Text = "SHA1:"; 66 | // 67 | // textBox7 68 | // 69 | this.textBox7.Location = new System.Drawing.Point(105, 164); 70 | this.textBox7.Name = "textBox7"; 71 | this.textBox7.ReadOnly = true; 72 | this.textBox7.Size = new System.Drawing.Size(298, 20); 73 | this.textBox7.TabIndex = 28; 74 | // 75 | // textBox6 76 | // 77 | this.textBox6.Location = new System.Drawing.Point(105, 137); 78 | this.textBox6.Name = "textBox6"; 79 | this.textBox6.ReadOnly = true; 80 | this.textBox6.Size = new System.Drawing.Size(142, 20); 81 | this.textBox6.TabIndex = 27; 82 | // 83 | // textBox5 84 | // 85 | this.textBox5.Location = new System.Drawing.Point(105, 110); 86 | this.textBox5.Name = "textBox5"; 87 | this.textBox5.ReadOnly = true; 88 | this.textBox5.Size = new System.Drawing.Size(142, 20); 89 | this.textBox5.TabIndex = 26; 90 | // 91 | // label6 92 | // 93 | this.label6.AutoSize = true; 94 | this.label6.Location = new System.Drawing.Point(33, 140); 95 | this.label6.Name = "label6"; 96 | this.label6.Size = new System.Drawing.Size(66, 13); 97 | this.label6.TabIndex = 25; 98 | this.label6.Text = "pkg Version:"; 99 | // 100 | // label5 101 | // 102 | this.label5.AutoSize = true; 103 | this.label5.Location = new System.Drawing.Point(72, 113); 104 | this.label5.Name = "label5"; 105 | this.label5.Size = new System.Drawing.Size(27, 13); 106 | this.label5.TabIndex = 24; 107 | this.label5.Text = "FW:"; 108 | // 109 | // label4 110 | // 111 | this.label4.AutoSize = true; 112 | this.label4.Location = new System.Drawing.Point(69, 86); 113 | this.label4.Name = "label4"; 114 | this.label4.Size = new System.Drawing.Size(30, 13); 115 | this.label4.TabIndex = 23; 116 | this.label4.Text = "Size:"; 117 | // 118 | // textBox4 119 | // 120 | this.textBox4.Location = new System.Drawing.Point(105, 83); 121 | this.textBox4.Name = "textBox4"; 122 | this.textBox4.ReadOnly = true; 123 | this.textBox4.Size = new System.Drawing.Size(298, 20); 124 | this.textBox4.TabIndex = 22; 125 | // 126 | // button1 127 | // 128 | this.button1.Location = new System.Drawing.Point(141, 190); 129 | this.button1.Name = "button1"; 130 | this.button1.Size = new System.Drawing.Size(106, 41); 131 | this.button1.TabIndex = 21; 132 | this.button1.Text = "Get ID"; 133 | this.button1.UseVisualStyleBackColor = true; 134 | this.button1.Click += new System.EventHandler(this.button1_Click_1); 135 | // 136 | // label3 137 | // 138 | this.label3.AutoSize = true; 139 | this.label3.Location = new System.Drawing.Point(55, 59); 140 | this.label3.Name = "label3"; 141 | this.label3.Size = new System.Drawing.Size(44, 13); 142 | this.label3.TabIndex = 20; 143 | this.label3.Text = "Title ID:"; 144 | // 145 | // label2 146 | // 147 | this.label2.AutoSize = true; 148 | this.label2.Location = new System.Drawing.Point(38, 35); 149 | this.label2.Name = "label2"; 150 | this.label2.Size = new System.Drawing.Size(61, 13); 151 | this.label2.TabIndex = 19; 152 | this.label2.Text = "Content ID:"; 153 | // 154 | // label1 155 | // 156 | this.label1.AutoSize = true; 157 | this.label1.Location = new System.Drawing.Point(19, 9); 158 | this.label1.Name = "label1"; 159 | this.label1.Size = new System.Drawing.Size(80, 13); 160 | this.label1.TabIndex = 18; 161 | this.label1.Text = "pkg URL/Path:"; 162 | // 163 | // textBox3 164 | // 165 | this.textBox3.Location = new System.Drawing.Point(105, 56); 166 | this.textBox3.Name = "textBox3"; 167 | this.textBox3.ReadOnly = true; 168 | this.textBox3.Size = new System.Drawing.Size(142, 20); 169 | this.textBox3.TabIndex = 17; 170 | // 171 | // textBox2 172 | // 173 | this.textBox2.Location = new System.Drawing.Point(105, 32); 174 | this.textBox2.Name = "textBox2"; 175 | this.textBox2.ReadOnly = true; 176 | this.textBox2.Size = new System.Drawing.Size(410, 20); 177 | this.textBox2.TabIndex = 16; 178 | // 179 | // textBox1 180 | // 181 | this.textBox1.AllowDrop = true; 182 | this.textBox1.Location = new System.Drawing.Point(105, 6); 183 | this.textBox1.Name = "textBox1"; 184 | this.textBox1.Size = new System.Drawing.Size(370, 20); 185 | this.textBox1.TabIndex = 15; 186 | this.textBox1.Text = " Type URL or Path | drag&drop pkg here | or c" + 187 | "lick ->"; 188 | this.textBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); 189 | this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter); 190 | // 191 | // button2 192 | // 193 | this.button2.Enabled = false; 194 | this.button2.Location = new System.Drawing.Point(276, 190); 195 | this.button2.Name = "button2"; 196 | this.button2.Size = new System.Drawing.Size(101, 40); 197 | this.button2.TabIndex = 30; 198 | this.button2.Text = "Validate"; 199 | this.button2.UseVisualStyleBackColor = true; 200 | this.button2.Click += new System.EventHandler(this.button2_Click); 201 | // 202 | // backgroundWorker1 203 | // 204 | this.backgroundWorker1.WorkerReportsProgress = true; 205 | this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); 206 | this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged); 207 | this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); 208 | // 209 | // progressBar1 210 | // 211 | this.progressBar1.Location = new System.Drawing.Point(11, 237); 212 | this.progressBar1.Name = "progressBar1"; 213 | this.progressBar1.Size = new System.Drawing.Size(503, 23); 214 | this.progressBar1.TabIndex = 31; 215 | // 216 | // openFileDialog1 217 | // 218 | this.openFileDialog1.Filter = "Package|*.pkg"; 219 | // 220 | // button3 221 | // 222 | this.button3.Location = new System.Drawing.Point(481, 6); 223 | this.button3.Name = "button3"; 224 | this.button3.Size = new System.Drawing.Size(33, 20); 225 | this.button3.TabIndex = 33; 226 | this.button3.Text = "..."; 227 | this.button3.UseVisualStyleBackColor = true; 228 | this.button3.Click += new System.EventHandler(this.button3_Click); 229 | // 230 | // pictureBox2 231 | // 232 | this.pictureBox2.ErrorImage = null; 233 | this.pictureBox2.InitialImage = null; 234 | this.pictureBox2.Location = new System.Drawing.Point(409, 164); 235 | this.pictureBox2.Name = "pictureBox2"; 236 | this.pictureBox2.Size = new System.Drawing.Size(20, 20); 237 | this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; 238 | this.pictureBox2.TabIndex = 34; 239 | this.pictureBox2.TabStop = false; 240 | // 241 | // pictureBox1 242 | // 243 | this.pictureBox1.Image = global::psnstuff.Properties.Resources.iconawap2; 244 | this.pictureBox1.Location = new System.Drawing.Point(415, 83); 245 | this.pictureBox1.Name = "pictureBox1"; 246 | this.pictureBox1.Size = new System.Drawing.Size(100, 70); 247 | this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; 248 | this.pictureBox1.TabIndex = 32; 249 | this.pictureBox1.TabStop = false; 250 | // 251 | // pkgID 252 | // 253 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 254 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 255 | this.ClientSize = new System.Drawing.Size(526, 273); 256 | this.Controls.Add(this.pictureBox2); 257 | this.Controls.Add(this.button3); 258 | this.Controls.Add(this.pictureBox1); 259 | this.Controls.Add(this.progressBar1); 260 | this.Controls.Add(this.button2); 261 | this.Controls.Add(this.label7); 262 | this.Controls.Add(this.textBox7); 263 | this.Controls.Add(this.textBox6); 264 | this.Controls.Add(this.textBox5); 265 | this.Controls.Add(this.label6); 266 | this.Controls.Add(this.label5); 267 | this.Controls.Add(this.label4); 268 | this.Controls.Add(this.textBox4); 269 | this.Controls.Add(this.button1); 270 | this.Controls.Add(this.label3); 271 | this.Controls.Add(this.label2); 272 | this.Controls.Add(this.label1); 273 | this.Controls.Add(this.textBox3); 274 | this.Controls.Add(this.textBox2); 275 | this.Controls.Add(this.textBox1); 276 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 277 | this.MaximizeBox = false; 278 | this.Name = "pkgID"; 279 | this.Text = "pkgID"; 280 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); 281 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); 282 | this.ResumeLayout(false); 283 | this.PerformLayout(); 284 | 285 | } 286 | 287 | #endregion 288 | 289 | private System.Windows.Forms.Label label7; 290 | private System.Windows.Forms.TextBox textBox7; 291 | private System.Windows.Forms.TextBox textBox6; 292 | private System.Windows.Forms.TextBox textBox5; 293 | private System.Windows.Forms.Label label6; 294 | private System.Windows.Forms.Label label5; 295 | private System.Windows.Forms.Label label4; 296 | private System.Windows.Forms.TextBox textBox4; 297 | private System.Windows.Forms.Button button1; 298 | private System.Windows.Forms.Label label3; 299 | private System.Windows.Forms.Label label2; 300 | private System.Windows.Forms.Label label1; 301 | private System.Windows.Forms.TextBox textBox3; 302 | private System.Windows.Forms.TextBox textBox2; 303 | private System.Windows.Forms.TextBox textBox1; 304 | private System.Windows.Forms.Button button2; 305 | private System.ComponentModel.BackgroundWorker backgroundWorker1; 306 | private System.Windows.Forms.ProgressBar progressBar1; 307 | private System.Windows.Forms.PictureBox pictureBox1; 308 | private System.Windows.Forms.OpenFileDialog openFileDialog1; 309 | private System.Windows.Forms.Button button3; 310 | private System.Windows.Forms.PictureBox pictureBox2; 311 | } 312 | } -------------------------------------------------------------------------------- /WindowsFormsApplication1/main.cs: -------------------------------------------------------------------------------- 1 | using psnstuff; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Data; 6 | using System.Drawing; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading; 10 | using System.Windows.Forms; 11 | using System.IO; 12 | using System.IO.Compression; 13 | using System.Diagnostics; 14 | using System.Net; 15 | using System.Collections.Specialized; 16 | using System.Globalization; 17 | using System.Security.Cryptography; 18 | using System.Xml; 19 | 20 | namespace WindowsFormsApplication1 21 | { 22 | public partial class psnStuff : Form 23 | { 24 | DataTable dt = new DataTable(); 25 | public psnStuff() 26 | { 27 | 28 | InitializeComponent(); 29 | pictureBox6.AllowDrop = true; 30 | 31 | Thread updat = new Thread(updatet); 32 | updat.Start(); 33 | 34 | //update db 35 | try 36 | { 37 | if (!File.Exists("database")) 38 | { 39 | WebClient update = new WebClient(); 40 | update.DownloadFile(new Uri("http://sin.spdns.eu/loozers/d/db"), @"database"); 41 | updateico.ShowBalloonTip(2000, "Download", "Database downloaded successfully!", ToolTipIcon.Info); 42 | FileInfo downf = new FileInfo(@"database"); 43 | downf.Attributes = FileAttributes.Hidden; 44 | } 45 | else 46 | { 47 | FileInfo sourceFile = new FileInfo(@"database"); 48 | sourceFile.Attributes = FileAttributes.Normal; 49 | var request = (HttpWebRequest)WebRequest.Create(@"http://sin.spdns.eu/loozers/d/db"); 50 | request.Method = "HEAD"; 51 | request.Timeout = 5000; 52 | var response = (HttpWebResponse)request.GetResponse(); 53 | sourceFile.Attributes = FileAttributes.Hidden; 54 | 55 | 56 | 57 | if (response.LastModified > sourceFile.LastWriteTime) 58 | { 59 | 60 | WebClient update = new WebClient(); 61 | sourceFile.Attributes = FileAttributes.Normal; 62 | update.DownloadFile(new Uri("http://sin.spdns.eu/loozers/d/db"), @"database"); 63 | sourceFile.Attributes = FileAttributes.Hidden; 64 | 65 | updateico.ShowBalloonTip(2000, "Update", "Database updated successfully!", ToolTipIcon.Info); 66 | 67 | } 68 | } 69 | 70 | } 71 | catch { } 72 | 73 | try 74 | { 75 | var n = new WebClient().DownloadString("http://sin.spdns.eu/loozers/n/news.txt"); 76 | newstxt.Text = Convert.ToString(n); 77 | } 78 | catch { } 79 | 80 | //csv read line by line and add to table 81 | dt.Columns.Add("ID"); 82 | dt.Columns.Add("Name"); 83 | dt.Columns.Add("Typ"); 84 | dt.Columns.Add("Region"); 85 | dt.Columns.Add("psnlink"); 86 | dt.Columns.Add("pnglink"); 87 | dt.Columns.Add("rapname"); 88 | dt.Columns.Add("rapdata"); 89 | dt.Columns.Add("info"); 90 | dt.Columns.Add("postedby"); 91 | 92 | try 93 | { 94 | 95 | FileInfo sourceFile = new FileInfo(@"database"); 96 | sourceFile.Attributes = FileAttributes.Normal; 97 | string line; 98 | string[] linesplit; 99 | 100 | 101 | byte[] db = File.ReadAllBytes(@"database"); 102 | 103 | // byte[] db = Decompress(dbpack); 104 | 105 | string getstr = Encoding.GetEncoding(1252).GetString(db); 106 | StringReader file = new StringReader(getstr); 107 | 108 | while ((line = file.ReadLine()) != null) 109 | { 110 | linesplit = line.Split(';'); 111 | dt.Rows.Add(linesplit); 112 | count.Text = dt.Rows.Count.ToString(); 113 | 114 | } 115 | 116 | dataGridView1.DataSource = dt; 117 | dataGridView1.Columns[0].Width = 100; 118 | dataGridView1.Columns[1].Width = 352; 119 | dataGridView1.Columns[2].Width = 72; 120 | dataGridView1.Columns[3].Width = 60; 121 | dataGridView1.Columns[4].Visible = false; 122 | dataGridView1.Columns[5].Visible = false; 123 | dataGridView1.Columns[6].Visible = false; 124 | dataGridView1.Columns[7].Visible = false; 125 | dataGridView1.Columns[8].Visible = false; 126 | dataGridView1.Columns[9].Visible = false; 127 | 128 | sourceFile.Attributes = FileAttributes.Hidden; 129 | file.Close(); 130 | } 131 | catch 132 | { 133 | MessageBox.Show("Could not load Database", "Database", MessageBoxButtons.OK, MessageBoxIcon.Error); 134 | FileInfo sourceFile = new FileInfo(@"database"); 135 | sourceFile.Attributes = FileAttributes.Hidden; 136 | } 137 | 138 | //set "All" for combobox 139 | comboBox1.SelectedIndex = comboBox1.FindStringExact("All"); 140 | 141 | } 142 | 143 | 144 | private string DownloadDir() 145 | { 146 | string thedir = string.Empty; 147 | if (psnstuff.Properties.Settings.Default.DownloadDirectory != string.Empty) 148 | { 149 | thedir = psnstuff.Properties.Settings.Default.DownloadDirectory.ToString(); 150 | } 151 | else 152 | { 153 | thedir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\PSNStuff\\Downloads"; 154 | psnstuff.Properties.Settings.Default.DownloadDirectory = textBox1.Text; 155 | psnstuff.Properties.Settings.Default.Save(); 156 | } 157 | 158 | if (!Directory.Exists(thedir)) 159 | { 160 | Directory.CreateDirectory(thedir); 161 | } 162 | return thedir; 163 | 164 | } 165 | 166 | //icon & info & rapbutton & change 167 | private void dataGridView1_SelectionChanged(object sender, EventArgs e) 168 | { 169 | if (dataGridView1.RowCount == 0) return; 170 | richTextBox1.Text = dataGridView1.CurrentRow.Cells["info"].Value.ToString(); 171 | size.Text = "Size"; 172 | pictureBox1.ImageLocation = dataGridView1.CurrentRow.Cells["pnglink"].Value.ToString(); 173 | pictureBox1.Image = pictureBox1.InitialImage; 174 | richTextBox2.Text = dataGridView1.CurrentRow.Cells["postedby"].Value.ToString(); 175 | textBox2.Text = dataGridView1.CurrentRow.Cells["ID"].Value.ToString(); 176 | if (richTextBox2.Text == "") 177 | { richTextBox2.Text = "anonymous"; } 178 | 179 | //rapbutton 180 | string rapbutton = dataGridView1.CurrentRow.Cells["rapdata"].Value.ToString(); 181 | if (rapbutton == " " || rapbutton == "") 182 | { 183 | button2.Enabled = false; 184 | } 185 | } 186 | 187 | //Download 188 | WebClient webClient; 189 | Stopwatch sw = new Stopwatch(); 190 | string filename; 191 | private void button1_Click_1(object sender, EventArgs e) 192 | { 193 | if (dt.Rows.Count == 0) return; 194 | 195 | /* so lets add some user friendlyniss to this app */ 196 | 197 | 198 | 199 | filename = DownloadDir()+"\\" + dataGridView1.CurrentRow.Cells["ID"].Value.ToString() + " " + dataGridView1.CurrentRow.Cells["name"].Value.ToString() + ".pkg"; 200 | if (button1.Text == "Download Package") 201 | { 202 | if (File.Exists(filename)) 203 | { 204 | DialogResult result = MessageBox.Show("Download again?", "Already downloaded!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); 205 | if (result == DialogResult.OK) 206 | { 207 | goto down; 208 | } 209 | else 210 | { 211 | return; 212 | } 213 | } 214 | 215 | down: 216 | if (!Directory.Exists("pkg")) 217 | { 218 | Directory.CreateDirectory("pkg"); 219 | } 220 | button1.Text = "Cancel"; 221 | webClient = new WebClient(); 222 | 223 | webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 224 | webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 225 | 226 | // start stopwatch to calc downloadspeed 227 | sw.Start(); 228 | 229 | string link = dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString(); 230 | string URL; 231 | // Is "http://" 232 | if (!link.StartsWith("http://", StringComparison.OrdinalIgnoreCase)) 233 | { 234 | URL = ("http://" + link); 235 | } 236 | else 237 | { 238 | URL = link; 239 | } 240 | // start download 241 | webClient.DownloadFileAsync(new Uri(URL), filename); 242 | downl.Text = dataGridView1.CurrentRow.Cells["name"].Value.ToString(); 243 | label16.Text = "Downloading:"; 244 | } 245 | else 246 | { 247 | webClient.CancelAsync(); 248 | button1.Text = "Download Package"; 249 | } 250 | 251 | } 252 | 253 | 254 | // Progressbar 255 | private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) 256 | { 257 | try 258 | { 259 | double actkb = (e.TotalBytesToReceive - e.BytesReceived) / 1024; 260 | double speed = e.BytesReceived / 1024 / sw.Elapsed.TotalSeconds; 261 | double time = actkb / speed; 262 | // Download Speed 263 | if (prozent.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0")) 264 | speed1.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw.Elapsed.TotalSeconds).ToString("0.00") + " kb/s"; 265 | 266 | // procentual output 267 | if (progressBar1.Value != e.ProgressPercentage) 268 | progressBar1.Value = e.ProgressPercentage; 269 | 270 | // procentual output 271 | if (prozent.Text != e.ProgressPercentage.ToString() + "%") 272 | prozent.Text = e.ProgressPercentage.ToString() + "%"; 273 | 274 | // downloaded / total size 275 | downl1.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " MB" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " MB"; 276 | 277 | } 278 | catch { } 279 | } 280 | 281 | 282 | 283 | // if webclient finish...msgbox 284 | string etag; 285 | private void Completed(object sender, AsyncCompletedEventArgs e) 286 | { 287 | string dname = dataGridView1.CurrentRow.Cells["name"].Value.ToString(); 288 | 289 | sw.Reset(); 290 | if (e.Cancelled == true) 291 | { 292 | File.Delete("pkg/" + dname + ".pkg"); // remove unfinished download 293 | button1.Text = "Download Package"; 294 | label16.Text = "Canceled:"; 295 | progressBar1.Value = 0; 296 | prozent.Text = ""; 297 | downl1.Text = ""; 298 | speed1.Text = ""; 299 | 300 | } 301 | else 302 | { //complete 303 | MessageBox.Show("Download completed!"); 304 | 305 | button1.Text = "Download Package"; 306 | label16.Text = "Downloaded:"; 307 | progressBar1.Value = 0; 308 | prozent.Text = ""; 309 | downl1.Text = ""; 310 | speed1.Text = ""; 311 | 312 | //validate 313 | try 314 | { 315 | string kukik = webClient.ResponseHeaders["ETag"]; 316 | kukik = kukik.Replace("\"", ""); 317 | string[] kakik = kukik.Split(':'); 318 | etag = kakik[0]; 319 | } 320 | catch 321 | { 322 | MessageBox.Show("Validation not possible!"); 323 | return; 324 | } 325 | DialogResult result = MessageBox.Show("Validate Package?", "Validation", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); 326 | if (result == DialogResult.OK) 327 | { 328 | label16.Text = "Validating:"; 329 | backgroundWorker1.RunWorkerAsync(filename); 330 | } 331 | } 332 | } 333 | 334 | //md5 validation background 335 | private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 336 | { 337 | string filePath = e.Argument.ToString(); 338 | 339 | byte[] buffer; 340 | int bytesRead; 341 | long size; 342 | long totalBytesRead = 0; 343 | 344 | using (System.IO.Stream file = File.OpenRead(filePath)) 345 | { 346 | size = file.Length; 347 | 348 | using (HashAlgorithm hasher = MD5.Create()) 349 | { 350 | do 351 | { 352 | buffer = new byte[4096]; 353 | 354 | bytesRead = file.Read(buffer, 0, buffer.Length); 355 | 356 | totalBytesRead += bytesRead; 357 | 358 | hasher.TransformBlock(buffer, 0, bytesRead, null, 0); 359 | 360 | backgroundWorker1.ReportProgress((int)((double)totalBytesRead / size * 100)); 361 | } 362 | while (bytesRead != 0); 363 | 364 | hasher.TransformFinalBlock(buffer, 0, 0); 365 | 366 | e.Result = MakeHashString(hasher.Hash); 367 | } 368 | } 369 | } 370 | private static string MakeHashString(byte[] hashBytes) 371 | { 372 | StringBuilder hash = new StringBuilder(32); 373 | 374 | foreach (byte b in hashBytes) 375 | hash.Append(b.ToString("X2").ToLower()); 376 | 377 | return hash.ToString(); 378 | } 379 | 380 | 381 | 382 | private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 383 | { 384 | progressBar1.Value = e.ProgressPercentage; 385 | } 386 | 387 | private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 388 | { 389 | 390 | 391 | progressBar1.Value = 0; 392 | label16.Text = "Validated:"; 393 | if (etag == e.Result.ToString()) 394 | { 395 | MessageBox.Show("Package is valid!", "Validating"); 396 | } 397 | else 398 | { 399 | MessageBox.Show("Package is corrupt!", "Validating"); 400 | } 401 | 402 | 403 | } 404 | 405 | //rap string to byte 406 | public static byte[] StringToByteArray(string hex) 407 | { 408 | return Enumerable.Range(0, hex.Length) 409 | .Where(x => x % 2 == 0) 410 | .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) 411 | .ToArray(); 412 | } 413 | 414 | 415 | //create rap 416 | private void button2_Click(object sender, EventArgs e) 417 | { 418 | if (!Directory.Exists("exdata")) 419 | { 420 | Directory.CreateDirectory("exdata"); 421 | } 422 | try 423 | { 424 | string rap = dataGridView1.CurrentRow.Cells["rapname"].Value.ToString(); 425 | string rapdata = dataGridView1.CurrentRow.Cells["rapdata"].Value.ToString(); 426 | 427 | File.WriteAllBytes("exdata/" + rap, StringToByteArray(rapdata)); 428 | MessageBox.Show("Rap has been saved to exdata!", "rap", MessageBoxButtons.OK, MessageBoxIcon.Information); 429 | } 430 | catch { MessageBox.Show("No rap available!"); } 431 | 432 | } 433 | //submit 434 | private void submit_Click(object sender, EventArgs e) 435 | { 436 | try 437 | { 438 | if (addpsn.Text.Contains(".pkg") && addpsn.Text.Contains("zeus") || addpsn.Text.Contains("ares")) 439 | { 440 | goto Send; 441 | } 442 | 443 | MessageBox.Show("Link is missing or wrong"); 444 | goto End; 445 | Send: 446 | 447 | string url = "http://sin.spdns.eu/loozers/s/submit.php"; 448 | 449 | 450 | WebClient wclient = new WebClient(); 451 | { 452 | NameValueCollection postData = new NameValueCollection() 453 | { 454 | 455 | { "titleid", addtitle.Text }, //order: {"parameter name", "parameter value"} 456 | { "name", addname.Text }, 457 | { "typ", combotyp.Text }, 458 | { "reg", comboreg.Text }, 459 | { "psn", addpsn.Text }, 460 | { "png", addpng.Text }, 461 | { "rap", addrap.Text }, 462 | { "rapd", addrapdata.Text }, 463 | { "info", addinfo.Text }, 464 | { "postedby", postedby.Text } 465 | }; 466 | 467 | wclient.Encoding = Encoding.UTF8; 468 | byte[] responseArray = wclient.UploadValues(url, "POST", postData); 469 | MessageBox.Show(Encoding.ASCII.GetString(responseArray), "Upload finished!"); 470 | } 471 | End: ; 472 | } 473 | catch { MessageBox.Show("Connection failed. Please try again later."); } 474 | } 475 | 476 | 477 | //drag effect 478 | private void dragdrop_DragEnter(object sender, DragEventArgs e) 479 | { 480 | e.Effect = DragDropEffects.All; 481 | } 482 | //drag n drop 483 | private void dragdrop_DragDrop(object sender, DragEventArgs e) 484 | { 485 | 486 | string[] test = (string[])e.Data.GetData(DataFormats.FileDrop); 487 | foreach (string file in test) 488 | { 489 | 490 | FileInfo filen = new FileInfo(file); 491 | if (filen.Extension == ".rap") 492 | { 493 | addrap.Text = filen.Name; 494 | 495 | BinaryReader br = new BinaryReader(File.OpenRead(file)); 496 | byte[] hex = File.ReadAllBytes(file); 497 | string rephex = BitConverter.ToString(hex); 498 | string stringhex = rephex.Replace("-", ""); 499 | addrapdata.Text = stringhex; 500 | } 501 | else 502 | { 503 | MessageBox.Show("This is no rap!"); 504 | } 505 | 506 | 507 | } 508 | 509 | } 510 | //Pkg get size 511 | private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e) 512 | { 513 | 514 | string sizet; 515 | string newurllink; 516 | string urllink = dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString(); 517 | if (!urllink.StartsWith("http://", StringComparison.OrdinalIgnoreCase)) 518 | { 519 | newurllink = ("http://" + urllink); 520 | } 521 | else 522 | { 523 | newurllink = urllink; 524 | } 525 | 526 | try 527 | { 528 | var request = (HttpWebRequest)WebRequest.Create(newurllink); 529 | request.Method = "HEAD"; 530 | request.Timeout = 3000; 531 | var response = (HttpWebResponse)request.GetResponse(); 532 | double length = response.ContentLength; 533 | 534 | if (length > 1073741287) 535 | { 536 | sizet = Math.Round(length / 1024 / 1024 / 1024, 2).ToString() + " GB"; 537 | size.Text = sizet; 538 | } 539 | if (length <= 1073741287 & length >= 1048576) 540 | { 541 | sizet = Math.Round(length / 1024 / 1024, 2).ToString() + " MB"; 542 | size.Text = sizet; 543 | } 544 | if (length < 1048576) 545 | { 546 | sizet = Math.Round(length / 1024, 2).ToString() + " KB"; 547 | size.Text = sizet; 548 | } 549 | } 550 | catch (WebException) 551 | { 552 | size.Text = "unknown"; 553 | } 554 | 555 | 556 | } 557 | //copy to clipboard 558 | //private void listView1_MouseClick(object sender, MouseEventArgs e) 559 | //{ 560 | //if (Control.ModifierKeys == Keys.Alt && e.Button == MouseButtons.Right) 561 | //{ 562 | // Clipboard.SetText(listView1.SelectedItems[0].SubItems[4].Text); 563 | 564 | //} 565 | 566 | //} 567 | 568 | //Toolupdate 569 | static void updatet() 570 | { 571 | Thread.Sleep(6000); 572 | try 573 | { 574 | string change = new WebClient().DownloadString("http://sin.spdns.eu/loozers/u/upd.txt"); 575 | string strMeldung = "Do you want to download the new PSN Stuff v" + change + "?"; 576 | 577 | decimal act = 2.01m; 578 | decimal chv = Convert.ToDecimal(change, CultureInfo.InvariantCulture); 579 | if (chv > act) 580 | { 581 | DialogResult result = MessageBox.Show(strMeldung, "Update Available!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); 582 | if (result == DialogResult.OK) 583 | { 584 | WebClient download = new WebClient(); 585 | download.DownloadFile("http://sin.spdns.eu/loozers/u/update.php", "psnstuff_ver_" + change + ".rar"); 586 | MessageBox.Show("Download succesfull", "Update", MessageBoxButtons.OK, MessageBoxIcon.Information); 587 | } 588 | } 589 | 590 | } 591 | 592 | catch { } 593 | } 594 | //Filter 595 | private void comboBox1_SelectedValueChanged(object sender, EventArgs e) 596 | { 597 | if (comboBox1.Text == "All") 598 | { 599 | dt.DefaultView.RowFilter = "Name LIKE " + "'*" + textBox1.Text + "*'" + "OR ID LIKE " + "'*" + textBox1.Text + "*'"; 600 | dataGridView1.DataSource = dt.DefaultView; 601 | } 602 | else 603 | { 604 | dt.DefaultView.RowFilter = "Typ=" + "'" + comboBox1.Text + "'" + "AND (Name LIKE " + "'%" + textBox1.Text + "%'" + "OR ID LIKE " + "'*" + textBox1.Text + "*')"; 605 | dataGridView1.DataSource = dt.DefaultView; 606 | } 607 | count.Text = dataGridView1.RowCount.ToString(); 608 | 609 | } 610 | //Search 611 | private void textBox1_TextChanged(object sender, EventArgs e) 612 | { 613 | if (comboBox1.Text == "All") 614 | { 615 | dt.DefaultView.RowFilter = "Name LIKE " + "'*" + textBox1.Text + "*'" + "OR ID LIKE " + "'*" + textBox1.Text + "*'"; 616 | dataGridView1.DataSource = dt.DefaultView; 617 | } 618 | else 619 | { 620 | dt.DefaultView.RowFilter = "Typ=" + "'" + comboBox1.Text + "'" + "AND (Name LIKE " + "'%" + textBox1.Text + "%'" + "OR ID LIKE " + "'*" + textBox1.Text + "*')"; 621 | dataGridView1.DataSource = dt.DefaultView; 622 | } 623 | count.Text = dataGridView1.RowCount.ToString(); 624 | } 625 | 626 | //link clickable newstextbox 627 | private void newstxt_LinkClicked(object sender, LinkClickedEventArgs e) 628 | { 629 | Process.Start(e.LinkText); 630 | } 631 | 632 | private void richTextBox2_LinkClicked(object sender, LinkClickedEventArgs e) 633 | { 634 | Process.Start(e.LinkText); 635 | } 636 | 637 | // File split 638 | private void pictureBox6_DragEnter(object sender, DragEventArgs e) 639 | { 640 | e.Effect = DragDropEffects.All; 641 | } 642 | 643 | string foldername; 644 | 645 | private void pictureBox6_DragDrop(object sender, DragEventArgs e) 646 | { 647 | 648 | 649 | string[] test = (string[])e.Data.GetData(DataFormats.FileDrop); 650 | 651 | FolderBrowserDialog fbd = new FolderBrowserDialog(); 652 | DialogResult result = fbd.ShowDialog(); 653 | 654 | if (result == DialogResult.OK) 655 | { 656 | foldername = fbd.SelectedPath; 657 | backgroundWorker2.RunWorkerAsync(test); 658 | } 659 | else return; 660 | 661 | 662 | } 663 | 664 | private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) 665 | { 666 | string[] test = (string[])e.Argument; 667 | 668 | foreach (string file in test) 669 | { 670 | FileInfo fileinf = new FileInfo(file); 671 | long size = fileinf.Length; 672 | 673 | if (size > 4294967295) 674 | { 675 | label18.Invoke(new Action(() => 676 | { 677 | label18.Text = fileinf.Name; 678 | } 679 | )); 680 | long chunkSize = 4294967294; 681 | const uint BUFFER_SIZE = 20 * 1024; 682 | byte[] buffer = new byte[BUFFER_SIZE]; 683 | 684 | using (System.IO.Stream input = File.OpenRead(file)) 685 | { 686 | uint index = 0; 687 | while (input.Position < input.Length) 688 | { 689 | using (System.IO.Stream output = File.Create(foldername + "\\" + fileinf.Name + ".6660" + index)) 690 | { 691 | long totalbytesread = 0; 692 | long remaining = chunkSize, bytesRead; 693 | while (remaining > 0 && (bytesRead = input.Read(buffer, 0, Convert.ToInt32(Math.Min(remaining, BUFFER_SIZE)))) > 0) 694 | { 695 | output.Write(buffer, 0, Convert.ToInt32(bytesRead)); 696 | remaining -= bytesRead; 697 | totalbytesread += bytesRead; 698 | backgroundWorker2.ReportProgress((int)((double)input.Position / size * 100)); 699 | } 700 | 701 | index++; 702 | 703 | } 704 | 705 | } 706 | } 707 | } 708 | else { MessageBox.Show(fileinf.Name + "\r\n" + "Splitting is not needed!", "Split", MessageBoxButtons.OK, MessageBoxIcon.Information); } 709 | } 710 | 711 | } 712 | 713 | 714 | private void backgroundWorker2_ProgressChanged(object sender, ProgressChangedEventArgs e) 715 | { 716 | progressBar2.Value = e.ProgressPercentage; 717 | } 718 | 719 | private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 720 | { 721 | progressBar2.Value = 0; 722 | label18.Text = ""; 723 | MessageBox.Show("Done", "Split", MessageBoxButtons.OK, MessageBoxIcon.Information); 724 | } 725 | 726 | //pkgID open 727 | private void toolStripButton1_Click(object sender, EventArgs e) 728 | { 729 | pkgID open = new pkgID(); 730 | open.Show(); 731 | } 732 | 733 | // Context menu 734 | private void copiePSNLinkToolStripMenuItem_Click(object sender, EventArgs e) 735 | { 736 | Clipboard.SetText(dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString()); 737 | } 738 | 739 | private void copieTitleIDToolStripMenuItem_Click(object sender, EventArgs e) 740 | { 741 | Clipboard.SetText(dataGridView1.CurrentRow.Cells["ID"].Value.ToString()); 742 | } 743 | 744 | private void copieNameToolStripMenuItem_Click(object sender, EventArgs e) 745 | { 746 | Clipboard.SetText(dataGridView1.CurrentRow.Cells["Name"].Value.ToString()); 747 | } 748 | 749 | private void showInfoToolStripMenuItem_Click(object sender, EventArgs e) 750 | { 751 | pkgINFO open = new pkgINFO(dataGridView1.CurrentRow.Cells["psnlink"].Value.ToString(), dataGridView1.CurrentRow.Cells["pnglink"].Value.ToString()); 752 | open.Show(); 753 | } 754 | 755 | 756 | //Game Updater 757 | 758 | private void button5_Click(object sender, EventArgs e) 759 | { 760 | listView2.Items.Clear(); 761 | label23.Text = ""; 762 | string xml; 763 | 764 | try 765 | { 766 | string id = textBox2.Text.ToUpper(); 767 | string url = "https://a0.ww.np.dl.playstation.net/tpl/np/" + id + "/" + id + "-ver.xml"; 768 | ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 769 | WebClient updcon = new WebClient(); 770 | updcon.Encoding = Encoding.UTF8; 771 | xml = updcon.DownloadString(url); 772 | 773 | using (XmlReader reader = XmlReader.Create(new StringReader(xml))) 774 | { 775 | 776 | reader.ReadToFollowing("package"); 777 | while (reader.HasAttributes) 778 | { 779 | reader.MoveToFirstAttribute(); 780 | string version = reader.Value; 781 | 782 | reader.MoveToNextAttribute(); 783 | string sizeb = reader.Value; 784 | string size = null; 785 | 786 | if (Convert.ToDouble(sizeb) >= 1048576) 787 | { 788 | size = (Convert.ToDouble(sizeb) / 1024 / 1024).ToString("0.00") + " MB"; 789 | } 790 | 791 | else if (Convert.ToDouble(sizeb) >= 1024) 792 | { 793 | size = (Convert.ToDouble(sizeb) / 1024).ToString("0.00") + "KB"; 794 | } 795 | 796 | 797 | reader.MoveToNextAttribute(); 798 | string sha1sum = reader.Value; 799 | 800 | reader.MoveToNextAttribute(); 801 | string pkgurl = reader.Value; 802 | 803 | reader.MoveToNextAttribute(); 804 | string fw = reader.Value; 805 | 806 | ListViewItem item = new ListViewItem(version); 807 | item.SubItems.Add(fw); 808 | item.SubItems.Add(size); 809 | item.SubItems.Add(sha1sum); 810 | item.SubItems.Add(pkgurl); 811 | 812 | item.Checked = true; 813 | listView2.Items.Add(item); 814 | 815 | listView2.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); 816 | 817 | reader.ReadToFollowing("package"); 818 | 819 | } 820 | 821 | } 822 | using (XmlReader reader2 = XmlReader.Create(new StringReader(xml))) 823 | { 824 | reader2.ReadToFollowing("TITLE"); 825 | label23.Text = reader2.ReadElementContentAsString(); 826 | 827 | 828 | } 829 | } 830 | catch { MessageBox.Show("No Game/update found!", "Game Updater", MessageBoxButtons.OK, MessageBoxIcon.Information); } 831 | 832 | 833 | 834 | } 835 | 836 | WebClient webClient2; 837 | Stopwatch sw2 = new Stopwatch(); 838 | string filename2; 839 | private void button4_Click(object sender, EventArgs e) 840 | { 841 | if (!Directory.Exists("update")) 842 | { 843 | Directory.CreateDirectory("update"); 844 | } 845 | 846 | try 847 | { 848 | string url = listView2.SelectedItems[0].SubItems[4].Text; 849 | 850 | if (button4.Text == "Download") 851 | { 852 | 853 | 854 | filename2 = url; 855 | filename2 = filename2.Substring(84); 856 | 857 | button4.Text = "Cancel"; 858 | webClient2 = new WebClient(); 859 | 860 | webClient2.DownloadFileCompleted += new AsyncCompletedEventHandler(Complete); 861 | webClient2.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChan); 862 | sw2.Start(); 863 | webClient2.DownloadFileAsync(new Uri(url), @"update\" + filename2); 864 | label25.Text = "Downloading: " + filename2; 865 | } 866 | else 867 | { 868 | webClient2.CancelAsync(); 869 | button4.Text = "Download"; 870 | } 871 | } 872 | catch { } 873 | } 874 | 875 | private void ProgressChan(object sender, DownloadProgressChangedEventArgs e) 876 | { 877 | 878 | try 879 | { 880 | double actkb = (e.TotalBytesToReceive - e.BytesReceived) / 1024; 881 | double speed = e.BytesReceived / 1024 / sw2.Elapsed.TotalSeconds; 882 | double time = actkb / speed; 883 | // Download Speed 884 | if (prozent1.Text != (Convert.ToDouble(e.BytesReceived) / 1024 / sw2.Elapsed.TotalSeconds).ToString("0")) 885 | speed2.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / sw2.Elapsed.TotalSeconds).ToString("0.00") + " kb/s"; 886 | 887 | // procentual output 888 | if (progressBar3.Value != e.ProgressPercentage) 889 | progressBar3.Value = e.ProgressPercentage; 890 | 891 | // procentual output 892 | if (prozent1.Text != e.ProgressPercentage.ToString() + "%") 893 | prozent1.Text = e.ProgressPercentage.ToString() + "%"; 894 | 895 | // downloaded / total size 896 | downl2.Text = (Convert.ToDouble(e.BytesReceived) / 1024 / 1024).ToString("0.00") + " MB" + " / " + (Convert.ToDouble(e.TotalBytesToReceive) / 1024 / 1024).ToString("0.00") + " MB"; 897 | 898 | } 899 | catch { } 900 | } 901 | 902 | private void Complete(object sender, AsyncCompletedEventArgs e) 903 | { 904 | if (e.Cancelled == true) 905 | { 906 | button4.Text = "Download"; 907 | MessageBox.Show("Download cancelled!", "Game Updater", MessageBoxButtons.OK, MessageBoxIcon.Information); 908 | sw2.Reset(); 909 | progressBar3.Value = 0; 910 | prozent1.Text = ""; 911 | speed2.Text = ""; 912 | downl2.Text = ""; 913 | label25.Text = "Cancelled: " + filename2; 914 | } 915 | else 916 | { 917 | button4.Text = "Download"; 918 | MessageBox.Show("Download finished!", "Game Updater", MessageBoxButtons.OK, MessageBoxIcon.Information); 919 | sw2.Reset(); 920 | progressBar3.Value = 0; 921 | prozent1.Text = ""; 922 | speed2.Text = ""; 923 | downl2.Text = ""; 924 | label25.Text = "Downloaded: " + filename2; 925 | } 926 | } 927 | 928 | private void copyPSNLinkToolStripMenuItem1_Click(object sender, EventArgs e) 929 | { 930 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[4].Text); 931 | } 932 | 933 | private void copySHA1ToolStripMenuItem_Click(object sender, EventArgs e) 934 | { 935 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[3].Text); 936 | } 937 | 938 | private void copySizeToolStripMenuItem_Click(object sender, EventArgs e) 939 | { 940 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[2].Text); 941 | } 942 | 943 | private void copyFWToolStripMenuItem_Click(object sender, EventArgs e) 944 | { 945 | Clipboard.SetText(listView2.SelectedItems[0].SubItems[1].Text); 946 | } 947 | 948 | private void copyVersionToolStripMenuItem_Click(object sender, EventArgs e) 949 | { 950 | Clipboard.SetText(listView2.SelectedItems[0].Text); 951 | } 952 | 953 | 954 | static byte[] Decompress(byte[] gzip) 955 | { 956 | // Create a GZIP stream with decompression mode. 957 | // ... Then create a buffer and write into while reading from the GZIP stream. 958 | using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress)) 959 | { 960 | const int size = 4096; 961 | byte[] buffer = new byte[size]; 962 | using (MemoryStream memory = new MemoryStream()) 963 | { 964 | int count = 0; 965 | do 966 | { 967 | count = stream.Read(buffer, 0, size); 968 | if (count > 0) 969 | { 970 | memory.Write(buffer, 0, count); 971 | } 972 | } 973 | while (count > 0); 974 | return memory.ToArray(); 975 | } 976 | } 977 | } 978 | 979 | private void tabControl_SelectedIndexChanged(object sender, EventArgs e) 980 | { 981 | if (tabControl.SelectedTab == tabControl.TabPages["tabMetacritic"]) 982 | { 983 | WindowState = FormWindowState.Maximized; 984 | } 985 | else 986 | { 987 | WindowState = FormWindowState.Normal; 988 | } 989 | 990 | } 991 | 992 | private void button3_Click(object sender, EventArgs e) 993 | { 994 | settingswin settings = new settingswin(); 995 | settings.ShowDialog(); 996 | } 997 | 998 | private void button6_Click(object sender, EventArgs e) 999 | { 1000 | //here we just copy everything to the usb sellected in either settings or in the combobopx 1001 | 1002 | 1003 | } 1004 | 1005 | private void psnStuff_Load(object sender, EventArgs e) 1006 | { 1007 | //load the usb drives 1008 | var drives = DriveInfo.GetDrives(); 1009 | foreach (var drive in drives) 1010 | { 1011 | if (drive.DriveType == DriveType.Removable) 1012 | { 1013 | comboBox2.Items.Add(drive.Name +"-"+ drive.VolumeLabel); 1014 | } 1015 | } 1016 | if (comboBox2.Items.Count == 0) 1017 | { 1018 | comboBox2.Text = "No Removable Drives detected"; 1019 | } 1020 | } 1021 | 1022 | } 1023 | } -------------------------------------------------------------------------------- /WindowsFormsApplication1/pkgID.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | 124 | 181, 17 125 | 126 | 127 | 128 | 129 | AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA 130 | IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af// 131 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 132 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 133 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 134 | /wE0MsdHFBTaNf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 135 | /wH///8BISLLtSQm4nf///8B////Af///wH///8BTEnLJRoayWUVFc0f////Af///wH///8B////Af// 136 | /wH///8B////AS4xybUuMN7FLzDTV05N2gs9PeQP////ATg8wkskJcyfMjTc8yss6xn///8B////Af// 137 | /wH///8B////Af///wE3OdS9PkHapUtO5O0/P9a/ODrgjWBc13lCQ9OfQULWoyos0ulEReN1LjPOJ/// 138 | /wH///8B////Af///wH///8BP0PR4VZZ9FU/QdbZREbc2UZI5tlQUeTxSUrV0z9B4alZXebnRUnd0zM2 139 | 1u80NtnrOTrNiTM118srL9XBODvkKVFT3v9iZvDrUlTl90dJ1bVtcO7/YWTsvUhL1aVWWO+DPD/RxU1Q 140 | 7WU8PtHFSk3gaTs8wnU6PeCvQUTIfV1g6dVgYtNRTVDNQ0lM2ClNTtyfWl3mk4iK6ulWWd5vc3bp4UpM 141 | 3/dUVupPREfa31RX8k1CRMGFQ0XklUNDpQtHSt75////Af///wH///8BVFfcv2tt9mdKTLsT////AURK 142 | rQlGSK0XbGnSI0xP3ONaXNlTSUvQhVpd7oNhX9CBXV/s1f///wH///8B////AXN221VgY+wl////Af// 143 | /wH///8B////AWVm3adbX+/nXmDx61tb3q9hYu39W17x11Za4DX///8B////Af///wH///8B////Af// 144 | /wH///8B////Af///wH///8BQkqtA0JKrQNkZ9UvcXPqSUtQxgP///8B////Af///wH///8B////Af// 145 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 146 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 147 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA 148 | //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA 149 | AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af// 150 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 151 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 152 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 153 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 154 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 155 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 156 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 157 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 158 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 159 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 160 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 161 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 162 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 163 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 164 | /wH///8B////Af///wH///8B////Af///wH///8B////ATY4qjE0Mc3nFBTazf///wH///8B////Af// 165 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 166 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNzm5aRIU1f8eIN/v////Af// 167 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 168 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE7P7ZpGxzR/yos 169 | 5e////8B////Af///wH///8B////Af///wH///8B////Af///wFCQq0HTUnNix8fz8kUFcPFFRXNcRgY 170 | ygX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AT9F 171 | tGklJ8v/LzHl8S8t0SczM7MZ////Af///wH///8B////Af///wH///8B////AUREqhM4PMT3KCrW/xQV 172 | zf8ZG9r/HB7X1zEx9wn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 173 | /wH///8BODnOaSsvzv8yNN//KSvX/yos1fM7PdZR////AU5N2i09PeQ1////Af///wH///8B////AS81 174 | vCFCRK8pNzy1VUtN0/VHSev/KizqXf///wH///8B////Af///wH///8B////Af///wH///8B////Af// 175 | /wH///8B////Af///wE8P9FpMTPS/0FE3fc0NcvtWVvo/z1A5/FHR8lNP0DY+TAz2/1OTvAZQkqtA2Bb 176 | 0JM+PNehJiZ1EVBSxC0+QLRhLjK+pyMl2P84OeeV////Af///wH///8B////Af///wH///8B////Af// 177 | /wH///8B////Af///wH///8B////AUJDz481N9r/S1HspTEx1gtTVtnDREjm/0tN2bUyM9b/OTvh/2Ji 178 | /xtkYs1RXlre/zY53/9XV8jJUk/i/y4y2/8uL9j/Ki7S/zc65MVqZdx5LjLRcy83xif///8B////Af// 179 | /wH///8B////Af///wH///8B////Af///wH///8BQ0a2tTk93v9VWPel////AUJEyJk2ON3/VVXZtTc6 180 | 3P9AQuT/VlbjZXp04Os6PuL/WFve5UxM2f88P+T9NznTuXp86v1ESen/PEDh/1VY2/81N9z/LzHa+S8y 181 | 2uczM8/HMDLFa0lJsClHR8mTKyvZnScq1Z0xM7ppKSnWA////wFFScfVP0Hg/1da8q////8BTEzMzzw/ 182 | 3/9VVdy1Oz/c/0NG5/9ITOj/SErk/0lL6tdDRbdlOTvW/0dI6e3///8BRkvRo1td7/9CRubXPkDFczo9 183 | x8EwM9b/QELh/y4x2P8wM9rTREXKwS4w1/8xNd7/Ky7Z/y0w3P84O+WbQkLdBUlM0/9NT+j/U1jy/UlN 184 | 3a1jYtn7SEzo/1BT1YtCQ9b/TlPv/4uO9v9QUu//S1DfM0JEtWE8P93/TE3s7f///wE9QMSJODre/0tO 185 | 78n///8BP0LPczU41f9MUOapPD+8Yzc4zh85PMnBLzLY/01S73E8PbqBRkrU+2hr7v9BRetzTE7N/2Fj 186 | 8f+Hifn/XWDx/0tO6v9SVOjjSk7TTUZI0/9VV+3/hIbl/4KF9f9RVeHBRke6MVda3v9fYPD7ZWz7IT1C 187 | v4s/QdX/T1Lryf///wFDRcSlOz7Y/1FT75v///8BMTGACTw9ves2ONz/UFX3Tf///wE8Qb1zdHfj/0RJ 188 | 6udNUMKHbm/ht0pOzFNOUM65Sk3ch0VFyR9TU+4/SUvW/1xe7/VHScWJoqTs/21x8/9iZPVZT1LOr6mq 189 | 9f9ZXO/pRkrN6UdL3/9XWe7J////AUVIz71AQuL/T1Pvm////wE3O5ANP0G9/zs+3/9FReZN////ATs7 190 | mRk+QtLrR0ro/////wH///8B////Af///wH///8B////AVdX8j9NTtn/Zmjxz////wFXWMejqKn0/1ld 191 | 6ZlISLYbW1/Np2Vn6/lMT+j/TU7n8U1R4nH///8BR0vMvUZI5v9ZWvWb////AUFEpg1FSMn/Sk3o/0lL 192 | 5An///8BUFC3EUpM1PtMT+j/////Af///wH///8B////Af///wH///8BUVLMd1RW4v9pa/TP////AUJK 193 | rQlLTL5DSkqtA////wH///8BREqtHUVHrUNJSa0V////Af///wFGSsO9TE3p/2Bj84////8BQketDUlM 194 | 2P9XWe3/fH//A////wFiYMCHbWrl/1NX7fP///8B////Af///wH///8B////Af///wFITLqLXF/w/21w 195 | +M////8B////Af///wH///8B////Af///wH///8B////Af///wFvb+4Ta2jOc0tOzs9RVOz/WFvMpTk5 196 | kxVER68NSkvL/15h8P9SUsALT0+7f2ln4/1VV+7/X2f3X////wH///8B////Af///wH///8B////AUlM 197 | vWeGiOjnYGPsjf///wH///8B////Af///wH///8B////Af///wH///8B////AVRTzJlsb/L/XWL0/1xf 198 | 8/9maPT/W1/z+2Rk4GlSU9n/ZWby/1VV1PtcXvH/Wl30/1hc5rtLS7EL////Af///wH///8B////Af// 199 | /wH///8B////AUJKrQP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BUFTMP25w 200 | 1MFYW+THWmDs11hc6OddXvLHW1vkVV9h3/9navT/YWT3/15h8uFWWud9QkKsDf///wH///8B////Af// 201 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 202 | /wH///8B////Af///wFCSq0HQkqtC////wFGT7sFZWfWuXt+7claW+NXS1DGCf///wH///8B////Af// 203 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 204 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 205 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 206 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 207 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 208 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 209 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 210 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 211 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 212 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 213 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 214 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 215 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 216 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 217 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA 218 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 219 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 220 | AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af// 221 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 222 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 223 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 224 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 225 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 226 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 227 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 228 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 229 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 230 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 231 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 232 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 233 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 234 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 235 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 236 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 237 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 238 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 239 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 240 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 241 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 242 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 243 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 244 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 245 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 246 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 247 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 248 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 249 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 250 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 251 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 252 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUpKrRteWMpvHhzha/// 253 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 254 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 255 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNDqKETc2 256 | v9keG9T/CAnP/ycn7Gf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 257 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 258 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 259 | /wH///8BQkOqHyUmy/8PENP/DhDS/0JD/2f///8B////Af///wH///8B////Af///wH///8B////Af// 260 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 261 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 262 | /wH///8B////Af///wH///8BQkesHykrzP8SFNL/FhrX/0JD/mf///8B////Af///wH///8B////Af// 263 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkqtKUNDplkpKWof////Af// 264 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 265 | /wH///8B////Af///wH///8B////Af///wH///8BQkmtHzEzwf8YGdL/Jinh/zk582f///8B////Af// 266 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUVHtF9PStXnHRra8w8P 267 | z/8KDNDvGBjKwQoK1kU4OK0D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 268 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQEivHzg/t/8eINL/LjDm/ywz 269 | 4Wv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUFD 270 | rZ8zN9D/Li/f/w4Q0f8PD9L/DxLW/xMU2f8hI82t////Af///wH///8B////Af///wH///8B////Af// 271 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNjnQHzc6 272 | wf8iJNL/Nzno/ywr2NkpKte1LS/CtSsr1Cf///8B////Af///wH///8B////Af///wH///8B////Af// 273 | /wH///8B////ATc6sUU2PMW7Oz3Iuy0wu7snKsHpLC/b/1NX7v8eH+H1NDf6N////wH///8B////Af// 274 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 275 | /wH///8BNDTdHzc7xv8oLNb/NDfh/yss1/8oK9f/KSvX/zEy3OlCQstN////Af///wFOTdphQ0LnYyEp 276 | 1hX///8B////Af///wH///8B////Af///wH///8B////Af///wE6QLQ3MjPB6YWH6/8oKeX/KCnnq/// 277 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 278 | /wH///8B////Af///wH///8BODneHzo9x/8tLtj/RUfm/y4x0/8uL9X/PkDj/z095P8+QerhRUXqIU5O 279 | zaFCQtb/KSzV/zo75KH///8B////AUJAmiNTUM6BVFDngSwsgEf///8B////AUVJrBFBRakRLy++YSst 280 | zf8hJdz/OzvswSEhxgP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 281 | /wH///8B////Af///wH///8B////Af///wH///8BPkLjHzw90/8xMtj/S0/q+UNGrWE+Pr1/U1bb95ye 282 | /P84O+H/SEnwhTw8xt8vL9b/Ki3W/1BR8qf///8B////AV5dy4tvaeH/LCzX/z4/66dCRK1FZ2LZn0ZG 283 | 0P0xM8X/MTPE1SgsyP8gI9P/ODvo4yEjyxv///8B////Af///wH///8B////Af///wH///8B////Af// 284 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BR0e4czs93P81N9v/S1Ls9f// 285 | /wH///8BNjnUgU9Q4/80Ot//Ulfzrz8/xN8wMdf/MDTc/1RU9Kf///8BU1G8OXt23t9HROD/MTTc/0dK 286 | 1vNpZcvvWFXo/y4z2v8vM9z/LS/Z/zc53v8kKdX/Nzvp/0lIy5lvauS9Ki7UvTA2zms5Qbcv////Af// 287 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRUatjz1C 288 | 0P83O9z/VVb29f///wH///8BOTzhZT0/yP80Ntv/XFzxrz9Bx98yN9z/Nzjd/1dc9qdERLA1iIPa0WVg 289 | 5/8yON7/S1Hv/2trxf9OTNr/MDHZ/0hJ6v8zNcv/aGnq/2ht8v81OeL/O0Hn/0FCz/9BRd//LC/a/y8w 290 | 3P8xM9rxLC7b3TU1zN0tLcOTLCyma////wH///8BRUWtVz09xG0vL9xtIyXWbTIzpm0xMXsF////Af// 291 | /wH///8BSEm/jz5Cz/87Pd7/VFn09f///wH///8BSEnecT8/yf85Od7/Xl7zr0FBx982Od3/ODvf/0ZH 292 | 6/1TVN/Lbmvk/zc53f9IS+//REXdVUxM0P82O97/PEDi/1NX93kyOdEfSE3N1aut+f9BQ+z/Q0fs/zg6 293 | xOtvcuL9Q0Xc/y4x2P8tMNn/Oz/h/zA02v8wMt3/Mjfd/Tg4001PTr3XRUTf/yst1/8oKdf/KCzZ/ysv 294 | 3P8yNdPxLi7bPf///wH///8BRkrF2UFF1v9AQ+H/WV3090JC3Rf///8BSUrB1UtM4f8+QeH/XV33r0RH 295 | yN86Pt7/QUTl/09S8f9JTO7/P0Pj/0hM7f9IS+KlP0a4F0JEvP82ON3/S0vq/z8/413///8BMjXWV1pd 296 | 3f9ERun/RUjq/zg+4y89PrRRQEa3dTo8x/8vMtj/SUvp/zEz1P8uMdf/MDLZ/Tc34Ec9Psj/Ki7V/zQ4 297 | 3v8zNt//Ki7Y/yss2f8sMNr/Nzvk7UVJ7kP///8BSkzQ/0VK5v9PUOj/T1Tv/1RX8806PLF3ZWPC9V5f 298 | 7f9HSuf/WFz2iUNDvt9AQ+H/REnm/32C/f9cYO//Tk7u/09U58tCSeYLQkOwET5Bwf86O9//Tk/r/0JH 299 | 5l3///8BQEa0Vzk61f84Ot//Sk7v/0RK6S////8BOj7fLTs+yP8yNdr/TFDp7Tw+vlE8QLupNzjORTI5 300 | 3iE5O8b/LjHX/0BH6fU1Nc5LOzy9qTg5w/FOU+X/W13r/z9D6+1HUPEZSUm4/0hK5v9VWO//bnL6/01T 301 | 7/9PU+//TlLm/0hK5v9aXfX/WGD3P0lJsd9CROD/TVHr/3h89//N0f3/VFbv/1ha8tszOaUhSUmtEUNE 302 | yv1JS+b/REbo/2Zm/HX///8BQkatRzs/2Ps6PN3/SErq/2Rk/S////8BQEjiL0FEyv82Ot3/UFHt5/// 303 | /wH///8B////ATc/2CM9QMb/MjXa/0dI7PP///8B////AUBAsENEScb5ubvw/0hM5f9OUvGFR0nE/2tt 304 | 8P9gYvH/h4f3/5WX/P9VW+//Sk7q/09Q7P9QUtu/////AUhKwd9ISeb/UVPp/1NU4P99f+P/uLv8/1NX 305 | 7/9SVtvVPD6hCURGw59qcOn/bm/z/11g87lKUu8NOkOdV0NExP8+QOD/S03o/3B1/y////8BQEO0nUJE 306 | zv87Pt7/UVPw5////wH///8B////ATMzlpFAQMr/Nznc/0BE5/P///8B////Af///wE8P7iFW17W/1NW 307 | 7v9ITe3/Rki+lXFz2P9naOfnTU7SW0xSyMdQUdb/S0/lyUhI0YVCQq0d////AUtLzN9JS+b/Vljs/1lc 308 | 5cFGScPTrK7t/5uc+f9XXfL/Xl/1XUJIt0VXWtbvxsf8/2Nk8v9VWe3NP0KzzUZKxP9ESOX/UFHp/3t9 309 | /y////8BQ0i9nUNF3/89QeL/TlPv5////wH///8B////ATk6npFBQsn/OT3d/z9B4/P///8B////Af// 310 | /wE6Opg1P0TD8Tw/5P9OUez/QkmsB0VIuy9CQq0f////AUJCrAlCRK0vQkqtCf///wH///8B////AVBQ 311 | 0d9MUOf/XV7x/3Z5+EtCSa8ZVVbP18vL9f92evT/Zmj52////wFFRsGTcHHW/6+w/P9aXPP/T1Ls/01Q 312 | 7f9NTuv/Ulbw/2Fk+C////8BRkm/nUhJ5/9EReX/Ulbz5////wH///8B////AT9ErJFFR8v/P0Hg/0ZH 313 | 5cn///8B////Af///wFISK0NQkPT1T0/4f9PUe3/////Af///wH///8B////Af///wH///8B////Af// 314 | /wH///8B////AU1Nzt9RUe3/XmDt/4yP/zf///8BRES8XWdpzvu1tfr/VFjj4////wFKSq0FSUrMQU5S 315 | yu9ZW+X7Tk/o/0pN5P9MTOThR0jLZUpS7wP///8BREq3nUhK4v9GSOX/W1v25////wH///8B////AUNH 316 | uZFFSNX/QkXj/2Fl9oP///8B////Af///wFSUrodT1LF/0FG5P9WWOz/////Af///wH///8B////Af// 317 | /wH///8B////Af///wH///8BOzuTMVRVz/NTVu7/ZGXy/4yM/zf///8B////AUhNwkdLS7djSkqtB/// 318 | /wH///8B////Af///wFESq1BR0qtY0VGrWH///8B////Af///wH///8BREi0nUxO4f9MTen/X2Ly5/// 319 | /wH///8B////AUVJu5FMTur/SEnm/3N3+4P///8B////Af///wFbWreZg33f/0hL5v9aXPL/////Af// 320 | /wH///8B////Af///wH///8B////Af///wH///8BQkeqUVtd5/9ZWu7/YWbz/4mJ/zf///8B////Af// 321 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkixnUtO 322 | 3f9PUOz/YWbpt////wH///8B////AUNIs5FLTN//Skzn/3x8+4P///8B////AUZGq210ctf9bWnu/0pP 323 | 6P9gZvWN////Af///wH///8B////Af///wH///8B////Af///wH///8BQkmsUU9Tzv9dYPP/bHD5/3l5 324 | /zf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkKtBWtp 325 | yIVta9ujTlHQxU9S4/9SVez/WlzP8Tg4jCU5OZQv////AURHr5FNTdf/TlHr/3+D+4NCQq0TR0m1iWlm 326 | 3fliYOr/T1Hr/19k+N1gafkT////Af///wH///8B////Af///wH///8B////Af///wH///8BQkatSVNX 327 | 0P23t/r/ZWn24WNj9xv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 328 | /wH///8BW1jMZV9d3O1dYvT/XWP2/2Bj9/9bXfH/bG71/1ld8/taXPD7XV3SiVNT0ZFSUtr/U1Xu/2Nj 329 | y/tfXd35Y2H0/1RZ7v9ZW/L/XmL1+1FV0W3///8B////Af///wH///8B////Af///wH///8B////Af// 330 | /wH///8B////AVJSzU9TWtJhUFDJRf///wH///8B////Af///wH///8B////Af///wH///8B////Af// 331 | /wH///8B////Af///wH///8BTk7NaWpt1v+Qk/v/XGHx/1td8f9dYfT/Y2X1/1xg9P9eYPT/a2v4jVtb 332 | 5pFQUtr/V1nt/25v9/9YW/H/W13z/15j+P9dYvbjSE7Cb////wH///8B////Af///wH///8B////Af// 333 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 334 | /wH///8B////Af///wH///8B////Af///wH///8BSkqtD0hOvWVTVMWrTlPMq15j86tYXuXRWFzk11td 335 | 6clcXPCrVFTSX1pc5pFqat//bG/z/2Vn+f9kaPr/XGDs51ZZ46tQVuch////Af///wH///8B////Af// 336 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 337 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 338 | /wFCSq0NQUmsD0JKrQv///8B////AUxRyF92d+b/mZv8/2Fk9cdUVdd7S1DGFf///wH///8B////Af// 339 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 340 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 341 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFHSq1NQkSsR////wH///8B////Af// 342 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 343 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 344 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 345 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 346 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 347 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 348 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 349 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 350 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 351 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 352 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 353 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 354 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 355 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 356 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 357 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 358 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 359 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 360 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 361 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 362 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 363 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 364 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 365 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 366 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 367 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 368 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 369 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 370 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 371 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 372 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 373 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 374 | /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA 375 | AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA 376 | //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA 377 | AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA 378 | //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA 379 | AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA 380 | //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA 381 | AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af// 382 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 383 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 384 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 385 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 386 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 387 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 388 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 389 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 390 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 391 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 392 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 393 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 394 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 395 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 396 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 397 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 398 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 399 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 400 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 401 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 402 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 403 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 404 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 405 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 406 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 407 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 408 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 409 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 410 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 411 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 412 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 413 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 414 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 415 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 416 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 417 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 418 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 419 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 420 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 421 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 422 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 423 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 424 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 425 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 426 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 427 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 428 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 429 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 430 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 431 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 432 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 433 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 434 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 435 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 436 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 437 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 438 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 439 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 440 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 441 | /wH///8B////AUlJxRVHR7OzUEja5xkZ3OcJC9Rz////Af///wH///8B////Af///wH///8B////Af// 442 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 443 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 444 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 445 | /wH///8B////Af///wH///8B////Af///wE0NqerMC/M/xEP1f8HCM7/IiLo3////wH///8B////Af// 446 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 447 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 448 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 449 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNTW30xcX2v8ODtL/Cg3Q/zEx 450 | 8d////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 451 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 452 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 453 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ATg9 454 | u9MXGtj/DRDR/w8S0f8xNfDf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 455 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 456 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 457 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 458 | /wH///8B////Af///wE4O7rTHx/X/xQW0v8YHNb/ODj23////wH///8B////Af///wH///8B////Af// 459 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkqtH1JL 460 | zjc9O9RdMzW3yy4uoMsQELpJLi7AMf///wH///8B////Af///wH///8B////Af///wH///8B////Af// 461 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 462 | /wH///8B////Af///wH///8B////Af///wH///8BPUOz0yMjzP8YGNH/IiXc/zg58t////8B////Af// 463 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 464 | /wH///8BQkKtG0hKutdRSOD/Gxjb/wkJ0/8JDNH/CgvU/xYWyfMMDNafFBTOEzk5rQP///8B////Af// 465 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 466 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJIrdMpL8f/Hh7R/ycq 467 | 4P8zOe3f////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 468 | /wH///8B////Af///wH///8B////AUVFrStBRq3/KCrb/zIy3v8PEND/DRDR/w4O0v8OD9T/DhLW/x8g 469 | 1v8eH8N/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 470 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 471 | /wE8Q7vTLC/E/yEi0f8uL+L/NDTm6zQxzFUpKdZHMDC/Rzk5lB3///8B////Af///wH///8B////Af// 472 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFDQ6YfLjC64UhOz/9CR+H/HR/K/x0e 473 | xf8XGM3/FxjX/zAx5/8SFtb/IyPm3TEx9x3///8B////Af///wH///8B////Af///wH///8B////Af// 474 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 475 | /wH///8B////Af///wH///8BNzjO0zAxx/8kKNT/NDbi/zM24/8sK9j/JynW/ycr0P8sLNLNODjIG0JC 476 | rQX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJK 477 | rS8kKcVRQkKuUUJGr1FCRa1RMTa62y8xyf+Bh/v/XmLw/x4h4P8xNfV3////Af///wH///8B////Af// 478 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 479 | /wH///8B////Af///wH///8B////Af///wH///8B////ATg7z9MxN8f/KSzW/y8z3P8xMt7/KizW/ykr 480 | 2P8pLNb/LS3a/zo92v9CQs4p////Af///wExMd4rWFbZg05K7IMhKdZR////Af///wH///8B////Af// 481 | /wH///8B////Af///wH///8B////Af///wH///8B////AUJKrSUwMrrZRkjM/4CA/P8hId7/KCjl/f// 482 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 483 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE7Pc/TMzbJ/ysu 484 | 1/89P+H/PD7h/ywu1v8sLdf/NTfd/zo74/8yNN//QEXsyUJC5x1CQqUrTlDQ5UlI3f8pK9X/LzHb9zo6 485 | 4zH///8B////Af///wE5OZY9VlLaV2Zg8Vc4OLFPAAAAEf///wH///8B////Af///wH///8BLS2+Ky0w 486 | wf8tLeD/HSLa/zs77f3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 487 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 488 | /wH///8BPEDT0zY3z/8xM9n/QUTj/0pOz+E+QrnVOjvE5UpN4v+sr/7/RUfr/0BB6P9MTPJtRkarfzs7 489 | 3f8tLtb/Ky/W/z5A5f9gYP01////Af///wFCSq0NYlvPvWxn2/89O97/MTHR4SwslB9CQq0RT02/K1FU 490 | xYtBQbbBO0CywTc5tHEsMcD/IiXS/x4i1f8+QO3/ISHGV////wH///8B////Af///wH///8B////Af// 491 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 492 | /wH///8B////Af///wH///8B////AUBC4tM1Ntf/MTPY/0JH5/9ra/9J////ATEx1ik7Pszfhons/2lp 493 | 8/80Od//R0rx60JCrX8yMtX/Ly/X/ykr1v9CROj/YmL/Nf///wH///8BaGbcR2xpz/9fWev/KSzW/zs8 494 | 6P9KTvdtQkWsvXdw2v9UUe3/KizV/ygp1v8nKNT/Li7U/y0yvf8hJNT/Oz3u/yEp1lX///8B////Af// 495 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 496 | /wH///8B////Af///wH///8B////Af///wH///8B////AUpKrWlBQs3/ODrd/zY42/9CSuf/a3L/Sf// 497 | /wH///8BNDjdMzs90v9AROj/Mjne/1RY8+tJSa1/NzfW/zAy1/8wNt3/SEnq/2Ji/zX///8BSkqtL2ln 498 | z8l7deb/MzPa/y8y2v9HSeb/TE++/Xlw1P9TUOr/KSvW/zc/5P8vMtz/LzLb/zI03f82N+P/JSnV/zxB 499 | 7v80NNK/aGTL5Wtm6/0nK9j9NjrIzycv0mdCSq0v////Af///wH///8B////Af///wH///8B////Af// 500 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFFRa1pQUa7/zo9 501 | 3/82Otv/T1Dy/2Rl/0n///8B////ATY74DE/QcL/NTne/zM12v9bW/HrRUWtfzc62v8yN9z/MjTZ/01P 502 | 7v9iaf81RESwJ2dmxa2Yjej/QUHh/y812/9ITfL/hYfe/09Quv9WUuf/LzHZ/0JD6P8+QOD/LjLR/1BR 503 | 6f99gff/PUHo/zE23v8+ROv/OTrc/01Py/89Qd//KizY/y4w3P8vMdv/MDLX5Sks2dEuLtLRPDy6zSYm 504 | r1MrK7k7MTFrE////wH///8BQ0OtLUpKrTsxMd07Ly/cOyMk1jssMMo7MjKGK////wH///8B////Af// 505 | /wH///8BSkqvaUFFuf88QeH/OT3e/1Za+f9XXPhJ////Af///wFHR+cxSEjE/zc53v85Od7/Xl7z60lJ 506 | rX8+P97/Mznd/zg53f9JSu3/SUvtl2Je3KWJhOP/WVbp/zI12v9GS/D/RUnuv0dJt9dZWOj/Mjfd/zI4 507 | 3f9OUfH3PT3CWzc5x4dOUMv7zc78/2Nm8v9ARuz/REnu/zQ4z/89P8z/jpH2/01Q5f8wMdn/LS7Z/zAz 508 | 3f8zNd3/Mjbe/zU14P8uLtv/MDPS/zU1vFtSUrwJSUivl1NR1Oc7Psz/KirY/yoq2P8kJ9b/Ki7X/yot 509 | weU6Pb6TKSnWB////wH///8B////AUpK3WlDSMH/PDze/z0/3v9cXfT/QkbnSf///wH///8BQEW2d0RF 510 | yf85Pd7/OTne/15e8+tCQq1/OT3Z/zg63f80Odz/QULn/0dK7P9HS9j/aWXs/zQ52f9CRer/S07o/0JG 511 | 1xNCQrPBPkHV/zE12v87PN//UVP18f///wH///8BLTXRb15k3f+Qk/z/PD/n/0hM7/81OtDNOTrApUJE 512 | yv89Qcf/KzLU/y8z2/8sLtf/QETl/zo93v8pLtb/MTLa/y4z2v8xMtnnTk7UgUxLxP85ON3/JinU/ysu 513 | 2f8sL9n/Ky/a/ykt2v8sMN7/LzPg/zMz4bk5OecJ////Af///wFDRrftRkvU/0FF4/9BQ+L/XWD2/0pP 514 | 6nX///8B////AUZJt8deWur/PELe/0JD4/9cXPjrSUmtf0FG3v86Pt7/PkDi/1dd+f9ITOv/S07w/0BD 515 | 5P9CR+f/UFP190JE1mc5Qr0DQ0m4wT8/yv84ON3/Q0Pk/1BQ7sX///8B////ATM01B87PsT/YGH1/z4/ 516 | 4/9MTu7/OkDlk0JCrQk8PbYfQkqtH0RFvOk2N8z/MDTZ/0ZI6f9AQtj/MDTb/y4x1v8xMtr/MjbZZTs7 517 | 4IE9Pr7/Ki/V/zAw1v88Qej/MTXd/ysu2P8tMNn/KyzY/ywy2f8zOOD/REjvr0JC3RX///8BSUrH/0lP 518 | 6/9CReH/UlPq/05V8P9WWfT1TE3qYywtfVdfXcDvc27h/z9F5P9ITOn/VVn12URErX9DQ9j/P0Lg/zs/ 519 | 3/9gZf7/f4P4/0hM6v9MTO3/UVby/0lR6X3///8B////AUFEtME7Pc//OTne/0RF5f9RV+7F////Af// 520 | /wE/RbYfPUDF/zg53f84Ot//TVHx/0JI55P///8B////Af///wE+P87lNjrO/zE02f9GSub/VFrYcTs7 521 | wKc8QbrhNjjOYTk5zhkzOd6BOz2+/y4x1v8rMdf/Uln4uTY2ym06PL3hPDy77zI11P9LUe7/S07p/zs/ 522 | 5/9DSO+n////AUlJuP9JTOH/Rkfk/1lb8P9ZXvT/TlTw/1JY9f9JTeD/UVXT/2pp7/9CReT/WFry/2Zu 523 | /1VGRq1/REbC/0FD3/89RuL/YWX8/9PV/v+Rlfn/SUvs/1pb8P9OTtBR////Af///wFERLfBO0De/0JE 524 | 5/9EROf/WFj38f///wH///8BQkqtGzxAyO85Pd7/OTre/0dH7P9XW/eT////Af///wH///8BQEbQ5Tk8 525 | 0P81Ntv/SUro/2tu/zf///8B////Af///wH///8BNT3egT0+vv8xMdj/MTXa/1hc/Zv///8B////AUJC 526 | rTc7PbvtX2TT/9DS//9LTun/PkLo60pK7zlHR6//Skrd/0pN5/9bXfL/hYf+/4WJ+f9RU+v/TVHu/0pP 527 | 7P9JSuf/T1Pu/1xe9+dMVPA3Skq/f0ZIwf9CRuP/REfj/2Rm+P9rb+b/3eH9/3x+9/9MUe3/V1zx6TEx 528 | oTv///8BR0e9i0FDyP9fYvj/SUvq/15g9PH///8B////AUJFrRs+Q8jxQEDU/zw83v86Pt7/amr/k/// 529 | /wH///8BOUKcLUNGzu88PdD/OD3e/0tM6v9ra/83////Af///wH///8BMTF7CTY7xK8/QL//NDfb/zU3 530 | 2/9WWP2b////Af///wH///8BQEavNzg/yeORk9r/j5L1/zs/4/9RWvafR0rB/1pc5/+Fh/n/WVzw/3Fy 531 | 9v+hovj/gYP8/1Ra8P9KTun/TlDt/1BR6f9NTcij////AUtQ239JScP/SEnm/0hI5P9mZ/X/SUrP/3+A 532 | 4//Z2v//Z2vy/1RY8f9RVc/hPD6hD0ZIuCtDRcf/en/w/4aH+P9OUOn7Zm38f0pS7wc4QJgfPUG9/0RF 533 | xf8+Qd//QEHi/3J4/5P///8B////AT9CpH1HR9H/PUHU/zw+3v9NUO7/ZGv/N////wH///8B////ATAw 534 | gRk4OLP/QkLB/zg53f83Odz/S1Hxm////wH///8B////Af///wE/QbOzRUfI/2pv9v87PuP/TlLx/0ZJ 535 | vqVXWMr/pKX4/1xe8P1PT913R07C01RYzv1TVez/S1Ho/UpK1flGRs1nQkKtEf///wFSUup/R0fF/0pK 536 | 5/9KS+f/aWv1/0hJxaVHSsn/s7bk/8XH/f9ZXPD/XWX3/1ZX8W1CSq0RQke8vWZn4v/V1f7/c3b4/1la 537 | 8f9PVOOlOzycpT1Drf9FScX/Q0bk/0JC4v97fv+T////Af///wFCRq19REjc/0BC3f89QuL/S0/s/2Jm 538 | /zf///8B////Af///wE1NYgZOzu1/0BCwf85Pt7/OTze/0lJ6Zv///8B////Af///wH///8BOjqXWUBE 539 | tv9BRuf/Ojvg/1Zb8f////8BREq2e0REuJNCQq1N////Af///wFCQqxRQkStk0JKrSH///8B////Af// 540 | /wH///8BVVXyf0hKxf9KT+f/TU3q/3J499VKSucfQkmwYUxO1P/Gx/r/sLH9/01T6v9rbPzNa2v/G/// 541 | /wFDRsf9iYng/9TU/v9lZfL/VFjy/09T7v9OT+z/TFDs/0dL5/9HS+f/dHT/k////wH///8BQkatfUlK 542 | 4/9CQuT/QEPk/0xR7f9aX/s3////Af///wH///8BOEKXGT9DvP9DRMH/PUHe/z4+4f9BQeOb////Af// 543 | /wH///8B////AURErQs+QsutOTrd/zg84P9WVvH/////Af///wH///8B////Af///wH///8B////Af// 544 | /wH///8B////Af///wH///8B////AVhY9X9KTMb/T1Hp/1BS7f+Iif6d////AUJCrQNKSs2LcnLT/+Hi 545 | +P+Jivn/XWDz/3B3/T////8BSEi2Z01Qzs93e93/lZX6/11h+P9PU+z/S03p/05P7P9RUe7/T1Ll/1FX 546 | 8m////8B////AUJIrX1MTeL/RUjm/0ZG5f9WWfX/U1j1N////wH///8B////AUBCoBlFSMb/RUfE/0FC 547 | 4P9LT+r/REXgH////wH///8B////Af///wFHR60ZR0jE70NF5v8+QOD/WFrx/////wH///8B////Af// 548 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFXV+9/SUnI/1JS7f9RUuf/iY39nf// 549 | /wH///8BQUGsJ0VGu92Fh+X/sLD4/1JV4u1KU8g7////Af///wFKSs4VQ0m2t01P1e1UVeP9TU7m/0pR 550 | 5P9JSuT5S0ve0UVFxFf///8B////Af///wFCSq19SErU/0lK5/9FSOX/Xl73/1FR7jf///8B////Af// 551 | /wFCR60ZRkjK/0NI0f9CR+X/WVvv/2tu/AX///8B////Af///wH///8BVlW9J1BUu/9NUOn/O0De/15h 552 | 8f////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE5OYwLVVXTvU5Q 553 | yP9TVu//Wlrv/4mJ/p3///8B////Af///wFCSq0lTE7Pg0lJrYNKSq0L////Af///wH///8B////Af// 554 | /wH///8BREqtc0lJrYNCRa2DSUmtVf///wH///8B////Af///wH///8BQkatfUxO0v9LTOn/TE7p/2Nm 555 | 9f9NTec3////Af///wH///8BQkatGUpMzv9LTOn/Rkrn/2Vo9P97f/8F////Af///wH///8B////AU9O 556 | rLOQiNr/UlXo/0dK5/9fYfb/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 557 | /wH///8BQUOkFVFTzf9VWOH/WFnv/1JX7/+Jif6d////Af///wH///8B////Af///wH///8B////Af// 558 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJJ 559 | rX1FSsn/TE/p/01N6v9lafbhS1LnJf///wH///8B////AUJJrRlGTMT/Skvm/0pK5/9nZ/T/fX7/Bf// 560 | /wH///8B////AUtMrHF6dtf3iYHq/0pL5v9LUeb/XWL00f///wH///8B////Af///wH///8B////Af// 561 | /wH///8B////Af///wH///8B////AUJKrRVQVMr/XmDy/1lb7/9cYfL/g4P+nf///wH///8B////Af// 562 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 563 | /wH///8BNjaJH0JCrQ1CRa19SUzL/1FS6/9QU+3/Y2jh5Tk5oSf///8B////Af///wFCRa0ZRUez/01O 564 | 5v9LT+j/b3D2/4iJ/wX///8BQkKtA0JCoWleXtD3enfg/19e7/9KTun/XmX132ty/x3///8B////Af// 565 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFCSq0VQkat/1lf6/9eYfP/am/3/3Z3 566 | /53///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 567 | /wH///8B////Af///wH///8Bb2/uS3Ftw+1ubOizU1XcxU1P1/9SVe3/UlXq/2Jk3P86PJaJOTmUBTg4 568 | lE////8BRkqxGURFr/9QUOT/UFLt/21y9P+IjP8FQkKtH0NHrpNbWc3/dXHz/1ZV6v9MTun/XmL3/19m 569 | +oH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQkatFUpP 570 | v/95fOX/trb+/2hs+v9jZPdl////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 571 | /wH///8B////Af///wH///8B////Af///wH///8BS0quO2Bc1rVoZe3/W1/z/1ti9v9hZfj/XV/0/1lb 572 | 8P9ydPf/WVnt/Vlg9vVZWe37VlbDtVRU1hlPT8H/VVXp/1JT7v94evf/QD+d9V5c1vdrZ/b/WF3x/1JT 573 | 6/9YW/H/YWP5/1dc491LS7En////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 574 | /wH///8B////AUJCrAVISLyBYWPRz3+E6c1XWNbLSkzAB////wH///8B////Af///wH///8B////Af// 575 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AURErntWVtr/fH7w/3N5 576 | +f9bY/H/W17y/1xh9P9gYPX/b3H5/15h9f9aYfX/YGH1/3R0+7thYfMZUlLP/1NU6f9XV+7/dHX2/11d 577 | 6/9aWvD/V1ju/1Vb8P9eZPr/YGP5/1JX1+VKUdYt////Af///wH///8B////Af///wH///8B////Af// 578 | /wH///8B////Af///wH///8B////Af///wH///8B////AUJKrQVCSq0F////Af///wH///8B////Af// 579 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 580 | /wFQUMcDUFTM+YOE2f2Cg/n/XWLx/19f8/9bYvD/XWHz/11e8/9bYfL/X1/z/1td8v9hYfS7Y2P2GVRU 581 | 0f9WW+n/WVrv/2xv+P9bXfH/XWP3/2Fh9/9iZfn/XGD3/Vdb7ZFCQqwv////Af///wH///8B////Af// 582 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 583 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 584 | /wH///8B////Af///wH///8B////Af///wFESqx3SUqtj0JGrY9aX+qPWWDqn1dc4cFYXeO5UVbW6WJi 585 | 9o9aWu+PTU3AaV9j9hlSVNH/f3/y/3p89f9fZfX/aWr9/2Rn+P9XXOP5XmP3j0ZHumf///8B////Af// 586 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 587 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 588 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUJJ 589 | rQdCSq0RQkmtD0JKrR////8B////Af///wFGT7sTT1PR3Y2P7/+7vv7/Y2X3/2Nk971OUMubS1DGJf// 590 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 591 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 592 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 593 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpa3itNUbzbWFnM0V1j 594 | 8lNaY+8D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 595 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 596 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 597 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 598 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 599 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 600 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 601 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 602 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 603 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 604 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 605 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 606 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 607 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 608 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 609 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 610 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 611 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 612 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 613 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 614 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 615 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 616 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 617 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 618 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 619 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 620 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 621 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 622 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 623 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 624 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 625 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 626 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 627 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 628 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 629 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 630 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 631 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 632 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 633 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 634 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 635 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 636 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 637 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 638 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 639 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 640 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 641 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 642 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 643 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 644 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 645 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 646 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 647 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 648 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 649 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 650 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 651 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 652 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 653 | /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// 654 | /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 655 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 656 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 657 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 658 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 659 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 660 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 661 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 662 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 663 | 664 | 665 | --------------------------------------------------------------------------------