diff --git a/.gitignore b/.gitignore index 164007dc..2f97a261 100644 --- a/.gitignore +++ b/.gitignore @@ -251,5 +251,12 @@ paket-files/ .idea/ *.sln.iml *.snk -/AutoUpdater.NET/lib -/AutoUpdater.NET/build/lib/net40 + +# AutoUpdater.NET +/AutoUpdater.NET/build/lib/ +/AutoUpdater.NET/Resources/ZipExtractor.exe +/AutoUpdater.NET/Resources/ZipExtractor.exe.config +/AutoUpdater.NET/Resources/ZipExtractor.runtimeconfig.json +/AutoUpdater.NET/Resources/ZipExtractor.runtimeconfig.dev.json +/AutoUpdater.NET/Resources/ZipExtractor.dll +/AutoUpdater.NET/Resources/ZipExtractor.deps.json diff --git a/AutoUpdater.NET.sln b/AutoUpdater.NET.sln index 39e677ff..8b512fc2 100644 --- a/AutoUpdater.NET.sln +++ b/AutoUpdater.NET.sln @@ -8,78 +8,37 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoUpdater.NET", "AutoUpda {91DE558C-6DB8-429B-A069-C0491DCFF15B} = {91DE558C-6DB8-429B-A069-C0491DCFF15B} EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoUpdaterTest", "AutoUpdaterTest\AutoUpdaterTest.csproj", "{FD5AE762-C630-49F8-B814-FCF70E7838D1}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZipExtractor", "ZipExtractor\ZipExtractor.csproj", "{91DE558C-6DB8-429B-A069-C0491DCFF15B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoUpdaterTestWPF", "AutoUpdaterTestWPF\AutoUpdaterTestWPF.csproj", "{9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1DBD2EE1-6C31-4B24-9212-E221404F4ADE}" ProjectSection(SolutionItems) = preProject .gitignore = .gitignore appveyor.yml = appveyor.yml LICENSE = LICENSE README.md = README.md + build.bat = build.bat EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZipExtractor", "ZipExtractor\ZipExtractor.csproj", "{EDB311FC-50D3-468B-AC36-4CDFE04D29A3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoUpdaterTest", "AutoUpdaterTest\AutoUpdaterTest.csproj", "{5C1E186E-2622-425D-8E90-2CC6C25EDE29}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug-NET35|Any CPU = Debug-NET35|Any CPU - Debug-NET40|Any CPU = Debug-NET40|Any CPU Release|Any CPU = Release|Any CPU - Release-NET35|Any CPU = Release-NET35|Any CPU - Release-NET40|Any CPU = Release-NET40|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Debug-NET35|Any CPU.ActiveCfg = Debug-NET35|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Debug-NET35|Any CPU.Build.0 = Debug-NET35|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Debug-NET40|Any CPU.ActiveCfg = Debug-NET40|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Debug-NET40|Any CPU.Build.0 = Debug-NET40|Any CPU {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Release|Any CPU.Build.0 = Release|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Release-NET35|Any CPU.ActiveCfg = Release-NET35|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Release-NET35|Any CPU.Build.0 = Release-NET35|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Release-NET40|Any CPU.ActiveCfg = Release-NET40|Any CPU - {FB9E7E6B-B19F-4F37-A708-2996190CEF13}.Release-NET40|Any CPU.Build.0 = Release-NET40|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Debug-NET35|Any CPU.ActiveCfg = Debug|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Debug-NET35|Any CPU.Build.0 = Debug|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Debug-NET40|Any CPU.ActiveCfg = Debug|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Debug-NET40|Any CPU.Build.0 = Debug|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Release|Any CPU.Build.0 = Release|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Release-NET35|Any CPU.ActiveCfg = Release|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Release-NET35|Any CPU.Build.0 = Release|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Release-NET40|Any CPU.ActiveCfg = Release|Any CPU - {FD5AE762-C630-49F8-B814-FCF70E7838D1}.Release-NET40|Any CPU.Build.0 = Release|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Debug-NET35|Any CPU.ActiveCfg = Debug-NET35|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Debug-NET35|Any CPU.Build.0 = Debug-NET35|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Debug-NET40|Any CPU.ActiveCfg = Debug-NET40|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Debug-NET40|Any CPU.Build.0 = Debug-NET40|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Release|Any CPU.Build.0 = Release|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Release-NET35|Any CPU.ActiveCfg = Release-NET35|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Release-NET35|Any CPU.Build.0 = Release-NET35|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Release-NET40|Any CPU.ActiveCfg = Release-NET40|Any CPU - {91DE558C-6DB8-429B-A069-C0491DCFF15B}.Release-NET40|Any CPU.Build.0 = Release-NET40|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Debug-NET35|Any CPU.ActiveCfg = Debug|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Debug-NET35|Any CPU.Build.0 = Debug|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Debug-NET40|Any CPU.ActiveCfg = Debug|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Debug-NET40|Any CPU.Build.0 = Debug|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Release|Any CPU.Build.0 = Release|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Release-NET35|Any CPU.ActiveCfg = Release|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Release-NET35|Any CPU.Build.0 = Release|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Release-NET40|Any CPU.ActiveCfg = Release|Any CPU - {9AEE4F21-5ED5-4C7E-9249-8A680123B5E3}.Release-NET40|Any CPU.Build.0 = Release|Any CPU + {EDB311FC-50D3-468B-AC36-4CDFE04D29A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EDB311FC-50D3-468B-AC36-4CDFE04D29A3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDB311FC-50D3-468B-AC36-4CDFE04D29A3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EDB311FC-50D3-468B-AC36-4CDFE04D29A3}.Release|Any CPU.Build.0 = Release|Any CPU + {5C1E186E-2622-425D-8E90-2CC6C25EDE29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5C1E186E-2622-425D-8E90-2CC6C25EDE29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C1E186E-2622-425D-8E90-2CC6C25EDE29}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5C1E186E-2622-425D-8E90-2CC6C25EDE29}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AutoUpdater.NET/AutoUpdater.NET.csproj b/AutoUpdater.NET/AutoUpdater.NET.csproj index 5eb9377a..2d680f5c 100644 --- a/AutoUpdater.NET/AutoUpdater.NET.csproj +++ b/AutoUpdater.NET/AutoUpdater.NET.csproj @@ -1,396 +1,245 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {FB9E7E6B-B19F-4F37-A708-2996190CEF13} - library - Properties - AutoUpdaterDotNET - AutoUpdater.NET - v4.0 - 512 - - - - - - true - full - false - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - TRACE - prompt - 4 - false - - - v2.0 - bin\Debug\net20 - bin\Debug\net20\AutoUpdater.NET.XML - - - v2.0 - build\lib\net20 - build\lib\net20\AutoUpdater.NET.XML - - - v3.5 - bin\Debug\net35 - bin\Debug\net35\AutoUpdater.NET.XML - - - v3.5 - build\lib\net35 - build\lib\net35\AutoUpdater.NET.XML - - - v4.0 - bin\Debug\net40 - bin\Debug\net40\AutoUpdater.NET.XML - - - v4.0 - build\lib\net40 - build\lib\net40\AutoUpdater.NET.XML - - - true - - - AutoUpdater.NET.snk - - - - $(DefineConstants);NETWPF - true - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - Form - - - DownloadUpdateDialog.cs - - - - - - Component - - - - - Form - - - RemindLaterForm.cs - - - Form - - - UpdateForm.cs - - - - True - True - Resources.resx - - - - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - - - DownloadUpdateDialog.cs - Designer - - - - - - - - - - - - - Designer - - - - - - Designer - - - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - - - RemindLaterForm.cs - Designer - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - Designer - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - - - UpdateForm.cs - Designer - - - - - - Designer - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - + + + + {FB9E7E6B-B19F-4F37-A708-2996190CEF13} + library + net462;netcoreapp3.1;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows + true + true + AutoUpdaterDotNET + AutoUpdater.NET + RBSoft + AutoUpdater.NET + Copyright © 2012-2024 RBSoft + 1.9.3.0 + 1.9.3.0 + 1.9.3.0 + 1.9.3.0 + true + AutoUpdater.NET.snk + en + Autoupdater.NET.Official + true + MIT + AutoUpdater.NET + rbsoft + AutoUpdater.NET is a class library that allows .NET developers to easily add auto update functionality to their WinForms or WPF application projects. + https://github.com/ravibpatel/AutoUpdater.NET + autoupdate updater c# vb wpf winforms + https://github.com/ravibpatel/AutoUpdater.NET/releases + build + $(OutDir)\AutoUpdater.NET.xml + latest + + + pdbonly + + + full + + + + + + + + + + + + + + + + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + DownloadUpdateDialog.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + RemindLaterForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + + UpdateForm.cs + + \ No newline at end of file diff --git a/AutoUpdater.NET/AutoUpdater.cs b/AutoUpdater.NET/AutoUpdater.cs index 78e507af..480419c5 100644 --- a/AutoUpdater.NET/AutoUpdater.cs +++ b/AutoUpdater.NET/AutoUpdater.cs @@ -8,677 +8,751 @@ using System.Net.Cache; using System.Reflection; using System.Threading; +using System.Windows; using System.Windows.Forms; using System.Xml; using System.Xml.Serialization; using AutoUpdaterDotNET.Properties; +using Application = System.Windows.Forms.Application; +using MessageBox = System.Windows.Forms.MessageBox; +using Size = System.Drawing.Size; +using Timer = System.Timers.Timer; +using WinFormsMethodInvoker = System.Windows.Forms.MethodInvoker; + +namespace AutoUpdaterDotNET; + +/// +/// Enum representing the remind later time span. +/// +public enum RemindLaterFormat +{ + /// + /// Represents the time span in minutes. + /// + Minutes, + + /// + /// Represents the time span in hours. + /// + Hours, + + /// + /// Represents the time span in days. + /// + Days +} + +/// +/// Enum representing the effect of Mandatory flag. +/// +public enum Mode +{ + /// + /// In this mode, it ignores Remind Later and Skip values set previously and hide both buttons. + /// + [XmlEnum("0")] Normal, + + /// + /// In this mode, it won't show close button in addition to Normal mode behaviour. + /// + [XmlEnum("1")] Forced, -namespace AutoUpdaterDotNET + /// + /// In this mode, it will start downloading and applying update without showing standard update dialog in addition to + /// Forced mode behaviour. + /// + [XmlEnum("2")] ForcedDownload +} + +/// +/// Main class that lets you auto update applications by setting some static fields and executing its Start method. +/// +public static class AutoUpdater { /// - /// Enum representing the remind later time span. + /// A delegate type to handle how to exit the application after update is downloaded. + /// + public delegate void ApplicationExitEventHandler(); + + /// + /// A delegate type for hooking up update notifications. + /// + /// + /// An object containing all the parameters received from AppCast XML file. If there will be an error + /// while looking for the XML file then this object will be null. + /// + public delegate void CheckForUpdateEventHandler(UpdateInfoEventArgs args); + + /// + /// A delegate type for hooking up parsing logic. + /// + /// An object containing the AppCast file received from server. + public delegate void ParseUpdateInfoHandler(ParseUpdateInfoEventArgs args); + + private static bool _isWinFormsApplication; + + private static IWin32Window _owner; + + private static Timer _remindLaterTimer; + + internal static Uri BaseUri; + + internal static bool Running; + + /// + /// URL of the xml file that contains information about latest version of the application. + /// + public static string AppCastURL; + + /// + /// Set the Application Title shown in Update dialog. Although AutoUpdater.NET will get it automatically, you can set + /// this property if you like to give custom Title. + /// + public static string AppTitle; + + /// + /// Set Basic Authentication credentials to navigate to the change log URL. + /// + public static IAuthentication BasicAuthChangeLog; + + /// + /// Set Basic Authentication credentials required to download the file. + /// + public static IAuthentication BasicAuthDownload; + + /// + /// Set Basic Authentication credentials required to download the XML file. + /// + public static IAuthentication BasicAuthXML; + + /// + /// Set this to true if you want to clear application directory before extracting update. + /// + public static bool ClearAppDirectory = false; + + /// + /// Set it to folder path where you want to download the update file. If not provided then it defaults to Temp folder. + /// + public static string DownloadPath; + + /// + /// If you are using a zip file as an update file, then you can set this value to a new executable path relative to the + /// installation directory. + /// + public static string ExecutablePath; + + /// + /// Login/password/domain for FTP-request + /// + public static NetworkCredential FtpCredentials; + + /// + /// Set the User-Agent string to be used for HTTP web requests. + /// + public static string HttpUserAgent; + + /// + /// Set this to change the icon shown on updater dialog. + /// + public static Bitmap Icon; + + /// + /// If you are using a zip file as an update file then you can set this value to path where your app is installed. This + /// is only necessary when your installation directory differs from your executable path. + /// + public static string InstallationPath; + + /// + /// You can set this field to your current version if you don't want to determine the version from the assembly. + /// + public static Version InstalledVersion; + + /// + /// If this is true users see dialog where they can set remind later interval otherwise it will take the interval from + /// RemindLaterAt and RemindLaterTimeSpan fields. + /// + public static bool LetUserSelectRemindLater = true; + + /// + /// Set this to true if you want to ignore previously assigned Remind Later and Skip settings. It will also hide Remind + /// Later and Skip buttons. + /// + public static bool Mandatory; + + /// + /// Opens the download URL in default browser if true. Very useful if you have portable application. + /// + public static bool OpenDownloadPage; + + /// + /// Set this to an instance implementing the IPersistenceProvider interface for using a data storage method different + /// from the default Windows Registry based one. + /// + public static IPersistenceProvider PersistenceProvider; + + /// + /// Set Proxy server to use for all the web requests in AutoUpdater.NET. + /// + public static IWebProxy Proxy; + + /// + /// Remind Later interval after user should be reminded of update. /// - public enum RemindLaterFormat + public static int RemindLaterAt = 2; + + /// + /// Set if RemindLaterAt interval should be in Minutes, Hours or Days. + /// + public static RemindLaterFormat RemindLaterTimeSpan = RemindLaterFormat.Days; + + /// + /// AutoUpdater.NET will report errors if this is true. + /// + public static bool ReportErrors = false; + + /// + /// Set this to false if your application doesn't need administrator privileges to replace the old version. + /// + public static bool RunUpdateAsAdmin = true; + + /// + /// If this is true users can see the Remind Later button. + /// + public static bool ShowRemindLaterButton = true; + + /// + /// If this is true users can see the skip button. + /// + public static bool ShowSkipButton = true; + + /// + /// Set this to true if you want to run update check synchronously. + /// + public static bool Synchronous = false; + + /// + /// Modify TopMost property of all dialogs. + /// + public static bool TopMost = false; + + /// + /// Set this if you want the default update form to have a different size. + /// + public static Size? UpdateFormSize = null; + + /// + /// Set this to any of the available modes to change behaviour of the Mandatory flag. + /// + public static Mode UpdateMode; + + /// + /// An event that developers can use to exit the application gracefully. + /// + public static event ApplicationExitEventHandler ApplicationExitEvent; + + /// + /// An event that clients can use to be notified whenever the update is checked. + /// + public static event CheckForUpdateEventHandler CheckForUpdateEvent; + + /// + /// An event that clients can use to be notified whenever the AppCast file needs parsing. + /// + public static event ParseUpdateInfoHandler ParseUpdateInfoEvent; + + /// + /// Set the owner for all dialogs. + /// + /// WPF Window or Windows Form object to be used as owner for all dialogs. + public static void SetOwner(object obj) + { + _owner = obj switch + { + Form form => form, + Window window => new Wpf32Window(window), + _ => _owner + }; + } + + /// + /// Start checking for new version of application and display a dialog to the user if update is available. + /// + /// Assembly to use for version checking. + public static void Start(Assembly myAssembly = null) { - /// - /// Represents the time span in minutes. - /// - Minutes, - - /// - /// Represents the time span in hours. - /// - Hours, - - /// - /// Represents the time span in days. - /// - Days + Start(AppCastURL, myAssembly); } /// - /// Enum representing the effect of Mandatory flag. + /// Start checking for new version of application via FTP and display a dialog to the user if update is available. /// - public enum Mode + /// FTP URL of the xml file that contains information about latest version of the application. + /// Credentials required to connect to FTP server. + /// Assembly to use for version checking. + public static void Start(string appCast, NetworkCredential ftpCredentials, Assembly myAssembly = null) { - /// - /// In this mode, it ignores Remind Later and Skip values set previously and hide both buttons. - /// - [XmlEnum("0")] Normal, - - /// - /// In this mode, it won't show close button in addition to Normal mode behaviour. - /// - [XmlEnum("1")] Forced, - - /// - /// In this mode, it will start downloading and applying update without showing standard update dialog in addition to Forced mode behaviour. - /// - [XmlEnum("2")] ForcedDownload + FtpCredentials = ftpCredentials; + Start(appCast, myAssembly); } /// - /// Main class that lets you auto update applications by setting some static fields and executing its Start method. + /// Start checking for new version of application and display a dialog to the user if update is available. /// - public static class AutoUpdater + /// URL of the xml file that contains information about latest version of the application. + /// Assembly to use for version checking. + public static void Start(string appCast, Assembly myAssembly = null) { - private static System.Timers.Timer _remindLaterTimer; - - internal static bool IsWinFormsApplication; - - internal static Uri BaseUri; - - internal static bool Running; - - /// - /// Set it to folder path where you want to download the update file. If not provided then it defaults to Temp folder. - /// - public static string DownloadPath; - - /// - /// If you are using a zip file as an update file then you can set this value to path where your app is installed. This is only necessary when your installation directory differs from your executable path. - /// - public static string InstallationPath; - - /// - /// Set the Application Title shown in Update dialog. Although AutoUpdater.NET will get it automatically, you can set this property if you like to give custom Title. - /// - public static string AppTitle; - - /// - /// URL of the xml file that contains information about latest version of the application. - /// - public static string AppCastURL; - - /// - /// Login/password/domain for FTP-request - /// - public static NetworkCredential FtpCredentials; - - /// - /// Opens the download URL in default browser if true. Very usefull if you have portable application. - /// - public static bool OpenDownloadPage; - - /// - /// Set Basic Authentication credentials required to download the file. - /// - public static IAuthentication BasicAuthDownload; - - /// - /// Set Basic Authentication credentials required to download the XML file. - /// - public static IAuthentication BasicAuthXML; - - /// - /// Set Basic Authentication credentials to navigate to the change log URL. - /// - public static IAuthentication BasicAuthChangeLog; - - /// - /// Set the User-Agent string to be used for HTTP web requests. - /// - public static string HttpUserAgent; - - /// - /// If this is true users can see the skip button. - /// - public static bool ShowSkipButton = true; - - /// - /// If this is true users can see the Remind Later button. - /// - public static bool ShowRemindLaterButton = true; - - /// - /// If this is true users see dialog where they can set remind later interval otherwise it will take the interval from - /// RemindLaterAt and RemindLaterTimeSpan fields. - /// - public static bool LetUserSelectRemindLater = true; - - /// - /// Remind Later interval after user should be reminded of update. - /// - public static int RemindLaterAt = 2; - - /// - /// AutoUpdater.NET will report errors if this is true. - /// - public static bool ReportErrors = false; - - /// - /// Set this to false if your application doesn't need administrator privileges to replace the old version. - /// - public static bool RunUpdateAsAdmin = true; - - /// - /// Set this to true if you want to run update check synchronously. - /// - public static bool Synchronous = false; - - /// - /// Set this to true if you want to ignore previously assigned Remind Later and Skip settings. It will also hide Remind Later and Skip buttons. - /// - public static bool Mandatory; - - /// - /// Set this to any of the available modes to change behaviour of the Mandatory flag. - /// - public static Mode UpdateMode; - - /// - /// Set Proxy server to use for all the web requests in AutoUpdater.NET. - /// - public static IWebProxy Proxy; - - /// - /// Set this to an instance implementing the IPersistenceProvider interface for using a data storage method different from the default Windows Registry based one. - /// - public static IPersistenceProvider PersistenceProvider; - - /// - /// Set if RemindLaterAt interval should be in Minutes, Hours or Days. - /// - public static RemindLaterFormat RemindLaterTimeSpan = RemindLaterFormat.Days; - - /// - /// A delegate type to handle how to exit the application after update is downloaded. - /// - public delegate void ApplicationExitEventHandler(); - - /// - /// An event that developers can use to exit the application gracefully. - /// - public static event ApplicationExitEventHandler ApplicationExitEvent; - - /// - /// A delegate type for hooking up update notifications. - /// - /// An object containing all the parameters received from AppCast XML file. If there will be an error while looking for the XML file then this object will be null. - public delegate void CheckForUpdateEventHandler(UpdateInfoEventArgs args); - - /// - /// An event that clients can use to be notified whenever the update is checked. - /// - public static event CheckForUpdateEventHandler CheckForUpdateEvent; - - /// - /// A delegate type for hooking up parsing logic. - /// - /// An object containing the AppCast file received from server. - public delegate void ParseUpdateInfoHandler(ParseUpdateInfoEventArgs args); - - /// - /// An event that clients can use to be notified whenever the AppCast file needs parsing. - /// - public static event ParseUpdateInfoHandler ParseUpdateInfoEvent; - - /// - /// Set if you want the default update form to have a different size. - /// - public static Size? UpdateFormSize = null; - - /// - /// Start checking for new version of application and display a dialog to the user if update is available. - /// - /// Assembly to use for version checking. - public static void Start(Assembly myAssembly = null) - { - Start(AppCastURL, myAssembly); + try + { + ServicePointManager.SecurityProtocol |= (SecurityProtocolType)192 | + (SecurityProtocolType)768 | (SecurityProtocolType)3072; + } + catch (NotSupportedException) + { + } + + if (Mandatory && _remindLaterTimer != null) + { + _remindLaterTimer.Stop(); + _remindLaterTimer.Close(); + _remindLaterTimer = null; + } + + if (Running || _remindLaterTimer != null) + { + return; } - /// - /// Start checking for new version of application via FTP and display a dialog to the user if update is available. - /// - /// FTP URL of the xml file that contains information about latest version of the application. - /// Credentials required to connect to FTP server. - /// Assembly to use for version checking. - public static void Start(string appCast, NetworkCredential ftpCredentials, Assembly myAssembly = null) + Running = true; + + AppCastURL = appCast; + + _isWinFormsApplication = Application.MessageLoop; + + if (!_isWinFormsApplication) { - FtpCredentials = ftpCredentials; - Start(appCast, myAssembly); + Application.EnableVisualStyles(); } - /// - /// Start checking for new version of application and display a dialog to the user if update is available. - /// - /// URL of the xml file that contains information about latest version of the application. - /// Assembly to use for version checking. - public static void Start(string appCast, Assembly myAssembly = null) + Assembly assembly = myAssembly ?? Assembly.GetEntryAssembly(); + + if (Synchronous) { try { - ServicePointManager.SecurityProtocol |= (SecurityProtocolType) 192 | - (SecurityProtocolType) 768 | (SecurityProtocolType) 3072; - } - catch (NotSupportedException) - { - } + object result = CheckUpdate(assembly); - if (Mandatory && _remindLaterTimer != null) + if (StartUpdate(result)) + { + return; + } + + Running = false; + } + catch (Exception exception) { - _remindLaterTimer.Stop(); - _remindLaterTimer.Close(); - _remindLaterTimer = null; + ShowError(exception); } + } + else + { + using var backgroundWorker = new BackgroundWorker(); - if (!Running && _remindLaterTimer == null) + backgroundWorker.DoWork += (_, args) => { - Running = true; - - AppCastURL = appCast; + var mainAssembly = args.Argument as Assembly; - IsWinFormsApplication = Application.MessageLoop; + args.Result = CheckUpdate(mainAssembly); + }; - if (!IsWinFormsApplication) + backgroundWorker.RunWorkerCompleted += (_, args) => + { + if (args.Error != null) { - Application.EnableVisualStyles(); + ShowError(args.Error); } - - Assembly assembly = myAssembly ?? Assembly.GetEntryAssembly(); - - if (Synchronous) + else { - try - { - var result = CheckUpdate(assembly); - - Running = StartUpdate(result); - } - catch (Exception exception) + if (!args.Cancelled && StartUpdate(args.Result)) { - ShowError(exception); + return; } + + Running = false; } - else - { - using (var backgroundWorker = new BackgroundWorker()) - { - backgroundWorker.DoWork += (sender, args) => - { - Assembly mainAssembly = args.Argument as Assembly; + }; - args.Result = CheckUpdate(mainAssembly); - }; + backgroundWorker.RunWorkerAsync(assembly); + } + } - backgroundWorker.RunWorkerCompleted += (sender, args) => - { - if (args.Error != null) - { - ShowError(args.Error); - } - else - { - if (!args.Cancelled) - { - if (StartUpdate(args.Result)) - { - return; - } - } - } - - Running = false; - }; - - backgroundWorker.RunWorkerAsync(assembly); - } - } - } + private static object CheckUpdate(Assembly mainAssembly) + { + var companyAttribute = + (AssemblyCompanyAttribute)GetAttribute(mainAssembly, typeof(AssemblyCompanyAttribute)); + string appCompany = companyAttribute != null ? companyAttribute.Company : ""; + + if (string.IsNullOrEmpty(AppTitle)) + { + var titleAttribute = + (AssemblyTitleAttribute)GetAttribute(mainAssembly, typeof(AssemblyTitleAttribute)); + AppTitle = titleAttribute != null ? titleAttribute.Title : mainAssembly.GetName().Name; } - private static object CheckUpdate(Assembly mainAssembly) + string registryLocation = !string.IsNullOrEmpty(appCompany) + ? $@"Software\{appCompany}\{AppTitle}\AutoUpdater" + : $@"Software\{AppTitle}\AutoUpdater"; + + PersistenceProvider ??= new RegistryPersistenceProvider(registryLocation); + + UpdateInfoEventArgs args; + string xml = null; + + if (AppCastURL != null) { - var companyAttribute = - (AssemblyCompanyAttribute) GetAttribute(mainAssembly, typeof(AssemblyCompanyAttribute)); - string appCompany = companyAttribute != null ? companyAttribute.Company : ""; + BaseUri = new Uri(AppCastURL); + using MyWebClient client = GetWebClient(BaseUri, BasicAuthXML); + xml = client.DownloadString(BaseUri); + } - if (string.IsNullOrEmpty(AppTitle)) + if (ParseUpdateInfoEvent == null) + { + if (string.IsNullOrEmpty(xml)) { - var titleAttribute = - (AssemblyTitleAttribute) GetAttribute(mainAssembly, typeof(AssemblyTitleAttribute)); - AppTitle = titleAttribute != null ? titleAttribute.Title : mainAssembly.GetName().Name; + throw new Exception("It is required to handle ParseUpdateInfoEvent when XML url is not specified."); } - string registryLocation = !string.IsNullOrEmpty(appCompany) - ? $@"Software\{appCompany}\{AppTitle}\AutoUpdater" - : $@"Software\{AppTitle}\AutoUpdater"; + var xmlSerializer = new XmlSerializer(typeof(UpdateInfoEventArgs)); + var xmlTextReader = new XmlTextReader(new StringReader(xml)) { XmlResolver = null }; + args = (UpdateInfoEventArgs)xmlSerializer.Deserialize(xmlTextReader); + } + else + { + var parseArgs = new ParseUpdateInfoEventArgs(xml); + ParseUpdateInfoEvent(parseArgs); + args = parseArgs.UpdateInfo; + } - if (PersistenceProvider == null) - { - PersistenceProvider = new RegistryPersistenceProvider(registryLocation); - } + if (string.IsNullOrEmpty(args?.CurrentVersion) || string.IsNullOrEmpty(args.DownloadURL)) + { + throw new MissingFieldException(); + } - BaseUri = new Uri(AppCastURL); + args.InstalledVersion = InstalledVersion ?? mainAssembly.GetName().Version; + args.IsUpdateAvailable = new Version(args.CurrentVersion) > args.InstalledVersion; - UpdateInfoEventArgs args; - using (MyWebClient client = GetWebClient(BaseUri, BasicAuthXML)) + if (!Mandatory) + { + if (string.IsNullOrEmpty(args.Mandatory.MinimumVersion) || + args.InstalledVersion < new Version(args.Mandatory.MinimumVersion)) { - string xml = client.DownloadString(BaseUri); + Mandatory = args.Mandatory.Value; + UpdateMode = args.Mandatory.UpdateMode; + } + } - if (ParseUpdateInfoEvent == null) + if (Mandatory) + { + ShowRemindLaterButton = false; + ShowSkipButton = false; + } + else + { + // Read the persisted state from the persistence provider. + // This method makes the persistence handling independent from the storage method. + Version skippedVersion = PersistenceProvider.GetSkippedVersion(); + if (skippedVersion != null) + { + var currentVersion = new Version(args.CurrentVersion); + if (currentVersion <= skippedVersion) { - XmlSerializer xmlSerializer = new XmlSerializer(typeof(UpdateInfoEventArgs)); - XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(xml)) {XmlResolver = null}; - args = (UpdateInfoEventArgs) xmlSerializer.Deserialize(xmlTextReader); + return null; } - else + + if (currentVersion > skippedVersion) { - ParseUpdateInfoEventArgs parseArgs = new ParseUpdateInfoEventArgs(xml); - ParseUpdateInfoEvent(parseArgs); - args = parseArgs.UpdateInfo; + // Update the persisted state. Its no longer makes sense to have this flag set as we are working on a newer application version. + PersistenceProvider.SetSkippedVersion(null); } } - if (string.IsNullOrEmpty(args.CurrentVersion) || string.IsNullOrEmpty(args.DownloadURL)) + DateTime? remindLaterAt = PersistenceProvider.GetRemindLater(); + if (remindLaterAt == null) { - throw new MissingFieldException(); + return args; } - args.InstalledVersion = mainAssembly.GetName().Version; - args.IsUpdateAvailable = new Version(args.CurrentVersion) > mainAssembly.GetName().Version; - - if (!Mandatory) - { - if (string.IsNullOrEmpty(args.Mandatory.MinimumVersion) || - args.InstalledVersion < new Version(args.Mandatory.MinimumVersion)) - { - Mandatory = args.Mandatory.Value; - UpdateMode = args.Mandatory.UpdateMode; - } - } + int compareResult = DateTime.Compare(DateTime.Now, remindLaterAt.Value); - if (Mandatory) + if (compareResult < 0) { - ShowRemindLaterButton = false; - ShowSkipButton = false; + return remindLaterAt.Value; } - else - { - // Read the persisted state from the persistence provider. - // This method makes the persistence handling independent from the storage method. - var skippedVersion = PersistenceProvider.GetSkippedVersion(); - if (skippedVersion != null) - { - var currentVersion = new Version(args.CurrentVersion); - if (currentVersion <= skippedVersion) - return null; - - if (currentVersion > skippedVersion) - { - // Update the persisted state. Its no longer makes sense to have this flag set as we are working on a newer application version. - PersistenceProvider.SetSkippedVersion(null); - } - } - - var remindLaterAt = PersistenceProvider.GetRemindLater(); - if (remindLaterAt != null) - { - int compareResult = DateTime.Compare(DateTime.Now, remindLaterAt.Value); + } - if (compareResult < 0) - { - return remindLaterAt.Value; - } - } - } + return args; + } - return args; + private static bool StartUpdate(object result) + { + if (result is DateTime time) + { + SetTimer(time); } - - private static bool StartUpdate(object result) + else { - if (result is DateTime time) + if (result is not UpdateInfoEventArgs args) + { + return false; + } + + if (CheckForUpdateEvent != null) { - SetTimer(time); + CheckForUpdateEvent(args); } else { - if (result is UpdateInfoEventArgs args) + if (args.IsUpdateAvailable) { - if (CheckForUpdateEvent != null) + if (Mandatory && UpdateMode == Mode.ForcedDownload) { - CheckForUpdateEvent(args); + DownloadUpdate(args); + Exit(); } else { - if (args.IsUpdateAvailable) + if (Thread.CurrentThread.GetApartmentState().Equals(ApartmentState.STA)) { - if (Mandatory && UpdateMode == Mode.ForcedDownload) - { - DownloadUpdate(args); - Exit(); - } - else - { - if (Thread.CurrentThread.GetApartmentState().Equals(ApartmentState.STA)) - { - ShowUpdateForm(args); - } - else - { - Thread thread = new Thread(new ThreadStart(delegate { ShowUpdateForm(args); })); - thread.CurrentCulture = - thread.CurrentUICulture = CultureInfo.CurrentCulture; - thread.SetApartmentState(ApartmentState.STA); - thread.Start(); - thread.Join(); - } - } - - return true; + ShowUpdateForm(args); } - - if (ReportErrors) + else { - MessageBox.Show(Resources.UpdateUnavailableMessage, - Resources.UpdateUnavailableCaption, - MessageBoxButtons.OK, MessageBoxIcon.Information); + var thread = new Thread(new ThreadStart(delegate { ShowUpdateForm(args); })); + thread.CurrentCulture = + thread.CurrentUICulture = CultureInfo.CurrentCulture; + thread.SetApartmentState(ApartmentState.STA); + thread.Start(); + thread.Join(); } } + + return true; } - } - return false; + if (ReportErrors) + { + MessageBox.Show(_owner, + Resources.UpdateUnavailableMessage, + Resources.UpdateUnavailableCaption, + MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } } - private static void ShowError(Exception exception) + return false; + } + + private static void ShowError(Exception exception) + { + if (CheckForUpdateEvent != null) + { + CheckForUpdateEvent(new UpdateInfoEventArgs { Error = exception }); + } + else { if (ReportErrors) { if (exception is WebException) { - MessageBox.Show( + MessageBox.Show(_owner, Resources.UpdateCheckFailedMessage, - Resources.UpdateCheckFailedCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); + Resources.UpdateCheckFailedCaption, + MessageBoxButtons.OK, MessageBoxIcon.Error); } else { - MessageBox.Show(exception.ToString(), - exception.GetType().ToString(), MessageBoxButtons.OK, - MessageBoxIcon.Error); + MessageBox.Show(_owner, + exception.Message, + exception.GetType().ToString(), + MessageBoxButtons.OK, MessageBoxIcon.Error); } } } - /// - /// Detects and exits all instances of running assembly, including current. - /// - private static void Exit() + Running = false; + } + + /// + /// Detects and exits all instances of running assembly, including current. + /// + internal static void Exit() + { + var currentProcess = Process.GetCurrentProcess(); + foreach (Process process in Process.GetProcessesByName(currentProcess.ProcessName)) { - if (ApplicationExitEvent != null) - { - ApplicationExitEvent(); - } - else + try { - var currentProcess = Process.GetCurrentProcess(); - foreach (var process in Process.GetProcessesByName(currentProcess.ProcessName)) - { - string processPath; - try - { - processPath = process.MainModule.FileName; - } - catch (Win32Exception) - { - // Current process should be same as processes created by other instances of the application so it should be able to access modules of other instances. - // This means this is not the process we are looking for so we can safely skip this. - continue; - } - - if (process.Id != currentProcess.Id && - currentProcess.MainModule.FileName == processPath - ) //get all instances of assembly except current - { - if (process.CloseMainWindow()) - { - process.WaitForExit((int) TimeSpan.FromSeconds(10) - .TotalMilliseconds); //give some time to process message - } - - if (!process.HasExited) - { - process.Kill(); //TODO show UI message asking user to close program himself instead of silently killing it - } - } - } + string processPath = process.MainModule?.FileName; - if (IsWinFormsApplication) + // Get all instances of assembly except current + if (process.Id == currentProcess.Id || currentProcess.MainModule?.FileName != processPath) { - MethodInvoker methodInvoker = Application.Exit; - methodInvoker.Invoke(); + continue; } -#if NETWPF - else if (System.Windows.Application.Current != null) + + if (process.CloseMainWindow()) { - System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => - System.Windows.Application.Current.Shutdown())); + process.WaitForExit((int)TimeSpan.FromSeconds(10) + .TotalMilliseconds); // Give some time to process message } -#endif - else + + if (process.HasExited) { - Environment.Exit(0); + continue; } + + process.Kill(); //TODO: Show UI message asking user to close program himself instead of silently killing it + } + catch (Exception) + { + // ignored } } - private static Attribute GetAttribute(Assembly assembly, Type attributeType) + if (ApplicationExitEvent != null) { - object[] attributes = assembly.GetCustomAttributes(attributeType, false); - if (attributes.Length == 0) + ApplicationExitEvent(); + } + else + { + if (_isWinFormsApplication) { - return null; + WinFormsMethodInvoker methodInvoker = Application.Exit; + methodInvoker.Invoke(); + } + else if (System.Windows.Application.Current != null) + { + System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() => + System.Windows.Application.Current.Shutdown())); + } + else + { + Environment.Exit(0); } - - return (Attribute) attributes[0]; } + } - internal static string GetUserAgent() + private static Attribute GetAttribute(Assembly assembly, Type attributeType) + { + object[] attributes = assembly.GetCustomAttributes(attributeType, false); + if (attributes.Length == 0) { - return string.IsNullOrEmpty(HttpUserAgent) ? $"AutoUpdater.NET" : HttpUserAgent; + return null; } - internal static void SetTimer(DateTime remindLater) - { - TimeSpan timeSpan = remindLater - DateTime.Now; + return (Attribute)attributes[0]; + } - var context = SynchronizationContext.Current; + internal static string GetUserAgent() + { + return string.IsNullOrEmpty(HttpUserAgent) ? "AutoUpdater.NET" : HttpUserAgent; + } - _remindLaterTimer = new System.Timers.Timer - { - Interval = (int) timeSpan.TotalMilliseconds, - AutoReset = false - }; + internal static void SetTimer(DateTime remindLater) + { + TimeSpan timeSpan = remindLater - DateTime.Now; - _remindLaterTimer.Elapsed += delegate - { - _remindLaterTimer = null; - if (context != null) - { - try - { - context.Send(state => Start(), null); - } - catch (InvalidAsynchronousStateException) - { - Start(); - } - } - else - { - Start(); - } - }; + SynchronizationContext context = SynchronizationContext.Current; - _remindLaterTimer.Start(); - } + _remindLaterTimer = new Timer + { + Interval = Math.Max(1, timeSpan.TotalMilliseconds), + AutoReset = false + }; - /// - /// Opens the Download window that download the update and execute the installer when download completes. - /// - public static bool DownloadUpdate(UpdateInfoEventArgs args) + _remindLaterTimer.Elapsed += delegate { - using (var downloadDialog = new DownloadUpdateDialog(args)) + _remindLaterTimer = null; + if (context != null) { try { - return downloadDialog.ShowDialog().Equals(DialogResult.OK); + context.Send(_ => Start(), null); } - catch (TargetInvocationException) + catch (InvalidAsynchronousStateException) { + Start(); } } + else + { + Start(); + } + }; - return false; - } + _remindLaterTimer.Start(); + } + + /// + /// Opens the Download window that download the update and execute the installer when download completes. + /// + public static bool DownloadUpdate(UpdateInfoEventArgs args) + { + using var downloadDialog = new DownloadUpdateDialog(args); - /// - /// Shows standard update dialog. - /// - public static void ShowUpdateForm(UpdateInfoEventArgs args) + try { - using (var updateForm = new UpdateForm(args)) - { - if (UpdateFormSize.HasValue) - { - updateForm.Size = UpdateFormSize.Value; - } + return downloadDialog.ShowDialog(_owner).Equals(DialogResult.OK); + } + catch (TargetInvocationException) + { + // ignored + } - if (updateForm.ShowDialog().Equals(DialogResult.OK)) - { - Exit(); - } - } + return false; + } + + /// + /// Shows standard update dialog. + /// + public static void ShowUpdateForm(UpdateInfoEventArgs args) + { + using var updateForm = new UpdateForm(args); + + if (UpdateFormSize.HasValue) + { + updateForm.Size = UpdateFormSize.Value; } - internal static MyWebClient GetWebClient(Uri uri, IAuthentication basicAuthentication) + if (updateForm.ShowDialog(_owner).Equals(DialogResult.OK)) { - MyWebClient webClient = new MyWebClient - { - CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) - }; + Exit(); + } + } - if (Proxy != null) - { - webClient.Proxy = Proxy; - } + internal static MyWebClient GetWebClient(Uri uri, IAuthentication basicAuthentication) + { + var webClient = new MyWebClient + { + CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) + }; - if (uri.Scheme.Equals(Uri.UriSchemeFtp)) - { - webClient.Credentials = FtpCredentials; - } - else - { - if (basicAuthentication != null) - { - webClient.Headers[HttpRequestHeader.Authorization] = basicAuthentication.ToString(); - } + if (Proxy != null) + { + webClient.Proxy = Proxy; + } - webClient.Headers[HttpRequestHeader.UserAgent] = HttpUserAgent; - } + if (uri.Scheme.Equals(Uri.UriSchemeFtp)) + { + webClient.Credentials = FtpCredentials; + } + else + { + basicAuthentication?.Apply(ref webClient); - return webClient; + webClient.Headers[HttpRequestHeader.UserAgent] = HttpUserAgent; } + + return webClient; } } \ No newline at end of file diff --git a/AutoUpdater.NET/BasicAuthentication.cs b/AutoUpdater.NET/BasicAuthentication.cs index 2c52397c..59fb7326 100644 --- a/AutoUpdater.NET/BasicAuthentication.cs +++ b/AutoUpdater.NET/BasicAuthentication.cs @@ -1,33 +1,39 @@ using System; +using System.Net; using System.Text; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// Provides Basic Authentication header for web request. +/// +public class BasicAuthentication : IAuthentication { /// - /// Provides Basic Authentication header for web request. + /// Initializes credentials for Basic Authentication. /// - public class BasicAuthentication : IAuthentication + /// Username to use for Basic Authentication + /// Password to use for Basic Authentication + public BasicAuthentication(string username, string password) { - private string Username { get; } + Username = username; + Password = password; + } + + internal string Username { get; } - private string Password { get; } + internal string Password { get; } - /// - /// Initializes credentials for Basic Authentication. - /// - /// Username to use for Basic Authentication - /// Password to use for Basic Authentication - public BasicAuthentication(string username, string password) - { - Username = username; - Password = password; - } + /// + public void Apply(ref MyWebClient webClient) + { + webClient.Headers[HttpRequestHeader.Authorization] = ToString(); + } - /// - public override string ToString() - { - var token = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{Username}:{Password}")); - return $"Basic {token}"; - } + /// + public override string ToString() + { + string token = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{Username}:{Password}")); + return $"Basic {token}"; } -} +} \ No newline at end of file diff --git a/AutoUpdater.NET/CustomAuthentication.cs b/AutoUpdater.NET/CustomAuthentication.cs index b58db8a4..978011c9 100644 --- a/AutoUpdater.NET/CustomAuthentication.cs +++ b/AutoUpdater.NET/CustomAuthentication.cs @@ -1,29 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Net; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// Provides Custom Authentication header for web request. +/// +public class CustomAuthentication : IAuthentication { /// - /// Provides Custom Authentication header for web request. + /// Initializes authorization header value for Custom Authentication /// - public class CustomAuthentication : IAuthentication + /// Value to use as http request header authorization value + public CustomAuthentication(string httpRequestHeaderAuthorizationValue) { - private string HttpRequestHeaderAuthorizationValue { get; } + HttpRequestHeaderAuthorizationValue = httpRequestHeaderAuthorizationValue; + } + + private string HttpRequestHeaderAuthorizationValue { get; } - /// - /// Initializes authorization header value for Custom Authentication - /// - /// Value to use as http request header authorization value - public CustomAuthentication(string httpRequestHeaderAuthorizationValue) - { - HttpRequestHeaderAuthorizationValue = httpRequestHeaderAuthorizationValue; - } + /// + public void Apply(ref MyWebClient webClient) + { + webClient.Headers[HttpRequestHeader.Authorization] = ToString(); + } - /// - public override string ToString() - { - return HttpRequestHeaderAuthorizationValue; - } + /// + public override string ToString() + { + return HttpRequestHeaderAuthorizationValue; } -} +} \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.ar.resx b/AutoUpdater.NET/DownloadUpdateDialog.ar.resx index 517ab8cc..acd65795 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.ar.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.ar.resx @@ -1,134 +1,141 @@  - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Yes - - - - True - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + Yes + + + + True + + تحديث النظام - + جارٍ تنزيل التحديث ... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.cs b/AutoUpdater.NET/DownloadUpdateDialog.cs index 1634b82a..55c25133 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.cs +++ b/AutoUpdater.NET/DownloadUpdateDialog.cs @@ -1,273 +1,336 @@ using System; +using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; +using System.Drawing; using System.Globalization; using System.IO; +using System.Linq; using System.Net; using System.Net.Mime; using System.Security.Cryptography; -using System.Text; using System.Windows.Forms; using AutoUpdaterDotNET.Properties; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +internal partial class DownloadUpdateDialog : Form { - internal partial class DownloadUpdateDialog : Form - { - private readonly UpdateInfoEventArgs _args; + private readonly UpdateInfoEventArgs _args; - private string _tempFile; + private DateTime _startedAt; - private MyWebClient _webClient; + private string _tempFile; - private DateTime _startedAt; + private MyWebClient _webClient; + + public DownloadUpdateDialog(UpdateInfoEventArgs args) + { + InitializeComponent(); + TopMost = AutoUpdater.TopMost; - public DownloadUpdateDialog(UpdateInfoEventArgs args) + if (AutoUpdater.Icon != null) { - InitializeComponent(); + Icon = Icon.FromHandle(AutoUpdater.Icon.GetHicon()); + } - _args = args; + _args = args; - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.ForcedDownload) - { - ControlBox = false; - } + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.ForcedDownload) + { + ControlBox = false; } + } - private void DownloadUpdateDialogLoad(object sender, EventArgs e) - { - var uri = new Uri(_args.DownloadURL); + private void DownloadUpdateDialogLoad(object sender, EventArgs e) + { + var uri = new Uri(_args.DownloadURL); - _webClient = AutoUpdater.GetWebClient(uri, AutoUpdater.BasicAuthDownload); + _webClient = AutoUpdater.GetWebClient(uri, AutoUpdater.BasicAuthDownload); - if (string.IsNullOrEmpty(AutoUpdater.DownloadPath)) + if (string.IsNullOrEmpty(AutoUpdater.DownloadPath)) + { + _tempFile = Path.GetTempFileName(); + } + else + { + _tempFile = Path.Combine(AutoUpdater.DownloadPath, $"{Guid.NewGuid().ToString()}.tmp"); + if (!Directory.Exists(AutoUpdater.DownloadPath)) { - _tempFile = Path.GetTempFileName(); + Directory.CreateDirectory(AutoUpdater.DownloadPath); } - else + } + + _webClient.DownloadProgressChanged += OnDownloadProgressChanged; + + _webClient.DownloadFileCompleted += WebClientOnDownloadFileCompleted; + + _webClient.DownloadFileAsync(uri, _tempFile); + } + + private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + { + if (_startedAt == default) + { + _startedAt = DateTime.Now; + } + else + { + TimeSpan timeSpan = DateTime.Now - _startedAt; + var totalSeconds = (long)timeSpan.TotalSeconds; + if (totalSeconds > 0) { - _tempFile = Path.Combine(AutoUpdater.DownloadPath, $"{Guid.NewGuid().ToString()}.tmp"); - if (!Directory.Exists(AutoUpdater.DownloadPath)) - { - Directory.CreateDirectory(AutoUpdater.DownloadPath); - } + long bytesPerSecond = e.BytesReceived / totalSeconds; + labelInformation.Text = + string.Format(Resources.DownloadSpeedMessage, BytesToString(bytesPerSecond)); } + } - _webClient.DownloadProgressChanged += OnDownloadProgressChanged; - - _webClient.DownloadFileCompleted += WebClientOnDownloadFileCompleted; + labelSize.Text = $@"{BytesToString(e.BytesReceived)} / {BytesToString(e.TotalBytesToReceive)}"; + progressBar.Value = e.ProgressPercentage; + } - _webClient.DownloadFileAsync(uri, _tempFile); + private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEventArgs asyncCompletedEventArgs) + { + if (asyncCompletedEventArgs.Cancelled) + { + return; } - private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) + try { - if (_startedAt == default(DateTime)) + if (asyncCompletedEventArgs.Error != null) { - _startedAt = DateTime.Now; + throw asyncCompletedEventArgs.Error; } - else + + if (_args.CheckSum != null) { - var timeSpan = DateTime.Now - _startedAt; - long totalSeconds = (long) timeSpan.TotalSeconds; - if (totalSeconds > 0) + CompareChecksum(_tempFile, _args.CheckSum); + } + + // Try to parse the content disposition header if it exists. + ContentDisposition contentDisposition = null; + if (!string.IsNullOrWhiteSpace(_webClient.ResponseHeaders?["Content-Disposition"])) + { + try { - var bytesPerSecond = e.BytesReceived / totalSeconds; - labelInformation.Text = - string.Format(Resources.DownloadSpeedMessage, BytesToString(bytesPerSecond)); + contentDisposition = + new ContentDisposition(_webClient.ResponseHeaders["Content-Disposition"]); + } + catch (FormatException) + { + // Ignore content disposition header if it is wrongly formatted. + contentDisposition = null; } } - labelSize.Text = $@"{BytesToString(e.BytesReceived)} / {BytesToString(e.TotalBytesToReceive)}"; - progressBar.Value = e.ProgressPercentage; - } + string fileName = string.IsNullOrEmpty(contentDisposition?.FileName) + ? Path.GetFileName(_webClient.ResponseUri.LocalPath) + : contentDisposition.FileName; - private void WebClientOnDownloadFileCompleted(object sender, AsyncCompletedEventArgs asyncCompletedEventArgs) - { - if (asyncCompletedEventArgs.Cancelled) + if (string.IsNullOrWhiteSpace(fileName)) { - return; + throw new WebException(Resources.UnableToDetermineFilenameMessage); } - try + string tempPath = + Path.Combine( + string.IsNullOrEmpty(AutoUpdater.DownloadPath) + ? Path.GetTempPath() + : AutoUpdater.DownloadPath, + fileName); + + if (File.Exists(tempPath)) { - if (asyncCompletedEventArgs.Error != null) - { - throw asyncCompletedEventArgs.Error; - } + File.Delete(tempPath); + } - if (_args.CheckSum != null) - { - CompareChecksum(_tempFile, _args.CheckSum); - } + File.Move(_tempFile, tempPath); - ContentDisposition contentDisposition = null; - if (_webClient.ResponseHeaders["Content-Disposition"] != null) - { - contentDisposition = new ContentDisposition(_webClient.ResponseHeaders["Content-Disposition"]); - } + string installerArgs = null; + if (!string.IsNullOrEmpty(_args.InstallerArgs)) + { + installerArgs = _args.InstallerArgs.Replace("%path%", + Path.GetDirectoryName(Process.GetCurrentProcess().MainModule?.FileName)); + } + + var processStartInfo = new ProcessStartInfo + { + FileName = tempPath, + UseShellExecute = true, + Arguments = installerArgs ?? string.Empty + }; + + string extension = Path.GetExtension(tempPath); + if (extension.Equals(".zip", StringComparison.OrdinalIgnoreCase)) + { + string installerPath = + Path.Combine(Path.GetDirectoryName(tempPath) ?? throw new InvalidOperationException(), + "ZipExtractor.exe"); - var fileName = string.IsNullOrEmpty(contentDisposition?.FileName) - ? Path.GetFileName(_webClient.ResponseUri.LocalPath) - : contentDisposition.FileName; + File.WriteAllBytes(installerPath, Resources.ZipExtractor); - var tempPath = - Path.Combine( - string.IsNullOrEmpty(AutoUpdater.DownloadPath) ? Path.GetTempPath() : AutoUpdater.DownloadPath, - fileName); + string currentExe = Process.GetCurrentProcess().MainModule?.FileName; + string updatedExe = _args.ExecutablePath; + string extractionPath = Path.GetDirectoryName(currentExe); - if (File.Exists(tempPath)) + if (string.IsNullOrWhiteSpace(updatedExe) && + !string.IsNullOrWhiteSpace(AutoUpdater.ExecutablePath)) { - File.Delete(tempPath); + updatedExe = AutoUpdater.ExecutablePath; } - File.Move(_tempFile, tempPath); - - string installerArgs = null; - if (!string.IsNullOrEmpty(_args.InstallerArgs)) + if (!string.IsNullOrWhiteSpace(AutoUpdater.InstallationPath) && + Directory.Exists(AutoUpdater.InstallationPath)) { - installerArgs = _args.InstallerArgs.Replace("%path%", - Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)); + extractionPath = AutoUpdater.InstallationPath; } - var processStartInfo = new ProcessStartInfo + processStartInfo = new ProcessStartInfo { - FileName = tempPath, - UseShellExecute = true, - Arguments = installerArgs + FileName = installerPath, + UseShellExecute = true }; - var extension = Path.GetExtension(tempPath); - if (extension.Equals(".zip", StringComparison.OrdinalIgnoreCase)) + var arguments = new Collection { - string installerPath = Path.Combine(Path.GetDirectoryName(tempPath), "ZipExtractor.exe"); - - File.WriteAllBytes(installerPath, Resources.ZipExtractor); - - string executablePath = Process.GetCurrentProcess().MainModule.FileName; - string extractionPath = Path.GetDirectoryName(executablePath); - - if (!string.IsNullOrEmpty(AutoUpdater.InstallationPath) && - Directory.Exists(AutoUpdater.InstallationPath)) - { - extractionPath = AutoUpdater.InstallationPath; - } - - StringBuilder arguments = - new StringBuilder($"\"{tempPath}\" \"{extractionPath}\" \"{executablePath}\""); - string[] args = Environment.GetCommandLineArgs(); - for (int i = 1; i < args.Length; i++) - { - if (i.Equals(1)) - { - arguments.Append(" \""); - } - - arguments.Append(args[i]); - arguments.Append(i.Equals(args.Length - 1) ? "\"" : " "); - } - - processStartInfo = new ProcessStartInfo - { - FileName = installerPath, - UseShellExecute = true, - Arguments = arguments.ToString() - }; - } - else if (extension.Equals(".msi", StringComparison.OrdinalIgnoreCase)) + "--input", + tempPath, + "--output", + extractionPath, + "--current-exe", + currentExe + }; + + if (!string.IsNullOrWhiteSpace(updatedExe)) { - processStartInfo = new ProcessStartInfo - { - FileName = "msiexec", - Arguments = $"/i \"{tempPath}\"" - }; - if (!string.IsNullOrEmpty(installerArgs)) - { - processStartInfo.Arguments += " " + installerArgs; - } + arguments.Add("--updated-exe"); + arguments.Add(updatedExe); } - if (AutoUpdater.RunUpdateAsAdmin) + if (AutoUpdater.ClearAppDirectory) { - processStartInfo.Verb = "runas"; + arguments.Add("--clear"); } - try + string[] args = Environment.GetCommandLineArgs(); + if (args.Length > 1) { - Process.Start(processStartInfo); + arguments.Add("--args"); + arguments.Add(string.Join(" ", args.Skip(1).Select(arg => $"\"{arg}\""))); } - catch (Win32Exception exception) + + processStartInfo.Arguments = Utils.BuildArguments(arguments); + } + else if (extension.Equals(".msi", StringComparison.OrdinalIgnoreCase)) + { + processStartInfo = new ProcessStartInfo + { + FileName = "msiexec", + Arguments = $"/i \"{tempPath}\"" + }; + + if (!string.IsNullOrEmpty(installerArgs)) { - if (exception.NativeErrorCode == 1223) - { - _webClient = null; - } - else - { - throw; - } + processStartInfo.Arguments += $" {installerArgs}"; } } - catch (Exception e) + + if (AutoUpdater.RunUpdateAsAdmin) { - MessageBox.Show(e.Message, e.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); - _webClient = null; + processStartInfo.Verb = "runas"; } - finally + + try { - Close(); + Process.Start(processStartInfo); } + catch (Win32Exception exception) + { + if (exception.NativeErrorCode == 1223) + { + _webClient = null; + } + else + { + throw; + } + } + } + catch (Exception e) + { + MessageBox.Show(this, e.Message, e.GetType().ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error); + _webClient = null; + } + finally + { + DialogResult = _webClient == null ? DialogResult.Cancel : DialogResult.OK; + FormClosing -= DownloadUpdateDialog_FormClosing; + Close(); } + } - private static string BytesToString(long byteCount) + private static string BytesToString(long byteCount) + { + string[] suf = { "B", "KB", "MB", "GB", "TB", "PB", "EB" }; + if (byteCount == 0) { - string[] suf = {"B", "KB", "MB", "GB", "TB", "PB", "EB"}; - if (byteCount == 0) - return "0" + suf[0]; - long bytes = Math.Abs(byteCount); - int place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); - double num = Math.Round(bytes / Math.Pow(1024, place), 1); - return $"{(Math.Sign(byteCount) * num).ToString(CultureInfo.InvariantCulture)} {suf[place]}"; + return "0" + suf[0]; } - private static void CompareChecksum(string fileName, CheckSum checksum) + long bytes = Math.Abs(byteCount); + var place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); + double num = Math.Round(bytes / Math.Pow(1024, place), 1); + return $"{(Math.Sign(byteCount) * num).ToString(CultureInfo.InvariantCulture)} {suf[place]}"; + } + + private static void CompareChecksum(string fileName, CheckSum checksum) + { + HashAlgorithm hashAlgorithm; + if (string.IsNullOrEmpty(checksum.HashingAlgorithm) || checksum.HashingAlgorithm == "MD5") { - using (var hashAlgorithm = - HashAlgorithm.Create( - string.IsNullOrEmpty(checksum.HashingAlgorithm) ? "MD5" : checksum.HashingAlgorithm)) + hashAlgorithm = MD5.Create(); + } + else + { + hashAlgorithm = checksum.HashingAlgorithm switch { - using (var stream = File.OpenRead(fileName)) - { - if (hashAlgorithm != null) - { - var hash = hashAlgorithm.ComputeHash(stream); - var fileChecksum = BitConverter.ToString(hash).Replace("-", string.Empty).ToLowerInvariant(); + "SHA1" => SHA1.Create(), + "SHA256" => SHA256.Create(), + "SHA384" => SHA384.Create(), + "SHA512" => SHA512.Create(), + _ => throw new NotSupportedException(Resources.HashAlgorithmNotSupportedMessage) + }; + } - if (fileChecksum == checksum.Value.ToLower()) return; + using FileStream stream = File.OpenRead(fileName); - throw new Exception(Resources.FileIntegrityCheckFailedMessage); - } + byte[] hash = hashAlgorithm.ComputeHash(stream); + string fileChecksum = BitConverter.ToString(hash).Replace("-", string.Empty).ToLowerInvariant(); - throw new Exception(Resources.HashAlgorithmNotSupportedMessage); - } - } + if (fileChecksum.Equals(checksum.Value, StringComparison.OrdinalIgnoreCase)) + { + return; } - private void DownloadUpdateDialog_FormClosing(object sender, FormClosingEventArgs e) + throw new Exception(Resources.FileIntegrityCheckFailedMessage); + } + + private void DownloadUpdateDialog_FormClosing(object sender, FormClosingEventArgs e) + { + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.ForcedDownload) { - if (_webClient == null) - { - DialogResult = DialogResult.Cancel; - } - else if (_webClient.IsBusy) - { - _webClient.CancelAsync(); - DialogResult = DialogResult.Cancel; - } - else - { - DialogResult = DialogResult.OK; - } + AutoUpdater.Exit(); + return; + } + + if (_webClient is not { IsBusy: true }) + { + return; } + + _webClient.CancelAsync(); + DialogResult = DialogResult.Cancel; } } \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.cs.resx b/AutoUpdater.NET/DownloadUpdateDialog.cs.resx new file mode 100644 index 00000000..c630eb65 --- /dev/null +++ b/AutoUpdater.NET/DownloadUpdateDialog.cs.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 132, 15 + + + Stahuji aktualizaci... + + + Aktualizace programu + + \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.da.resx b/AutoUpdater.NET/DownloadUpdateDialog.da.resx index deddc73b..69b5dcee 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.da.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.da.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Software opdatering - + Downloader opdateringer... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.de.resx b/AutoUpdater.NET/DownloadUpdateDialog.de.resx index a59e4c05..a1806a59 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.de.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.de.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Software Update + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Software-Aktualisierung - + Update wird heruntergeladen... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.es.resx b/AutoUpdater.NET/DownloadUpdateDialog.es.resx index 0325f201..0c06e579 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.es.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.es.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Descargar Update... - - actualización de software + + Actualización de software - \ No newline at end of file + diff --git a/AutoUpdater.NET/DownloadUpdateDialog.fr.resx b/AutoUpdater.NET/DownloadUpdateDialog.fr.resx index 3256abd0..a9d30ca7 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.fr.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.fr.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Téléchargement de mise à jour... - + Mise à jour logicielle \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.it.resx b/AutoUpdater.NET/DownloadUpdateDialog.it.resx index f43caf7c..e0f1f589 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.it.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.it.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Aggiornamento software - + Download dell'aggiornamento in corso... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.ja-JP.resx b/AutoUpdater.NET/DownloadUpdateDialog.ja-JP.resx index 3e605447..8563316e 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.ja-JP.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.ja-JP.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + ソフトウェア アップデート - + アップデートをダウンロード中です。 \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.ko.resx b/AutoUpdater.NET/DownloadUpdateDialog.ko.resx index 0a58b526..987ac345 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.ko.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.ko.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 소프트웨어 업데이트 - + 업데이트 다운로드 중... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.lv.resx b/AutoUpdater.NET/DownloadUpdateDialog.lv.resx new file mode 100644 index 00000000..9fe86dc3 --- /dev/null +++ b/AutoUpdater.NET/DownloadUpdateDialog.lv.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Programmatūras atjauninājums + + + Lejupielādē atjauninājumu... + + \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.nl.resx b/AutoUpdater.NET/DownloadUpdateDialog.nl.resx index f34c7f43..8921fc88 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.nl.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.nl.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Het downloaden van update... - + Software Update \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.pl.resx b/AutoUpdater.NET/DownloadUpdateDialog.pl.resx index eccbbbc8..2c61f22c 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.pl.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.pl.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Pobieranie aktualizacji... - + Aktualizacja oprogramowania \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.pt-BR.resx b/AutoUpdater.NET/DownloadUpdateDialog.pt-BR.resx index d7d4cb33..2fd76fef 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.pt-BR.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.pt-BR.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Atualização de software - + Baixando a atualização... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.pt.resx b/AutoUpdater.NET/DownloadUpdateDialog.pt.resx index ef25e36e..71806728 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.pt.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.pt.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Atualização de software - + A transferir a atualização... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.resx b/AutoUpdater.NET/DownloadUpdateDialog.resx index b61f397f..bb6b9abc 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.resx @@ -1,799 +1,809 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 14, 14 - - - - 4, 4, 4, 4 - - - 59, 62 - - - CenterImage - - - - 0 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + 14, 14 + + + + 4, 4, 4, 4 + + + 59, 62 + + + CenterImage + + + + 0 + + pictureBoxIcon - + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 3 - - 81, 45 - - - 4, 4, 4, 4 - - - 319, 26 - - - 1 - - + + 81, 45 + + + 4, 4, 4, 4 + + + 319, 26 + + + 1 + + progressBar - + System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - - 2 - - - True - - - Segoe UI, 9pt - - - 78, 14 - - - 4, 0, 4, 0 - - - 128, 15 - - + 2 - + + True + + + Segoe UI, 9pt + + + 78, 14 + + + 4, 0, 4, 0 + + + 128, 15 + + + 2 + + Downloading Update... - + labelInformation - + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 1 - - Right - - - 265, 14 - - - 135, 15 - - - 3 - - - MiddleRight - - + + Left, Right + + + 265, 14 + + + 135, 15 + + + 3 + + + MiddleRight + + labelSize - + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 0 - - True - - - 7, 15 - - - 413, 90 - - - Segoe UI, 9pt - - - - AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA - IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af// - /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAkAAAANAAAADwAAABEABQ0TAEqmPQAAAA0AAAAJAAAABf///wH///8B////Af// - /wH///8BAAAABwAAAA0ASKJBBVGsWwAAAB0AAAAhCV2/hxBv2MUAAAAZAAAAFQAAAA8AAAAHAAAAA/// - /wH///8BAAAAAwAAAAkAAAARAEqnVyuO7/8Xbc2vA0ibbxuF7vsVfur7ACBILwAAABkAFzQZADR2GQAA - AAX///8B////Af///wEAAAAJAAAADwBKo0sokvT/IJH3/yeO8P8Wi/f/HYz1/xRs0LkWdt7LFHbj9wBT - u0cAAAAD////Af///wEAXM4RAFrITxJpzW8eddWlMpn0/x+U+P8ilvj/UrH6/xeN9/8Xi/b/DIP1/xh5 - 480AAAUF////Af///wH///8BAFzPDS+F4sU/ovj/LJz4/yea+P8nmvn/f8f8//H5/v8/pvr/Foz3/x+N - 9f8KZtNt////Af///wH///8B////Af///wEAXM4TM4vm0zOh+f8toPn/Qab5//P5/v//////yef9/x2R - 9/8YjPb/IYbt+Rp13ZUAXM4b////Af///wH///8B////ASB32otEqfj/M6X6/0Ok+f+Uyfv//////2Wz - +v8olff/FIv3/xeJ9v8nh+z5D2nVj////wH///8B////ASB32nNGpPX/L6L6/zao+v86q/v/aLb6//// - //8nm/j/HZL4/yuV9v8ged2pAFvOH////wH///8B////AQBbzR8yhN+3QJXp10Ga7fdGrfr/Naf6/0un - +f+q0vv/IJX4/xyR9/8ikff/KH3ei////wH///8B////Af///wH///8B////Af///wEAXM5DS6v4/y6h - +f84pPn/Jpr4/zCd+P81k+3/M5f1/zuQ6usAW84J////Af///wH///8B////Af///wH///8BAFzOU1Wv - +f9Gne7vOovjxTWf+P88mfH/AFvNMQJfz0kieNuFAFzOM////wH///8B////Af///wH///8B////AQNf - z2M/jeKtAFzOGwBbzg87kOjbP5Loz////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAW8wH////Af///wH///8BBWHQMxhu1nf///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA - //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA - AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABwAAAAcAAAAHAAAABwAA - AAcAAAAFAAAAAwAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAANAAAADwAA - AA8AAAANAAAADQAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAAFAAAABwAAAAsAAAANAAAADwAAABEAAAATAAAAEwAA - ABUAAAAVAAAAFQAPJhkAWci7ACxgIQAAABEAAAARAAAADwAAAAsAAAAJAAAABwAAAAP///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAANAAAADwBHnj0AH0YdAAAAFwAA - ABkAAAAbAAAAHQAAAB0AAAAdAFW+mQ5v3P0ATq5rAAAAGQAAABcAAAATAAAAEQAAAA0AAAALAAAABwAA - AAX///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAJAAAADQAAAA8AAAATAFfEpQhj - 0N8ARpxVAAAAHwAAACEAAAAjAAAAJQBIoGsTduL9JIz0/wJYwa8AAAAdAAAAGwAAABcAAAAVAAAAEQAA - AA8AAAALAAAABwAAAAX///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAsAAAAPAAAAEQAA - ABUAVsCbOpfz/x984f0BVr2lABg4MwAAACkALmhJDWvX8SKO9v8XiPb/DmvY8QAIFSUAAAAfAAAAGwAA - ABcAAAATAAAAEQAAAA0AAAAJAAAABf///wH///8B////Af///wH///8B////AQAAAAMAAAAHAAAACwAA - AA8AAAATAAAAFQBUvZEylPL/IZD3/zKR8P8PadLlAESYcQZgy9ktk/T/EIb2/xCF9v8efuX9AEGPWQAA - AB8AAAAbAAAAFwAAABUAOH4pAE2tQQAAAAkAAAAFAAAAA////wH///8B////Af///wH///8BAAAAAwAA - AAcAAAALAAAADwAAABEAAAAVAFW8iTeW8f8WjPf/GY33/zOa9/8ng+X/MZDv/xqN9/8RiPb/EIf2/yqO - 8f8AVLufAD6JSwBRtX0AWMStCGbU4RBu3P8AWsvBAAAACQAAAAX///8B////Af///wH///8B////Af// - /wH///8BAAAABQAAAAkAAAANAAAADwAAABMAVbx9O5fw/xqP9/8aj/f/Go/3/ySU9/8hkvf/Foz3/xWL - 9/8Tivf/J5P3/xt43/8efOP9JYjt/yKL9f8difb/GXnk/QBTuUkAAAAHAAAAA////wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAkAAAALABUtEwBXwYk/mO7/HZL4/x6T+P8dkvj/HZL4/xyR - +P8tofn/HpP3/xaM9/8Vi/f/IZD3/xaJ9v8Mg/b/CYH1/x+L9f8JZdLRAAAKBwAAAAX///8B////Af// - /wH///8B////Af///wH///8BAFzOQQBczokAXMynDWfTwxlz2eUie979LYTi/02l9P8hlvj/IZb4/yGW - +P8glfj/L6H6/7Pf/f9Ksfv/GpD3/xeN9/8Uivf/EYj2/w6F9v8NhPb/J4Xq/QBYyGUAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wEAXM81EGvW62ez+P9Jp/n/P6P5/zig+P8xnvj/J5r4/yWZ - +f8lmfn/JZn5/yqd+f+Jzv3//////8jo/v8vofr/GY/3/xaM9/8Tivf/EIf2/yWQ9v8Tb9npAFi/Cf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM45Hnfb81Gr+f8ilvj/I5j4/yWZ - +f8nm/n/KJz5/ymc+f8pnPn/VLX7//b7/v///////////5DR/f8kmPn/GI73/xWL9/8SiPb/NpTx/wBc - zrcAWs8J////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM5HJn7e91Su - +v8mmvn/KZz5/yqe+f8sn/n/LaD5/yuc+P/S6v3/////////////////+Pz+/1a1+/8ckfj/F433/xOK - 9/8ok/f/NI7s/RJu2OUAW85tAF7QB////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAXM5VL4bi/VSw+v8rn/n/LqH6/y+i+v8kmPn/i8X6////////////////////////////1+z+/yiZ - +P8Yjvf/FYv3/xGI9v8Sh/b/K5L3/zCL6/0Qa9fhAFzOZQBZzAX///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM6xYrD0/zCh+v8xpPr/M6X6/xmI9v+m0Pv/qtL7/+Pw/v///////////6zU - +/+t1fz/Vqv5/xiO9/8WjPf/Eon3/w+F9v8Lgvb/EIT1/0Cb9/8jet/9AFzNvf///wH///8B////Af// - /wH///8B////Af///wH///8BAFvNeUeX6P9Pr/r/MKP6/zOm+v82qPv/K575/ySZ+f8Xjvf/rNP8//// - ////////I5f5/xiN9/8WjPf/Go/3/xeN9/8Tiff/FIj2/zGV9/83j+z9FG3Y5wBbzXMAWcwL////Af// - /wH///8B////Af///wH///8B////AQBczm1Bk+f/VLD6/y2g+v8xpPr/Naf6/ziq+/87rPv/Oav7/yWY - +f+s0/z///////////8vofr/I5f4/x+U+P8bkPj/F433/zSa+P9Alu39F3HZ5wBbznMAXNEL////Af// - /wH///8B////Af///wH///8B////Af///wEAXM5jO43k/Vix+v8qnfn/LqD6/zGk+v81p/r/OKr7/zus - +/85q/v/JZj5/6zT/P///////////yqd+P8jl/j/H5T4/xuQ+P8Xjff/S6Dy/wBczbEAXNEL////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvNUxlz2P13uvb/aLj5/2O3+v9atPv/ULH6/z6q - +v82qPv/OKn7/zeo+/8jmPj/rNP8////////////JJj4/yKX+P8ek/j/G5D3/xeN9/8/n/j/GXHY2wBt - 2wP///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84nAFzOYwBczYEAXM6fEGrTvSR7 - 3OMyhd/9cr34/zOl+v80pvr/M6X6/yWa+f86l/f/VaX4/1Wl+P8Zj/f/IZb4/x2S+P8aj/f/Foz3/xuN - 9/9Ckuj/AFzOS////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBczn9ptfX/L6L6/zCj+v8wovr/LqH6/yyf+f8pnfn/Jpr5/yOX+P8ml/j/PKH5/yeW - 9/8Vi/f/EYj2/0qi9v8NZdGz////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAFvOjWm39/8sn/n/LaD5/y2g+f9Nrfr/OqX5/yeb+f8kmPj/IZb4/1iu - +f8wg+D/QpHm/VSk8v9Sp/j/Uaf4/zSG4v0AW84j////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAXM6babj5/yic+f85pPn/bLj4/ziJ4f1osfT/Lpz5/yGW - +P8flPj/X6nw/wBczXEAW845AF3OdQVg0K8dddvtLX/e/wBczov///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBczqtqufr/V7H6/1ii7P8QadTBAFzPORZv - 199ntvn/IJT4/zSd+P8+jOL9AFvNG////wH///8B////Af///wEAW84pAFzOP////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BBWLRt3y89v8rfdzvAFzPZf// - /wH///8BAFvOOS6D4PlRq/n/U6v5/xlw1sf///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wECXc7RCmTSqwBb - zhn///8B////Af///wH///8BAFvNc02b6v9orvP/AFzOef///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBb - zBv///8B////Af///wH///8B////Af///wH///8BBWHRsy5+3f0AXM4n////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84TAFzOs////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAP///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAAAADAAAAAwAAAAMAAAADAAAABQAAAAUAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAA - AAcAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAUAAAAFAAAABwAAAAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAANAAAADQAA - AA0AAAANAAAADQAAAAsAAAALAAAACwAAAAkAAAAJAAAABwAAAAUAAAAFAAAAA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEQAA - ABEAAAARAAAAEQAAABEAAAARAEWaNQBGnjcAAgQPAAAADwAAAA0AAAANAAAACwAAAAkAAAAJAAAABwAA - AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAANAAAADwAAABEAAAARAAAAEwAA - ABMAAAAVAAAAFwAAABUAAAAVAAAAFQAAABUAG0UfAFrL1wBWwZUAI04fAAAAEwAAABEAAAARAAAADwAA - AA0AAAANAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAsAAAALAAAADQAPIRMAP40vABo7GwAA - ABUAAAAXAAAAGQAAABkAAAAZAAAAGwAAABsAAAAdAAAAGwAiTykAV8KpCWnX/QVgzdMAPYc9AAAAFwAA - ABcAAAAVAAAAEwAAABEAAAAPAAAADQAAAA0AAAALAAAABwAAAAcAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAABQAAAAcAAAAHAAAACwAAAA0AAAAPAAAAEQA1 - dScAWMavAFS8iQA2ejUAAQMbAAAAHQAAAB0AAAAfAAAAHwAAACEAAAAhABQsKQBQsoEHZ9bvIIbv/w5t - 2vcASKFdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAADwAAAA8AAAANAAAACQAAAAkAAAAHAAAAA/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAADQAA - AA8AAAARAAAAEwA3fS8AWsrRD2zY9wFax8MARppXAAAAHwAAACEAAAAjAAAAJQAAACUAAAAlAEGQWwVi - 0OUeg+v/IYz1/xZ34f8BVLmTAAAAHwAAAB0AAAAbAAAAGQAAABcAAAAVAAAAEwAAABEAAAAPAAAACwAA - AAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA - AAsAAAALAAAADQAAABEAAAATAAAAFQAsYykAWcnNN5Xy/y2K6v0Pa9f9AVS4lwAxb0MABxEpAAAAJwAA - ACkAKF1DBGDN5R+B6P0hjfb/EIX2/x+D6/8GYc/hAAYPJQAAACEAAAAdAAAAGwAAABkAAAAXAAAAFQAA - ABMAAAAPAAAADQAAAAsAAAAJAAAABwAAAAX///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQAfRyMAWcjLM5Px/zWZ9/8yk/H/HHfe+wdf - ycsAR6B1AAYPLQAfRj8AUrmxGXri/ymR9f8Sh/b/D4X2/yOL8/8LaNf/ADNyQwAAACEAAAAfAAAAHQAA - ABkAAAAXAAAAFQAAABMAAAARAAAADwAAAAsAAAAJAAAABwAAAAMAAAAD////Af///wH///8B////Af// - /wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQANIh0AWcfHMJHv/yeT - 9/8djvf/NZf1/y6L6v8NaNLrAFO3pQBQtKENa9b1Mpb1/xuM9v8Phvb/DoX2/yKO9v8Xdd/9AE6rfwAA - ACEAAAAfAAAAHQAAABkAAAAXAAAAFwAdPRsAR6A9AFS+bQBAkSMAAAAJAAAABwAAAAMAAAAD////Af// - /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAADwAAABEAAAATAAAAFQAA - ABcAWsfDMZDu/yuW9/8Vi/b/F4z3/yqV9/88nfb/IHzg/RJv2v80lPH/I5H3/xKI9/8Rh/b/EIf2/xyM - 9v8piez/AFjFxQAkUTMAL2k5AECRSwBMqmMAVb6PBF/NyQdk1PUHZdX/AFvN6wBUvl0AAAAJAAAABwAA - AAX///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAALAAAADQAA - AA8AAAARAAAAFQAAABcAWse5MZDs/zCZ+P8Yjff/GI73/xiO9/8ikvf/Npz3/zmb9f8vmPf/FYv3/xSK - 9/8Tiff/EYj2/xaK9v8ylvX/BV7M6wBWwbEDXMe/DGnW6RFw3f0XduH/HH/p/SKG7/8be+b9AFrKrwAw - bBUAAAAJAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAA - AAcAAAAJAAAACwAAAA8AAAAPAAAAEQAAABUAWsexMo7r/zSc+P8aj/f/Go/3/xqP9/8aj/f/HZH3/yGT - 9/8bj/f/F433/xaM9/8Vi/f/FIr3/xOJ9v8vl/f/KIXo/yWE6P8sjO39LI/y/yWN9P8cifX/FIT1/yKK - 9P8Oa9n/AFS7UwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAYNDwAdQRkAWsevMY3p/zug+f8dkvj/HZL3/x2S - +P8ckvj/HJH3/xyR+P8bkfj/JZn4/ySY+P8Zjvf/Foz3/xSL9/8Wi/f/KZT3/yOQ9v8Xivb/DIP2/wqB - 9v8IgPX/E4X1/yGB6f8GYtDPAAARCQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAF3FBwBVvBkAVr8tAFbBRwBWwVsAWMRvAFjFhQBYxZUAW8znM47p/z+j - +f8flPf/H5T3/x+U+P8flPf/HpP3/x6T+P8lmvn/Ubf7/1e4+/8lmvj/GI73/xaM9/8Vi/f/E4n3/xGI - 9v8Phvb/DYT2/wuD9v8Jgfb/JYz0/xd03vsBWcZtAAAABQAAAAMAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAXM6PAFzOwwBbzcsBXc7TDmnU3Rt02uklf+D1MYnl/TuS - 6f9Fmu3/U6n1/zig+P8hlvf/IZb4/yGW9/8hlvf/IZX4/ySY+P83qPv/u+P9/7He/f9Gr/v/HJH4/xiO - 9/8Xjff/FIv3/xOJ9/8RiPb/D4X2/wyE9v8Rhfb/L43v/wtm09EAU74xAAAAA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9zC2bT8Uia7f9ntPn/WK75/1Ss - +f9Oqvn/Rab5/z6j+P83oPj/LJv4/ySY+f8kmPj/JJj4/ySY+f8kmPj/JZn5/zin+/+S0f3///////v9 - /v+Y1P3/MaP6/xyR9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8qk/b/IHvh+QBczIEAV78H////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUDAV3PgR92 - 2u9Yp/L/QKP5/yGU+P8glPj/IZb4/yOX+P8kmPj/JZn5/yaa+f8mmvn/J5v5/yeb+f8nmvn/MKL6/23C - /P/k8/7////////////v+P7/Ybz8/ymd+f8bkPf/F433/xaM9/8Uivf/EYj2/xiL9v85mPX/CmXT2wBb - zjn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAFzOEwJf0I8adNr1XbD4/zmh+P8ilvj/I5j4/ySZ+P8mmvj/J5v4/yic+P8pnPj/KZz4/ymc - +P8qnfj/SrD7/8Hl/f/8/v7/////////////////w+b+/0iw+/8ilfj/GY/3/xeN9/8Vi/f/E4n2/ySR - 9/81j+3/AFzO4QBbzlMAWs8H////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBd0QkAXM6JIHnb+Vut9f8/pPn/JZn4/yeb+f8pnPj/Kp35/yue - +f8rn/n/LJ/5/yue+f8rnfj/otX8//7///////////////7+/v//////+vz+/6XZ/P88qfr/HJH4/xiO - 9/8WjPf/E4r3/xmM9/84m/f/Mo3q/xZx2v0HY9LHAFzOSwBbzhcAXs8D////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssNBWHQpSqC4PlgsPf/OqT5/ymd - +f8qnvn/LJ/5/y2g+v8toPn/LaD5/yOX+f9csPn/9vr+///////+/v7////////////+/v7//////+v2 - /v9ywPv/I5f4/xqP9/8Xjff/FIv3/xKJ9/8Vifb/KZL3/zaV9P8vien9FXDZ7wRf0KkAXM1ZAFnSCf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNIwVi - 0a8uheL9Z7n6/zql+f8sn/n/LaH6/y+i+v8wo/r/J5v4/zKZ+P/F4vz///////7+/v////////////// - ///////////////////a7v7/L534/xyS+P8Yjvf/FYz3/xOJ9/8RiPb/D4b2/xSH9v8jjvf/OZXy/y6H - 6P0Qa9bnAFzOqQBbzTsAWcsF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzisAW87VUKPv/1ay+v8vofr/MKP6/zGk+v8zpfr/E4b2/3i4+f/S5/3/1Oj9/9zs - /f/4+/7/////////////////1en9/9bq/f/W6v3/hcL6/xqP9/8Zj/f/Foz3/xSK9/8RiPf/D4X2/w2E - 9v8Kgvb/DIL1/yqQ9v9CnPb/LILk/QVg0P0AW82X////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAFzPEQBczn8fd9rvaLb3/0es+v8wovr/MaT6/zOl+v80p/r/GIz3/yqS - 9/8zl/f/MZb2/1Gk+P/c7P3//v7+////////////PJ74/zWY9/80mPf/LZX3/xeM9/8Zjvf/F433/xWL - 9/8SiPf/D4b1/w2E9v8Rhfb/J5D2/zaV9P8wiOn9GnLb8wVg0LMAW81b////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvNdR112e9msPL/Tq76/zGj+v8xo/r/M6b6/zWn - +v83qfv/M6X6/y+h+v8tofr/JZn4/zSX9//V6f3///////7+/v/+/v7/LKD6/x6T+P8dkff/G5D3/xqQ - 9/8aj/f/F433/xWL9/8Siff/E4j2/ymS9/9Dnvj/No7r/xhx2v0IY9LNAFrNUQBbzRsAWcwD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBczQsAXM1rIHfb/2ay9f9Sr/r/LaD6/y+i - +v8xpPr/NKb6/zeo+/84qvv/Oqz7/zqr+/84qvv/LqD6/zaY+P/V6f3/////////////////M6b6/ySY - +f8ilvj/H5T4/x2S+P8akPf/F433/xmN9/8ul/j/SaD0/z6S6/8ZctntAFvOtwBczk0AXNEJ////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFrNCwBbzWcWcNjpZbD0/1ax - +v8voPn/LaD6/y+i+f8ypPr/NKf6/zeo+/85q/v/PK36/zus+/85q/v/LqH6/zaY+P/V6f3//v7+//// - ////////MaP5/ySY+P8il/j/H5T3/x2S+P8akPj/F433/y6Y9/9MoPP/Hnbb8wdi0bEAXM5jAFvRD/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzOWRNu - 1+deqPD/WrL6/y2e+f8qnfn/LaD6/y+i+v8xpPr/NKb6/zeo+/84qvv/Oqz6/zqr+/84qvv/LqD6/zaY - +P/V6f3///////7+/v/+/v7/LKD5/yOY+P8ilvj/H5T4/xyS9/8akPj/F433/zGZ+P9MnvD/AFzNzwBc - zSUAXNED////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBY - ywMAW81RC2fT+1ai7P+Bwfj/XbP5/1ax+v9Mrfn/RKr6/0Kq+v9Aqvr/O6n6/zWn+v83qfv/OKn7/zip - +/83qPv/LKD5/zaY+P/V6f3/////////////////Jpr4/yKX+P8ilvj/H5T4/x2S+P8akPf/F433/xyP - 9/9Tqfj/GnLY5QBdzlH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBdzwcAW86bCWPR3yt/3fEzheD9Po3j/0mV5v1WoOr9Yqvw/2ey9P9ruPf/ar37/0Ks - +v81p/r/Nqj6/zan+/81p/r/K575/y6U9/+y1vz/1Oj9/9To/f/U6P3/IZb4/yGV+P8hlvj/HpP3/xyR - +P8aj/f/F433/xWL9/85nPj/QZHo/QNfz5UAXc4N////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAW84dAFzOMQFdzjkAW81HAFzOawNfzocLZdKlEmzVzxZv - 1u0acdf9ZbP0/1e1+v8zpfr/M6X6/zOl+v8ypfr/LJ/5/xaK9v8ji/b/Ko/2/yqP9v8qj/b/Eor3/yGV - 9/8glfj/HZL4/xyR9/8Zj/f/Foz3/xSK9/8ZjPf/VqTx/xdv19cAXM4t////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM6/X63y/1Wz+/8wo/r/MKP6/zCj+v8wovr/L6L6/y6h+v8sn/n/Kp35/yic - +f8mmvj/JJj4/yGW+P8klvj/LZr4/yeW+P8ekff/FYz3/xOJ9/8RiPb/Q5/2/zeH4v8FYM97////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBZ2QUAW87DZLH0/1Cw+v8uofr/LqH6/y6h+f8uofr/LKD5/yyf - +f8qnfn/KJz4/yeb+f8lmfn/Ipf4/yGW+P9Lqfn/Xa31/1ut9/9Uq/j/QaD4/zCY+P8fj/b/KJL2/02c - 7v0RadTZAFnMCf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBb0Q8AW87HabX2/0ut+v8rn/n/LJ/5/yyf - +f8toPn/V7L6/2G2+v83o/n/J5v5/yWZ+f8jl/j/IZb4/y2b+P9tuPn/G3LX/xpx2P8sf9/7SJns/1mo - 9P9hr/j/Xa35/2iw9/8keNv7AFvORf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBdzxsAXM7Nbrn4/0Oo - +f8pnPn/Lp/5/0aq+v9uuvj/XKXs/1Kf6/9vufn/LJz5/yOX+P8hlvj/H5T4/0Sl+f9bpe7/AFzNsQBa - zCkAW85fAF3OpQBczckJY9LXJn3f80SS6P06iuP/AFzOtQBf0gv///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd - zyUAXM7Rcrz6/z6l+f8yoPn/XbT6/2ix8/89jOL9B2LQvQ1o1NNWou3/WbH6/yaY+P8flPj/IpX4/1iu - +f87ieH9AFzOY////wH///8BAF3QAwBdzRMAW805AFzOZwBbzYsCXc6vAFzOuwBczh////8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzy8AXM7Vd7/6/1aw+v9wvPr/Up7r/xtx1+8GYdGFAFzPIQBbzlsRatXnb7j3/0Sm - +f8elPj/Kpj4/2Gu9v8ec9f9AFnNGf///wH///8B////Af///wH///8B////AQBZywcAW84ZAFzNKQBc - zQf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBczjkFYtLXhcT5/2uv8f8uf9zxAFzPqQBczi////8B////Af// - /wEAW851I3nb+Wmz9/83nvj/OJ74/1ih7P0RatS7////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBbzkMIY9HfSJTl/Rtx1tUBXc51AFrOD/// - /wH///8B////Af///wEAV84LB2PRsz6P5f9ksvj/WKz4/0GN4/8FYM5v////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBbzVcBXM7rCGLRowBb - zzMAWs4H////Af///wH///8B////Af///wH///8BAFvNNwxm0tFXo+7/cbX2/yt+3esAXM47////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBZ - zA8AXMwt////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBczk8KZdLhU5vp/w1l - 0a8AW84Z////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd - zwcAXM55CmPR/wBczYkAXM0F////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAW84PAFzOmwBbzTf///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA - AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAADAAAABQAAAAUAAAAFAAAABQAA - AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABQAAAAcAAAAHAAAABwAA - AAcAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAHAAAABwAAAAcAAAAHAAAABQAA - AAUAAAAFAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABQAAAAcAAAAHAAAACQAA - AAkAAAAJAAAACwAAAAsAAAALAAAACwAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAALAAAACwAA - AAsAAAALAAAACQAAAAkAAAAJAAAABwAAAAcAAAAFAAAABQAAAAMAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAUAAAAHAAAABwAA - AAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAAPAAAADwAAAA8AAAAPAAAADwAAABEAAAARAAAAEQAA - AA8AAAAPAAAADwAAAA8AAAAPAAAADQAAAA0AAAANAAAACwAAAAsAAAAJAAAACQAAAAcAAAAHAAAABQAA - AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAA - AAcAAAAJAAAACQAAAAsAAAALAAAADQAAAA0AAAAPAAAADwAAABEAAAARAAAAEQAAABMAAAATAAAAEwAA - ABMAAAATAAAAEwAAABMAAAATAAAAEwBIn0EAWcirAAwYFQAAABEAAAARAAAADwAAAA8AAAAPAAAADQAA - AA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA - AAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEwAAABMAAAATAAAAFQAA - ABUAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAnYicAXM7/AFzO/wBKoU0AAAAVAAAAFQAA - ABMAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAEwAA - ABUAAAAXAAAAFwAAABkAAAAZAAAAGQAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAACRsAWcfBAmHR+wZi - 0f0AVr6VAAAAGQAAABcAAAAXAAAAFQAAABUAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAA - AAcAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQA5 - eSkAWMWrAD6NOwAAABcAAAAXAAAAGQAAABsAAAAbAAAAHQAAAB0AAAAdAAAAHwAAAB8AAAAfAAAAHwAA - AB8AUbaLAF3P/R6E7v8UdeL/AFzM4QAAABsAAAAbAAAAGQAAABkAAAAXAAAAFQAAABUAAAATAAAAEQAA - AA8AAAAPAAAADQAAAAsAAAAJAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAA - AA8AAAARAAAAEQAAABMAS6dPAFzO/wBczv8AU7mFAAkaHwAAABsAAAAdAAAAHwAAAB8AAAAhAAAAIQAA - ACEAAAAjAAAAIwAAACMARZddAF3P/RR65v8nj/b/JIbu/wBczv8ANnU9AAAAHQAAABsAAAAbAAAAGQAA - ABcAAAAXAAAAFQAAABMAAAARAAAAEQAAAA8AAAANAAAACwAAAAkAAAAJAAAABwAAAAUAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABwAA - AAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAEWdRwBczv8aeOH/A1/Q/QBbydcAPYVHAAAAHwAA - ACEAAAAjAAAAIwAAACUAAAAlAAAAJQAAACcAKlw9AFvM8Q1v3f0skvb/HYv2/ymR9v8GYtD9AE+wgQAA - AB8AAAAfAAAAHQAAABsAAAAZAAAAGQAAABcAAAAVAAAAEwAAABEAAAARAAAADwAAAA0AAAALAAAACQAA - AAcAAAAFAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAA - AAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABMAAAAVAAAAFwA/jj0AXM7/N5Ty/zyZ - 8/8Tb9n7AFzO/QBTt5EADSApAAAAJQAAACcAAAAnAAAAKQAAACkACxwvAFnG0Qdl1Psukvb/Io73/wmB - 9v8pkfb/E3Hd/wBZx8kAAAAjAAAAIQAAAB8AAAAdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAAEQAA - AA8AAAANAAAADQAAAAsAAAAJAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAFQAA - ABcAN3gzAFzO/zSS8P9Bn/j/QJ/4/yqH6P8FYND9AFvJ3wA6hlUAAAApAAAAKQAAACsAAAAtAFC1owFe - z/0rjvH/LZX3/w6E9v8Lgvb/Io73/yOE6/8AXM79ABtAMQAAACEAAAAhAAAAHwAAAB0AAAAbAAAAGQAA - ABcAAAAVAAAAEwAAABMAAAARAAAADwAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAAADwAA - ABEAAAATAAAAFQAAABUAAAAXACZZKQBczv8uju7/NJr3/x+P9/88nfj/Ppr0/xdy2/0AXc/9AFG1nwAP - JDMAAAAtAEOXcwBczf8jher/N5r4/xWI9v8Nhfb/DIT2/xiJ9v8xlPb/A17Q/wBJoW0AAAAjAAAAIQAA - AB8AAAAdAAAAGwAAABkAAAAXAAAAFwAAABUAAAATAAAAEQAAAA8AAAANAAAACwAAAAkAAAAHAAAABQAA - AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA - AAkAAAALAAAADQAAAA8AAAARAAAAEwAAABMAAAAVAAAAFwARKx8AXM7/LY7t/zqc+P8Tivf/Fov3/zCY - +P9Fovn/MIzr/wdi0P0AXMrlAEijfwBczfcXd+D/Pp74/x+P9/8Qh/b/D4b2/w6F9v8Phfb/NJj3/xJv - 2vsAVr2vAAAAIwAAACEAAAAfAAAAHQAAABsAAAAZAAAAFwAAABcAAAAVADZyJwBQtVkAWcehAE+zSwAA - AAsAAAAJAAAABwAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcAAAAZAF3O/S2M - 7P9AoPj/FYv3/xWL9/8Vi/f/IZH3/0Cg+P9Dn/X/G3fd/QBczv8LaNb9P5/4/y+X+P8Siff/EYj3/xGH - 9v8Qh/b/D4b2/y2V9/8kgub/AFzN8wAHDiUAAAAhAAAAHwAAAB0ACRIdAEGRQwBRuHcAWMSpAFvM4wBc - zv8AXM7/AFzO/wBbzNcAAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAkAAAALAAAADQAAAA8AAAARAAAAEwAA - ABUAAAAXAAAAFwBdzvUriun/RaT5/xeN9/8Xjff/F433/xeN9/8Zjvf/M5v4/0mm+f84lvH/Pp32/zyf - +P8Wi/f/FIr3/xOK9/8Siff/EYj3/xCH9v8ij/f/N5Xy/wFdzv8AR6FlAEedXwBUuY8AWcjHAFzN9wBc - zv8CXs79DGva+xN24/8jhO3/Hn/q/wBczv8AS6ozAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAA - AA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcBXc7rKojo/0un+f8Zjvf/GY/3/xmP9/8Zj/f/GY/3/xmO - 9/8jk/f/O5/4/zad+P8cj/f/Foz3/xaM9/8Vi/f/FIr3/xOK9/8Siff/F4v2/z6e+P8NZNH/AFzO/wBc - zv8IZNP5FHTf/x6A6P8oi/H/LpL3/y2S9/8pj/f/KY/3/xJu2vsAW8y/AAAACwAAAAkAAAAHAAAABQAA - AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA - AAUAAAAFAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAV3N4SiF5v9Rq/r/G5D4/xuQ - +P8bkPj/G5D4/xuQ+P8bkPj/GpD4/xqQ9/8Zj/f/GY/3/xiO9/8Xjff/F433/xaM9/8Vi/f/FIr3/xKJ - 9/83m/j/NZTy/yyM7f84mPX/Opv4/zeZ+P8sk/f/IIz2/xSG9v8Jf/X/F4b2/ymL8f8CXc7/AFS4TwAA - AAkAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAHAAAACQAAAAsAAAANAAAADQAAAA8AAAARAAAAEwFd - zNclg+X/WK76/xyS+P8dkvj/HZL4/x2S+P8dkvj/HJL4/xyR+P8ckfj/G5H4/xuQ+P8dkvj/I5j4/xmO - 9/8Xjff/Foz3/xWL9/8Uivf/GYz3/zKY+P8wl/f/JJD3/xeK9v8Ng/b/C4L2/wmB9v8IgPX/B3/1/yyS - 9/8ad+D/AFzN3QAAGgsAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAAAAcAAAAJAAAACwAA - AAsAAAANADVyHQBIoTkAXM7/IoDi/12x+v8fk/j/HpP4/x+U+P8flPj/H5T4/x6T+P8ek/j/HpP4/x2S - +P8elPj/Oaz7/z6v/P8wo/r/GY/3/xiO9/8Xjff/FYz3/xSK9/8Tiff/Eoj3/xCH9v8Phvb/DYT2/wyD - 9v8Kgvb/CYH2/xiI9v80k/T/BmHQ/QBYw2sAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBmzAUAYM8hAFnGPwBb - yV8AWsp9AFvMmwBczLkBXc7dAF3P9QBczv8AXM7/AFzO/ymG5f9fs/r/Ipb4/yCV+P8glfj/IJX4/yCV - +P8glfj/IJX4/x+U+P8flPj/M6X7/1G3/P+z4P7/Pq/8/yWb+f8Zj/f/GI73/xeN9/8WjPf/FIv3/xOJ - 9/8RiPf/EIf2/w6F9v8NhPb/C4P2/wqB9v8vlPf/JIHm/wBcz/MAOY4TAAAABQAAAAMAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc - zv8AXM7/AFzO/wBczv8CXs/9DmnV+Rt12/sngOH/M4zn/z+V7P9KoPD/VKn1/2Cy+f9jtfr/Sqn5/yKW - +P8il/j/Ipf4/yKX+P8il/j/Ipf4/yKW+P8hlvj/LJ/6/z+v/P/K6f7//////4nO/f88rfz/H5T5/xqP - 9/8Yjvf/F433/xWM9/8Uivf/E4n3/xGI9v8Qhvb/DoX2/wyE9v8WiPb/PJr3/w5n1PsAWsuNAAAABQAA - AAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXc/JAFzO/ziP6v9lsff/Z7X6/2a1+v9ntfr/ZLT6/12x+v9Urfr/TKr5/0Sm - +f88o/n/M574/yOY+f8kmPn/JJj5/ySY+f8kmPn/JJj5/ySY+f8jmPn/J5r5/z2t/P+S0v3///////// - ///2+///Wbr8/zWn+/8bkPj/Go/3/xiO9/8Xjff/FYv3/xSK9/8Siff/EYf2/w+G9v8Nhfb/L5X3/zGM - 6/8AXc79AFi/If///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFXVBwBczrcFYtL7Z7D1/2m2+v80nfn/JJX4/x6T - +P8glPj/IZX4/yKW+P8jl/j/JJj5/ySZ+f8lmfn/Jpr5/yaa+f8mmvn/Jpr5/yaa+f8mmvn/Jpn5/ziq - /P9fvf3/+fz//////////////////9Xu/v9BsPz/K5/6/xuQ+P8Zj/f/GI73/xaM9/8Vi/f/E4r3/xKI - 9/8Qh/b/FYj2/0Of+P8Xcdr7AFzPq////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAZswLAF3PyQll - 0vtcrPb/YLL6/ySW+P8glfj/IZb4/yKX+P8jmPn/JJn5/yWZ+f8mmvn/J5v5/yeb+f8onPn/KJz5/yic - +f8onPn/KJv5/zKk+/9Dsfz/3PH+////////////////////////////oNf+/z2u/P8il/j/G5D4/xmP - 9/8Xjff/Foz3/xSL9/8Tiff/EYj2/y2V9/9AmPH/AV3O/wBbzTn///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBVzA8BXtDXDmnV+2Oy+P9es/r/JZj4/yKX+P8kmPn/JZn5/yaa+f8nm/n/KJz5/ymc - +f8pnfn/Kp35/yqd+f8qnfn/Kp35/yuf+f81p/v/ptn9//////////////////////////////////3+ - //9pwf3/OKr8/x2R+P8akPj/GY73/xeN9/8Vi/f/FIr3/xKI9/88nfj/MIjn/wBczv8AXM+lAFrPJf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAF3RFwFdz+ESbtb7arb4/12z+v8nmfn/JZn5/yaa - +f8om/n/KZz5/yqd+f8qnvn/K575/yuf+f8sn/n/LJ/5/yyf+f8qnvn/Y7j7//7///////////////// - ////////////////////////5fT+/0Wx+/8vovr/G5H4/xmP9/8Yjvf/Foz3/xSL9/8Tiff/JpP3/0yl - +P84kez/EmvW+wBdzv0AXM+fAGDPIf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssjAV3P6Rh1 - 2/twu/r/XbP7/yea+f8onPn/KZ35/yqe+f8rn/n/LJ/6/y2g+v8toPr/LqH6/y6h+v8lmfn/MZz4/+j0 - /v////////////////////////////////////////////////+y3f3/M6X6/yOX+f8akPj/GY73/xeN - 9/8Vi/f/E4r3/xKI9/8ejvf/PJz4/0uj+P81juz/D2rW+wBczvsAW86XAF7QG////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzC0BXM/xIHve/XS9+/9bs/r/KZ35/yqe+f8sn/n/LaD6/y6h+v8vofr/L6L6/y+i - +v8nmvr/FYv3/7PZ/P///////////////////////////////////////////////////////////2+9 - +/8qnfn/HJL5/xmP9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8djPf/PJv4/0mh+P8xi+r/DWfU+wBc - z/kAXM2RAFnTF////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAF3MNwBdz/koguH9ecH7/1Wx+v8sn/r/LaD6/y6h - +v8vovr/MKP6/zGk+v8tofn/DYX3/2ey+f////////////////////////////////////////////// - ///////////////////v+P//OaH5/yGV+P8akPj/GI73/xaN9/8Vi/f/E4n3/xGI9v8Phvb/DYT2/wuD - 9v8civf/PJv3/0ef9/8viOn/C2bT+wBdzvcAXM6JAFnMFf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW85DAFzO/zuT - 6f99xPv/MqL6/y+h+v8wo/r/MaT6/zKk+v8zpfr/EIf2/yKL9v/y+P7///////////////////////// - /////////////////////////////////////////////8Lh/f8aj/f/G5D4/xmP9/8Xjff/FYv3/xOK - 9/8RiPf/EIb2/w6F9v8Mg/b/CoL2/wiA9f8bifb/Opn3/0Wd9v82i+n/CmTS+wBczv8AXM1t////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAF3PhQBczv9XqPL/esP8/y+h+v8wovr/MaT6/zKl+v80pvr/NKf6/wR89v8vkvf/Vab4/1Wm - +P9Vpvj/Vab4/5HF+////////////////////////////1qq+P9bq/n/XKz5/12t+f9ervn/II/3/xWM - 9/8Zj/f/F433/xaM9/8Uivf/Eoj3/xCH9v8Ohfb/DIT2/wqC9v8IgPb/GIj2/zqZ9/9In/j/PpHt/w9p - 1fsAXM7/AFzOjf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAFzPewBczv9Qoe7/gMX7/0ar+/8vovr/MaP6/zKl+v80pvr/Naf7/zao - +/8nm/n/E4r3/xKJ9/8Siff/EYn2/wZ+9f9aqPn///////////////////////////8jl/n/EIb3/w2E - 9v8NhPb/DYT2/w+H9v8aj/j/Go/3/xiO9/8WjPf/FIr3/xKJ9/8Qh/b/DoX2/wyE9v8di/f/QJz4/0+k - +P84j+z/EmvW+wBbzv8AXM6nAFnMKf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvObQBczf9JnOz/g8b7/0ms+/8uofr/MKP6/zKk - +v8zpvr/Naf7/zeo+/84qvv/Oar7/zmq+/84qvv/N6n7/zao+/8Siff/Wqj5//////////////////// - ////////Nqn7/yOY+f8kmPn/Ipb4/yCV+P8ek/j/HJH4/xqQ9/8Yjvf/Foz3/xSL9/8Siff/EIf2/yKP - 9/9FoPj/Vqj5/z2T7f8TbNb7AFvO/wBczqcAWcwp////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNYQBczv9Dl+v/hcf8/06u - +v8toPr/LqH6/zCj+v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo - +f///////////////////////////zmr+/8mmvn/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM - 9/8Ui/f/JpP4/0uk+P9crfn/Qpbt/xVu1/sAW87/AFzOpwBc0Sf///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNVwBd - z/09kuj/h8f8/1Kw+v8rnvn/LaD6/y+i+v8xo/r/M6X6/zSn+v82qPv/OKr7/zqs+/88rfv/PK77/zus - +/85q/v/N6n7/xOJ+P9aqPn///////////////////////////84qfv/JZn5/ySY+f8il/j/IJX4/x6T - +P8ckvj/GpD4/xiO9/8Wjff/N5z4/2Kw+v9Gmu7/Fm7X+wBdz/0AXM6nAFzRJ////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAFvNTQBczvs2jOb/iMf8/1ex+v8pnfn/K575/y2g+v8vovr/MaP6/zOl+v80p/r/Nqj7/ziq - +/86rPv/PK37/zyu+/87rPv/Oav7/zep+/8Tifj/Wqj5////////////////////////////NKX6/yOY - +P8kmPn/Ipf4/yCV+P8ek/j/HJL4/xqQ+P8Yjvf/Fo33/1ar+f86j+n/AFzO/wBczqcAXNEn////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAF3NQwBdz/kvh+P/h8b8/12z+/8nm/n/KZz5/yue+f8toPr/L6H6/zCj - +v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo+f////////////// - /////////////y+i+v8jmPf/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM9/9Kpvn/UqDv/wBc - zv8AXswf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvNOQBdzvcoguD9icb7/4rI+/9Xsfr/S6z6/0Cn - +v81o/n/LZ/6/y6h+v8wo/r/MqT6/zOm+v81p/v/N6j7/ziq+/85qvv/Oar7/ziq+/83qfv/Nqj7/xKJ - 9/9aqPn///////////////////////////8qnfn/IZf4/ySY+f8ilvj/IJX4/x6T+P8ckfj/GpD3/xiO - 9/8WjPf/J5X4/2iz+f8Vbdb7AF3Oh////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFnMFQBczv8AXM7/P5Hn/2Sq - 7/9osPP/eLz4/4jH+/+Myvz/jcv8/43L/P+Cxvz/dsL8/2u9+/9bt/v/Nqf6/zWn+/82qPv/N6n7/zep - +/83qPv/Nqj7/zSn+v8SiPf/Wqj5////////////////////////////Jpr5/yCV+P8jmPn/IZb4/x+U - +P8ek/j/HJH4/xqP9/8Yjvf/Foz3/xSK9/9ZrPn/Q5Pp/wBdz+8AbdsH////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBt - 2wcAW86XAFzOtwFdz9UBXc7zAFzO/wBczv8AXM7/D2nT+SR62/s3iuP/SZrq/1uo7/9ttvT/i8v8/2u+ - +/80pvr/Naf6/zWn+/81p/v/Naf7/zSm+v8zpfr/Eon3/zyZ9/+q0vz/qtL8/6rS/P+q0vz/qtL8/x+V - +f8ek/j/I5f4/yGV+P8flPj/HZL4/xuR+P8Zj/f/F433/xaM9/8Uivf/NJn4/2ex9/8JYtD/AFzOX/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBVzA8AXtAxAFvNUQBdzXEAW86RAF7PtQFe - 0NkBXM73AFzO/0+k7/+DyPz/MqX6/zOl+v8zpfr/M6b6/zOl+v8ypfr/MaT6/yGW+f8CevX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8Jgvb/IZX4/yKX+P8glfj/HpP4/x2S+P8bkPj/GY/3/xeN9/8Vi/f/E4r3/xSJ - 9/9lsvn/M4bj/QBdzs3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBdzv1UpO7/fcX8/zCj+v8xpPr/MaT6/zGk+v8xpPr/MaP6/zCj - +v8vovr/LqH6/yyg+v8rnvn/KZ35/yic+f8mmvn/JZn5/yOX+P8hlvj/H5T4/x6T+P8ckfj/GpD4/xiO - 9/8Wjff/FYv3/xOJ9/8RiPb/Q6D4/2Co8/8CXc7/AF3ONf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQCA/wMAXM7/XKrx/3fC/P8vovr/L6L6/y+i - +v8vovr/L6L6/y+i+v8uofr/LaD6/yyf+v8rnvn/Kp35/yic+f8nm/n/JZn5/ySY+f8il/j/IJX4/zig - +f9fsvr/Wq/6/0Kj+P8ql/j/F4z3/xSK9/8Siff/EIf2/xuM9v9ttfr/JXfY+wBczqH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUTAFzO/2Ov - 8/9wvvz/LaD6/y2g+v8uofr/LqH6/y2h+v8toPr/LKD6/yyf+f8rnvn/Kp35/yic+f8nm/n/Jpr5/ySY - +f8jl/j/IZb4/ySX+P98wPv/Xqnx/12p8v92uvj/er76/3O5+v9arfn/QaD5/ymU9/8Sh/b/Uqf5/1Gd - 7v8AXM/5AFnMFf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAF3RIQBczv9rtPX/abv7/yue+f8rn/n/LJ/5/yyf+f8sn/n/LqH5/161+v9+w/v/arv7/yye - +f8nm/n/Jpr5/ySZ+f8jl/j/IZb4/yCV+P9BpPn/f8D5/whh0P8AXM7/AV3P/xlw2fk1iub/UaDv/2my - 9/91ufr/cbf6/3G3+v9vtPn/EmrU+wBcz3X///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBe0DEAXM7/crr3/2G2+/8pnfn/Kp35/yqd+f8qnfn/Qqj6/37E - +/+Fxfr/TJvq/4LD+v9ouPv/JZn5/ySY+f8jl/n/Ipb4/yCV+P8flPj/YrP6/2Go7v8AXc73AFjKHQBb - zVEAXM+PAF7PzwBdzv0AXM7/DmjV+SqB4v9Fluz/cLP2/0GQ5v8AXc/jAID/A////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9BAFzO/3i++f9as/r/J5v5/yic - +f8un/n/ZLj7/4zK/P9kq+//D2jS+wBczv8shOL9isj8/02r+v8jl/j/Ipb4/yCV+P8flPj/IZT4/4HC - +/85h+D9AFzOrf///wH///8B////Af///wEAXdELAF3NQwBbzn8AXc+/AFzO9wBczv8EX8//AFzO/wBd - z0v///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAF7PTwBc - zv9/w/v/Uq76/yaa+f9Fqfr/gcT8/3/A+P8yhOD9AF3P/QBdz48AXM9RAF3P/U6e7f+Gxvv/NJ/5/yCV - +P8flPj/HpP4/zuh+f+Ewvr/DWXS/QBczln///8B////Af///wH///8B////Af///wH///8B////AQBV - qgMAWs0zAFzPbwBczssAXM4v////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbz18BXc/9hcX7/1Sv+v9qufv/isj7/1ei7f8JY9H9AV3P1wBbzzX///8B////AQBb - zoMCXs/9bLT1/3i/+/8kl/j/HZP4/xyS+P9csPr/aKzw/wBczvsAVcwP////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAXc5vBGHS+YnH+/+Jx/v/d7n1/yZ52vsAXc/5AF3PeQBA - vwX///8B////Af///wEAVaoDAFzPxRBq1ft9wPr/YbP6/xyR+P8ckPj/fL/6/z2N4/0AXc+7////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFvOfw1q1fmHxfr/V5/p/wVf - 0P8BXc7DAFrPJf///wH///8B////Af///wH///8B////AQBYzhsBXs/tKYLh/YXE+/9Fpfn/M5z4/4PC - +v8TadP9AF3NZ////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc - zo0HYM//HHHX+wBdz/MAW85j////Af///wH///8B////Af///wH///8B////Af///wH///8BAF3NRwBb - zv9Km+z/gcL7/2m1+v9usfP/AFvO/wBgyhn///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM25AFzO/wBdz6sAWdMX////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM2FAl7P/Wex9f+Dwvv/RpPm/wBdz8v///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFnMKQBdzUP///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFWqAwBdz8cQa9X7gsD6/xlu1PsAXM91////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXtAbAF3P7x1x - 2P8AXM7/AFzNJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzkkAXM7/AFzO/////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAF3PjwBczT3///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - - - - 4, 2, 4, 2 - - - CenterParent - - + + True + + + 7, 15 + + + 413, 90 + + + Segoe UI, 9pt + + + + AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA + IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af// + /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAkAAAANAAAADwAAABEABQ0TAEqmPQAAAA0AAAAJAAAABf///wH///8B////Af// + /wH///8BAAAABwAAAA0ASKJBBVGsWwAAAB0AAAAhCV2/hxBv2MUAAAAZAAAAFQAAAA8AAAAHAAAAA/// + /wH///8BAAAAAwAAAAkAAAARAEqnVyuO7/8Xbc2vA0ibbxuF7vsVfur7ACBILwAAABkAFzQZADR2GQAA + AAX///8B////Af///wEAAAAJAAAADwBKo0sokvT/IJH3/yeO8P8Wi/f/HYz1/xRs0LkWdt7LFHbj9wBT + u0cAAAAD////Af///wEAXM4RAFrITxJpzW8eddWlMpn0/x+U+P8ilvj/UrH6/xeN9/8Xi/b/DIP1/xh5 + 480AAAUF////Af///wH///8BAFzPDS+F4sU/ovj/LJz4/yea+P8nmvn/f8f8//H5/v8/pvr/Foz3/x+N + 9f8KZtNt////Af///wH///8B////Af///wEAXM4TM4vm0zOh+f8toPn/Qab5//P5/v//////yef9/x2R + 9/8YjPb/IYbt+Rp13ZUAXM4b////Af///wH///8B////ASB32otEqfj/M6X6/0Ok+f+Uyfv//////2Wz + +v8olff/FIv3/xeJ9v8nh+z5D2nVj////wH///8B////ASB32nNGpPX/L6L6/zao+v86q/v/aLb6//// + //8nm/j/HZL4/yuV9v8ged2pAFvOH////wH///8B////AQBbzR8yhN+3QJXp10Ga7fdGrfr/Naf6/0un + +f+q0vv/IJX4/xyR9/8ikff/KH3ei////wH///8B////Af///wH///8B////Af///wEAXM5DS6v4/y6h + +f84pPn/Jpr4/zCd+P81k+3/M5f1/zuQ6usAW84J////Af///wH///8B////Af///wH///8BAFzOU1Wv + +f9Gne7vOovjxTWf+P88mfH/AFvNMQJfz0kieNuFAFzOM////wH///8B////Af///wH///8B////AQNf + z2M/jeKtAFzOGwBbzg87kOjbP5Loz////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAW8wH////Af///wH///8BBWHQMxhu1nf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA + AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABwAAAAcAAAAHAAAABwAA + AAcAAAAFAAAAAwAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAANAAAADwAA + AA8AAAANAAAADQAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAAFAAAABwAAAAsAAAANAAAADwAAABEAAAATAAAAEwAA + ABUAAAAVAAAAFQAPJhkAWci7ACxgIQAAABEAAAARAAAADwAAAAsAAAAJAAAABwAAAAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAANAAAADwBHnj0AH0YdAAAAFwAA + ABkAAAAbAAAAHQAAAB0AAAAdAFW+mQ5v3P0ATq5rAAAAGQAAABcAAAATAAAAEQAAAA0AAAALAAAABwAA + AAX///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAJAAAADQAAAA8AAAATAFfEpQhj + 0N8ARpxVAAAAHwAAACEAAAAjAAAAJQBIoGsTduL9JIz0/wJYwa8AAAAdAAAAGwAAABcAAAAVAAAAEQAA + AA8AAAALAAAABwAAAAX///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAsAAAAPAAAAEQAA + ABUAVsCbOpfz/x984f0BVr2lABg4MwAAACkALmhJDWvX8SKO9v8XiPb/DmvY8QAIFSUAAAAfAAAAGwAA + ABcAAAATAAAAEQAAAA0AAAAJAAAABf///wH///8B////Af///wH///8B////AQAAAAMAAAAHAAAACwAA + AA8AAAATAAAAFQBUvZEylPL/IZD3/zKR8P8PadLlAESYcQZgy9ktk/T/EIb2/xCF9v8efuX9AEGPWQAA + AB8AAAAbAAAAFwAAABUAOH4pAE2tQQAAAAkAAAAFAAAAA////wH///8B////Af///wH///8BAAAAAwAA + AAcAAAALAAAADwAAABEAAAAVAFW8iTeW8f8WjPf/GY33/zOa9/8ng+X/MZDv/xqN9/8RiPb/EIf2/yqO + 8f8AVLufAD6JSwBRtX0AWMStCGbU4RBu3P8AWsvBAAAACQAAAAX///8B////Af///wH///8B////Af// + /wH///8BAAAABQAAAAkAAAANAAAADwAAABMAVbx9O5fw/xqP9/8aj/f/Go/3/ySU9/8hkvf/Foz3/xWL + 9/8Tivf/J5P3/xt43/8efOP9JYjt/yKL9f8difb/GXnk/QBTuUkAAAAHAAAAA////wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAkAAAALABUtEwBXwYk/mO7/HZL4/x6T+P8dkvj/HZL4/xyR + +P8tofn/HpP3/xaM9/8Vi/f/IZD3/xaJ9v8Mg/b/CYH1/x+L9f8JZdLRAAAKBwAAAAX///8B////Af// + /wH///8B////Af///wH///8BAFzOQQBczokAXMynDWfTwxlz2eUie979LYTi/02l9P8hlvj/IZb4/yGW + +P8glfj/L6H6/7Pf/f9Ksfv/GpD3/xeN9/8Uivf/EYj2/w6F9v8NhPb/J4Xq/QBYyGUAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wEAXM81EGvW62ez+P9Jp/n/P6P5/zig+P8xnvj/J5r4/yWZ + +f8lmfn/JZn5/yqd+f+Jzv3//////8jo/v8vofr/GY/3/xaM9/8Tivf/EIf2/yWQ9v8Tb9npAFi/Cf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM45Hnfb81Gr+f8ilvj/I5j4/yWZ + +f8nm/n/KJz5/ymc+f8pnPn/VLX7//b7/v///////////5DR/f8kmPn/GI73/xWL9/8SiPb/NpTx/wBc + zrcAWs8J////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM5HJn7e91Su + +v8mmvn/KZz5/yqe+f8sn/n/LaD5/yuc+P/S6v3/////////////////+Pz+/1a1+/8ckfj/F433/xOK + 9/8ok/f/NI7s/RJu2OUAW85tAF7QB////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAXM5VL4bi/VSw+v8rn/n/LqH6/y+i+v8kmPn/i8X6////////////////////////////1+z+/yiZ + +P8Yjvf/FYv3/xGI9v8Sh/b/K5L3/zCL6/0Qa9fhAFzOZQBZzAX///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM6xYrD0/zCh+v8xpPr/M6X6/xmI9v+m0Pv/qtL7/+Pw/v///////////6zU + +/+t1fz/Vqv5/xiO9/8WjPf/Eon3/w+F9v8Lgvb/EIT1/0Cb9/8jet/9AFzNvf///wH///8B////Af// + /wH///8B////Af///wH///8BAFvNeUeX6P9Pr/r/MKP6/zOm+v82qPv/K575/ySZ+f8Xjvf/rNP8//// + ////////I5f5/xiN9/8WjPf/Go/3/xeN9/8Tiff/FIj2/zGV9/83j+z9FG3Y5wBbzXMAWcwL////Af// + /wH///8B////Af///wH///8B////AQBczm1Bk+f/VLD6/y2g+v8xpPr/Naf6/ziq+/87rPv/Oav7/yWY + +f+s0/z///////////8vofr/I5f4/x+U+P8bkPj/F433/zSa+P9Alu39F3HZ5wBbznMAXNEL////Af// + /wH///8B////Af///wH///8B////Af///wEAXM5jO43k/Vix+v8qnfn/LqD6/zGk+v81p/r/OKr7/zus + +/85q/v/JZj5/6zT/P///////////yqd+P8jl/j/H5T4/xuQ+P8Xjff/S6Dy/wBczbEAXNEL////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvNUxlz2P13uvb/aLj5/2O3+v9atPv/ULH6/z6q + +v82qPv/OKn7/zeo+/8jmPj/rNP8////////////JJj4/yKX+P8ek/j/G5D3/xeN9/8/n/j/GXHY2wBt + 2wP///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84nAFzOYwBczYEAXM6fEGrTvSR7 + 3OMyhd/9cr34/zOl+v80pvr/M6X6/yWa+f86l/f/VaX4/1Wl+P8Zj/f/IZb4/x2S+P8aj/f/Foz3/xuN + 9/9Ckuj/AFzOS////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBczn9ptfX/L6L6/zCj+v8wovr/LqH6/yyf+f8pnfn/Jpr5/yOX+P8ml/j/PKH5/yeW + 9/8Vi/f/EYj2/0qi9v8NZdGz////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAFvOjWm39/8sn/n/LaD5/y2g+f9Nrfr/OqX5/yeb+f8kmPj/IZb4/1iu + +f8wg+D/QpHm/VSk8v9Sp/j/Uaf4/zSG4v0AW84j////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAXM6babj5/yic+f85pPn/bLj4/ziJ4f1osfT/Lpz5/yGW + +P8flPj/X6nw/wBczXEAW845AF3OdQVg0K8dddvtLX/e/wBczov///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBczqtqufr/V7H6/1ii7P8QadTBAFzPORZv + 199ntvn/IJT4/zSd+P8+jOL9AFvNG////wH///8B////Af///wEAW84pAFzOP////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BBWLRt3y89v8rfdzvAFzPZf// + /wH///8BAFvOOS6D4PlRq/n/U6v5/xlw1sf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wECXc7RCmTSqwBb + zhn///8B////Af///wH///8BAFvNc02b6v9orvP/AFzOef///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBb + zBv///8B////Af///wH///8B////Af///wH///8BBWHRsy5+3f0AXM4n////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84TAFzOs////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAAAADAAAAAwAAAAMAAAADAAAABQAAAAUAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAA + AAcAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAUAAAAFAAAABwAAAAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAANAAAADQAA + AA0AAAANAAAADQAAAAsAAAALAAAACwAAAAkAAAAJAAAABwAAAAUAAAAFAAAAA////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEQAA + ABEAAAARAAAAEQAAABEAAAARAEWaNQBGnjcAAgQPAAAADwAAAA0AAAANAAAACwAAAAkAAAAJAAAABwAA + AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAANAAAADwAAABEAAAARAAAAEwAA + ABMAAAAVAAAAFwAAABUAAAAVAAAAFQAAABUAG0UfAFrL1wBWwZUAI04fAAAAEwAAABEAAAARAAAADwAA + AA0AAAANAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAsAAAALAAAADQAPIRMAP40vABo7GwAA + ABUAAAAXAAAAGQAAABkAAAAZAAAAGwAAABsAAAAdAAAAGwAiTykAV8KpCWnX/QVgzdMAPYc9AAAAFwAA + ABcAAAAVAAAAEwAAABEAAAAPAAAADQAAAA0AAAALAAAABwAAAAcAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAABQAAAAcAAAAHAAAACwAAAA0AAAAPAAAAEQA1 + dScAWMavAFS8iQA2ejUAAQMbAAAAHQAAAB0AAAAfAAAAHwAAACEAAAAhABQsKQBQsoEHZ9bvIIbv/w5t + 2vcASKFdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAADwAAAA8AAAANAAAACQAAAAkAAAAHAAAAA/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAADQAA + AA8AAAARAAAAEwA3fS8AWsrRD2zY9wFax8MARppXAAAAHwAAACEAAAAjAAAAJQAAACUAAAAlAEGQWwVi + 0OUeg+v/IYz1/xZ34f8BVLmTAAAAHwAAAB0AAAAbAAAAGQAAABcAAAAVAAAAEwAAABEAAAAPAAAACwAA + AAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA + AAsAAAALAAAADQAAABEAAAATAAAAFQAsYykAWcnNN5Xy/y2K6v0Pa9f9AVS4lwAxb0MABxEpAAAAJwAA + ACkAKF1DBGDN5R+B6P0hjfb/EIX2/x+D6/8GYc/hAAYPJQAAACEAAAAdAAAAGwAAABkAAAAXAAAAFQAA + ABMAAAAPAAAADQAAAAsAAAAJAAAABwAAAAX///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQAfRyMAWcjLM5Px/zWZ9/8yk/H/HHfe+wdf + ycsAR6B1AAYPLQAfRj8AUrmxGXri/ymR9f8Sh/b/D4X2/yOL8/8LaNf/ADNyQwAAACEAAAAfAAAAHQAA + ABkAAAAXAAAAFQAAABMAAAARAAAADwAAAAsAAAAJAAAABwAAAAMAAAAD////Af///wH///8B////Af// + /wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQANIh0AWcfHMJHv/yeT + 9/8djvf/NZf1/y6L6v8NaNLrAFO3pQBQtKENa9b1Mpb1/xuM9v8Phvb/DoX2/yKO9v8Xdd/9AE6rfwAA + ACEAAAAfAAAAHQAAABkAAAAXAAAAFwAdPRsAR6A9AFS+bQBAkSMAAAAJAAAABwAAAAMAAAAD////Af// + /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAADwAAABEAAAATAAAAFQAA + ABcAWsfDMZDu/yuW9/8Vi/b/F4z3/yqV9/88nfb/IHzg/RJv2v80lPH/I5H3/xKI9/8Rh/b/EIf2/xyM + 9v8piez/AFjFxQAkUTMAL2k5AECRSwBMqmMAVb6PBF/NyQdk1PUHZdX/AFvN6wBUvl0AAAAJAAAABwAA + AAX///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAALAAAADQAA + AA8AAAARAAAAFQAAABcAWse5MZDs/zCZ+P8Yjff/GI73/xiO9/8ikvf/Npz3/zmb9f8vmPf/FYv3/xSK + 9/8Tiff/EYj2/xaK9v8ylvX/BV7M6wBWwbEDXMe/DGnW6RFw3f0XduH/HH/p/SKG7/8be+b9AFrKrwAw + bBUAAAAJAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAA + AAcAAAAJAAAACwAAAA8AAAAPAAAAEQAAABUAWsexMo7r/zSc+P8aj/f/Go/3/xqP9/8aj/f/HZH3/yGT + 9/8bj/f/F433/xaM9/8Vi/f/FIr3/xOJ9v8vl/f/KIXo/yWE6P8sjO39LI/y/yWN9P8cifX/FIT1/yKK + 9P8Oa9n/AFS7UwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAYNDwAdQRkAWsevMY3p/zug+f8dkvj/HZL3/x2S + +P8ckvj/HJH3/xyR+P8bkfj/JZn4/ySY+P8Zjvf/Foz3/xSL9/8Wi/f/KZT3/yOQ9v8Xivb/DIP2/wqB + 9v8IgPX/E4X1/yGB6f8GYtDPAAARCQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAF3FBwBVvBkAVr8tAFbBRwBWwVsAWMRvAFjFhQBYxZUAW8znM47p/z+j + +f8flPf/H5T3/x+U+P8flPf/HpP3/x6T+P8lmvn/Ubf7/1e4+/8lmvj/GI73/xaM9/8Vi/f/E4n3/xGI + 9v8Phvb/DYT2/wuD9v8Jgfb/JYz0/xd03vsBWcZtAAAABQAAAAMAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAXM6PAFzOwwBbzcsBXc7TDmnU3Rt02uklf+D1MYnl/TuS + 6f9Fmu3/U6n1/zig+P8hlvf/IZb4/yGW9/8hlvf/IZX4/ySY+P83qPv/u+P9/7He/f9Gr/v/HJH4/xiO + 9/8Xjff/FIv3/xOJ9/8RiPb/D4X2/wyE9v8Rhfb/L43v/wtm09EAU74xAAAAA////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9zC2bT8Uia7f9ntPn/WK75/1Ss + +f9Oqvn/Rab5/z6j+P83oPj/LJv4/ySY+f8kmPj/JJj4/ySY+f8kmPj/JZn5/zin+/+S0f3///////v9 + /v+Y1P3/MaP6/xyR9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8qk/b/IHvh+QBczIEAV78H////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUDAV3PgR92 + 2u9Yp/L/QKP5/yGU+P8glPj/IZb4/yOX+P8kmPj/JZn5/yaa+f8mmvn/J5v5/yeb+f8nmvn/MKL6/23C + /P/k8/7////////////v+P7/Ybz8/ymd+f8bkPf/F433/xaM9/8Uivf/EYj2/xiL9v85mPX/CmXT2wBb + zjn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAFzOEwJf0I8adNr1XbD4/zmh+P8ilvj/I5j4/ySZ+P8mmvj/J5v4/yic+P8pnPj/KZz4/ymc + +P8qnfj/SrD7/8Hl/f/8/v7/////////////////w+b+/0iw+/8ilfj/GY/3/xeN9/8Vi/f/E4n2/ySR + 9/81j+3/AFzO4QBbzlMAWs8H////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBd0QkAXM6JIHnb+Vut9f8/pPn/JZn4/yeb+f8pnPj/Kp35/yue + +f8rn/n/LJ/5/yue+f8rnfj/otX8//7///////////////7+/v//////+vz+/6XZ/P88qfr/HJH4/xiO + 9/8WjPf/E4r3/xmM9/84m/f/Mo3q/xZx2v0HY9LHAFzOSwBbzhcAXs8D////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssNBWHQpSqC4PlgsPf/OqT5/ymd + +f8qnvn/LJ/5/y2g+v8toPn/LaD5/yOX+f9csPn/9vr+///////+/v7////////////+/v7//////+v2 + /v9ywPv/I5f4/xqP9/8Xjff/FIv3/xKJ9/8Vifb/KZL3/zaV9P8vien9FXDZ7wRf0KkAXM1ZAFnSCf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNIwVi + 0a8uheL9Z7n6/zql+f8sn/n/LaH6/y+i+v8wo/r/J5v4/zKZ+P/F4vz///////7+/v////////////// + ///////////////////a7v7/L534/xyS+P8Yjvf/FYz3/xOJ9/8RiPb/D4b2/xSH9v8jjvf/OZXy/y6H + 6P0Qa9bnAFzOqQBbzTsAWcsF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzisAW87VUKPv/1ay+v8vofr/MKP6/zGk+v8zpfr/E4b2/3i4+f/S5/3/1Oj9/9zs + /f/4+/7/////////////////1en9/9bq/f/W6v3/hcL6/xqP9/8Zj/f/Foz3/xSK9/8RiPf/D4X2/w2E + 9v8Kgvb/DIL1/yqQ9v9CnPb/LILk/QVg0P0AW82X////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAFzPEQBczn8fd9rvaLb3/0es+v8wovr/MaT6/zOl+v80p/r/GIz3/yqS + 9/8zl/f/MZb2/1Gk+P/c7P3//v7+////////////PJ74/zWY9/80mPf/LZX3/xeM9/8Zjvf/F433/xWL + 9/8SiPf/D4b1/w2E9v8Rhfb/J5D2/zaV9P8wiOn9GnLb8wVg0LMAW81b////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvNdR112e9msPL/Tq76/zGj+v8xo/r/M6b6/zWn + +v83qfv/M6X6/y+h+v8tofr/JZn4/zSX9//V6f3///////7+/v/+/v7/LKD6/x6T+P8dkff/G5D3/xqQ + 9/8aj/f/F433/xWL9/8Siff/E4j2/ymS9/9Dnvj/No7r/xhx2v0IY9LNAFrNUQBbzRsAWcwD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBczQsAXM1rIHfb/2ay9f9Sr/r/LaD6/y+i + +v8xpPr/NKb6/zeo+/84qvv/Oqz7/zqr+/84qvv/LqD6/zaY+P/V6f3/////////////////M6b6/ySY + +f8ilvj/H5T4/x2S+P8akPf/F433/xmN9/8ul/j/SaD0/z6S6/8ZctntAFvOtwBczk0AXNEJ////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFrNCwBbzWcWcNjpZbD0/1ax + +v8voPn/LaD6/y+i+f8ypPr/NKf6/zeo+/85q/v/PK36/zus+/85q/v/LqH6/zaY+P/V6f3//v7+//// + ////////MaP5/ySY+P8il/j/H5T3/x2S+P8akPj/F433/y6Y9/9MoPP/Hnbb8wdi0bEAXM5jAFvRD/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzOWRNu + 1+deqPD/WrL6/y2e+f8qnfn/LaD6/y+i+v8xpPr/NKb6/zeo+/84qvv/Oqz6/zqr+/84qvv/LqD6/zaY + +P/V6f3///////7+/v/+/v7/LKD5/yOY+P8ilvj/H5T4/xyS9/8akPj/F433/zGZ+P9MnvD/AFzNzwBc + zSUAXNED////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBY + ywMAW81RC2fT+1ai7P+Bwfj/XbP5/1ax+v9Mrfn/RKr6/0Kq+v9Aqvr/O6n6/zWn+v83qfv/OKn7/zip + +/83qPv/LKD5/zaY+P/V6f3/////////////////Jpr4/yKX+P8ilvj/H5T4/x2S+P8akPf/F433/xyP + 9/9Tqfj/GnLY5QBdzlH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBdzwcAW86bCWPR3yt/3fEzheD9Po3j/0mV5v1WoOr9Yqvw/2ey9P9ruPf/ar37/0Ks + +v81p/r/Nqj6/zan+/81p/r/K575/y6U9/+y1vz/1Oj9/9To/f/U6P3/IZb4/yGV+P8hlvj/HpP3/xyR + +P8aj/f/F433/xWL9/85nPj/QZHo/QNfz5UAXc4N////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAW84dAFzOMQFdzjkAW81HAFzOawNfzocLZdKlEmzVzxZv + 1u0acdf9ZbP0/1e1+v8zpfr/M6X6/zOl+v8ypfr/LJ/5/xaK9v8ji/b/Ko/2/yqP9v8qj/b/Eor3/yGV + 9/8glfj/HZL4/xyR9/8Zj/f/Foz3/xSK9/8ZjPf/VqTx/xdv19cAXM4t////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM6/X63y/1Wz+/8wo/r/MKP6/zCj+v8wovr/L6L6/y6h+v8sn/n/Kp35/yic + +f8mmvj/JJj4/yGW+P8klvj/LZr4/yeW+P8ekff/FYz3/xOJ9/8RiPb/Q5/2/zeH4v8FYM97////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBZ2QUAW87DZLH0/1Cw+v8uofr/LqH6/y6h+f8uofr/LKD5/yyf + +f8qnfn/KJz4/yeb+f8lmfn/Ipf4/yGW+P9Lqfn/Xa31/1ut9/9Uq/j/QaD4/zCY+P8fj/b/KJL2/02c + 7v0RadTZAFnMCf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBb0Q8AW87HabX2/0ut+v8rn/n/LJ/5/yyf + +f8toPn/V7L6/2G2+v83o/n/J5v5/yWZ+f8jl/j/IZb4/y2b+P9tuPn/G3LX/xpx2P8sf9/7SJns/1mo + 9P9hr/j/Xa35/2iw9/8keNv7AFvORf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBdzxsAXM7Nbrn4/0Oo + +f8pnPn/Lp/5/0aq+v9uuvj/XKXs/1Kf6/9vufn/LJz5/yOX+P8hlvj/H5T4/0Sl+f9bpe7/AFzNsQBa + zCkAW85fAF3OpQBczckJY9LXJn3f80SS6P06iuP/AFzOtQBf0gv///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd + zyUAXM7Rcrz6/z6l+f8yoPn/XbT6/2ix8/89jOL9B2LQvQ1o1NNWou3/WbH6/yaY+P8flPj/IpX4/1iu + +f87ieH9AFzOY////wH///8BAF3QAwBdzRMAW805AFzOZwBbzYsCXc6vAFzOuwBczh////8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzy8AXM7Vd7/6/1aw+v9wvPr/Up7r/xtx1+8GYdGFAFzPIQBbzlsRatXnb7j3/0Sm + +f8elPj/Kpj4/2Gu9v8ec9f9AFnNGf///wH///8B////Af///wH///8B////AQBZywcAW84ZAFzNKQBc + zQf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBczjkFYtLXhcT5/2uv8f8uf9zxAFzPqQBczi////8B////Af// + /wEAW851I3nb+Wmz9/83nvj/OJ74/1ih7P0RatS7////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBbzkMIY9HfSJTl/Rtx1tUBXc51AFrOD/// + /wH///8B////Af///wEAV84LB2PRsz6P5f9ksvj/WKz4/0GN4/8FYM5v////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBbzVcBXM7rCGLRowBb + zzMAWs4H////Af///wH///8B////Af///wH///8BAFvNNwxm0tFXo+7/cbX2/yt+3esAXM47////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBZ + zA8AXMwt////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBczk8KZdLhU5vp/w1l + 0a8AW84Z////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd + zwcAXM55CmPR/wBczYkAXM0F////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAW84PAFzOmwBbzTf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA + AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAADAAAABQAAAAUAAAAFAAAABQAA + AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABQAAAAcAAAAHAAAABwAA + AAcAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAHAAAABwAAAAcAAAAHAAAABQAA + AAUAAAAFAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABQAAAAcAAAAHAAAACQAA + AAkAAAAJAAAACwAAAAsAAAALAAAACwAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAALAAAACwAA + AAsAAAALAAAACQAAAAkAAAAJAAAABwAAAAcAAAAFAAAABQAAAAMAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAUAAAAHAAAABwAA + AAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAAPAAAADwAAAA8AAAAPAAAADwAAABEAAAARAAAAEQAA + AA8AAAAPAAAADwAAAA8AAAAPAAAADQAAAA0AAAANAAAACwAAAAsAAAAJAAAACQAAAAcAAAAHAAAABQAA + AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAA + AAcAAAAJAAAACQAAAAsAAAALAAAADQAAAA0AAAAPAAAADwAAABEAAAARAAAAEQAAABMAAAATAAAAEwAA + ABMAAAATAAAAEwAAABMAAAATAAAAEwBIn0EAWcirAAwYFQAAABEAAAARAAAADwAAAA8AAAAPAAAADQAA + AA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA + AAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEwAAABMAAAATAAAAFQAA + ABUAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAnYicAXM7/AFzO/wBKoU0AAAAVAAAAFQAA + ABMAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAEwAA + ABUAAAAXAAAAFwAAABkAAAAZAAAAGQAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAACRsAWcfBAmHR+wZi + 0f0AVr6VAAAAGQAAABcAAAAXAAAAFQAAABUAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAA + AAcAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQA5 + eSkAWMWrAD6NOwAAABcAAAAXAAAAGQAAABsAAAAbAAAAHQAAAB0AAAAdAAAAHwAAAB8AAAAfAAAAHwAA + AB8AUbaLAF3P/R6E7v8UdeL/AFzM4QAAABsAAAAbAAAAGQAAABkAAAAXAAAAFQAAABUAAAATAAAAEQAA + AA8AAAAPAAAADQAAAAsAAAAJAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAA + AA8AAAARAAAAEQAAABMAS6dPAFzO/wBczv8AU7mFAAkaHwAAABsAAAAdAAAAHwAAAB8AAAAhAAAAIQAA + ACEAAAAjAAAAIwAAACMARZddAF3P/RR65v8nj/b/JIbu/wBczv8ANnU9AAAAHQAAABsAAAAbAAAAGQAA + ABcAAAAXAAAAFQAAABMAAAARAAAAEQAAAA8AAAANAAAACwAAAAkAAAAJAAAABwAAAAUAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABwAA + AAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAEWdRwBczv8aeOH/A1/Q/QBbydcAPYVHAAAAHwAA + ACEAAAAjAAAAIwAAACUAAAAlAAAAJQAAACcAKlw9AFvM8Q1v3f0skvb/HYv2/ymR9v8GYtD9AE+wgQAA + AB8AAAAfAAAAHQAAABsAAAAZAAAAGQAAABcAAAAVAAAAEwAAABEAAAARAAAADwAAAA0AAAALAAAACQAA + AAcAAAAFAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAA + AAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABMAAAAVAAAAFwA/jj0AXM7/N5Ty/zyZ + 8/8Tb9n7AFzO/QBTt5EADSApAAAAJQAAACcAAAAnAAAAKQAAACkACxwvAFnG0Qdl1Psukvb/Io73/wmB + 9v8pkfb/E3Hd/wBZx8kAAAAjAAAAIQAAAB8AAAAdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAAEQAA + AA8AAAANAAAADQAAAAsAAAAJAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAFQAA + ABcAN3gzAFzO/zSS8P9Bn/j/QJ/4/yqH6P8FYND9AFvJ3wA6hlUAAAApAAAAKQAAACsAAAAtAFC1owFe + z/0rjvH/LZX3/w6E9v8Lgvb/Io73/yOE6/8AXM79ABtAMQAAACEAAAAhAAAAHwAAAB0AAAAbAAAAGQAA + ABcAAAAVAAAAEwAAABMAAAARAAAADwAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAAADwAA + ABEAAAATAAAAFQAAABUAAAAXACZZKQBczv8uju7/NJr3/x+P9/88nfj/Ppr0/xdy2/0AXc/9AFG1nwAP + JDMAAAAtAEOXcwBczf8jher/N5r4/xWI9v8Nhfb/DIT2/xiJ9v8xlPb/A17Q/wBJoW0AAAAjAAAAIQAA + AB8AAAAdAAAAGwAAABkAAAAXAAAAFwAAABUAAAATAAAAEQAAAA8AAAANAAAACwAAAAkAAAAHAAAABQAA + AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA + AAkAAAALAAAADQAAAA8AAAARAAAAEwAAABMAAAAVAAAAFwARKx8AXM7/LY7t/zqc+P8Tivf/Fov3/zCY + +P9Fovn/MIzr/wdi0P0AXMrlAEijfwBczfcXd+D/Pp74/x+P9/8Qh/b/D4b2/w6F9v8Phfb/NJj3/xJv + 2vsAVr2vAAAAIwAAACEAAAAfAAAAHQAAABsAAAAZAAAAFwAAABcAAAAVADZyJwBQtVkAWcehAE+zSwAA + AAsAAAAJAAAABwAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcAAAAZAF3O/S2M + 7P9AoPj/FYv3/xWL9/8Vi/f/IZH3/0Cg+P9Dn/X/G3fd/QBczv8LaNb9P5/4/y+X+P8Siff/EYj3/xGH + 9v8Qh/b/D4b2/y2V9/8kgub/AFzN8wAHDiUAAAAhAAAAHwAAAB0ACRIdAEGRQwBRuHcAWMSpAFvM4wBc + zv8AXM7/AFzO/wBbzNcAAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAkAAAALAAAADQAAAA8AAAARAAAAEwAA + ABUAAAAXAAAAFwBdzvUriun/RaT5/xeN9/8Xjff/F433/xeN9/8Zjvf/M5v4/0mm+f84lvH/Pp32/zyf + +P8Wi/f/FIr3/xOK9/8Siff/EYj3/xCH9v8ij/f/N5Xy/wFdzv8AR6FlAEedXwBUuY8AWcjHAFzN9wBc + zv8CXs79DGva+xN24/8jhO3/Hn/q/wBczv8AS6ozAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAA + AA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcBXc7rKojo/0un+f8Zjvf/GY/3/xmP9/8Zj/f/GY/3/xmO + 9/8jk/f/O5/4/zad+P8cj/f/Foz3/xaM9/8Vi/f/FIr3/xOK9/8Siff/F4v2/z6e+P8NZNH/AFzO/wBc + zv8IZNP5FHTf/x6A6P8oi/H/LpL3/y2S9/8pj/f/KY/3/xJu2vsAW8y/AAAACwAAAAkAAAAHAAAABQAA + AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA + AAUAAAAFAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAV3N4SiF5v9Rq/r/G5D4/xuQ + +P8bkPj/G5D4/xuQ+P8bkPj/GpD4/xqQ9/8Zj/f/GY/3/xiO9/8Xjff/F433/xaM9/8Vi/f/FIr3/xKJ + 9/83m/j/NZTy/yyM7f84mPX/Opv4/zeZ+P8sk/f/IIz2/xSG9v8Jf/X/F4b2/ymL8f8CXc7/AFS4TwAA + AAkAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAHAAAACQAAAAsAAAANAAAADQAAAA8AAAARAAAAEwFd + zNclg+X/WK76/xyS+P8dkvj/HZL4/x2S+P8dkvj/HJL4/xyR+P8ckfj/G5H4/xuQ+P8dkvj/I5j4/xmO + 9/8Xjff/Foz3/xWL9/8Uivf/GYz3/zKY+P8wl/f/JJD3/xeK9v8Ng/b/C4L2/wmB9v8IgPX/B3/1/yyS + 9/8ad+D/AFzN3QAAGgsAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAAAAcAAAAJAAAACwAA + AAsAAAANADVyHQBIoTkAXM7/IoDi/12x+v8fk/j/HpP4/x+U+P8flPj/H5T4/x6T+P8ek/j/HpP4/x2S + +P8elPj/Oaz7/z6v/P8wo/r/GY/3/xiO9/8Xjff/FYz3/xSK9/8Tiff/Eoj3/xCH9v8Phvb/DYT2/wyD + 9v8Kgvb/CYH2/xiI9v80k/T/BmHQ/QBYw2sAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBmzAUAYM8hAFnGPwBb + yV8AWsp9AFvMmwBczLkBXc7dAF3P9QBczv8AXM7/AFzO/ymG5f9fs/r/Ipb4/yCV+P8glfj/IJX4/yCV + +P8glfj/IJX4/x+U+P8flPj/M6X7/1G3/P+z4P7/Pq/8/yWb+f8Zj/f/GI73/xeN9/8WjPf/FIv3/xOJ + 9/8RiPf/EIf2/w6F9v8NhPb/C4P2/wqB9v8vlPf/JIHm/wBcz/MAOY4TAAAABQAAAAMAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc + zv8AXM7/AFzO/wBczv8CXs/9DmnV+Rt12/sngOH/M4zn/z+V7P9KoPD/VKn1/2Cy+f9jtfr/Sqn5/yKW + +P8il/j/Ipf4/yKX+P8il/j/Ipf4/yKW+P8hlvj/LJ/6/z+v/P/K6f7//////4nO/f88rfz/H5T5/xqP + 9/8Yjvf/F433/xWM9/8Uivf/E4n3/xGI9v8Qhvb/DoX2/wyE9v8WiPb/PJr3/w5n1PsAWsuNAAAABQAA + AAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXc/JAFzO/ziP6v9lsff/Z7X6/2a1+v9ntfr/ZLT6/12x+v9Urfr/TKr5/0Sm + +f88o/n/M574/yOY+f8kmPn/JJj5/ySY+f8kmPn/JJj5/ySY+f8jmPn/J5r5/z2t/P+S0v3///////// + ///2+///Wbr8/zWn+/8bkPj/Go/3/xiO9/8Xjff/FYv3/xSK9/8Siff/EYf2/w+G9v8Nhfb/L5X3/zGM + 6/8AXc79AFi/If///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFXVBwBczrcFYtL7Z7D1/2m2+v80nfn/JJX4/x6T + +P8glPj/IZX4/yKW+P8jl/j/JJj5/ySZ+f8lmfn/Jpr5/yaa+f8mmvn/Jpr5/yaa+f8mmvn/Jpn5/ziq + /P9fvf3/+fz//////////////////9Xu/v9BsPz/K5/6/xuQ+P8Zj/f/GI73/xaM9/8Vi/f/E4r3/xKI + 9/8Qh/b/FYj2/0Of+P8Xcdr7AFzPq////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAZswLAF3PyQll + 0vtcrPb/YLL6/ySW+P8glfj/IZb4/yKX+P8jmPn/JJn5/yWZ+f8mmvn/J5v5/yeb+f8onPn/KJz5/yic + +f8onPn/KJv5/zKk+/9Dsfz/3PH+////////////////////////////oNf+/z2u/P8il/j/G5D4/xmP + 9/8Xjff/Foz3/xSL9/8Tiff/EYj2/y2V9/9AmPH/AV3O/wBbzTn///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBVzA8BXtDXDmnV+2Oy+P9es/r/JZj4/yKX+P8kmPn/JZn5/yaa+f8nm/n/KJz5/ymc + +f8pnfn/Kp35/yqd+f8qnfn/Kp35/yuf+f81p/v/ptn9//////////////////////////////////3+ + //9pwf3/OKr8/x2R+P8akPj/GY73/xeN9/8Vi/f/FIr3/xKI9/88nfj/MIjn/wBczv8AXM+lAFrPJf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAF3RFwFdz+ESbtb7arb4/12z+v8nmfn/JZn5/yaa + +f8om/n/KZz5/yqd+f8qnvn/K575/yuf+f8sn/n/LJ/5/yyf+f8qnvn/Y7j7//7///////////////// + ////////////////////////5fT+/0Wx+/8vovr/G5H4/xmP9/8Yjvf/Foz3/xSL9/8Tiff/JpP3/0yl + +P84kez/EmvW+wBdzv0AXM+fAGDPIf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssjAV3P6Rh1 + 2/twu/r/XbP7/yea+f8onPn/KZ35/yqe+f8rn/n/LJ/6/y2g+v8toPr/LqH6/y6h+v8lmfn/MZz4/+j0 + /v////////////////////////////////////////////////+y3f3/M6X6/yOX+f8akPj/GY73/xeN + 9/8Vi/f/E4r3/xKI9/8ejvf/PJz4/0uj+P81juz/D2rW+wBczvsAW86XAF7QG////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzC0BXM/xIHve/XS9+/9bs/r/KZ35/yqe+f8sn/n/LaD6/y6h+v8vofr/L6L6/y+i + +v8nmvr/FYv3/7PZ/P///////////////////////////////////////////////////////////2+9 + +/8qnfn/HJL5/xmP9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8djPf/PJv4/0mh+P8xi+r/DWfU+wBc + z/kAXM2RAFnTF////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAF3MNwBdz/koguH9ecH7/1Wx+v8sn/r/LaD6/y6h + +v8vovr/MKP6/zGk+v8tofn/DYX3/2ey+f////////////////////////////////////////////// + ///////////////////v+P//OaH5/yGV+P8akPj/GI73/xaN9/8Vi/f/E4n3/xGI9v8Phvb/DYT2/wuD + 9v8civf/PJv3/0ef9/8viOn/C2bT+wBdzvcAXM6JAFnMFf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW85DAFzO/zuT + 6f99xPv/MqL6/y+h+v8wo/r/MaT6/zKk+v8zpfr/EIf2/yKL9v/y+P7///////////////////////// + /////////////////////////////////////////////8Lh/f8aj/f/G5D4/xmP9/8Xjff/FYv3/xOK + 9/8RiPf/EIb2/w6F9v8Mg/b/CoL2/wiA9f8bifb/Opn3/0Wd9v82i+n/CmTS+wBczv8AXM1t////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAF3PhQBczv9XqPL/esP8/y+h+v8wovr/MaT6/zKl+v80pvr/NKf6/wR89v8vkvf/Vab4/1Wm + +P9Vpvj/Vab4/5HF+////////////////////////////1qq+P9bq/n/XKz5/12t+f9ervn/II/3/xWM + 9/8Zj/f/F433/xaM9/8Uivf/Eoj3/xCH9v8Ohfb/DIT2/wqC9v8IgPb/GIj2/zqZ9/9In/j/PpHt/w9p + 1fsAXM7/AFzOjf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAFzPewBczv9Qoe7/gMX7/0ar+/8vovr/MaP6/zKl+v80pvr/Naf7/zao + +/8nm/n/E4r3/xKJ9/8Siff/EYn2/wZ+9f9aqPn///////////////////////////8jl/n/EIb3/w2E + 9v8NhPb/DYT2/w+H9v8aj/j/Go/3/xiO9/8WjPf/FIr3/xKJ9/8Qh/b/DoX2/wyE9v8di/f/QJz4/0+k + +P84j+z/EmvW+wBbzv8AXM6nAFnMKf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvObQBczf9JnOz/g8b7/0ms+/8uofr/MKP6/zKk + +v8zpvr/Naf7/zeo+/84qvv/Oar7/zmq+/84qvv/N6n7/zao+/8Siff/Wqj5//////////////////// + ////////Nqn7/yOY+f8kmPn/Ipb4/yCV+P8ek/j/HJH4/xqQ9/8Yjvf/Foz3/xSL9/8Siff/EIf2/yKP + 9/9FoPj/Vqj5/z2T7f8TbNb7AFvO/wBczqcAWcwp////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNYQBczv9Dl+v/hcf8/06u + +v8toPr/LqH6/zCj+v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo + +f///////////////////////////zmr+/8mmvn/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM + 9/8Ui/f/JpP4/0uk+P9crfn/Qpbt/xVu1/sAW87/AFzOpwBc0Sf///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNVwBd + z/09kuj/h8f8/1Kw+v8rnvn/LaD6/y+i+v8xo/r/M6X6/zSn+v82qPv/OKr7/zqs+/88rfv/PK77/zus + +/85q/v/N6n7/xOJ+P9aqPn///////////////////////////84qfv/JZn5/ySY+f8il/j/IJX4/x6T + +P8ckvj/GpD4/xiO9/8Wjff/N5z4/2Kw+v9Gmu7/Fm7X+wBdz/0AXM6nAFzRJ////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAFvNTQBczvs2jOb/iMf8/1ex+v8pnfn/K575/y2g+v8vovr/MaP6/zOl+v80p/r/Nqj7/ziq + +/86rPv/PK37/zyu+/87rPv/Oav7/zep+/8Tifj/Wqj5////////////////////////////NKX6/yOY + +P8kmPn/Ipf4/yCV+P8ek/j/HJL4/xqQ+P8Yjvf/Fo33/1ar+f86j+n/AFzO/wBczqcAXNEn////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAF3NQwBdz/kvh+P/h8b8/12z+/8nm/n/KZz5/yue+f8toPr/L6H6/zCj + +v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo+f////////////// + /////////////y+i+v8jmPf/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM9/9Kpvn/UqDv/wBc + zv8AXswf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvNOQBdzvcoguD9icb7/4rI+/9Xsfr/S6z6/0Cn + +v81o/n/LZ/6/y6h+v8wo/r/MqT6/zOm+v81p/v/N6j7/ziq+/85qvv/Oar7/ziq+/83qfv/Nqj7/xKJ + 9/9aqPn///////////////////////////8qnfn/IZf4/ySY+f8ilvj/IJX4/x6T+P8ckfj/GpD3/xiO + 9/8WjPf/J5X4/2iz+f8Vbdb7AF3Oh////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFnMFQBczv8AXM7/P5Hn/2Sq + 7/9osPP/eLz4/4jH+/+Myvz/jcv8/43L/P+Cxvz/dsL8/2u9+/9bt/v/Nqf6/zWn+/82qPv/N6n7/zep + +/83qPv/Nqj7/zSn+v8SiPf/Wqj5////////////////////////////Jpr5/yCV+P8jmPn/IZb4/x+U + +P8ek/j/HJH4/xqP9/8Yjvf/Foz3/xSK9/9ZrPn/Q5Pp/wBdz+8AbdsH////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBt + 2wcAW86XAFzOtwFdz9UBXc7zAFzO/wBczv8AXM7/D2nT+SR62/s3iuP/SZrq/1uo7/9ttvT/i8v8/2u+ + +/80pvr/Naf6/zWn+/81p/v/Naf7/zSm+v8zpfr/Eon3/zyZ9/+q0vz/qtL8/6rS/P+q0vz/qtL8/x+V + +f8ek/j/I5f4/yGV+P8flPj/HZL4/xuR+P8Zj/f/F433/xaM9/8Uivf/NJn4/2ex9/8JYtD/AFzOX/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBVzA8AXtAxAFvNUQBdzXEAW86RAF7PtQFe + 0NkBXM73AFzO/0+k7/+DyPz/MqX6/zOl+v8zpfr/M6b6/zOl+v8ypfr/MaT6/yGW+f8CevX/AHn1/wB5 + 9f8AefX/AHn1/wB59f8Jgvb/IZX4/yKX+P8glfj/HpP4/x2S+P8bkPj/GY/3/xeN9/8Vi/f/E4r3/xSJ + 9/9lsvn/M4bj/QBdzs3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBdzv1UpO7/fcX8/zCj+v8xpPr/MaT6/zGk+v8xpPr/MaP6/zCj + +v8vovr/LqH6/yyg+v8rnvn/KZ35/yic+f8mmvn/JZn5/yOX+P8hlvj/H5T4/x6T+P8ckfj/GpD4/xiO + 9/8Wjff/FYv3/xOJ9/8RiPb/Q6D4/2Co8/8CXc7/AF3ONf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQCA/wMAXM7/XKrx/3fC/P8vovr/L6L6/y+i + +v8vovr/L6L6/y+i+v8uofr/LaD6/yyf+v8rnvn/Kp35/yic+f8nm/n/JZn5/ySY+f8il/j/IJX4/zig + +f9fsvr/Wq/6/0Kj+P8ql/j/F4z3/xSK9/8Siff/EIf2/xuM9v9ttfr/JXfY+wBczqH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUTAFzO/2Ov + 8/9wvvz/LaD6/y2g+v8uofr/LqH6/y2h+v8toPr/LKD6/yyf+f8rnvn/Kp35/yic+f8nm/n/Jpr5/ySY + +f8jl/j/IZb4/ySX+P98wPv/Xqnx/12p8v92uvj/er76/3O5+v9arfn/QaD5/ymU9/8Sh/b/Uqf5/1Gd + 7v8AXM/5AFnMFf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAF3RIQBczv9rtPX/abv7/yue+f8rn/n/LJ/5/yyf+f8sn/n/LqH5/161+v9+w/v/arv7/yye + +f8nm/n/Jpr5/ySZ+f8jl/j/IZb4/yCV+P9BpPn/f8D5/whh0P8AXM7/AV3P/xlw2fk1iub/UaDv/2my + 9/91ufr/cbf6/3G3+v9vtPn/EmrU+wBcz3X///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBe0DEAXM7/crr3/2G2+/8pnfn/Kp35/yqd+f8qnfn/Qqj6/37E + +/+Fxfr/TJvq/4LD+v9ouPv/JZn5/ySY+f8jl/n/Ipb4/yCV+P8flPj/YrP6/2Go7v8AXc73AFjKHQBb + zVEAXM+PAF7PzwBdzv0AXM7/DmjV+SqB4v9Fluz/cLP2/0GQ5v8AXc/jAID/A////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9BAFzO/3i++f9as/r/J5v5/yic + +f8un/n/ZLj7/4zK/P9kq+//D2jS+wBczv8shOL9isj8/02r+v8jl/j/Ipb4/yCV+P8flPj/IZT4/4HC + +/85h+D9AFzOrf///wH///8B////Af///wEAXdELAF3NQwBbzn8AXc+/AFzO9wBczv8EX8//AFzO/wBd + z0v///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAF7PTwBc + zv9/w/v/Uq76/yaa+f9Fqfr/gcT8/3/A+P8yhOD9AF3P/QBdz48AXM9RAF3P/U6e7f+Gxvv/NJ/5/yCV + +P8flPj/HpP4/zuh+f+Ewvr/DWXS/QBczln///8B////Af///wH///8B////Af///wH///8B////AQBV + qgMAWs0zAFzPbwBczssAXM4v////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbz18BXc/9hcX7/1Sv+v9qufv/isj7/1ei7f8JY9H9AV3P1wBbzzX///8B////AQBb + zoMCXs/9bLT1/3i/+/8kl/j/HZP4/xyS+P9csPr/aKzw/wBczvsAVcwP////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAXc5vBGHS+YnH+/+Jx/v/d7n1/yZ52vsAXc/5AF3PeQBA + vwX///8B////Af///wEAVaoDAFzPxRBq1ft9wPr/YbP6/xyR+P8ckPj/fL/6/z2N4/0AXc+7////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFvOfw1q1fmHxfr/V5/p/wVf + 0P8BXc7DAFrPJf///wH///8B////Af///wH///8B////AQBYzhsBXs/tKYLh/YXE+/9Fpfn/M5z4/4PC + +v8TadP9AF3NZ////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc + zo0HYM//HHHX+wBdz/MAW85j////Af///wH///8B////Af///wH///8B////Af///wH///8BAF3NRwBb + zv9Km+z/gcL7/2m1+v9usfP/AFvO/wBgyhn///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM25AFzO/wBdz6sAWdMX////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM2FAl7P/Wex9f+Dwvv/RpPm/wBdz8v///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFnMKQBdzUP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFWqAwBdz8cQa9X7gsD6/xlu1PsAXM91////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXtAbAF3P7x1x + 2P8AXM7/AFzNJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzkkAXM7/AFzO/////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAF3PjwBczT3///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + + 4, 2, 4, 2 + + + CenterParent + + Software Update - + DownloadUpdateDialog - + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.ru.resx b/AutoUpdater.NET/DownloadUpdateDialog.ru.resx index fe0740f5..16a5831d 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.ru.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.ru.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Обновление программы - + Загружается обновление... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.sk.resx b/AutoUpdater.NET/DownloadUpdateDialog.sk.resx index 4b716566..4497884c 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.sk.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.sk.resx @@ -1,129 +1,135 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 132, 15 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 132, 15 + + Sťahujem aktualizáciu... - + Aktualizácia programu \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.sv.resx b/AutoUpdater.NET/DownloadUpdateDialog.sv.resx index 4f754afa..93f19c31 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.sv.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.sv.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Laddar ner uppdatering... - + Programuppdatering \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.th.resx b/AutoUpdater.NET/DownloadUpdateDialog.th.resx index 228be352..3856647b 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.th.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.th.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + อัปเดตซอฟต์แวร์ - + กำลังดาวน์โหลดอัปเดต... \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.tr.resx b/AutoUpdater.NET/DownloadUpdateDialog.tr.resx index 8f0ec98f..81959121 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.tr.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.tr.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Yazılım Güncelleme - + Güncelleme İndiriliyor.. \ No newline at end of file diff --git a/AutoUpdater.NET/DownloadUpdateDialog.zh-TW.resx b/AutoUpdater.NET/DownloadUpdateDialog.zh-TW.resx new file mode 100644 index 00000000..96f50936 --- /dev/null +++ b/AutoUpdater.NET/DownloadUpdateDialog.zh-TW.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 軟體更新 + + + 下載中... + + diff --git a/AutoUpdater.NET/DownloadUpdateDialog.zh-tw.resx b/AutoUpdater.NET/DownloadUpdateDialog.zh-tw.resx deleted file mode 100644 index a620a766..00000000 --- a/AutoUpdater.NET/DownloadUpdateDialog.zh-tw.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 軟體更新 - - - 下載中... - - diff --git a/AutoUpdater.NET/DownloadUpdateDialog.zh.resx b/AutoUpdater.NET/DownloadUpdateDialog.zh.resx index 44f17902..2704a406 100644 --- a/AutoUpdater.NET/DownloadUpdateDialog.zh.resx +++ b/AutoUpdater.NET/DownloadUpdateDialog.zh.resx @@ -1,126 +1,132 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 正在下载更新... - + 软件更新 \ No newline at end of file diff --git a/AutoUpdater.NET/IAuthentication.cs b/AutoUpdater.NET/IAuthentication.cs index 90d6d7ed..9ee2b641 100644 --- a/AutoUpdater.NET/IAuthentication.cs +++ b/AutoUpdater.NET/IAuthentication.cs @@ -1,10 +1,13 @@ -namespace AutoUpdaterDotNET -{ +namespace AutoUpdaterDotNET; +/// +/// Interface for authentication +/// +public interface IAuthentication +{ /// - /// Interface for authentication + /// Apply the authentication to webclient. /// - public interface IAuthentication - { - } -} + /// WebClient for which you want to use this authentication method. + void Apply(ref MyWebClient webClient); +} \ No newline at end of file diff --git a/AutoUpdater.NET/IPersistenceProvider.cs b/AutoUpdater.NET/IPersistenceProvider.cs index eea04cf9..4c5c599c 100644 --- a/AutoUpdater.NET/IPersistenceProvider.cs +++ b/AutoUpdater.NET/IPersistenceProvider.cs @@ -1,34 +1,43 @@ using System; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// Provides a mechanism for storing AutoUpdater state between sessions. +/// +public interface IPersistenceProvider { /// - /// Provides a mechanism for storing AutoUpdater state between sessions. + /// Reads the flag indicating whether a specific version should be skipped or not. /// - public interface IPersistenceProvider - { - /// - /// Reads the flag indicating whether a specific version should be skipped or not. - /// - /// Returns a version to skip. If skip value is false or not present then it will return null. - Version GetSkippedVersion(); + /// Returns a version to skip. If skip value is false or not present then it will return null. + Version GetSkippedVersion(); - /// - /// Reads the value containing the date and time at which the user must be given again the possibility to upgrade the application. - /// - /// Returns a DateTime value at which the user must be given again the possibility to upgrade the application. If remind later value is not present then it will return null. - DateTime? GetRemindLater(); + /// + /// Reads the value containing the date and time at which the user must be given again the possibility to upgrade the + /// application. + /// + /// + /// Returns a DateTime value at which the user must be given again the possibility to upgrade the application. If + /// remind later value is not present then it will return null. + /// + DateTime? GetRemindLater(); - /// - /// Sets the values indicating the specific version that must be ignored by AutoUpdater. - /// - /// Version code for the specific version that must be ignored. Set it to null if you don't want to skip any version. - void SetSkippedVersion(Version version); + /// + /// Sets the values indicating the specific version that must be ignored by AutoUpdater. + /// + /// + /// Version code for the specific version that must be ignored. Set it to null if you don't want to + /// skip any version. + /// + void SetSkippedVersion(Version version); - /// - /// Sets the date and time at which the user must be given again the possibility to upgrade the application. - /// - /// Date and time at which the user must be given again the possibility to upgrade the application. - void SetRemindLater(DateTime? remindLaterAt); - } + /// + /// Sets the date and time at which the user must be given again the possibility to upgrade the application. + /// + /// + /// Date and time at which the user must be given again the possibility to upgrade the + /// application. + /// + void SetRemindLater(DateTime? remindLaterAt); } \ No newline at end of file diff --git a/AutoUpdater.NET/JsonFilePersistenceProvider.cs b/AutoUpdater.NET/JsonFilePersistenceProvider.cs index b05ad199..03fda34b 100644 --- a/AutoUpdater.NET/JsonFilePersistenceProvider.cs +++ b/AutoUpdater.NET/JsonFilePersistenceProvider.cs @@ -4,120 +4,116 @@ using System.Runtime.Serialization.Json; using System.Text; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// Provides a mechanism for storing AutoUpdater state between sessions on a Json formatted file. +/// +public class JsonFilePersistenceProvider : IPersistenceProvider { /// - /// Provides a mechanism for storing AutoUpdater state between sessions on a Json formatted file. + /// Initializes a new instance of the JsonFilePersistenceProvider class. /// - public class JsonFilePersistenceProvider : IPersistenceProvider + /// The path for the Json formatted file must be specified using the FileName property. + public JsonFilePersistenceProvider(string jsonPath) { - /// - /// Path for the Json formatted file. - /// - public string FileName { get; set; } - - /// - /// - /// - public PersistedValues PersistedValues { get; set; } - - /// - /// Initializes a new instance of the JsonFilePersistenceProvider class. - /// - /// The path for the Json formatted file must be specified using the FileName property. - public JsonFilePersistenceProvider(string jsonPath) - { - FileName = jsonPath; - ReadFile(); - } + FileName = jsonPath; + ReadFile(); + } - /// - /// Stores applied modifications into the Json formatted file specified in the FileName property. - /// - private void Save() - { - string json; + /// + /// Path for the Json formatted file. + /// + private string FileName { get; } - using (MemoryStream stream = new MemoryStream()) - { - DataContractJsonSerializer serializer = new DataContractJsonSerializer(PersistedValues.GetType()); - serializer.WriteObject(stream, PersistedValues); - - using (StreamReader reader = new StreamReader(stream)) - { - stream.Seek(0, SeekOrigin.Begin); - json = reader.ReadToEnd(); - } - } + /// + /// + private PersistedValues PersistedValues { get; set; } - File.WriteAllText(FileName, json); - } + /// + public Version GetSkippedVersion() + { + return PersistedValues.SkippedVersion; + } + + /// + public DateTime? GetRemindLater() + { + return PersistedValues.RemindLaterAt; + } + + /// + public void SetSkippedVersion(Version version) + { + PersistedValues.SkippedVersion = version; + Save(); + } + + /// + public void SetRemindLater(DateTime? remindLaterAt) + { + PersistedValues.RemindLaterAt = remindLaterAt; + Save(); + } + + /// + /// Stores applied modifications into the Json formatted file specified in the FileName property. + /// + private void Save() + { + string json; - /// - /// Reads a Json formatted file and returns an initialized instance of the class PersistedValues. - /// - /// The function creates a new instance, initialized with default parameters, in case the file does not exist. - public void ReadFile() + using (var stream = new MemoryStream()) { - PersistedValues jsonFile = null; + var serializer = new DataContractJsonSerializer(PersistedValues.GetType()); + serializer.WriteObject(stream, PersistedValues); - if (File.Exists(FileName)) + using (var reader = new StreamReader(stream)) { - using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(File.ReadAllText(FileName)))) - { - DataContractJsonSerializer serializer = - new DataContractJsonSerializer(typeof(PersistedValues)); - jsonFile = (PersistedValues) serializer.ReadObject(stream); - } + stream.Seek(0, SeekOrigin.Begin); + json = reader.ReadToEnd(); } - - PersistedValues = jsonFile ?? new PersistedValues(); } - /// - public Version GetSkippedVersion() - { - return PersistedValues.SkippedVersion; - } + File.WriteAllText(FileName, json); + } - /// - public DateTime? GetRemindLater() - { - return PersistedValues.RemindLaterAt; - } + /// + /// Reads a Json formatted file and returns an initialized instance of the class PersistedValues. + /// + /// The function creates a new instance, initialized with default parameters, in case the file does not exist. + private void ReadFile() + { + PersistedValues jsonFile = null; - /// - public void SetSkippedVersion(Version version) + if (File.Exists(FileName)) { - PersistedValues.SkippedVersion = version; - Save(); + using var stream = new MemoryStream(Encoding.UTF8.GetBytes(File.ReadAllText(FileName))); + var serializer = + new DataContractJsonSerializer(typeof(PersistedValues)); + jsonFile = (PersistedValues)serializer.ReadObject(stream); } - /// - public void SetRemindLater(DateTime? remindLaterAt) - { - PersistedValues.RemindLaterAt = remindLaterAt; - Save(); - } + PersistedValues = jsonFile ?? new PersistedValues(); } +} +/// +/// Provides way to serialize and deserialize AutoUpdater persisted values. +/// +[DataContract] +public class PersistedValues +{ /// - /// Provides way to serialize and deserialize AutoUpdater persisted values. + /// Application version to be skipped. /// - [DataContract] - public class PersistedValues - { - /// - /// Application version to be skipped. - /// - /// The SetSkippedVersion function sets this property and calls the Save() method for making changes permanent. - [DataMember] - public Version SkippedVersion { get; set; } - - /// - /// Date and time at which the user must be given again the possibility to upgrade the application. - /// - [DataMember] - public DateTime? RemindLaterAt { get; set; } - } + /// The SetSkippedVersion function sets this property and calls the Save() method for making changes permanent. + [DataMember] + public Version SkippedVersion { get; set; } + + /// + /// Date and time at which the user must be given again the possibility to upgrade the application. + /// + [DataMember] + public DateTime? RemindLaterAt { get; set; } } \ No newline at end of file diff --git a/AutoUpdater.NET/MyWebClient.cs b/AutoUpdater.NET/MyWebClient.cs index 1e2d335c..967d6a4e 100644 --- a/AutoUpdater.NET/MyWebClient.cs +++ b/AutoUpdater.NET/MyWebClient.cs @@ -1,22 +1,21 @@ using System; using System.Net; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +public class MyWebClient : WebClient { + /// + /// Response Uri after any redirects. + /// + public Uri ResponseUri; + /// - public class MyWebClient : WebClient + protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result) { - /// - /// Response Uri after any redirects. - /// - public Uri ResponseUri; - - /// - protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result) - { - WebResponse webResponse = base.GetWebResponse(request, result); - ResponseUri = webResponse.ResponseUri; - return webResponse; - } + WebResponse webResponse = base.GetWebResponse(request, result); + ResponseUri = webResponse.ResponseUri; + return webResponse; } -} +} \ No newline at end of file diff --git a/AutoUpdater.NET/NetworkAuthentication.cs b/AutoUpdater.NET/NetworkAuthentication.cs new file mode 100644 index 00000000..8e7fc7ce --- /dev/null +++ b/AutoUpdater.NET/NetworkAuthentication.cs @@ -0,0 +1,30 @@ +using System.Net; + +namespace AutoUpdaterDotNET; + +/// +/// Provides credentials for Network Authentication. +/// +public class NetworkAuthentication : IAuthentication +{ + /// + /// Initializes credentials for Network Authentication. + /// + /// Username to use for Network Authentication + /// Password to use for Network Authentication + public NetworkAuthentication(string username, string password) + { + Username = username; + Password = password; + } + + private string Username { get; } + + private string Password { get; } + + /// + public void Apply(ref MyWebClient webClient) + { + webClient.Credentials = new NetworkCredential(Username, Password); + } +} \ No newline at end of file diff --git a/AutoUpdater.NET/ParseUpdateInfoEventArgs.cs b/AutoUpdater.NET/ParseUpdateInfoEventArgs.cs index 0a67ad4b..b3a11b3c 100644 --- a/AutoUpdater.NET/ParseUpdateInfoEventArgs.cs +++ b/AutoUpdater.NET/ParseUpdateInfoEventArgs.cs @@ -1,29 +1,28 @@ using System; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// An object of this class contains the AppCast file received from server. +/// +public class ParseUpdateInfoEventArgs : EventArgs { /// - /// An object of this class contains the AppCast file received from server. + /// An object containing the AppCast file received from server. /// - public class ParseUpdateInfoEventArgs : EventArgs + /// A string containing remote data received from the AppCast file. + public ParseUpdateInfoEventArgs(string remoteData) { - /// - /// Remote data received from the AppCast file. - /// - public string RemoteData { get; } + RemoteData = remoteData; + } - /// - /// Set this object with values received from the AppCast file. - /// - public UpdateInfoEventArgs UpdateInfo { get; set; } + /// + /// Remote data received from the AppCast file. + /// + public string RemoteData { get; } - /// - /// An object containing the AppCast file received from server. - /// - /// A string containing remote data received from the AppCast file. - public ParseUpdateInfoEventArgs(string remoteData) - { - RemoteData = remoteData; - } - } + /// + /// Set this object with values received from the AppCast file. + /// + public UpdateInfoEventArgs UpdateInfo { get; set; } } \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/AssemblyInfo.cs b/AutoUpdater.NET/Properties/AssemblyInfo.cs deleted file mode 100644 index c51847f5..00000000 --- a/AutoUpdater.NET/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; -using System.Resources; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("AutoUpdater.NET")] -[assembly: AssemblyDescription("AutoUpdater.NET is a class library that allows .NET developers to easily add auto update functionality to their classic desktop application projects.")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("RBSoft")] -[assembly: AssemblyProduct("AutoUpdater.NET")] -[assembly: AssemblyCopyright("Copyright © 2012-2020 RBSoft")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("a4037a6f-fdf7-46c8-a303-c3c4fcddb015")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.6.0.0")] -[assembly: AssemblyFileVersion("1.6.0.0")] -[assembly: NeutralResourcesLanguageAttribute("en")] diff --git a/AutoUpdater.NET/Properties/Resources.Designer.cs b/AutoUpdater.NET/Properties/Resources.Designer.cs index 6dbf3f9d..195b9e6f 100644 --- a/AutoUpdater.NET/Properties/Resources.Designer.cs +++ b/AutoUpdater.NET/Properties/Resources.Designer.cs @@ -175,6 +175,15 @@ internal static System.Drawing.Bitmap update { } } + /// + /// Looks up a localized string similar to Unable to determine the filename of the update file!. + /// + internal static string UnableToDetermineFilenameMessage { + get { + return ResourceManager.GetString("UnableToDetermineFilenameMessage", resourceCulture); + } + } + /// /// Looks up a localized string similar to Update Check Failed. /// diff --git a/AutoUpdater.NET/Properties/Resources.ar.resx b/AutoUpdater.NET/Properties/Resources.ar.resx index d7647462..7c54532c 100644 --- a/AutoUpdater.NET/Properties/Resources.ar.resx +++ b/AutoUpdater.NET/Properties/Resources.ar.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + جارٍ تنزيله على {0}/ثانية - + المجموع الاختباري (Checksum) مختلف - + فشل التحقق من سلامة الملفات وظهرت بعض الأخطاء. - + خوارزمية التجزئة (Hash) غير مدعومة - + خوارزمية التجزئة المقدمة في ملف XML غير مدعومة. - + فشل التحقق من التحديث - + هناك مشكلة في الوصول إلى سيرفر التحديث. يرجى التحقق من اتصال الإنترنت الخاص بك وحاول مرة أخرى في وقت لاحق. - + التحديث غير متاح - + لا يوجد تحديث متاح. الرجاء معاودة المحاولة في وقت لاحق. + + تعذر تحديد اسم ملف التحديث! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.cs.resx b/AutoUpdater.NET/Properties/Resources.cs.resx new file mode 100644 index 00000000..cfea4066 --- /dev/null +++ b/AutoUpdater.NET/Properties/Resources.cs.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Aktualizace není k dospozici. Kontrolu zopakujte, prosím, později. + + + Aktualizace není k dispozici. + + + Nastala chyba při připojení k aktualizačnímu serveru. Zkontrolujte internetové připojení a zkuste aktualizovat později. + + + Kontrola aktualizace se nezdařila. + + + Odlišné kontrolní číslo + + + Neúspěšná kontrola integrity, byly hlášené chyby. + + + Nepodporovaný hashovací algoritmus + + + Hashovací algoritmus uvedený v XML není podporovaný. + + + Stahování na {0}/s + + + Nelze určit název souboru aktualizace! + + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.da.resx b/AutoUpdater.NET/Properties/Resources.da.resx index 03888146..991c5c1f 100644 --- a/AutoUpdater.NET/Properties/Resources.da.resx +++ b/AutoUpdater.NET/Properties/Resources.da.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Der er ingen opdatering tilgængelig. Prøv igen senere. - + Opdatering Utilgængelig - + Der er et problem at nå opdateringsserver. Kontroller din internetforbindelse og prøv igen senere. - + Opdateringstjek mislykkedes - + Kontrolsummet afviger - + Filintegritetskontrol mislykkedes og rapporterede nogle fejl. - + Ikke understøttet Hash-algoritme - + Hash-algoritmen i XML-filen understøttes ikke. - + Downloader ved {0}/s + + Kan ikke bestemme filnavnet på opdateringsfilen! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.de.resx b/AutoUpdater.NET/Properties/Resources.de.resx index 89006339..9e716340 100644 --- a/AutoUpdater.NET/Properties/Resources.de.resx +++ b/AutoUpdater.NET/Properties/Resources.de.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Es ist kein Update vorhanden. Bitte versuchen Sie es später noch einmal. - + Update nicht verfügbar - + Es gibt ein Problem beim Erreichen des Aktualisierungsservers. Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es später noch einmal. - + Update Check fehlgeschlagen - + Checksumme ist unterschiedlich - + Die Dateiintegritätsprüfung ist fehlgeschlagen und hat einige Fehler gemeldet. - + Nicht unterstützter Hash-Algorithmus - + Der in der XML-Datei enthaltene Hash-Algorithmus wird nicht unterstützt. - + Herunterladen bei {0}/s + + Der Dateiname der Update-Datei kann nicht ermittelt werden! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.es.resx b/AutoUpdater.NET/Properties/Resources.es.resx index 78546781..816c71fb 100644 --- a/AutoUpdater.NET/Properties/Resources.es.resx +++ b/AutoUpdater.NET/Properties/Resources.es.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + No hay actualización disponible. Por favor, inténtelo de nuevo más tarde. - + Actualización no disponible - + Hay un problema al llegar al servidor de actualización. Comprueba tu conexión a Internet y vuelve a intentarlo más tarde. - + Error en la comprobación de la actualización - + La suma de comprobación difiere - + La comprobación de la integridad de los archivos falló y reportó algunos errores. - + Algoritmo Hash no soportado - + El algoritmo Hash proporcionado en el archivo XML no es compatible. - + Descargando a {0}/s + + ¡No se puede determinar el nombre de archivo del archivo de actualización! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.fr.resx b/AutoUpdater.NET/Properties/Resources.fr.resx index 6fec1b0f..b2f3c382 100644 --- a/AutoUpdater.NET/Properties/Resources.fr.resx +++ b/AutoUpdater.NET/Properties/Resources.fr.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Il n'y a pas de mise à jour disponible. Veuillez réessayer plus tard. - + Mise à jour indisponible - + Il y a un problème concernant le serveur de mise à jour. Vérifiez votre connexion Internet et essayez à nouveau plus tard. - + Vérification de mise à jour échoué - + Somme de contrôle différente - + La vérification de l'intégrité du fichier a échoué et a rapporté quelques erreurs. - + Algorithme de hachage non supporté - + L'algorithme de hachage fourni dans le fichier XML n'est pas supporté. - + Téléchargement à {0}/s + + Impossible de déterminer le nom de fichier du fichier de mise à jour ! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.it.resx b/AutoUpdater.NET/Properties/Resources.it.resx index 2da7b218..ffb192ea 100644 --- a/AutoUpdater.NET/Properties/Resources.it.resx +++ b/AutoUpdater.NET/Properties/Resources.it.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Non è disponibile alcun aggiornamento. Per favore riprova più tardi. - + Aggiornamento non disponibile - + Si è verificato un problema nel contattare il server degli aggiornamenti. Controlla la tua connessione a Internet o riprova più tardi. - + Controllo degli aggiornamenti non riuscito - + Checksum differente - + La verifica dell' integrità dei file non è riuscita e ha segnalato alcuni errori. - + Algoritmo Hash non supportato - + L' algoritmo Hash fornito nel file XML non è supportato. - + Download in {0}/s + + Impossibile determinare il nome file del file di aggiornamento! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.ja-JP.resx b/AutoUpdater.NET/Properties/Resources.ja-JP.resx index 39cde2a3..c9e6df1c 100644 --- a/AutoUpdater.NET/Properties/Resources.ja-JP.resx +++ b/AutoUpdater.NET/Properties/Resources.ja-JP.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + チェックサムは異なります - + ファイルの整合性チェックに失敗し、いくつかのエラーが報告されました。 - + サポートされていないハッシュアルゴリズム - + XMLファイルで提供されるハッシュアルゴリズムはサポートされていません。 - + アップデートの確認に失敗しました。 - + アップデートサーバーへの接続に失敗しました。インターネットの接続を確認し、再度、試してください。 - + アップデートを利用できません。 - + 利用できるアップデートがありません。後日、試してください。 - + {0}/秒でダウンロード中 + + 更新ファイルのファイル名を特定できません! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.ko.resx b/AutoUpdater.NET/Properties/Resources.ko.resx index efe07f0a..b465fe30 100644 --- a/AutoUpdater.NET/Properties/Resources.ko.resx +++ b/AutoUpdater.NET/Properties/Resources.ko.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 사용 가능한 업데이트가 없습니다. 나중에 다시 시도 해주십시오. - + 업데이트를 사용할 수 없음 - + 업데이트 서버에 연결하는 중 문제가 발생했습니다. 인터넷 연결을 확인하고 나중에 다시 시도하십시오. - + 업데이트 확인 실패 - + 체크섬은 다릅니다. - + 파일 무결성 검사가 실패하고 몇 가지 오류가보고되었습니다. - + 지원되지 않는 해시 알고리즘 - + XML 파일에 제공된 해시 알고리즘은 지원되지 않습니다. - + {0}/s에서 다운로드 중 + + 업데이트 파일의 파일 이름을 확인할 수 없습니다! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.lv.resx b/AutoUpdater.NET/Properties/Resources.lv.resx new file mode 100644 index 00000000..f114f530 --- /dev/null +++ b/AutoUpdater.NET/Properties/Resources.lv.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Nav pieejamu atjauninājumi! Lūdzu mēģiniet vēlāk! + + + Nav pieejami atjauninājumi! + + + Radās problēmas sazinoties ar atjauninājumu serveri, lūdzu pārbaudiet interneta savienojumu un mēģiniet vēlāk! + + + Atjauninājumu pārbaude neizdevās + + + Kontrolsumma(Checksum) atšķirās + + + Failu integritātes pārbaude neizdevās un ir dažas kļūdas. + + + Neatbalstīts Hash algoritms + + + Norādītais Hash algoritms XML failā netiek atbalstīts. + + + Lejupielādē ar ātrumu {0}/s + + + Nevar noteikt atjaunināšanas faila nosaukumu! + + diff --git a/AutoUpdater.NET/Properties/Resources.nl.resx b/AutoUpdater.NET/Properties/Resources.nl.resx index 32b6622c..dd6ee112 100644 --- a/AutoUpdater.NET/Properties/Resources.nl.resx +++ b/AutoUpdater.NET/Properties/Resources.nl.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Er is geen update beschikbaar. Probeer het later nogmaals. - + Update niet beschikbaar - + Er is een probleem bij het bereiken van de updateserver. Controleer alstublieft uw internetverbinding en probeer het later nogmaals. - + Update Check mislukt - + Controlesum verschilt - + Bestandsintegriteitscontrole mislukte en meldde enkele fouten. - + Niet-ondersteund Hashalgoritme - + Hashalgoritme in het XML-bestand wordt niet ondersteund. - + Downloaden op {0}/s + + Kan de bestandsnaam van het updatebestand niet bepalen! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.pl.resx b/AutoUpdater.NET/Properties/Resources.pl.resx index 2d64036b..715cff96 100644 --- a/AutoUpdater.NET/Properties/Resources.pl.resx +++ b/AutoUpdater.NET/Properties/Resources.pl.resx @@ -1,147 +1,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Nie ma dostępnej aktualizacji. Spróbuj ponownie później. - - - Aktualizacja niedostępna - - - Wystąpił problem z aktualizacją serwera. Sprawdź połączenie internetowe i spróbuj ponownie później. - - - Aktualizacja nie powiodła się - - - Różne sumy kontrolne - - - Sprawdzenie integralności plików nie powiodło się i odnotowano pewne błędy. - - - Nieuzupełniony Algorytm Hasha Algorytmu - - - Algorytm Hash dostarczony w pliku XML nie jest obsługiwany. - - - Pobranie pod adresem {0}/s - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Brak dostępnych aktualizacji. Spróbuj ponownie później. + + + Aktualizacja niedostępna + + + Nie można nawiązać połączenia z serwerem aktualizacji. Sprawdź połączenie internetowe i spróbuj ponownie później. + + + Sprawdzanie aktualizacji nieudane + + + Algorytm wyznaczania wartości skrótu podany w pliku XML jest nieobsługiwany. + + + Nieobsługiwany algorytm skrótu + + + Weryfikacja spójności plików nie powiodła się i zwróciła błędy. + + + Różne sumy kontrolne + + + Szybkość pobierania: {0}/s + + + Nie można określić nazwy pliku aktualizacji! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.pt-BR.resx b/AutoUpdater.NET/Properties/Resources.pt-BR.resx index eb39e62c..87171f0a 100644 --- a/AutoUpdater.NET/Properties/Resources.pt-BR.resx +++ b/AutoUpdater.NET/Properties/Resources.pt-BR.resx @@ -1,148 +1,158 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Não existe nenhuma atualização disponível no momento. Por favor tente novamente mais tarde. - + Atualização indisponível - + Existe algum problema na conexão com o servidor de atualização. Por favor verifique sua conexão com a internete e tente novamente mais tarde. - + Falha ao verificar atualização - - Hash algorithm provided in the XML file is not supported. + + O algoritmo de hash fornecido no arquivo XML não é compatível. - + Algoritmo de hash não suportado. - + A verificação de integridade do arquivo falhou e reportou alguns erros. - + Falha na verificação de integridade - + Baixando a {0}/s + + Não foi possível determinar o nome do arquivo de atualização! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.pt.resx b/AutoUpdater.NET/Properties/Resources.pt.resx new file mode 100644 index 00000000..ba0e36d8 --- /dev/null +++ b/AutoUpdater.NET/Properties/Resources.pt.resx @@ -0,0 +1,48 @@ + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Baixando em {0}/s + + + Soma de verificação difere + + + A verificação da integridade do arquivo falhou e relatou alguns erros. + + + Algoritmo de Hash Não Suportado + + + O algoritmo de hash fornecido no arquivo XML não é suportado. + + + Não foi possível determinar o nome do arquivo de atualização! + + + Falha na verificação de atualização + + + Há um problema ao acessar o servidor de atualização. Verifique sua conexão com a Internet e tente novamente mais tarde. + + + Atualização indisponível + + + Não há atualização disponível. Por favor, tente novamente mais tarde. + + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.resx b/AutoUpdater.NET/Properties/Resources.resx index 28057942..bc9487a3 100644 --- a/AutoUpdater.NET/Properties/Resources.resx +++ b/AutoUpdater.NET/Properties/Resources.resx @@ -1,172 +1,198 @@  - - - - - - - - - - - - - - - - - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\Resources\clock_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\download.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\hand_point.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\clock_play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\clock_go_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\download_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\ZipExtractor.exe;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + ..\Resources\clock_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\download.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\hand_point.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\clock_play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\clock_go_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\download_32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b03f5f7f11d50a3a + + + + ..\Resources\ZipExtractor.exe;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + There is no update available. Please try again later. - + Update Unavailable - + There is a problem reaching update server. Please check your internet connection and try again later. - + Update Check Failed - + Hash algorithm provided in the XML file is not supported. - + Unsupported Hash Algorithm - + File integrity check failed and reported some errors. - + Checksum differs - + Downloading at {0}/s + + Unable to determine the filename of the update file! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.ru.resx b/AutoUpdater.NET/Properties/Resources.ru.resx index 246ff4a1..12b28aab 100644 --- a/AutoUpdater.NET/Properties/Resources.ru.resx +++ b/AutoUpdater.NET/Properties/Resources.ru.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Нет доступных обновлений. Пожалуйста, повторите попытку позже. - + Обновление недоступно - + Проблема связана с сервером обновлений. Проверьте подключение к Интернету и повторите попытку позже. - + Ошибка обновления - + Контрольная сумма отличается - + Не удалось проверить целостность файла и сообщить о некоторых ошибках. - + Неподдерживаемый алгоритм хеширования - + Хэш-алгоритм, предоставленный в XML-файле, не поддерживается. - + Загрузка на {0}/s + + Невозможно определить имя файла обновления! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.sk.resx b/AutoUpdater.NET/Properties/Resources.sk.resx index 9b3e8595..f43ebe81 100644 --- a/AutoUpdater.NET/Properties/Resources.sk.resx +++ b/AutoUpdater.NET/Properties/Resources.sk.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Aktualizácia nie je k dispozícii. Kontrolu zopakujte, prosím, naskôr. - + Aktualizácia nie je k dispozícii. - + Nastala chyba pri pripojení k aktualizačnému serveru. Skontrolujte Internetové pripojenie a zopakujte aktualizáciu ešte raz, prosím. - + Kontrola aktualizácie prebehla neúspešne - + Rozdielne kontrolné číslo - + Neúspešná kontrola integrity, boli hlásené chyby. - + Nepodporovaný hashovací algoritmus - - Hashovací algoritmus uvedený v XMLnie je podporovaný. + + Hashovací algoritmus uvedený v XML nie je podporovaný. - + Sťahovanie na {0}/s + + Nie je možné určiť názov súboru aktualizácie! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.sv.resx b/AutoUpdater.NET/Properties/Resources.sv.resx index a0b6720d..08f8b6c6 100644 --- a/AutoUpdater.NET/Properties/Resources.sv.resx +++ b/AutoUpdater.NET/Properties/Resources.sv.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Det finns ingen uppdatering tillgänglig. Vänligen försök igen senare. - + Uppdatering Ej tillgänglig - + Det finns ett problem att nå uppdateringsserver. Kontrollera din internetanslutning och försök igen senare. - + Uppdateringskontroll misslyckades - + Checksum skiljer sig från - + Kontroll av filintegritet misslyckades och rapporterade några fel. - + Hash-algoritmen som inte stöds - + Hash-algoritmen som tillhandahålls i XML-filen stöds inte. - + Nedladdning vid {0}/s + + Det går inte att bestämma filnamnet på uppdateringsfilen! + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.th.resx b/AutoUpdater.NET/Properties/Resources.th.resx index 8c360282..45fdb53d 100644 --- a/AutoUpdater.NET/Properties/Resources.th.resx +++ b/AutoUpdater.NET/Properties/Resources.th.resx @@ -1,148 +1,158 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + ยังไม่มีอัปเดตใหม่ในขณะนี้ กรุณาลองใหม่ภายหลัง - + ไม่มีอัปเดตใหม่ - + ไม่สามารถตรวจสอบการอัปเดตได้ กรุณาตรวจสอบการเชื่อมต่อของคุณและลองอีกครั้ง - + ตรวจาอบล้มเหลว - + ไม่รองรับรูปแบบค่าแฮชที่ระบุไว้ในไฟล์ XML - + ไม่รองรับรูปแบบค่าแฮช - + การตรวจสอบไฟล์ล้มเหลว ตรวจพบข้อผิดพลาด - + ไฟล์เสียหาย - + กำลังดาวน์โหลด ด้วยความเร็ว {0}/s + + ไม่สามารถระบุชื่อไฟล์ของไฟล์อัพเดตได้! + diff --git a/AutoUpdater.NET/Properties/Resources.tr.resx b/AutoUpdater.NET/Properties/Resources.tr.resx new file mode 100644 index 00000000..822fff77 --- /dev/null +++ b/AutoUpdater.NET/Properties/Resources.tr.resx @@ -0,0 +1,48 @@ + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + {0}/sn hızında indiriliyor + + + Sağlama toplamı farklıdır + + + Dosya bütünlüğü denetimi başarısız oldu ve bazı hatalar bildirdi. + + + Desteklenmeyen Hash Algoritması + + + XML dosyasında sağlanan karma algoritma desteklenmiyor. + + + Güncelleme dosyasının dosya adı belirlenemiyor! + + + Güncelleme Kontrolü Başarısız + + + Güncelleme sunucusuna erişirken bir sorun oluştu. Lütfen internet bağlantınızı kontrol edin ve daha sonra tekrar deneyin. + + + Güncelleme Kullanılamıyor + + + Mevcut bir güncelleme yok. Lütfen daha sonra tekrar deneyiniz. + + \ No newline at end of file diff --git a/AutoUpdater.NET/Properties/Resources.zh-TW.resx b/AutoUpdater.NET/Properties/Resources.zh-TW.resx new file mode 100644 index 00000000..970d362c --- /dev/null +++ b/AutoUpdater.NET/Properties/Resources.zh-TW.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 總和檢查碼不一致 + + + 檔案完整性檢查失敗並產生錯誤訊息。 + + + 使用了不支持的雜湊演算法。 + + + 不支援XML中提供的雜湊演算法。 + + + 檢查更新失敗 + + + 與更新伺服器的連線出現問題,請檢查您的網路狀態並於稍後再試。 + + + 更新無法使用 + + + 沒有更新,請稍後再試。 + + + 以{0}/s下載 + + diff --git a/AutoUpdater.NET/Properties/Resources.zh-tw.resx b/AutoUpdater.NET/Properties/Resources.zh-tw.resx deleted file mode 100644 index 602afca2..00000000 --- a/AutoUpdater.NET/Properties/Resources.zh-tw.resx +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 總和檢查碼不一致 - - - 檔案完整性檢查失敗並產生錯誤訊息。 - - - 使用了不支持的雜湊演算法。 - - - 不支援XML中提供的雜湊演算法。 - - - 檢查更新失敗 - - - 與更新伺服器的連線出現問題,請檢查您的網路狀態並於稍後再試。 - - - 更新無法使用 - - - 沒有更新,請稍後再試。 - - - 以{0}/s下載 - - diff --git a/AutoUpdater.NET/Properties/Resources.zh.resx b/AutoUpdater.NET/Properties/Resources.zh.resx index 2cc82b18..97ef70a6 100644 --- a/AutoUpdater.NET/Properties/Resources.zh.resx +++ b/AutoUpdater.NET/Properties/Resources.zh.resx @@ -1,147 +1,156 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 没有更新。请稍后再试。 - + 更新不可用 - + 连接更新服务器有问题。请检查您的网络连接并稍后再试。 - + 检查更新失败 - + 校验和不同 - + 文件完整性检查失败并报告一些错误。 - + 不支持的哈希算法 - + 不支持XML文件中提供的哈希算法。 - + 以{0}/s下载 + + 无法确定更新文件的文件名! + \ No newline at end of file diff --git a/AutoUpdater.NET/RegistryPersistenceProvider.cs b/AutoUpdater.NET/RegistryPersistenceProvider.cs index 6f0282f4..e8a878b9 100644 --- a/AutoUpdater.NET/RegistryPersistenceProvider.cs +++ b/AutoUpdater.NET/RegistryPersistenceProvider.cs @@ -2,91 +2,92 @@ using System.Globalization; using Microsoft.Win32; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// Provides a mechanism for storing AutoUpdater state between sessions based on storing data on the Windows Registry. +/// +public class RegistryPersistenceProvider : IPersistenceProvider { + private const string RemindLaterValueName = "RemindLaterAt"; + + private const string SkippedVersionValueName = "SkippedVersion"; + /// - /// Provides a mechanism for storing AutoUpdater state between sessions based on storing data on the Windows Registry. + /// Initializes a new instance of the RegistryPersistenceProvider class indicating the path for the Windows registry + /// key to use for storing the data. /// - public class RegistryPersistenceProvider : IPersistenceProvider + /// + public RegistryPersistenceProvider(string registryLocation) { - /// - /// Gets/sets the path for the Windows Registry key that will contain the data. - /// - public string RegistryLocation { get; } - - private const string RemindLaterValueName = "RemindLaterAt"; - - private const string SkippedVersionValueName = "SkippedVersion"; + RegistryLocation = registryLocation; + } - /// - /// Initializes a new instance of the RegistryPersistenceProvider class indicating the path for the Windows registry key to use for storing the data. - /// - /// - public RegistryPersistenceProvider(string registryLocation) - { - RegistryLocation = registryLocation; - } + /// + /// Gets/sets the path for the Windows Registry key that will contain the data. + /// + private string RegistryLocation { get; } - /// - public Version GetSkippedVersion() + /// + public Version GetSkippedVersion() + { + try { - try - { - using (RegistryKey updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation)) - { - object skippedVersionValue = updateKey?.GetValue(SkippedVersionValueName); + using RegistryKey updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation); + object skippedVersionValue = updateKey?.GetValue(SkippedVersionValueName); - if (skippedVersionValue != null) - { - return new Version(skippedVersionValue.ToString()); - } - } - } - catch (Exception) + if (skippedVersionValue != null) { - // ignored + return new Version(skippedVersionValue.ToString()); } - - return null; + } + catch (Exception) + { + // ignored } + return null; + } - /// - public DateTime? GetRemindLater() - { - using (RegistryKey updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation)) - { - object remindLaterValue = updateKey?.GetValue(RemindLaterValueName); - if (remindLaterValue != null) - { - return Convert.ToDateTime(remindLaterValue.ToString(), - CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat); - } + /// + public DateTime? GetRemindLater() + { + using RegistryKey updateKey = Registry.CurrentUser.OpenSubKey(RegistryLocation); + object remindLaterValue = updateKey?.GetValue(RemindLaterValueName); - return null; - } + if (remindLaterValue == null) + { + return null; } - /// - public void SetSkippedVersion(Version version) + try { - using (RegistryKey autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation)) - { - autoUpdaterKey?.SetValue(SkippedVersionValueName, version != null ? version.ToString() : string.Empty); - } + return Convert.ToDateTime(remindLaterValue.ToString(), + CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat); } - - /// - public void SetRemindLater(DateTime? remindLaterAt) + catch (FormatException) { - using (RegistryKey autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation)) - { - autoUpdaterKey?.SetValue(RemindLaterValueName, - remindLaterAt != null - ? remindLaterAt.Value.ToString(CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat) - : string.Empty); - } + // ignored } + + return null; + } + + /// + public void SetSkippedVersion(Version version) + { + using RegistryKey autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation); + autoUpdaterKey?.SetValue(SkippedVersionValueName, version != null ? version.ToString() : string.Empty); + } + + /// + public void SetRemindLater(DateTime? remindLaterAt) + { + using RegistryKey autoUpdaterKey = Registry.CurrentUser.CreateSubKey(RegistryLocation); + autoUpdaterKey?.SetValue(RemindLaterValueName, + remindLaterAt != null + ? remindLaterAt.Value.ToString(CultureInfo.CreateSpecificCulture("en-US").DateTimeFormat) + : string.Empty); } } \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.ar.resx b/AutoUpdater.NET/RemindLaterForm.ar.resx index b0374f5e..1084cc81 100644 --- a/AutoUpdater.NET/RemindLaterForm.ar.resx +++ b/AutoUpdater.NET/RemindLaterForm.ar.resx @@ -1,167 +1,174 @@  - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Yes - - - - True - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + Yes + + + + True + + ذكرني لاحقا للتحديث - + موافق - + بعد 30 دقيقة - + بعد 12 ساعة - + بعد يوم واحد - + بعد 2 أيام - + بعد 4 أيام - + بعد 8 أيام - + بعد 10 أيام - + يجب عليك تنزيل التحديثات الآن. يستغرق ذلك بضع دقائق فقط حسب اتصال الإنترنت الخاص بك ويضمن حصولك على أحدث إصدار من التطبيق. - + هل تريد تنزيل التحديثات لاحقًا؟ - + لا ، قم بتنزيل التحديثات الآن (موصى به) - + نعم ، أرجو أن تذكرني فيما بعد: \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.cs b/AutoUpdater.NET/RemindLaterForm.cs index 4995f740..c96a30d1 100644 --- a/AutoUpdater.NET/RemindLaterForm.cs +++ b/AutoUpdater.NET/RemindLaterForm.cs @@ -1,72 +1,72 @@ using System; using System.Windows.Forms; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +internal partial class RemindLaterForm : Form { - internal partial class RemindLaterForm : Form + public RemindLaterForm() { - public RemindLaterFormat RemindLaterFormat { get; private set; } + InitializeComponent(); + TopMost = AutoUpdater.TopMost; + } - public int RemindLaterAt { get; private set; } + public RemindLaterFormat RemindLaterFormat { get; private set; } - public RemindLaterForm() - { - InitializeComponent(); - } + public int RemindLaterAt { get; private set; } - private void RemindLaterFormLoad(object sender, EventArgs e) - { - comboBoxRemindLater.SelectedIndex = 0; - radioButtonYes.Checked = true; - } + private void RemindLaterFormLoad(object sender, EventArgs e) + { + comboBoxRemindLater.SelectedIndex = 0; + radioButtonYes.Checked = true; + } - private void ButtonOkClick(object sender, EventArgs e) + private void ButtonOkClick(object sender, EventArgs e) + { + if (radioButtonYes.Checked) { - if (radioButtonYes.Checked) + switch (comboBoxRemindLater.SelectedIndex) { - switch (comboBoxRemindLater.SelectedIndex) - { - case 0: - RemindLaterFormat = RemindLaterFormat.Minutes; - RemindLaterAt = 30; - break; - case 1: - RemindLaterFormat = RemindLaterFormat.Hours; - RemindLaterAt = 12; - break; - case 2: - RemindLaterFormat = RemindLaterFormat.Days; - RemindLaterAt = 1; - break; - case 3: - RemindLaterFormat = RemindLaterFormat.Days; - RemindLaterAt = 2; - break; - case 4: - RemindLaterFormat = RemindLaterFormat.Days; - RemindLaterAt = 4; - break; - case 5: - RemindLaterFormat = RemindLaterFormat.Days; - RemindLaterAt = 8; - break; - case 6: - RemindLaterFormat = RemindLaterFormat.Days; - RemindLaterAt = 10; - break; - } - - DialogResult = DialogResult.OK; - } - else - { - DialogResult = DialogResult.Abort; + case 0: + RemindLaterFormat = RemindLaterFormat.Minutes; + RemindLaterAt = 30; + break; + case 1: + RemindLaterFormat = RemindLaterFormat.Hours; + RemindLaterAt = 12; + break; + case 2: + RemindLaterFormat = RemindLaterFormat.Days; + RemindLaterAt = 1; + break; + case 3: + RemindLaterFormat = RemindLaterFormat.Days; + RemindLaterAt = 2; + break; + case 4: + RemindLaterFormat = RemindLaterFormat.Days; + RemindLaterAt = 4; + break; + case 5: + RemindLaterFormat = RemindLaterFormat.Days; + RemindLaterAt = 8; + break; + case 6: + RemindLaterFormat = RemindLaterFormat.Days; + RemindLaterAt = 10; + break; } - } - private void RadioButtonYesCheckedChanged(object sender, EventArgs e) + DialogResult = DialogResult.OK; + } + else { - comboBoxRemindLater.Enabled = radioButtonYes.Checked; + DialogResult = DialogResult.Abort; } } + + private void RadioButtonYesCheckedChanged(object sender, EventArgs e) + { + comboBoxRemindLater.Enabled = radioButtonYes.Checked; + } } \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.cs.resx b/AutoUpdater.NET/RemindLaterForm.cs.resx new file mode 100644 index 00000000..a46c408b --- /dev/null +++ b/AutoUpdater.NET/RemindLaterForm.cs.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Přejete si stáhnout aktualizaci později? + + + Měli byste program aktualizovat nyní. Trvá to jenom krátkou chvíli v závislosti na rychlosti internetového připojení a umožní používání nejnovější verze programu. + + + Ano, připomenou aktualizaci později: + + + Ne, aktualizovat nyní (doporučeno) + + + o 30 minut + + + o 12 hodin + + + o 1 den + + + o 2 dny + + + o 4 dny + + + o 8 dní + + + o 10 dní + + + Připomenout aktualizaci později + + \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.da.resx b/AutoUpdater.NET/RemindLaterForm.da.resx index 0b0547c3..f4a94343 100644 --- a/AutoUpdater.NET/RemindLaterForm.da.resx +++ b/AutoUpdater.NET/RemindLaterForm.da.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Påmind mig senere - + om 30 minutter - + om 12 timer - + om 1 dag - + om 2 dage - + om 4 dage - + om 8 dage - + om 10 dage - + Du burde opdatere nu. Det tager kun kort tid (afhængig af din internet forbindelse) og sikrer at du har den seneste version af programmet. - + Ønsker du at opdatere senere? - + Nej, download opdateringer nu (anbefales) - + Ja, påmind mig senere : \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.de.resx b/AutoUpdater.NET/RemindLaterForm.de.resx index b9b1855c..abd79749 100644 --- a/AutoUpdater.NET/RemindLaterForm.de.resx +++ b/AutoUpdater.NET/RemindLaterForm.de.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Später erinnern - + In 30 Minuten - + In 12 Stunden - + In 1 Tag - + In 2 Tagen - + In 4 Tagen - + In 8 Tagen - + In 10 Tagen - + Es wird empfohlen jetzt das neue Update herunterzuladen. Dies dauert nur einige Minuten, je nach Internetverbindung. Damit ist sichergestellt, dass die aktuellste Version dieser Anwendung genutzt wird. - + Soll das Update später heruntergeladen werden? - + Nein, jetzt das Update herunterladen (empfohlen) - + Ja, später erinnern: \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.es.resx b/AutoUpdater.NET/RemindLaterForm.es.resx index 4423ded4..ffbe41b8 100644 --- a/AutoUpdater.NET/RemindLaterForm.es.resx +++ b/AutoUpdater.NET/RemindLaterForm.es.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + ¿Quieres descargar las actualizaciones más tarde? - + Usted debe descargar las actualizaciones ahora. Esto sólo toma unos minutos dependiendo de su conexión a internet y asegura que posee la última versión de la aplicación. - + Sí , por favor, me recuerdan más tarde: - + No, descargar actualizaciones ahora (recomendado) - + Después de 30 minutos - + Después de 12 horas - + Después de 1 día - + Después de 2 días - + Después de 4 días - + Después de 8 días - + Después de 10 días - + Recordar más tarde para la actualización \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.fr.resx b/AutoUpdater.NET/RemindLaterForm.fr.resx index c1b676e4..7b34bd4d 100644 --- a/AutoUpdater.NET/RemindLaterForm.fr.resx +++ b/AutoUpdater.NET/RemindLaterForm.fr.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Voulez-vous télécharger les mises à jour plus tard? - + Vous devez télécharger les mises à jour maintenant. Cela ne prend que quelques minutes selon votre connexion internet et vous assure d'avoir toute dernière version de l'application. - + Oui, s'il vous plaît rappelez -moi plus tard : - + Non, télécharger les mises à jour maintenant (recommandé) - + Après 30 minutes - + Après 12 heures - + Après 1 jour - + Après 2 jours - + Après 4 jours - + Après 8 jours - + Après 10 jours - + Rappelez-moi plus tard la mise à jour \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.it.resx b/AutoUpdater.NET/RemindLaterForm.it.resx index 9a8bb8ac..0c5ba318 100644 --- a/AutoUpdater.NET/RemindLaterForm.it.resx +++ b/AutoUpdater.NET/RemindLaterForm.it.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Ricordamelo più tardi - + Tra 30 minuti - + Tra 12 ore - + Tra 1 giorno - + Tra 2 giorni - + Tra 4 giorni - + Tra 8 giorni - + Tra 10 giorni - + Si consiglia di scaricare gli aggiornamenti ora. Questa operazione richiede soltanto pochi minuti, a seconda della vostra connessione internet, e permette di avere sempre l'ultima versione aggiornata dell'applicazione. - + Vuoi scaricare gli aggiornamenti più tardi? - + No, scarica gli aggiornamenti adesso (consigliato) - + Sì, ricordamelo in seguito: \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.ja-JP.resx b/AutoUpdater.NET/RemindLaterForm.ja-JP.resx index 639bad12..4dc8ddac 100644 --- a/AutoUpdater.NET/RemindLaterForm.ja-JP.resx +++ b/AutoUpdater.NET/RemindLaterForm.ja-JP.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 後で通知する - + 30分後 - + 12時間後 - + 1日後 - + 2日後 - + 4日後 - + 8日後 - + 10日後 - + アプリケーションの最新バージョンを確実に入手できます。今すぐアップデートをダウンロードしてください。 (インターネット接続によってはほんの数分しかかかりません。) - + 後でダウンロードしますか? - + ダウンロードせず、アップデートする(推奨) - + 後で通知する \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.ko.resx b/AutoUpdater.NET/RemindLaterForm.ko.resx index 9c0ff5e3..70a7ce21 100644 --- a/AutoUpdater.NET/RemindLaterForm.ko.resx +++ b/AutoUpdater.NET/RemindLaterForm.ko.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 나중에 업데이트 알림 - + 30분 후 - + 12시간 후 - + 1시간 후 - + 2시간 후 - + 4시간 후 - + 8시간 후 - + 10시간 후 - + 지금 업데이트를 다운로드합니다. 인터넷 연결에 따라 몇 분 정도 걸립니다. 최신 버전의 응용프로그램을 사용할 수 있습니다. - + 나중에 업데이트를 다운로드 하시겠습니까? - + 아니요, 지금 업데이트를 다운로드합니다. (권장) - + 예, 나중에 다시 알려주세요: \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.lv.resx b/AutoUpdater.NET/RemindLaterForm.lv.resx new file mode 100644 index 00000000..61aea987 --- /dev/null +++ b/AutoUpdater.NET/RemindLaterForm.lv.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Nē, lejupielādēt atjauninājumus tagad (Ieteicams) + + + Pēc 30 minūtēm + + + Pēc 12 stundām + + + Pēc 1 dienas + + + Pēc 2 dienām + + + Pēc 4 dienām + + + Pēc 8 dienām + + + Pēc 10 dienām + + + Jā, lūdzu atgādiniet man vēlāk: + + + Jums vajadzētu lejupielādēt atjauninājumus tagad. Tas aizņems tikai pāris minūtes, atkarība no jūsu interneta savienojuma ātrumu, un nodrošinās jūs ar jaunāko programmatūras versiju. + + + Vai jūs vēlaties lejupielādēt atjauninājumus vēlāk? + + + Atgādināt vēlāk par atjauninājumu + + \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.nl.resx b/AutoUpdater.NET/RemindLaterForm.nl.resx index 5d6caeb6..0e03af86 100644 --- a/AutoUpdater.NET/RemindLaterForm.nl.resx +++ b/AutoUpdater.NET/RemindLaterForm.nl.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Nee, download updates nu (aanbevolen) - + Na 30 minuten - + Na 12 uur - + Na 1 dag - + Na 2 dagen - + Na 4 dagen - + Na 8 dagen - + Na 10 dagen - + Ja, probeer het later herinneren me: - + Je zou updates nu te downloaden. Dit duurt slechts enkele minuten, afhankelijk van uw internet verbinding en zorgt ervoor dat je laatste versie van de applicatie. - + Wilt u updates later te downloaden? - + Herinner me later naar update \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.pl.resx b/AutoUpdater.NET/RemindLaterForm.pl.resx index 15e2d48a..a543774a 100644 --- a/AutoUpdater.NET/RemindLaterForm.pl.resx +++ b/AutoUpdater.NET/RemindLaterForm.pl.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Nie, Pobierz aktualizacje teraz (zalecane) + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + Nie, pobierz aktualizacje teraz (zalecane) - - Po 30 minutach + + 30 minut - - Po 12 godzinach + + 12 godzin - - Po 1 dniu + + 1 dzień - - Po 2 dniach + + 2 dni - - Po 4 dniach + + 4 dni - - Po 8 dniach + + 8 dni - - Po 10 dniach + + 10 dni - - Tak, proszę przypomnij mi później: + + Tak, przypomnij mi za: - - Należy pobrać aktualizacje teraz. To zajmuje tylko kilka minut, w zależności od połączenia internetowego i zapewnia, masz najnowszą wersję aplikacji. + + Zaleca się pobranie aktualizacji już teraz. Ten proces może potrwać kilka minut, w zależności od szybkości połączenia internetowego, i zapewnia, że masz najnowszą wersję programu. - + Czy chcesz pobrać aktualizacje później? - - Przypomnij mi później do aktualizacji + + Przypomnij mi później \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.pt-BR.resx b/AutoUpdater.NET/RemindLaterForm.pt-BR.resx index 09232149..af0a0de0 100644 --- a/AutoUpdater.NET/RemindLaterForm.pt-BR.resx +++ b/AutoUpdater.NET/RemindLaterForm.pt-BR.resx @@ -1,159 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Lembrar mais tarde - - OK - - + Em 30 minutos - + Em 12 horas - + Em 1 dia - + Em 2 dias - + Em 4 dias - + Em 8 dias - + Em 10 dias - + Você deve baixar a atualização agora. Dependendo da sua conexão com a internet, demora apenas alguns minutos e assegura que você tem a última versão da aplicação. - + Deseja baixar a atualização mais tarde? - + Não - + Sim \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.pt.resx b/AutoUpdater.NET/RemindLaterForm.pt.resx index 4c8731dd..6d589b0a 100644 --- a/AutoUpdater.NET/RemindLaterForm.pt.resx +++ b/AutoUpdater.NET/RemindLaterForm.pt.resx @@ -1,159 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Recordar-me mais tarde - - OK - - + Daqui a 30 minutos - + Daqui a 12 horas - + Daqui a 1 dia - + Daqui a 2 dias - + Daqui a 4 dias - + Daqui a 8 dias - + Daqui a 10 dias - + Deverá transferir a atualização agora. Dependendo da sua ligação à internet, demora apenas alguns minutos e assegura que tem a última versão da aplicação - + Deseja transferir a atualização mais tarde? - + Não - + Sim \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.resx b/AutoUpdater.NET/RemindLaterForm.resx index 5046251a..ac410d09 100644 --- a/AutoUpdater.NET/RemindLaterForm.resx +++ b/AutoUpdater.NET/RemindLaterForm.resx @@ -1,433 +1,451 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - True - - - 3 - - - - Fill - - - - 3, 3 - - - 79, 90 - - - CenterImage - - - 1 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + True + + + 3 + + + + Fill + + + + 3, 3 + + + 79, 90 + + + CenterImage + + + 1 + + pictureBoxIcon - + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 0 - - True - - - Bottom - - - Segoe UI, 9pt, style=Bold - - - 91, 138 - - - 6, 3, 3, 3 - - - 406, 19 - - - 4 - - + + True + + + Bottom + + + Segoe UI, 9pt, style=Bold + + + 91, 138 + + + 6, 3, 3, 3 + + + 406, 19 + + + 4 + + No, download updates now (recommended) - + radioButtonNo - + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 2 - - Bottom - - + + Bottom + + After 30 minutes - + After 12 hours - + After 1 day - + After 2 days - + After 4 days - + After 8 days - + After 10 days - - 375, 102 - - - 10, 3, 10, 3 - - - 115, 23 - - - 5 - - + + 375, 102 + + + 10, 3, 10, 3 + + + 115, 23 + + + 5 + + comboBoxRemindLater - + System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 3 - - True - - - Bottom - - - Segoe UI, 9pt - - - 91, 106 - - - 6, 3, 3, 3 - - - 271, 19 - - - 3 - - + + True + + + Bottom + + + Segoe UI, 9pt + + + 91, 106 + + + 6, 3, 3, 3 + + + 271, 19 + + + 3 + + Yes, please remind me later : - + radioButtonYes - + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 4 - - True - - - Bottom - - - Segoe UI, 9pt - - - 88, 51 - - - 409, 45 - - - 2 - - + + True + + + Bottom + + + Segoe UI, 9pt + + + 88, 51 + + + 409, 45 + + + 2 + + You should download updates now. This only takes few minutes depending on your internet connection and ensures you have latest version of the application. - + labelDescription - + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 5 - - Fill - - - 375, 163 - - - 10, 3, 10, 3 - - - 115, 32 - - - 6 - - + + Fill + + + 375, 163 + + + 10, 3, 10, 3 + + + 115, 32 + + + 6 + + OK - - MiddleRight - - - ImageBeforeText - - + + MiddleRight + + + ImageBeforeText + + buttonOK - + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 6 - - Fill - - - 0, 0 - - - 5 - - - 499, 198 - - - 7 - - + + Fill + + + 0, 0 + + + 5 + + + 499, 198 + + + 7 + + tableLayoutPanel - + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + $this - + 0 - - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="pictureBoxIcon" Row="0" RowSpan="2" Column="0" ColumnSpan="1" /><Control Name="labelTitle" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="radioButtonNo" Row="3" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="comboBoxRemindLater" Row="2" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="radioButtonYes" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="labelDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="buttonOK" Row="4" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Absolute,85,Absolute,280,Absolute,135" /><Rows Styles="Absolute,32,Absolute,64,Absolute,32,Absolute,32,Absolute,16" /></TableLayoutSettings> - - - Bottom - - - Segoe UI, 10.5pt, style=Bold - - - 88, 13 - - - 409, 19 - - - 0 - - + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control + Name="pictureBoxIcon" Row="0" RowSpan="2" Column="0" ColumnSpan="1" /><Control Name="labelTitle" + Row="0" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="radioButtonNo" Row="3" RowSpan="1" + Column="1" ColumnSpan="2" /><Control Name="comboBoxRemindLater" Row="2" RowSpan="1" Column="2" + ColumnSpan="1" /><Control Name="radioButtonYes" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /><Control + Name="labelDescription" Row="1" RowSpan="1" Column="1" ColumnSpan="2" /><Control Name="buttonOK" + Row="4" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns + Styles="Absolute,85,Absolute,280,Absolute,135" /><Rows + Styles="Absolute,32,Absolute,64,Absolute,32,Absolute,32,Absolute,16" /></TableLayoutSettings> + + + + Bottom + + + Segoe UI, 10.5pt, style=Bold + + + 88, 13 + + + 409, 19 + + + 0 + + Do you want to download updates later? - + labelTitle - + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + tableLayoutPanel - + 1 - - True - - - 7, 15 - - - 499, 198 - - - Segoe UI, 9pt - - - 3, 4, 3, 4 - - - CenterParent - - + + True + + + 7, 15 + + + 499, 198 + + + Segoe UI, 9pt + + + 3, 4, 3, 4 + + + CenterParent + + Remind me later for update - + RemindLaterForm - + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.ru.resx b/AutoUpdater.NET/RemindLaterForm.ru.resx index 7b4ed431..8f8f24ec 100644 --- a/AutoUpdater.NET/RemindLaterForm.ru.resx +++ b/AutoUpdater.NET/RemindLaterForm.ru.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Напомнить об обновлении позднее - + Через 30 минут - + Через 12 часов - + Через 1 день - + Через 2 дня - + Через 4 дня - + Через 8 дней - + Через 10 дней - + Рекомендуем загрузить обновление сейчас. Это займет всего несколько минут, в зависимости от скорости локальной сети и Вашего компьютера. - + Отложить загрузку новой версии? - + Нет, загрузить обновление сейчас (рекоммендуется) - + Да, напомнить позднее: \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.sk.resx b/AutoUpdater.NET/RemindLaterForm.sk.resx index 5d3f4c84..825bb58b 100644 --- a/AutoUpdater.NET/RemindLaterForm.sk.resx +++ b/AutoUpdater.NET/RemindLaterForm.sk.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Želáte si stiahnuť aktualizáciu neskôr? - + Mali by ste aktualizovať program teraz. Trvá to len krátku chíľu v závislosti na rýchlosti Internetového pripojenia a zabezpečí používanie podslednej verzie programu. - + Áno, pripomenúť aktualizáciu neskôr: - + Nie, aktualizovať hneď teraz (odporúčané) - + o 30 minút - + o 12 hodín - + o 1 deň - + o 2 dni - + o 4 dni - + o 8 dní - + o 10 dní - + Pripomenúť aktualizáciu neskôr \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.sv.resx b/AutoUpdater.NET/RemindLaterForm.sv.resx index a06c97ad..42c539eb 100644 --- a/AutoUpdater.NET/RemindLaterForm.sv.resx +++ b/AutoUpdater.NET/RemindLaterForm.sv.resx @@ -1,156 +1,162 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Nej, hämta uppdateringar nu (rekommenderas) - + Efter 30 minuter - + Efter 12 timmar - + Efter 1 dag - + Efter 2 dagar - + Efter 4 dagar - + Efter 8 dagar - + Efter 10 dagar - + Ja, påminn mig senare: - + Du ska hämta uppdateringar nu. Det tar bara några minuter beroende på din internetuppkoppling och att du har senaste versionen av programmet. - + Vill du ladda ner uppdateringar senare? - + Påminn mig senare för uppdatering \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.th.resx b/AutoUpdater.NET/RemindLaterForm.th.resx index f6eb4687..760b8027 100644 --- a/AutoUpdater.NET/RemindLaterForm.th.resx +++ b/AutoUpdater.NET/RemindLaterForm.th.resx @@ -1,159 +1,165 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + เตือนฉันในภายหลัง - + โอเค - + ในอีก 30 นาที - + ในอีก 12 ชั่วโมง - + ในอีก 1 วัน - + ในอีก 2 วัน - + ในอีก 4 วัน - + ในอีก 8 วัน - + ในอีก 10 วัน - + ท่านควรที่จะดาวน์โหลดอัปเดตในตอนนี้ ใช้เวลาแป๊บเดียวเท่านั้น - + ท่านต้องการดาวน์โหลดอัปเดตในภายหลังใช่ไหม? - + ไม่ ดาวน์โหลดตอนนี้เลย (แนะนำ) - + ใช่ เตือนฉันภายหลัง \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.tr.resx b/AutoUpdater.NET/RemindLaterForm.tr.resx index 366eb8b4..a63ba944 100644 --- a/AutoUpdater.NET/RemindLaterForm.tr.resx +++ b/AutoUpdater.NET/RemindLaterForm.tr.resx @@ -1,159 +1,165 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Daha sonra hatırlat - + Tamam - + 30 dakika sonra - + 12 saat sonra - + 1 gün sonra - + 2 gün sonra - + 4 gün sonra - + 8 gün sonra - + 10 gün sonra - + Güncellemeleri şimdi yüklemelisiniz. Bu Internet bağlantı hızınıza bağlı olarak birkaç dakika sürecek ve uygulamanın son sürümünü kullanmanızı sağlayacaktır. - + Güncellemeleri sonra yüklemek istediğinize emin misiniz? - + Hayır, güncellemeleri şimdi yükle (önerilen). - + Evet, lütfen daha sonra hatırlat: \ No newline at end of file diff --git a/AutoUpdater.NET/RemindLaterForm.zh-TW.resx b/AutoUpdater.NET/RemindLaterForm.zh-TW.resx new file mode 100644 index 00000000..0896d279 --- /dev/null +++ b/AutoUpdater.NET/RemindLaterForm.zh-TW.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 稍後提醒 + + + 確定 + + + 30分鐘後 + + + 12小時後 + + + 1天後 + + + 2天後 + + + 4天後 + + + 8天後 + + + 10天後 + + + 您應現在下載更新。一般而言,此過程僅花費幾分鐘(視您的網路狀況而定)。 + + + 您希望稍後再下載更新嗎? + + + 不,現在就下載更新(推薦) + + + 是,請稍後再提醒我 + + diff --git a/AutoUpdater.NET/RemindLaterForm.zh-tw.resx b/AutoUpdater.NET/RemindLaterForm.zh-tw.resx deleted file mode 100644 index 4afe44e9..00000000 --- a/AutoUpdater.NET/RemindLaterForm.zh-tw.resx +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 稍後提醒 - - - 確定 - - - 30分鐘後 - - - 12小時後 - - - 1天後 - - - 2天後 - - - 4天後 - - - 8天後 - - - 10天後 - - - 您應現在下載更新。一般而言,此過程僅花費幾分鐘(視您的網路狀況而定)。 - - - 您希望稍後再下載更新嗎? - - - 不,現在就下載更新(推薦) - - - 是,請稍後再提醒我 - - diff --git a/AutoUpdater.NET/RemindLaterForm.zh.resx b/AutoUpdater.NET/RemindLaterForm.zh.resx index e0139043..aebce725 100644 --- a/AutoUpdater.NET/RemindLaterForm.zh.resx +++ b/AutoUpdater.NET/RemindLaterForm.zh.resx @@ -1,159 +1,165 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 不,现在就下载更新(推荐) - + 30 分钟后 - + 12 小时后 - + 1 天后 - + 2 天后 - + 4 天后 - + 8 天后 - + 10 天后 - + 是的,请以后提醒我 - + 您应该现在就下载更新。一般只需要花费几分钟(具体时间视您的网络状况而定)就能确保您的程序最新。 - + 确定 - + 您希望以后再下载更新么? - + 提醒我以后更新 \ No newline at end of file diff --git a/AutoUpdater.NET/Resources/ZipExtractor.exe b/AutoUpdater.NET/Resources/ZipExtractor.exe deleted file mode 100644 index 74a8d567..00000000 Binary files a/AutoUpdater.NET/Resources/ZipExtractor.exe and /dev/null differ diff --git a/AutoUpdater.NET/Resources/ZipExtractor.exe.config b/AutoUpdater.NET/Resources/ZipExtractor.exe.config deleted file mode 100644 index 3b43e650..00000000 --- a/AutoUpdater.NET/Resources/ZipExtractor.exe.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/AutoUpdater.NET/Resources/clock_go1.png b/AutoUpdater.NET/Resources/clock_go1.png deleted file mode 100644 index ae4c9d97..00000000 Binary files a/AutoUpdater.NET/Resources/clock_go1.png and /dev/null differ diff --git a/AutoUpdater.NET/Resources/download1.png b/AutoUpdater.NET/Resources/download1.png deleted file mode 100644 index e3e03772..00000000 Binary files a/AutoUpdater.NET/Resources/download1.png and /dev/null differ diff --git a/AutoUpdater.NET/UpdateForm.Designer.cs b/AutoUpdater.NET/UpdateForm.Designer.cs index e5ee1a68..3d84968a 100644 --- a/AutoUpdater.NET/UpdateForm.Designer.cs +++ b/AutoUpdater.NET/UpdateForm.Designer.cs @@ -2,7 +2,7 @@ namespace AutoUpdaterDotNET { - partial class UpdateForm + sealed partial class UpdateForm { /// /// Required designer variable. @@ -39,7 +39,9 @@ private void InitializeComponent() this.buttonRemindLater = new System.Windows.Forms.Button(); this.pictureBoxIcon = new System.Windows.Forms.PictureBox(); this.buttonSkip = new System.Windows.Forms.Button(); + this.webView2 = new Microsoft.Web.WebView2.WinForms.WebView2(); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.webView2)).BeginInit(); this.SuspendLayout(); // // webBrowser @@ -95,6 +97,15 @@ private void InitializeComponent() this.buttonSkip.UseVisualStyleBackColor = true; this.buttonSkip.Click += new System.EventHandler(this.ButtonSkipClick); // + // webView2 + // + this.webView2.AllowExternalDrop = true; + this.webView2.CreationProperties = null; + this.webView2.DefaultBackgroundColor = System.Drawing.Color.White; + resources.ApplyResources(this.webView2, "webView2"); + this.webView2.Name = "webView2"; + this.webView2.ZoomFactor = 1D; + // // UpdateForm // this.AcceptButton = this.buttonUpdate; @@ -104,17 +115,20 @@ private void InitializeComponent() this.Controls.Add(this.labelReleaseNotes); this.Controls.Add(this.labelDescription); this.Controls.Add(this.labelUpdate); - this.Controls.Add(this.webBrowser); this.Controls.Add(this.buttonUpdate); this.Controls.Add(this.buttonSkip); this.Controls.Add(this.buttonRemindLater); + this.Controls.Add(this.webView2); + this.Controls.Add(this.webBrowser); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "UpdateForm"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.UpdateForm_FormClosing); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.UpdateForm_FormClosed); this.Load += new System.EventHandler(this.UpdateFormLoad); ((System.ComponentModel.ISupportInitialize)(this.pictureBoxIcon)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.webView2)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -130,6 +144,6 @@ private void InitializeComponent() private System.Windows.Forms.Label labelDescription; private System.Windows.Forms.Label labelReleaseNotes; private System.Windows.Forms.PictureBox pictureBoxIcon; - + private Microsoft.Web.WebView2.WinForms.WebView2 webView2; } } \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.ar.resx b/AutoUpdater.NET/UpdateForm.ar.resx index 2c661c99..4cf92a49 100644 --- a/AutoUpdater.NET/UpdateForm.ar.resx +++ b/AutoUpdater.NET/UpdateForm.ar.resx @@ -1,149 +1,156 @@  - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Yes - - - - True - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + Yes + + + + True + + يتوفر إصدار جديد من {0}! - + {0} {1} متاح الآن. لديك نسخة {2} مثبتة. هل ترغب في تنزيله الآن؟ - + ملاحظات الإصدار: - + تحديث - + ذكرني لاحقا - + تخطي هذه النسخة - + {0} {1} متاح! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.cs b/AutoUpdater.NET/UpdateForm.cs index 539812b0..cc33d13d 100644 --- a/AutoUpdater.NET/UpdateForm.cs +++ b/AutoUpdater.NET/UpdateForm.cs @@ -1,93 +1,89 @@ using System; +using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Globalization; using System.IO; using System.Windows.Forms; +using Microsoft.Web.WebView2.Core; using Microsoft.Win32; +using static System.Reflection.Assembly; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +internal sealed partial class UpdateForm : Form { - internal partial class UpdateForm : Form + private readonly UpdateInfoEventArgs _args; + + public UpdateForm(UpdateInfoEventArgs args) { - private readonly UpdateInfoEventArgs _args; + _args = args; + InitializeComponent(); + InitializeBrowserControl(); + TopMost = AutoUpdater.TopMost; - public UpdateForm(UpdateInfoEventArgs args) + if (AutoUpdater.Icon != null) { - _args = args; - InitializeComponent(); - UseLatestIE(); - buttonSkip.Visible = AutoUpdater.ShowSkipButton; - buttonRemindLater.Visible = AutoUpdater.ShowRemindLaterButton; - var resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdateForm)); - Text = string.Format(resources.GetString("$this.Text", CultureInfo.CurrentCulture), - AutoUpdater.AppTitle, _args.CurrentVersion); - labelUpdate.Text = string.Format(resources.GetString("labelUpdate.Text", CultureInfo.CurrentCulture), - AutoUpdater.AppTitle); - labelDescription.Text = - string.Format(resources.GetString("labelDescription.Text", CultureInfo.CurrentCulture), - AutoUpdater.AppTitle, _args.CurrentVersion, _args.InstalledVersion); - - if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.Forced) - { - ControlBox = false; - } + pictureBoxIcon.Image = AutoUpdater.Icon; + Icon = Icon.FromHandle(AutoUpdater.Icon.GetHicon()); } - private void UseLatestIE() + buttonSkip.Visible = AutoUpdater.ShowSkipButton; + buttonRemindLater.Visible = AutoUpdater.ShowRemindLaterButton; + var resources = new ComponentResourceManager(typeof(UpdateForm)); + Text = string.Format(resources.GetString("$this.Text", CultureInfo.CurrentCulture)!, + AutoUpdater.AppTitle, _args.CurrentVersion); + labelUpdate.Text = string.Format(resources.GetString("labelUpdate.Text", CultureInfo.CurrentCulture)!, + AutoUpdater.AppTitle); + labelDescription.Text = + string.Format(resources.GetString("labelDescription.Text", CultureInfo.CurrentCulture)!, + AutoUpdater.AppTitle, _args.CurrentVersion, _args.InstalledVersion); + + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.Forced) { - int ieValue = 0; - switch (webBrowser.Version.Major) - { - case 11: - ieValue = 11001; - break; - case 10: - ieValue = 10001; - break; - case 9: - ieValue = 9999; - break; - case 8: - ieValue = 8888; - break; - case 7: - ieValue = 7000; - break; - } + ControlBox = false; + } + } - if (ieValue != 0) + private async void InitializeBrowserControl() + { + if (string.IsNullOrEmpty(_args.ChangelogURL)) + { + int reduceHeight = labelReleaseNotes.Height + webBrowser.Height; + labelReleaseNotes.Hide(); + webBrowser.Hide(); + webView2.Hide(); + Height -= reduceHeight; + } + else + { + var webView2RuntimeFound = false; + try { - try - { - using (RegistryKey registryKey = - Registry.CurrentUser.OpenSubKey( - @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", - true)) - { - registryKey?.SetValue(Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName), - ieValue, - RegistryValueKind.DWord); - } - } - catch (Exception) + string availableBrowserVersion = CoreWebView2Environment.GetAvailableBrowserVersionString(null); + var requiredMinBrowserVersion = "86.0.616.0"; + if (!string.IsNullOrEmpty(availableBrowserVersion) + && CoreWebView2Environment.CompareBrowserVersions(availableBrowserVersion, + requiredMinBrowserVersion) >= 0) { - // ignored + webView2RuntimeFound = true; } } - } + catch (Exception) + { + // ignored + } - private void UpdateFormLoad(object sender, EventArgs e) - { - if (string.IsNullOrEmpty(_args.ChangelogURL)) + if (webView2RuntimeFound) { - var reduceHeight = labelReleaseNotes.Height + webBrowser.Height; - labelReleaseNotes.Hide(); webBrowser.Hide(); - Height -= reduceHeight; + webView2.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted; + await webView2.EnsureCoreWebView2Async( + await CoreWebView2Environment.CreateAsync(null, Path.GetTempPath())); } else { + UseLatestIE(); if (null != AutoUpdater.BasicAuthChangeLog) { webBrowser.Navigate(_args.ChangelogURL, "", null, @@ -98,85 +94,161 @@ private void UpdateFormLoad(object sender, EventArgs e) webBrowser.Navigate(_args.ChangelogURL); } } - - var labelSize = new Size(Width - 110, 0); - labelDescription.MaximumSize = labelUpdate.MaximumSize = labelSize; } + } - private void ButtonUpdateClick(object sender, EventArgs e) + private void WebView_CoreWebView2InitializationCompleted(object sender, + CoreWebView2InitializationCompletedEventArgs e) + { + if (!e.IsSuccess) { - if (AutoUpdater.OpenDownloadPage) + if (AutoUpdater.ReportErrors) { - var processStartInfo = new ProcessStartInfo(_args.DownloadURL); + MessageBox.Show(this, e.InitializationException.Message, e.InitializationException.GetType().ToString(), + MessageBoxButtons.OK, MessageBoxIcon.Error); + } - Process.Start(processStartInfo); + return; + } - DialogResult = DialogResult.OK; - } - else + webView2.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false; + webView2.CoreWebView2.Settings.IsStatusBarEnabled = false; + webView2.CoreWebView2.Settings.AreDevToolsEnabled = Debugger.IsAttached; + webView2.CoreWebView2.Settings.UserAgent = AutoUpdater.GetUserAgent(); + webView2.CoreWebView2.Profile.ClearBrowsingDataAsync(); + webView2.Show(); + webView2.BringToFront(); + if (null != AutoUpdater.BasicAuthChangeLog) + { + webView2.CoreWebView2.BasicAuthenticationRequested += delegate( + object _, + CoreWebView2BasicAuthenticationRequestedEventArgs args) { - if (AutoUpdater.DownloadUpdate(_args)) - { - DialogResult = DialogResult.OK; - } - } + args.Response.UserName = ((BasicAuthentication)AutoUpdater.BasicAuthChangeLog).Username; + args.Response.Password = ((BasicAuthentication)AutoUpdater.BasicAuthChangeLog).Password; + }; } - private void ButtonSkipClick(object sender, EventArgs e) + webView2.CoreWebView2.Navigate(_args.ChangelogURL); + } + + private void UseLatestIE() + { + int ieValue = webBrowser.Version.Major switch + { + 11 => 11001, + 10 => 10001, + 9 => 9999, + 8 => 8888, + 7 => 7000, + _ => 0 + }; + + if (ieValue == 0) + { + return; + } + + try { - AutoUpdater.PersistenceProvider.SetSkippedVersion(new Version(_args.CurrentVersion)); + using RegistryKey registryKey = + Registry.CurrentUser.OpenSubKey( + @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", + true); + registryKey?.SetValue( + Path.GetFileName(Process.GetCurrentProcess().MainModule?.FileName ?? + GetEntryAssembly()?.Location ?? Application.ExecutablePath), + ieValue, + RegistryValueKind.DWord); } + catch (Exception) + { + // ignored + } + } + + private void UpdateFormLoad(object sender, EventArgs e) + { + var labelSize = new Size(webBrowser.Width, 0); + labelDescription.MaximumSize = labelUpdate.MaximumSize = labelSize; + } - private void ButtonRemindLaterClick(object sender, EventArgs e) + private void ButtonUpdateClick(object sender, EventArgs e) + { + if (AutoUpdater.OpenDownloadPage) + { + + var processStartInfo = new ProcessStartInfo(_args.DownloadURL); +#if NETCOREAPP + // for .NET Core, UseShellExecute must be set to true, otherwise + // opening URLs via Process.Start() fails + processStartInfo.UseShellExecute = true; +#endif + Process.Start(processStartInfo); + + DialogResult = DialogResult.OK; + } + else { - if (AutoUpdater.LetUserSelectRemindLater) + if (AutoUpdater.DownloadUpdate(_args)) { - using (var remindLaterForm = new RemindLaterForm()) - { - var dialogResult = remindLaterForm.ShowDialog(); - - if (dialogResult.Equals(DialogResult.OK)) - { - AutoUpdater.RemindLaterTimeSpan = remindLaterForm.RemindLaterFormat; - AutoUpdater.RemindLaterAt = remindLaterForm.RemindLaterAt; - } - else if (dialogResult.Equals(DialogResult.Abort)) - { - ButtonUpdateClick(sender, e); - return; - } - else - { - return; - } - } + DialogResult = DialogResult.OK; } + } + } - AutoUpdater.PersistenceProvider.SetSkippedVersion(null); + private void ButtonSkipClick(object sender, EventArgs e) + { + AutoUpdater.PersistenceProvider.SetSkippedVersion(new Version(_args.CurrentVersion)); + } - DateTime remindLaterDateTime = DateTime.Now; - switch (AutoUpdater.RemindLaterTimeSpan) + private void ButtonRemindLaterClick(object sender, EventArgs e) + { + if (AutoUpdater.LetUserSelectRemindLater) + { + using var remindLaterForm = new RemindLaterForm(); + DialogResult dialogResult = remindLaterForm.ShowDialog(this); + + switch (dialogResult) { - case RemindLaterFormat.Days: - remindLaterDateTime = DateTime.Now + TimeSpan.FromDays(AutoUpdater.RemindLaterAt); - break; - case RemindLaterFormat.Hours: - remindLaterDateTime = DateTime.Now + TimeSpan.FromHours(AutoUpdater.RemindLaterAt); - break; - case RemindLaterFormat.Minutes: - remindLaterDateTime = DateTime.Now + TimeSpan.FromMinutes(AutoUpdater.RemindLaterAt); + case DialogResult.OK: + AutoUpdater.RemindLaterTimeSpan = remindLaterForm.RemindLaterFormat; + AutoUpdater.RemindLaterAt = remindLaterForm.RemindLaterAt; break; + case DialogResult.Abort: + ButtonUpdateClick(sender, e); + return; + default: + return; } + } - AutoUpdater.PersistenceProvider.SetRemindLater(remindLaterDateTime); - AutoUpdater.SetTimer(remindLaterDateTime); + AutoUpdater.PersistenceProvider.SetSkippedVersion(null); - DialogResult = DialogResult.Cancel; - } + DateTime remindLaterDateTime = AutoUpdater.RemindLaterTimeSpan switch + { + RemindLaterFormat.Days => DateTime.Now + TimeSpan.FromDays(AutoUpdater.RemindLaterAt), + RemindLaterFormat.Hours => DateTime.Now + TimeSpan.FromHours(AutoUpdater.RemindLaterAt), + RemindLaterFormat.Minutes => DateTime.Now + TimeSpan.FromMinutes(AutoUpdater.RemindLaterAt), + _ => DateTime.Now + }; + + AutoUpdater.PersistenceProvider.SetRemindLater(remindLaterDateTime); + AutoUpdater.SetTimer(remindLaterDateTime); + + DialogResult = DialogResult.Cancel; + } - private void UpdateForm_FormClosed(object sender, FormClosedEventArgs e) + private void UpdateForm_FormClosed(object sender, FormClosedEventArgs e) + { + AutoUpdater.Running = false; + } + + private void UpdateForm_FormClosing(object sender, FormClosingEventArgs e) + { + if (AutoUpdater.Mandatory && AutoUpdater.UpdateMode == Mode.Forced) { - AutoUpdater.Running = false; + AutoUpdater.Exit(); } } } \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.cs.resx b/AutoUpdater.NET/UpdateForm.cs.resx new file mode 100644 index 00000000..ad410517 --- /dev/null +++ b/AutoUpdater.NET/UpdateForm.cs.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 212, 19 + + + Nová verze {0} je k dispozici! + + + 489, 15 + + + Je k dispozici verze {0} {1}. Nainstalovaná je verze {2}. Přejete si aktualizovat na novou verzi? + + + 139, 17 + + + Poznámky k vydání: + + + Aktualizovat + + + Připomenout později + + + Přeskočit tuto verzi + + + {0} {1} je k dispozici! + + diff --git a/AutoUpdater.NET/UpdateForm.da.resx b/AutoUpdater.NET/UpdateForm.da.resx index 120477f5..542ab756 100644 --- a/AutoUpdater.NET/UpdateForm.da.resx +++ b/AutoUpdater.NET/UpdateForm.da.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} er tilgængelig! - + Påmind mig senere - + Skip denne version - + Opdater - + {0} {1} er nu klar. Du har version {2} installeret. Ønsker du at installere nu? - + Release Bemærkninger: - + En ny version af {0} er klar til download! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.de.resx b/AutoUpdater.NET/UpdateForm.de.resx index a5f830ca..e050ca3b 100644 --- a/AutoUpdater.NET/UpdateForm.de.resx +++ b/AutoUpdater.NET/UpdateForm.de.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} ist verfügbar! - + Später erinnern - + Version überspringen - + Update - + {0} {1} ist jetzt verfügbar. Aktuell ist Version {2} installiert. Soll die neue Version jetzt heruntergeladen werden? - + Versionshinweise: - + Eine neue Version von {0} ist verfügbar! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.es.resx b/AutoUpdater.NET/UpdateForm.es.resx index 99be4ca5..d777568a 100644 --- a/AutoUpdater.NET/UpdateForm.es.resx +++ b/AutoUpdater.NET/UpdateForm.es.resx @@ -1,141 +1,153 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Una nueva versión de {0} está disponible! - + {0} {1} ya está disponible. Tu tienes la versión {2} instalado. ¿Desea descargarlo ahora? - + Notas de la versión : - - actualizar + + Actualizar + + + 300, 573 + + + 175, 28 Recuérdame más tarde - + Saltar esta versión - + {0} {1} está disponible! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.fr.resx b/AutoUpdater.NET/UpdateForm.fr.resx index 92443cc6..5f900414 100644 --- a/AutoUpdater.NET/UpdateForm.fr.resx +++ b/AutoUpdater.NET/UpdateForm.fr.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Une nouvelle version de {0} est disponible! - + {0} {1} est maintenant disponible. Vous disposez de la version {2} installé. Voulez-vous la télécharger maintenant? - + Notes de version : - + Mettre à jour - + Rappeler plus tard - + Passer cette version - + {0} {1} est disponible! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.it.resx b/AutoUpdater.NET/UpdateForm.it.resx index eb2fb63d..5d44c866 100644 --- a/AutoUpdater.NET/UpdateForm.it.resx +++ b/AutoUpdater.NET/UpdateForm.it.resx @@ -1,147 +1,153 @@  - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 296, 573 - - - 179, 28 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 296, 573 + + + 179, 28 + + {0} {1} è disponibile! - + Ricordamelo più tardi - + Salta questa versione - + Aggiorna - - {0} {1} è ora disponibile. Hai insallato la versione {2}. Vuoi scaricare l'aggiornamento ora? + + {0} {1} è ora disponibile. Hai installato la versione {2}. Vuoi scaricare l'aggiornamento ora? - + Note di rilascio: - + Una nuova versione di {0} è disponibile! - \ No newline at end of file + diff --git a/AutoUpdater.NET/UpdateForm.ja-JP.resx b/AutoUpdater.NET/UpdateForm.ja-JP.resx index f1bfddb5..5aed7a69 100644 --- a/AutoUpdater.NET/UpdateForm.ja-JP.resx +++ b/AutoUpdater.NET/UpdateForm.ja-JP.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} が利用できます。 - + 後で - + スキップ - + アップデート - + {0} {1} が利用できます。今は {2}がインストールされています。ダウンロードしますか? - + リリースノート: - + {0}の最新版が利用できます。 \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.ko.resx b/AutoUpdater.NET/UpdateForm.ko.resx index 98b12d65..6032aa2e 100644 --- a/AutoUpdater.NET/UpdateForm.ko.resx +++ b/AutoUpdater.NET/UpdateForm.ko.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1}을(를) 사용할 수 있습니다! - + 나중에 알리기 - + 이 버전 건너 뛰기 - + 업데이트 - + {0} {1}을(를) 사용할 수 있습니다. {2} 버전이 설치되었습니다. 지금 다운로드 하시겠습니까? - + 릴리즈 노트: - + {0}의 새 버전을 사용할 수 있습니다! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.lv.resx b/AutoUpdater.NET/UpdateForm.lv.resx new file mode 100644 index 00000000..5ed0bec4 --- /dev/null +++ b/AutoUpdater.NET/UpdateForm.lv.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + {0} ir pieejams jauns atjauninājums! + + + {0} {1} atjauninājums ir peejams. Pašlaik jums ir ieinstalēta versija {2}. Vai jūs vēlaties lejupielādēt atjauninājumu tagad? + + + Atjaunināt + + + Atgādināt vēlāk + + + Izlaist šo atjauninājumu + + + {0} {1} atjauninājums ir pieejams! + + + Atjauninājuma piezīmes: + + \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.nl.resx b/AutoUpdater.NET/UpdateForm.nl.resx index ebad24b8..9d4fb033 100644 --- a/AutoUpdater.NET/UpdateForm.nl.resx +++ b/AutoUpdater.NET/UpdateForm.nl.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Een nieuwe versie van {0} is beschikbaar! - + {0} {1} is nu beschikbaar. Je hebt versie {2} geïnstalleerd. Wilt u deze nu downloaden? - + Update - + Herinner me later - - Sla deze versie + + Sla over - + {0} {1} is beschikbaar! - + Release Opmerkingen: - \ No newline at end of file + diff --git a/AutoUpdater.NET/UpdateForm.pl.resx b/AutoUpdater.NET/UpdateForm.pl.resx index 431fd3a1..028a1017 100644 --- a/AutoUpdater.NET/UpdateForm.pl.resx +++ b/AutoUpdater.NET/UpdateForm.pl.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Nowa wersja programu {0} jest dostępna! - - Program {0} {1} jest już dostępny. Masz zainstalowaną wersję {2}. Chcesz ją ściągnąć? + + Program {0} jest dostępny w wersji {1} (obecnie masz wersję {2}). Czy chcesz teraz pobrać nową wersję? - - Aktualizacja + + Informacje o wersji: - - Przypomnij mi później + + Zainstaluj aktualizację - - Pominąć tę wersję + + Przypomnij mi później - - Aktualizacja programu {0} {1} jest dostępna! + + Pomiń tę wersję - - Release Uwagi: + + {0} {1} już jest! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.pt-BR.resx b/AutoUpdater.NET/UpdateForm.pt-BR.resx index 76d04f5a..4f52a95b 100644 --- a/AutoUpdater.NET/UpdateForm.pt-BR.resx +++ b/AutoUpdater.NET/UpdateForm.pt-BR.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + Versão {1} disponível - + Lembrar mais tarde - + Ignorar esta versão - + Atualizar - + Versão {1} de {0} está disponível. A versão instalada atualmente é a {2}. Deseja atualizar agora? - + Notas sobre a versão - + Nova versão de {0} disponível para download \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.pt.resx b/AutoUpdater.NET/UpdateForm.pt.resx index 2064ca43..bda4c375 100644 --- a/AutoUpdater.NET/UpdateForm.pt.resx +++ b/AutoUpdater.NET/UpdateForm.pt.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} está disponível! - + Lembrar-me mais tarde - + Ignorar esta versão - + Atualizar - + {0} {1} está disponível. A versão instalada é a {2}. Deseja atualizar agora? - + Notas sobre a versão - + Está disponível uma nova versão do {0}! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.resx b/AutoUpdater.NET/UpdateForm.resx index ee6bddc4..58a31560 100644 --- a/AutoUpdater.NET/UpdateForm.resx +++ b/AutoUpdater.NET/UpdateForm.resx @@ -1,955 +1,999 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - Top, Bottom, Left, Right - - - - 94, 120 - - - 2, 2, 2, 2 - - - 23, 23 - - - 538, 432 - - - - 0 - - - webBrowser - - - System.Windows.Forms.WebBrowser, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - True - - - Segoe UI, 10.5pt, style=Bold - - - 91, 14 - - - 550, 0 - - - 227, 19 - - - 5 - - - A new version of {0} is available! - - - labelUpdate - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - True - - - Segoe UI, 9pt - - - 91, 50 - - - 550, 0 - - - 479, 15 - - - 6 - - - {0} {1} is now available. You have version {2} installed. Would you like to download it now? - - - labelDescription - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 2 - - - True - - - Segoe UI, 9.75pt, style=Bold - - - 91, 90 - - - 98, 17 - - - 7 - - - Release Notes: - - - labelReleaseNotes - - - System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 1 - - - Bottom, Right - - - Segoe UI, 9pt - - - 479, 573 - - - 2, 2, 2, 2 - - - 153, 28 - - - 2 - - - Update - - - MiddleRight - - - ImageBeforeText - - - buttonUpdate - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - Bottom, Right - - - Segoe UI, 9pt - - - 322, 573 - - - 2, 2, 2, 2 - - - 153, 28 - - - 3 - - - Remind me later - - - MiddleRight - - - ImageBeforeText - - - buttonRemindLater - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - 12, 14 - - - 70, 66 - - - CenterImage - - - 8 - - - pictureBoxIcon - - - System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 0 - - - Bottom, Left - - - Segoe UI, 9pt - - - 95, 573 - - - 2, 2, 2, 2 - - - 153, 28 - - - 1 - - - Skip this version - - - MiddleRight - - - ImageBeforeText - - - buttonSkip - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - True - - - 7, 15 - - - 643, 612 - - - Segoe UI, 9pt - - - - AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA - IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af// - /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAkAAAANAAAADwAAABEABQ0TAEqmPQAAAA0AAAAJAAAABf///wH///8B////Af// - /wH///8BAAAABwAAAA0ASKJBBVGsWwAAAB0AAAAhCV2/hxBv2MUAAAAZAAAAFQAAAA8AAAAHAAAAA/// - /wH///8BAAAAAwAAAAkAAAARAEqnVyuO7/8Xbc2vA0ibbxuF7vsVfur7ACBILwAAABkAFzQZADR2GQAA - AAX///8B////Af///wEAAAAJAAAADwBKo0sokvT/IJH3/yeO8P8Wi/f/HYz1/xRs0LkWdt7LFHbj9wBT - u0cAAAAD////Af///wEAXM4RAFrITxJpzW8eddWlMpn0/x+U+P8ilvj/UrH6/xeN9/8Xi/b/DIP1/xh5 - 480AAAUF////Af///wH///8BAFzPDS+F4sU/ovj/LJz4/yea+P8nmvn/f8f8//H5/v8/pvr/Foz3/x+N - 9f8KZtNt////Af///wH///8B////Af///wEAXM4TM4vm0zOh+f8toPn/Qab5//P5/v//////yef9/x2R - 9/8YjPb/IYbt+Rp13ZUAXM4b////Af///wH///8B////ASB32otEqfj/M6X6/0Ok+f+Uyfv//////2Wz - +v8olff/FIv3/xeJ9v8nh+z5D2nVj////wH///8B////ASB32nNGpPX/L6L6/zao+v86q/v/aLb6//// - //8nm/j/HZL4/yuV9v8ged2pAFvOH////wH///8B////AQBbzR8yhN+3QJXp10Ga7fdGrfr/Naf6/0un - +f+q0vv/IJX4/xyR9/8ikff/KH3ei////wH///8B////Af///wH///8B////Af///wEAXM5DS6v4/y6h - +f84pPn/Jpr4/zCd+P81k+3/M5f1/zuQ6usAW84J////Af///wH///8B////Af///wH///8BAFzOU1Wv - +f9Gne7vOovjxTWf+P88mfH/AFvNMQJfz0kieNuFAFzOM////wH///8B////Af///wH///8B////AQNf - z2M/jeKtAFzOGwBbzg87kOjbP5Loz////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAW8wH////Af///wH///8BBWHQMxhu1nf///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA - //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA - AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABwAAAAcAAAAHAAAABwAA - AAcAAAAFAAAAAwAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAANAAAADwAA - AA8AAAANAAAADQAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAAFAAAABwAAAAsAAAANAAAADwAAABEAAAATAAAAEwAA - ABUAAAAVAAAAFQAPJhkAWci7ACxgIQAAABEAAAARAAAADwAAAAsAAAAJAAAABwAAAAP///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAANAAAADwBHnj0AH0YdAAAAFwAA - ABkAAAAbAAAAHQAAAB0AAAAdAFW+mQ5v3P0ATq5rAAAAGQAAABcAAAATAAAAEQAAAA0AAAALAAAABwAA - AAX///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAJAAAADQAAAA8AAAATAFfEpQhj - 0N8ARpxVAAAAHwAAACEAAAAjAAAAJQBIoGsTduL9JIz0/wJYwa8AAAAdAAAAGwAAABcAAAAVAAAAEQAA - AA8AAAALAAAABwAAAAX///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAsAAAAPAAAAEQAA - ABUAVsCbOpfz/x984f0BVr2lABg4MwAAACkALmhJDWvX8SKO9v8XiPb/DmvY8QAIFSUAAAAfAAAAGwAA - ABcAAAATAAAAEQAAAA0AAAAJAAAABf///wH///8B////Af///wH///8B////AQAAAAMAAAAHAAAACwAA - AA8AAAATAAAAFQBUvZEylPL/IZD3/zKR8P8PadLlAESYcQZgy9ktk/T/EIb2/xCF9v8efuX9AEGPWQAA - AB8AAAAbAAAAFwAAABUAOH4pAE2tQQAAAAkAAAAFAAAAA////wH///8B////Af///wH///8BAAAAAwAA - AAcAAAALAAAADwAAABEAAAAVAFW8iTeW8f8WjPf/GY33/zOa9/8ng+X/MZDv/xqN9/8RiPb/EIf2/yqO - 8f8AVLufAD6JSwBRtX0AWMStCGbU4RBu3P8AWsvBAAAACQAAAAX///8B////Af///wH///8B////Af// - /wH///8BAAAABQAAAAkAAAANAAAADwAAABMAVbx9O5fw/xqP9/8aj/f/Go/3/ySU9/8hkvf/Foz3/xWL - 9/8Tivf/J5P3/xt43/8efOP9JYjt/yKL9f8difb/GXnk/QBTuUkAAAAHAAAAA////wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAkAAAALABUtEwBXwYk/mO7/HZL4/x6T+P8dkvj/HZL4/xyR - +P8tofn/HpP3/xaM9/8Vi/f/IZD3/xaJ9v8Mg/b/CYH1/x+L9f8JZdLRAAAKBwAAAAX///8B////Af// - /wH///8B////Af///wH///8BAFzOQQBczokAXMynDWfTwxlz2eUie979LYTi/02l9P8hlvj/IZb4/yGW - +P8glfj/L6H6/7Pf/f9Ksfv/GpD3/xeN9/8Uivf/EYj2/w6F9v8NhPb/J4Xq/QBYyGUAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wEAXM81EGvW62ez+P9Jp/n/P6P5/zig+P8xnvj/J5r4/yWZ - +f8lmfn/JZn5/yqd+f+Jzv3//////8jo/v8vofr/GY/3/xaM9/8Tivf/EIf2/yWQ9v8Tb9npAFi/Cf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM45Hnfb81Gr+f8ilvj/I5j4/yWZ - +f8nm/n/KJz5/ymc+f8pnPn/VLX7//b7/v///////////5DR/f8kmPn/GI73/xWL9/8SiPb/NpTx/wBc - zrcAWs8J////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM5HJn7e91Su - +v8mmvn/KZz5/yqe+f8sn/n/LaD5/yuc+P/S6v3/////////////////+Pz+/1a1+/8ckfj/F433/xOK - 9/8ok/f/NI7s/RJu2OUAW85tAF7QB////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAXM5VL4bi/VSw+v8rn/n/LqH6/y+i+v8kmPn/i8X6////////////////////////////1+z+/yiZ - +P8Yjvf/FYv3/xGI9v8Sh/b/K5L3/zCL6/0Qa9fhAFzOZQBZzAX///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM6xYrD0/zCh+v8xpPr/M6X6/xmI9v+m0Pv/qtL7/+Pw/v///////////6zU - +/+t1fz/Vqv5/xiO9/8WjPf/Eon3/w+F9v8Lgvb/EIT1/0Cb9/8jet/9AFzNvf///wH///8B////Af// - /wH///8B////Af///wH///8BAFvNeUeX6P9Pr/r/MKP6/zOm+v82qPv/K575/ySZ+f8Xjvf/rNP8//// - ////////I5f5/xiN9/8WjPf/Go/3/xeN9/8Tiff/FIj2/zGV9/83j+z9FG3Y5wBbzXMAWcwL////Af// - /wH///8B////Af///wH///8B////AQBczm1Bk+f/VLD6/y2g+v8xpPr/Naf6/ziq+/87rPv/Oav7/yWY - +f+s0/z///////////8vofr/I5f4/x+U+P8bkPj/F433/zSa+P9Alu39F3HZ5wBbznMAXNEL////Af// - /wH///8B////Af///wH///8B////Af///wEAXM5jO43k/Vix+v8qnfn/LqD6/zGk+v81p/r/OKr7/zus - +/85q/v/JZj5/6zT/P///////////yqd+P8jl/j/H5T4/xuQ+P8Xjff/S6Dy/wBczbEAXNEL////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvNUxlz2P13uvb/aLj5/2O3+v9atPv/ULH6/z6q - +v82qPv/OKn7/zeo+/8jmPj/rNP8////////////JJj4/yKX+P8ek/j/G5D3/xeN9/8/n/j/GXHY2wBt - 2wP///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84nAFzOYwBczYEAXM6fEGrTvSR7 - 3OMyhd/9cr34/zOl+v80pvr/M6X6/yWa+f86l/f/VaX4/1Wl+P8Zj/f/IZb4/x2S+P8aj/f/Foz3/xuN - 9/9Ckuj/AFzOS////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBczn9ptfX/L6L6/zCj+v8wovr/LqH6/yyf+f8pnfn/Jpr5/yOX+P8ml/j/PKH5/yeW - 9/8Vi/f/EYj2/0qi9v8NZdGz////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAFvOjWm39/8sn/n/LaD5/y2g+f9Nrfr/OqX5/yeb+f8kmPj/IZb4/1iu - +f8wg+D/QpHm/VSk8v9Sp/j/Uaf4/zSG4v0AW84j////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAXM6babj5/yic+f85pPn/bLj4/ziJ4f1osfT/Lpz5/yGW - +P8flPj/X6nw/wBczXEAW845AF3OdQVg0K8dddvtLX/e/wBczov///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBczqtqufr/V7H6/1ii7P8QadTBAFzPORZv - 199ntvn/IJT4/zSd+P8+jOL9AFvNG////wH///8B////Af///wEAW84pAFzOP////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BBWLRt3y89v8rfdzvAFzPZf// - /wH///8BAFvOOS6D4PlRq/n/U6v5/xlw1sf///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wECXc7RCmTSqwBb - zhn///8B////Af///wH///8BAFvNc02b6v9orvP/AFzOef///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBb - zBv///8B////Af///wH///8B////Af///wH///8BBWHRsy5+3f0AXM4n////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84TAFzOs////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAP///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAAAADAAAAAwAAAAMAAAADAAAABQAAAAUAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAA - AAcAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAUAAAAFAAAABwAAAAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAANAAAADQAA - AA0AAAANAAAADQAAAAsAAAALAAAACwAAAAkAAAAJAAAABwAAAAUAAAAFAAAAA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEQAA - ABEAAAARAAAAEQAAABEAAAARAEWaNQBGnjcAAgQPAAAADwAAAA0AAAANAAAACwAAAAkAAAAJAAAABwAA - AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAANAAAADwAAABEAAAARAAAAEwAA - ABMAAAAVAAAAFwAAABUAAAAVAAAAFQAAABUAG0UfAFrL1wBWwZUAI04fAAAAEwAAABEAAAARAAAADwAA - AA0AAAANAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAsAAAALAAAADQAPIRMAP40vABo7GwAA - ABUAAAAXAAAAGQAAABkAAAAZAAAAGwAAABsAAAAdAAAAGwAiTykAV8KpCWnX/QVgzdMAPYc9AAAAFwAA - ABcAAAAVAAAAEwAAABEAAAAPAAAADQAAAA0AAAALAAAABwAAAAcAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAABQAAAAcAAAAHAAAACwAAAA0AAAAPAAAAEQA1 - dScAWMavAFS8iQA2ejUAAQMbAAAAHQAAAB0AAAAfAAAAHwAAACEAAAAhABQsKQBQsoEHZ9bvIIbv/w5t - 2vcASKFdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAADwAAAA8AAAANAAAACQAAAAkAAAAHAAAAA/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAADQAA - AA8AAAARAAAAEwA3fS8AWsrRD2zY9wFax8MARppXAAAAHwAAACEAAAAjAAAAJQAAACUAAAAlAEGQWwVi - 0OUeg+v/IYz1/xZ34f8BVLmTAAAAHwAAAB0AAAAbAAAAGQAAABcAAAAVAAAAEwAAABEAAAAPAAAACwAA - AAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA - AAsAAAALAAAADQAAABEAAAATAAAAFQAsYykAWcnNN5Xy/y2K6v0Pa9f9AVS4lwAxb0MABxEpAAAAJwAA - ACkAKF1DBGDN5R+B6P0hjfb/EIX2/x+D6/8GYc/hAAYPJQAAACEAAAAdAAAAGwAAABkAAAAXAAAAFQAA - ABMAAAAPAAAADQAAAAsAAAAJAAAABwAAAAX///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQAfRyMAWcjLM5Px/zWZ9/8yk/H/HHfe+wdf - ycsAR6B1AAYPLQAfRj8AUrmxGXri/ymR9f8Sh/b/D4X2/yOL8/8LaNf/ADNyQwAAACEAAAAfAAAAHQAA - ABkAAAAXAAAAFQAAABMAAAARAAAADwAAAAsAAAAJAAAABwAAAAMAAAAD////Af///wH///8B////Af// - /wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQANIh0AWcfHMJHv/yeT - 9/8djvf/NZf1/y6L6v8NaNLrAFO3pQBQtKENa9b1Mpb1/xuM9v8Phvb/DoX2/yKO9v8Xdd/9AE6rfwAA - ACEAAAAfAAAAHQAAABkAAAAXAAAAFwAdPRsAR6A9AFS+bQBAkSMAAAAJAAAABwAAAAMAAAAD////Af// - /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAADwAAABEAAAATAAAAFQAA - ABcAWsfDMZDu/yuW9/8Vi/b/F4z3/yqV9/88nfb/IHzg/RJv2v80lPH/I5H3/xKI9/8Rh/b/EIf2/xyM - 9v8piez/AFjFxQAkUTMAL2k5AECRSwBMqmMAVb6PBF/NyQdk1PUHZdX/AFvN6wBUvl0AAAAJAAAABwAA - AAX///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAALAAAADQAA - AA8AAAARAAAAFQAAABcAWse5MZDs/zCZ+P8Yjff/GI73/xiO9/8ikvf/Npz3/zmb9f8vmPf/FYv3/xSK - 9/8Tiff/EYj2/xaK9v8ylvX/BV7M6wBWwbEDXMe/DGnW6RFw3f0XduH/HH/p/SKG7/8be+b9AFrKrwAw - bBUAAAAJAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAA - AAcAAAAJAAAACwAAAA8AAAAPAAAAEQAAABUAWsexMo7r/zSc+P8aj/f/Go/3/xqP9/8aj/f/HZH3/yGT - 9/8bj/f/F433/xaM9/8Vi/f/FIr3/xOJ9v8vl/f/KIXo/yWE6P8sjO39LI/y/yWN9P8cifX/FIT1/yKK - 9P8Oa9n/AFS7UwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAYNDwAdQRkAWsevMY3p/zug+f8dkvj/HZL3/x2S - +P8ckvj/HJH3/xyR+P8bkfj/JZn4/ySY+P8Zjvf/Foz3/xSL9/8Wi/f/KZT3/yOQ9v8Xivb/DIP2/wqB - 9v8IgPX/E4X1/yGB6f8GYtDPAAARCQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAF3FBwBVvBkAVr8tAFbBRwBWwVsAWMRvAFjFhQBYxZUAW8znM47p/z+j - +f8flPf/H5T3/x+U+P8flPf/HpP3/x6T+P8lmvn/Ubf7/1e4+/8lmvj/GI73/xaM9/8Vi/f/E4n3/xGI - 9v8Phvb/DYT2/wuD9v8Jgfb/JYz0/xd03vsBWcZtAAAABQAAAAMAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAXM6PAFzOwwBbzcsBXc7TDmnU3Rt02uklf+D1MYnl/TuS - 6f9Fmu3/U6n1/zig+P8hlvf/IZb4/yGW9/8hlvf/IZX4/ySY+P83qPv/u+P9/7He/f9Gr/v/HJH4/xiO - 9/8Xjff/FIv3/xOJ9/8RiPb/D4X2/wyE9v8Rhfb/L43v/wtm09EAU74xAAAAA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9zC2bT8Uia7f9ntPn/WK75/1Ss - +f9Oqvn/Rab5/z6j+P83oPj/LJv4/ySY+f8kmPj/JJj4/ySY+f8kmPj/JZn5/zin+/+S0f3///////v9 - /v+Y1P3/MaP6/xyR9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8qk/b/IHvh+QBczIEAV78H////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUDAV3PgR92 - 2u9Yp/L/QKP5/yGU+P8glPj/IZb4/yOX+P8kmPj/JZn5/yaa+f8mmvn/J5v5/yeb+f8nmvn/MKL6/23C - /P/k8/7////////////v+P7/Ybz8/ymd+f8bkPf/F433/xaM9/8Uivf/EYj2/xiL9v85mPX/CmXT2wBb - zjn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAFzOEwJf0I8adNr1XbD4/zmh+P8ilvj/I5j4/ySZ+P8mmvj/J5v4/yic+P8pnPj/KZz4/ymc - +P8qnfj/SrD7/8Hl/f/8/v7/////////////////w+b+/0iw+/8ilfj/GY/3/xeN9/8Vi/f/E4n2/ySR - 9/81j+3/AFzO4QBbzlMAWs8H////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBd0QkAXM6JIHnb+Vut9f8/pPn/JZn4/yeb+f8pnPj/Kp35/yue - +f8rn/n/LJ/5/yue+f8rnfj/otX8//7///////////////7+/v//////+vz+/6XZ/P88qfr/HJH4/xiO - 9/8WjPf/E4r3/xmM9/84m/f/Mo3q/xZx2v0HY9LHAFzOSwBbzhcAXs8D////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssNBWHQpSqC4PlgsPf/OqT5/ymd - +f8qnvn/LJ/5/y2g+v8toPn/LaD5/yOX+f9csPn/9vr+///////+/v7////////////+/v7//////+v2 - /v9ywPv/I5f4/xqP9/8Xjff/FIv3/xKJ9/8Vifb/KZL3/zaV9P8vien9FXDZ7wRf0KkAXM1ZAFnSCf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNIwVi - 0a8uheL9Z7n6/zql+f8sn/n/LaH6/y+i+v8wo/r/J5v4/zKZ+P/F4vz///////7+/v////////////// - ///////////////////a7v7/L534/xyS+P8Yjvf/FYz3/xOJ9/8RiPb/D4b2/xSH9v8jjvf/OZXy/y6H - 6P0Qa9bnAFzOqQBbzTsAWcsF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzisAW87VUKPv/1ay+v8vofr/MKP6/zGk+v8zpfr/E4b2/3i4+f/S5/3/1Oj9/9zs - /f/4+/7/////////////////1en9/9bq/f/W6v3/hcL6/xqP9/8Zj/f/Foz3/xSK9/8RiPf/D4X2/w2E - 9v8Kgvb/DIL1/yqQ9v9CnPb/LILk/QVg0P0AW82X////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAFzPEQBczn8fd9rvaLb3/0es+v8wovr/MaT6/zOl+v80p/r/GIz3/yqS - 9/8zl/f/MZb2/1Gk+P/c7P3//v7+////////////PJ74/zWY9/80mPf/LZX3/xeM9/8Zjvf/F433/xWL - 9/8SiPf/D4b1/w2E9v8Rhfb/J5D2/zaV9P8wiOn9GnLb8wVg0LMAW81b////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvNdR112e9msPL/Tq76/zGj+v8xo/r/M6b6/zWn - +v83qfv/M6X6/y+h+v8tofr/JZn4/zSX9//V6f3///////7+/v/+/v7/LKD6/x6T+P8dkff/G5D3/xqQ - 9/8aj/f/F433/xWL9/8Siff/E4j2/ymS9/9Dnvj/No7r/xhx2v0IY9LNAFrNUQBbzRsAWcwD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBczQsAXM1rIHfb/2ay9f9Sr/r/LaD6/y+i - +v8xpPr/NKb6/zeo+/84qvv/Oqz7/zqr+/84qvv/LqD6/zaY+P/V6f3/////////////////M6b6/ySY - +f8ilvj/H5T4/x2S+P8akPf/F433/xmN9/8ul/j/SaD0/z6S6/8ZctntAFvOtwBczk0AXNEJ////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFrNCwBbzWcWcNjpZbD0/1ax - +v8voPn/LaD6/y+i+f8ypPr/NKf6/zeo+/85q/v/PK36/zus+/85q/v/LqH6/zaY+P/V6f3//v7+//// - ////////MaP5/ySY+P8il/j/H5T3/x2S+P8akPj/F433/y6Y9/9MoPP/Hnbb8wdi0bEAXM5jAFvRD/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzOWRNu - 1+deqPD/WrL6/y2e+f8qnfn/LaD6/y+i+v8xpPr/NKb6/zeo+/84qvv/Oqz6/zqr+/84qvv/LqD6/zaY - +P/V6f3///////7+/v/+/v7/LKD5/yOY+P8ilvj/H5T4/xyS9/8akPj/F433/zGZ+P9MnvD/AFzNzwBc - zSUAXNED////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBY - ywMAW81RC2fT+1ai7P+Bwfj/XbP5/1ax+v9Mrfn/RKr6/0Kq+v9Aqvr/O6n6/zWn+v83qfv/OKn7/zip - +/83qPv/LKD5/zaY+P/V6f3/////////////////Jpr4/yKX+P8ilvj/H5T4/x2S+P8akPf/F433/xyP - 9/9Tqfj/GnLY5QBdzlH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBdzwcAW86bCWPR3yt/3fEzheD9Po3j/0mV5v1WoOr9Yqvw/2ey9P9ruPf/ar37/0Ks - +v81p/r/Nqj6/zan+/81p/r/K575/y6U9/+y1vz/1Oj9/9To/f/U6P3/IZb4/yGV+P8hlvj/HpP3/xyR - +P8aj/f/F433/xWL9/85nPj/QZHo/QNfz5UAXc4N////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAW84dAFzOMQFdzjkAW81HAFzOawNfzocLZdKlEmzVzxZv - 1u0acdf9ZbP0/1e1+v8zpfr/M6X6/zOl+v8ypfr/LJ/5/xaK9v8ji/b/Ko/2/yqP9v8qj/b/Eor3/yGV - 9/8glfj/HZL4/xyR9/8Zj/f/Foz3/xSK9/8ZjPf/VqTx/xdv19cAXM4t////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM6/X63y/1Wz+/8wo/r/MKP6/zCj+v8wovr/L6L6/y6h+v8sn/n/Kp35/yic - +f8mmvj/JJj4/yGW+P8klvj/LZr4/yeW+P8ekff/FYz3/xOJ9/8RiPb/Q5/2/zeH4v8FYM97////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBZ2QUAW87DZLH0/1Cw+v8uofr/LqH6/y6h+f8uofr/LKD5/yyf - +f8qnfn/KJz4/yeb+f8lmfn/Ipf4/yGW+P9Lqfn/Xa31/1ut9/9Uq/j/QaD4/zCY+P8fj/b/KJL2/02c - 7v0RadTZAFnMCf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBb0Q8AW87HabX2/0ut+v8rn/n/LJ/5/yyf - +f8toPn/V7L6/2G2+v83o/n/J5v5/yWZ+f8jl/j/IZb4/y2b+P9tuPn/G3LX/xpx2P8sf9/7SJns/1mo - 9P9hr/j/Xa35/2iw9/8keNv7AFvORf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBdzxsAXM7Nbrn4/0Oo - +f8pnPn/Lp/5/0aq+v9uuvj/XKXs/1Kf6/9vufn/LJz5/yOX+P8hlvj/H5T4/0Sl+f9bpe7/AFzNsQBa - zCkAW85fAF3OpQBczckJY9LXJn3f80SS6P06iuP/AFzOtQBf0gv///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd - zyUAXM7Rcrz6/z6l+f8yoPn/XbT6/2ix8/89jOL9B2LQvQ1o1NNWou3/WbH6/yaY+P8flPj/IpX4/1iu - +f87ieH9AFzOY////wH///8BAF3QAwBdzRMAW805AFzOZwBbzYsCXc6vAFzOuwBczh////8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzy8AXM7Vd7/6/1aw+v9wvPr/Up7r/xtx1+8GYdGFAFzPIQBbzlsRatXnb7j3/0Sm - +f8elPj/Kpj4/2Gu9v8ec9f9AFnNGf///wH///8B////Af///wH///8B////AQBZywcAW84ZAFzNKQBc - zQf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBczjkFYtLXhcT5/2uv8f8uf9zxAFzPqQBczi////8B////Af// - /wEAW851I3nb+Wmz9/83nvj/OJ74/1ih7P0RatS7////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBbzkMIY9HfSJTl/Rtx1tUBXc51AFrOD/// - /wH///8B////Af///wEAV84LB2PRsz6P5f9ksvj/WKz4/0GN4/8FYM5v////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBbzVcBXM7rCGLRowBb - zzMAWs4H////Af///wH///8B////Af///wH///8BAFvNNwxm0tFXo+7/cbX2/yt+3esAXM47////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBZ - zA8AXMwt////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBczk8KZdLhU5vp/w1l - 0a8AW84Z////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd - zwcAXM55CmPR/wBczYkAXM0F////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAW84PAFzOmwBbzTf///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA - AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA - //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA - AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAADAAAABQAAAAUAAAAFAAAABQAA - AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABQAAAAcAAAAHAAAABwAA - AAcAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAHAAAABwAAAAcAAAAHAAAABQAA - AAUAAAAFAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABQAAAAcAAAAHAAAACQAA - AAkAAAAJAAAACwAAAAsAAAALAAAACwAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAALAAAACwAA - AAsAAAALAAAACQAAAAkAAAAJAAAABwAAAAcAAAAFAAAABQAAAAMAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAUAAAAHAAAABwAA - AAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAAPAAAADwAAAA8AAAAPAAAADwAAABEAAAARAAAAEQAA - AA8AAAAPAAAADwAAAA8AAAAPAAAADQAAAA0AAAANAAAACwAAAAsAAAAJAAAACQAAAAcAAAAHAAAABQAA - AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAA - AAcAAAAJAAAACQAAAAsAAAALAAAADQAAAA0AAAAPAAAADwAAABEAAAARAAAAEQAAABMAAAATAAAAEwAA - ABMAAAATAAAAEwAAABMAAAATAAAAEwBIn0EAWcirAAwYFQAAABEAAAARAAAADwAAAA8AAAAPAAAADQAA - AA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA - AAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEwAAABMAAAATAAAAFQAA - ABUAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAnYicAXM7/AFzO/wBKoU0AAAAVAAAAFQAA - ABMAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAEwAA - ABUAAAAXAAAAFwAAABkAAAAZAAAAGQAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAACRsAWcfBAmHR+wZi - 0f0AVr6VAAAAGQAAABcAAAAXAAAAFQAAABUAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAA - AAcAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQA5 - eSkAWMWrAD6NOwAAABcAAAAXAAAAGQAAABsAAAAbAAAAHQAAAB0AAAAdAAAAHwAAAB8AAAAfAAAAHwAA - AB8AUbaLAF3P/R6E7v8UdeL/AFzM4QAAABsAAAAbAAAAGQAAABkAAAAXAAAAFQAAABUAAAATAAAAEQAA - AA8AAAAPAAAADQAAAAsAAAAJAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAA - AA8AAAARAAAAEQAAABMAS6dPAFzO/wBczv8AU7mFAAkaHwAAABsAAAAdAAAAHwAAAB8AAAAhAAAAIQAA - ACEAAAAjAAAAIwAAACMARZddAF3P/RR65v8nj/b/JIbu/wBczv8ANnU9AAAAHQAAABsAAAAbAAAAGQAA - ABcAAAAXAAAAFQAAABMAAAARAAAAEQAAAA8AAAANAAAACwAAAAkAAAAJAAAABwAAAAUAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABwAA - AAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAEWdRwBczv8aeOH/A1/Q/QBbydcAPYVHAAAAHwAA - ACEAAAAjAAAAIwAAACUAAAAlAAAAJQAAACcAKlw9AFvM8Q1v3f0skvb/HYv2/ymR9v8GYtD9AE+wgQAA - AB8AAAAfAAAAHQAAABsAAAAZAAAAGQAAABcAAAAVAAAAEwAAABEAAAARAAAADwAAAA0AAAALAAAACQAA - AAcAAAAFAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAA - AAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABMAAAAVAAAAFwA/jj0AXM7/N5Ty/zyZ - 8/8Tb9n7AFzO/QBTt5EADSApAAAAJQAAACcAAAAnAAAAKQAAACkACxwvAFnG0Qdl1Psukvb/Io73/wmB - 9v8pkfb/E3Hd/wBZx8kAAAAjAAAAIQAAAB8AAAAdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAAEQAA - AA8AAAANAAAADQAAAAsAAAAJAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAFQAA - ABcAN3gzAFzO/zSS8P9Bn/j/QJ/4/yqH6P8FYND9AFvJ3wA6hlUAAAApAAAAKQAAACsAAAAtAFC1owFe - z/0rjvH/LZX3/w6E9v8Lgvb/Io73/yOE6/8AXM79ABtAMQAAACEAAAAhAAAAHwAAAB0AAAAbAAAAGQAA - ABcAAAAVAAAAEwAAABMAAAARAAAADwAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAAADwAA - ABEAAAATAAAAFQAAABUAAAAXACZZKQBczv8uju7/NJr3/x+P9/88nfj/Ppr0/xdy2/0AXc/9AFG1nwAP - JDMAAAAtAEOXcwBczf8jher/N5r4/xWI9v8Nhfb/DIT2/xiJ9v8xlPb/A17Q/wBJoW0AAAAjAAAAIQAA - AB8AAAAdAAAAGwAAABkAAAAXAAAAFwAAABUAAAATAAAAEQAAAA8AAAANAAAACwAAAAkAAAAHAAAABQAA - AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA - AAkAAAALAAAADQAAAA8AAAARAAAAEwAAABMAAAAVAAAAFwARKx8AXM7/LY7t/zqc+P8Tivf/Fov3/zCY - +P9Fovn/MIzr/wdi0P0AXMrlAEijfwBczfcXd+D/Pp74/x+P9/8Qh/b/D4b2/w6F9v8Phfb/NJj3/xJv - 2vsAVr2vAAAAIwAAACEAAAAfAAAAHQAAABsAAAAZAAAAFwAAABcAAAAVADZyJwBQtVkAWcehAE+zSwAA - AAsAAAAJAAAABwAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcAAAAZAF3O/S2M - 7P9AoPj/FYv3/xWL9/8Vi/f/IZH3/0Cg+P9Dn/X/G3fd/QBczv8LaNb9P5/4/y+X+P8Siff/EYj3/xGH - 9v8Qh/b/D4b2/y2V9/8kgub/AFzN8wAHDiUAAAAhAAAAHwAAAB0ACRIdAEGRQwBRuHcAWMSpAFvM4wBc - zv8AXM7/AFzO/wBbzNcAAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAkAAAALAAAADQAAAA8AAAARAAAAEwAA - ABUAAAAXAAAAFwBdzvUriun/RaT5/xeN9/8Xjff/F433/xeN9/8Zjvf/M5v4/0mm+f84lvH/Pp32/zyf - +P8Wi/f/FIr3/xOK9/8Siff/EYj3/xCH9v8ij/f/N5Xy/wFdzv8AR6FlAEedXwBUuY8AWcjHAFzN9wBc - zv8CXs79DGva+xN24/8jhO3/Hn/q/wBczv8AS6ozAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAA - AA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcBXc7rKojo/0un+f8Zjvf/GY/3/xmP9/8Zj/f/GY/3/xmO - 9/8jk/f/O5/4/zad+P8cj/f/Foz3/xaM9/8Vi/f/FIr3/xOK9/8Siff/F4v2/z6e+P8NZNH/AFzO/wBc - zv8IZNP5FHTf/x6A6P8oi/H/LpL3/y2S9/8pj/f/KY/3/xJu2vsAW8y/AAAACwAAAAkAAAAHAAAABQAA - AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA - AAUAAAAFAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAV3N4SiF5v9Rq/r/G5D4/xuQ - +P8bkPj/G5D4/xuQ+P8bkPj/GpD4/xqQ9/8Zj/f/GY/3/xiO9/8Xjff/F433/xaM9/8Vi/f/FIr3/xKJ - 9/83m/j/NZTy/yyM7f84mPX/Opv4/zeZ+P8sk/f/IIz2/xSG9v8Jf/X/F4b2/ymL8f8CXc7/AFS4TwAA - AAkAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAHAAAACQAAAAsAAAANAAAADQAAAA8AAAARAAAAEwFd - zNclg+X/WK76/xyS+P8dkvj/HZL4/x2S+P8dkvj/HJL4/xyR+P8ckfj/G5H4/xuQ+P8dkvj/I5j4/xmO - 9/8Xjff/Foz3/xWL9/8Uivf/GYz3/zKY+P8wl/f/JJD3/xeK9v8Ng/b/C4L2/wmB9v8IgPX/B3/1/yyS - 9/8ad+D/AFzN3QAAGgsAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAAAAcAAAAJAAAACwAA - AAsAAAANADVyHQBIoTkAXM7/IoDi/12x+v8fk/j/HpP4/x+U+P8flPj/H5T4/x6T+P8ek/j/HpP4/x2S - +P8elPj/Oaz7/z6v/P8wo/r/GY/3/xiO9/8Xjff/FYz3/xSK9/8Tiff/Eoj3/xCH9v8Phvb/DYT2/wyD - 9v8Kgvb/CYH2/xiI9v80k/T/BmHQ/QBYw2sAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBmzAUAYM8hAFnGPwBb - yV8AWsp9AFvMmwBczLkBXc7dAF3P9QBczv8AXM7/AFzO/ymG5f9fs/r/Ipb4/yCV+P8glfj/IJX4/yCV - +P8glfj/IJX4/x+U+P8flPj/M6X7/1G3/P+z4P7/Pq/8/yWb+f8Zj/f/GI73/xeN9/8WjPf/FIv3/xOJ - 9/8RiPf/EIf2/w6F9v8NhPb/C4P2/wqB9v8vlPf/JIHm/wBcz/MAOY4TAAAABQAAAAMAAAAD////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc - zv8AXM7/AFzO/wBczv8CXs/9DmnV+Rt12/sngOH/M4zn/z+V7P9KoPD/VKn1/2Cy+f9jtfr/Sqn5/yKW - +P8il/j/Ipf4/yKX+P8il/j/Ipf4/yKW+P8hlvj/LJ/6/z+v/P/K6f7//////4nO/f88rfz/H5T5/xqP - 9/8Yjvf/F433/xWM9/8Uivf/E4n3/xGI9v8Qhvb/DoX2/wyE9v8WiPb/PJr3/w5n1PsAWsuNAAAABQAA - AAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXc/JAFzO/ziP6v9lsff/Z7X6/2a1+v9ntfr/ZLT6/12x+v9Urfr/TKr5/0Sm - +f88o/n/M574/yOY+f8kmPn/JJj5/ySY+f8kmPn/JJj5/ySY+f8jmPn/J5r5/z2t/P+S0v3///////// - ///2+///Wbr8/zWn+/8bkPj/Go/3/xiO9/8Xjff/FYv3/xSK9/8Siff/EYf2/w+G9v8Nhfb/L5X3/zGM - 6/8AXc79AFi/If///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFXVBwBczrcFYtL7Z7D1/2m2+v80nfn/JJX4/x6T - +P8glPj/IZX4/yKW+P8jl/j/JJj5/ySZ+f8lmfn/Jpr5/yaa+f8mmvn/Jpr5/yaa+f8mmvn/Jpn5/ziq - /P9fvf3/+fz//////////////////9Xu/v9BsPz/K5/6/xuQ+P8Zj/f/GI73/xaM9/8Vi/f/E4r3/xKI - 9/8Qh/b/FYj2/0Of+P8Xcdr7AFzPq////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAZswLAF3PyQll - 0vtcrPb/YLL6/ySW+P8glfj/IZb4/yKX+P8jmPn/JJn5/yWZ+f8mmvn/J5v5/yeb+f8onPn/KJz5/yic - +f8onPn/KJv5/zKk+/9Dsfz/3PH+////////////////////////////oNf+/z2u/P8il/j/G5D4/xmP - 9/8Xjff/Foz3/xSL9/8Tiff/EYj2/y2V9/9AmPH/AV3O/wBbzTn///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBVzA8BXtDXDmnV+2Oy+P9es/r/JZj4/yKX+P8kmPn/JZn5/yaa+f8nm/n/KJz5/ymc - +f8pnfn/Kp35/yqd+f8qnfn/Kp35/yuf+f81p/v/ptn9//////////////////////////////////3+ - //9pwf3/OKr8/x2R+P8akPj/GY73/xeN9/8Vi/f/FIr3/xKI9/88nfj/MIjn/wBczv8AXM+lAFrPJf// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAF3RFwFdz+ESbtb7arb4/12z+v8nmfn/JZn5/yaa - +f8om/n/KZz5/yqd+f8qnvn/K575/yuf+f8sn/n/LJ/5/yyf+f8qnvn/Y7j7//7///////////////// - ////////////////////////5fT+/0Wx+/8vovr/G5H4/xmP9/8Yjvf/Foz3/xSL9/8Tiff/JpP3/0yl - +P84kez/EmvW+wBdzv0AXM+fAGDPIf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssjAV3P6Rh1 - 2/twu/r/XbP7/yea+f8onPn/KZ35/yqe+f8rn/n/LJ/6/y2g+v8toPr/LqH6/y6h+v8lmfn/MZz4/+j0 - /v////////////////////////////////////////////////+y3f3/M6X6/yOX+f8akPj/GY73/xeN - 9/8Vi/f/E4r3/xKI9/8ejvf/PJz4/0uj+P81juz/D2rW+wBczvsAW86XAF7QG////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzC0BXM/xIHve/XS9+/9bs/r/KZ35/yqe+f8sn/n/LaD6/y6h+v8vofr/L6L6/y+i - +v8nmvr/FYv3/7PZ/P///////////////////////////////////////////////////////////2+9 - +/8qnfn/HJL5/xmP9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8djPf/PJv4/0mh+P8xi+r/DWfU+wBc - z/kAXM2RAFnTF////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAF3MNwBdz/koguH9ecH7/1Wx+v8sn/r/LaD6/y6h - +v8vovr/MKP6/zGk+v8tofn/DYX3/2ey+f////////////////////////////////////////////// - ///////////////////v+P//OaH5/yGV+P8akPj/GI73/xaN9/8Vi/f/E4n3/xGI9v8Phvb/DYT2/wuD - 9v8civf/PJv3/0ef9/8viOn/C2bT+wBdzvcAXM6JAFnMFf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW85DAFzO/zuT - 6f99xPv/MqL6/y+h+v8wo/r/MaT6/zKk+v8zpfr/EIf2/yKL9v/y+P7///////////////////////// - /////////////////////////////////////////////8Lh/f8aj/f/G5D4/xmP9/8Xjff/FYv3/xOK - 9/8RiPf/EIb2/w6F9v8Mg/b/CoL2/wiA9f8bifb/Opn3/0Wd9v82i+n/CmTS+wBczv8AXM1t////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAF3PhQBczv9XqPL/esP8/y+h+v8wovr/MaT6/zKl+v80pvr/NKf6/wR89v8vkvf/Vab4/1Wm - +P9Vpvj/Vab4/5HF+////////////////////////////1qq+P9bq/n/XKz5/12t+f9ervn/II/3/xWM - 9/8Zj/f/F433/xaM9/8Uivf/Eoj3/xCH9v8Ohfb/DIT2/wqC9v8IgPb/GIj2/zqZ9/9In/j/PpHt/w9p - 1fsAXM7/AFzOjf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAFzPewBczv9Qoe7/gMX7/0ar+/8vovr/MaP6/zKl+v80pvr/Naf7/zao - +/8nm/n/E4r3/xKJ9/8Siff/EYn2/wZ+9f9aqPn///////////////////////////8jl/n/EIb3/w2E - 9v8NhPb/DYT2/w+H9v8aj/j/Go/3/xiO9/8WjPf/FIr3/xKJ9/8Qh/b/DoX2/wyE9v8di/f/QJz4/0+k - +P84j+z/EmvW+wBbzv8AXM6nAFnMKf///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvObQBczf9JnOz/g8b7/0ms+/8uofr/MKP6/zKk - +v8zpvr/Naf7/zeo+/84qvv/Oar7/zmq+/84qvv/N6n7/zao+/8Siff/Wqj5//////////////////// - ////////Nqn7/yOY+f8kmPn/Ipb4/yCV+P8ek/j/HJH4/xqQ9/8Yjvf/Foz3/xSL9/8Siff/EIf2/yKP - 9/9FoPj/Vqj5/z2T7f8TbNb7AFvO/wBczqcAWcwp////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNYQBczv9Dl+v/hcf8/06u - +v8toPr/LqH6/zCj+v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo - +f///////////////////////////zmr+/8mmvn/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM - 9/8Ui/f/JpP4/0uk+P9crfn/Qpbt/xVu1/sAW87/AFzOpwBc0Sf///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNVwBd - z/09kuj/h8f8/1Kw+v8rnvn/LaD6/y+i+v8xo/r/M6X6/zSn+v82qPv/OKr7/zqs+/88rfv/PK77/zus - +/85q/v/N6n7/xOJ+P9aqPn///////////////////////////84qfv/JZn5/ySY+f8il/j/IJX4/x6T - +P8ckvj/GpD4/xiO9/8Wjff/N5z4/2Kw+v9Gmu7/Fm7X+wBdz/0AXM6nAFzRJ////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAFvNTQBczvs2jOb/iMf8/1ex+v8pnfn/K575/y2g+v8vovr/MaP6/zOl+v80p/r/Nqj7/ziq - +/86rPv/PK37/zyu+/87rPv/Oav7/zep+/8Tifj/Wqj5////////////////////////////NKX6/yOY - +P8kmPn/Ipf4/yCV+P8ek/j/HJL4/xqQ+P8Yjvf/Fo33/1ar+f86j+n/AFzO/wBczqcAXNEn////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8BAF3NQwBdz/kvh+P/h8b8/12z+/8nm/n/KZz5/yue+f8toPr/L6H6/zCj - +v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo+f////////////// - /////////////y+i+v8jmPf/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM9/9Kpvn/UqDv/wBc - zv8AXswf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFvNOQBdzvcoguD9icb7/4rI+/9Xsfr/S6z6/0Cn - +v81o/n/LZ/6/y6h+v8wo/r/MqT6/zOm+v81p/v/N6j7/ziq+/85qvv/Oar7/ziq+/83qfv/Nqj7/xKJ - 9/9aqPn///////////////////////////8qnfn/IZf4/ySY+f8ilvj/IJX4/x6T+P8ckfj/GpD3/xiO - 9/8WjPf/J5X4/2iz+f8Vbdb7AF3Oh////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFnMFQBczv8AXM7/P5Hn/2Sq - 7/9osPP/eLz4/4jH+/+Myvz/jcv8/43L/P+Cxvz/dsL8/2u9+/9bt/v/Nqf6/zWn+/82qPv/N6n7/zep - +/83qPv/Nqj7/zSn+v8SiPf/Wqj5////////////////////////////Jpr5/yCV+P8jmPn/IZb4/x+U - +P8ek/j/HJH4/xqP9/8Yjvf/Foz3/xSK9/9ZrPn/Q5Pp/wBdz+8AbdsH////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBt - 2wcAW86XAFzOtwFdz9UBXc7zAFzO/wBczv8AXM7/D2nT+SR62/s3iuP/SZrq/1uo7/9ttvT/i8v8/2u+ - +/80pvr/Naf6/zWn+/81p/v/Naf7/zSm+v8zpfr/Eon3/zyZ9/+q0vz/qtL8/6rS/P+q0vz/qtL8/x+V - +f8ek/j/I5f4/yGV+P8flPj/HZL4/xuR+P8Zj/f/F433/xaM9/8Uivf/NJn4/2ex9/8JYtD/AFzOX/// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQBVzA8AXtAxAFvNUQBdzXEAW86RAF7PtQFe - 0NkBXM73AFzO/0+k7/+DyPz/MqX6/zOl+v8zpfr/M6b6/zOl+v8ypfr/MaT6/yGW+f8CevX/AHn1/wB5 - 9f8AefX/AHn1/wB59f8Jgvb/IZX4/yKX+P8glfj/HpP4/x2S+P8bkPj/GY/3/xeN9/8Vi/f/E4r3/xSJ - 9/9lsvn/M4bj/QBdzs3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBdzv1UpO7/fcX8/zCj+v8xpPr/MaT6/zGk+v8xpPr/MaP6/zCj - +v8vovr/LqH6/yyg+v8rnvn/KZ35/yic+f8mmvn/JZn5/yOX+P8hlvj/H5T4/x6T+P8ckfj/GpD4/xiO - 9/8Wjff/FYv3/xOJ9/8RiPb/Q6D4/2Co8/8CXc7/AF3ONf///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////AQCA/wMAXM7/XKrx/3fC/P8vovr/L6L6/y+i - +v8vovr/L6L6/y+i+v8uofr/LaD6/yyf+v8rnvn/Kp35/yic+f8nm/n/JZn5/ySY+f8il/j/IJX4/zig - +f9fsvr/Wq/6/0Kj+P8ql/j/F4z3/xSK9/8Siff/EIf2/xuM9v9ttfr/JXfY+wBczqH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUTAFzO/2Ov - 8/9wvvz/LaD6/y2g+v8uofr/LqH6/y2h+v8toPr/LKD6/yyf+f8rnvn/Kp35/yic+f8nm/n/Jpr5/ySY - +f8jl/j/IZb4/ySX+P98wPv/Xqnx/12p8v92uvj/er76/3O5+v9arfn/QaD5/ymU9/8Sh/b/Uqf5/1Gd - 7v8AXM/5AFnMFf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8BAF3RIQBczv9rtPX/abv7/yue+f8rn/n/LJ/5/yyf+f8sn/n/LqH5/161+v9+w/v/arv7/yye - +f8nm/n/Jpr5/ySZ+f8jl/j/IZb4/yCV+P9BpPn/f8D5/whh0P8AXM7/AV3P/xlw2fk1iub/UaDv/2my - 9/91ufr/cbf6/3G3+v9vtPn/EmrU+wBcz3X///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////AQBe0DEAXM7/crr3/2G2+/8pnfn/Kp35/yqd+f8qnfn/Qqj6/37E - +/+Fxfr/TJvq/4LD+v9ouPv/JZn5/ySY+f8jl/n/Ipb4/yCV+P8flPj/YrP6/2Go7v8AXc73AFjKHQBb - zVEAXM+PAF7PzwBdzv0AXM7/DmjV+SqB4v9Fluz/cLP2/0GQ5v8AXc/jAID/A////wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9BAFzO/3i++f9as/r/J5v5/yic - +f8un/n/ZLj7/4zK/P9kq+//D2jS+wBczv8shOL9isj8/02r+v8jl/j/Ipb4/yCV+P8flPj/IZT4/4HC - +/85h+D9AFzOrf///wH///8B////Af///wEAXdELAF3NQwBbzn8AXc+/AFzO9wBczv8EX8//AFzO/wBd - z0v///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAF7PTwBc - zv9/w/v/Uq76/yaa+f9Fqfr/gcT8/3/A+P8yhOD9AF3P/QBdz48AXM9RAF3P/U6e7f+Gxvv/NJ/5/yCV - +P8flPj/HpP4/zuh+f+Ewvr/DWXS/QBczln///8B////Af///wH///8B////Af///wH///8B////AQBV - qgMAWs0zAFzPbwBczssAXM4v////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbz18BXc/9hcX7/1Sv+v9qufv/isj7/1ei7f8JY9H9AV3P1wBbzzX///8B////AQBb - zoMCXs/9bLT1/3i/+/8kl/j/HZP4/xyS+P9csPr/aKzw/wBczvsAVcwP////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAXc5vBGHS+YnH+/+Jx/v/d7n1/yZ52vsAXc/5AF3PeQBA - vwX///8B////Af///wEAVaoDAFzPxRBq1ft9wPr/YbP6/xyR+P8ckPj/fL/6/z2N4/0AXc+7////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFvOfw1q1fmHxfr/V5/p/wVf - 0P8BXc7DAFrPJf///wH///8B////Af///wH///8B////AQBYzhsBXs/tKYLh/YXE+/9Fpfn/M5z4/4PC - +v8TadP9AF3NZ////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc - zo0HYM//HHHX+wBdz/MAW85j////Af///wH///8B////Af///wH///8B////Af///wH///8BAF3NRwBb - zv9Km+z/gcL7/2m1+v9usfP/AFvO/wBgyhn///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM25AFzO/wBdz6sAWdMX////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wEAXM2FAl7P/Wex9f+Dwvv/RpPm/wBdz8v///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFnMKQBdzUP///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAFWqAwBdz8cQa9X7gsD6/xlu1PsAXM91////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXtAbAF3P7x1x - 2P8AXM7/AFzNJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////AQBbzkkAXM7/AFzO/////wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8BAF3PjwBczT3///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// - /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - - - - 2, 2, 2, 2 - - - CenterParent - - - {0} {1} is available! - - - UpdateForm - - - System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + + Top, Bottom, Left, Right + + + + 94, 120 + + + 2, 2, 2, 2 + + + 23, 23 + + + 538, 432 + + + + 4 + + + webBrowser + + + System.Windows.Forms.WebBrowser, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 8 + + + True + + + Segoe UI, 10.5pt, style=Bold + + + 91, 14 + + + 550, 0 + + + 227, 19 + + + 5 + + + A new version of {0} is available! + + + labelUpdate + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 3 + + + True + + + Segoe UI, 9pt + + + 91, 50 + + + 550, 0 + + + 479, 15 + + + 6 + + + {0} {1} is now available. You have version {2} installed. Would you like to download it now? + + + labelDescription + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 2 + + + True + + + Segoe UI, 9.75pt, style=Bold + + + 91, 90 + + + 98, 17 + + + 7 + + + Release Notes: + + + labelReleaseNotes + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 1 + + + Bottom, Right + + + Segoe UI, 9pt + + + 479, 573 + + + 2, 2, 2, 2 + + + 153, 28 + + + 0 + + + Update + + + MiddleRight + + + ImageBeforeText + + + buttonUpdate + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 4 + + + Bottom, Right + + + Segoe UI, 9pt + + + 322, 573 + + + 2, 2, 2, 2 + + + 153, 28 + + + 1 + + + Remind me later + + + MiddleRight + + + ImageBeforeText + + + buttonRemindLater + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 6 + + + 12, 14 + + + 70, 66 + + + CenterImage + + + 8 + + + pictureBoxIcon + + + System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 0 + + + Bottom, Left + + + Segoe UI, 9pt + + + 95, 573 + + + 2, 2, 2, 2 + + + 153, 28 + + + 2 + + + Skip this version + + + MiddleRight + + + ImageBeforeText + + + buttonSkip + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + $this + + + 5 + + + Top, Bottom, Left, Right + + + 94, 120 + + + 2, 2, 2, 2 + + + 23, 23 + + + 538, 432 + + + 3 + + + False + + + webView2 + + + Microsoft.Web.WebView2.WinForms.WebView2, Microsoft.Web.WebView2.WinForms, Version=1.0.1210.39, Culture=neutral, PublicKeyToken=2a8ab48044d2601e + + + $this + + + 7 + + + True + + + 7, 15 + + + 643, 612 + + + Segoe UI, 9pt + + + + AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA + IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af// + /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAkAAAANAAAADwAAABEABQ0TAEqmPQAAAA0AAAAJAAAABf///wH///8B////Af// + /wH///8BAAAABwAAAA0ASKJBBVGsWwAAAB0AAAAhCV2/hxBv2MUAAAAZAAAAFQAAAA8AAAAHAAAAA/// + /wH///8BAAAAAwAAAAkAAAARAEqnVyuO7/8Xbc2vA0ibbxuF7vsVfur7ACBILwAAABkAFzQZADR2GQAA + AAX///8B////Af///wEAAAAJAAAADwBKo0sokvT/IJH3/yeO8P8Wi/f/HYz1/xRs0LkWdt7LFHbj9wBT + u0cAAAAD////Af///wEAXM4RAFrITxJpzW8eddWlMpn0/x+U+P8ilvj/UrH6/xeN9/8Xi/b/DIP1/xh5 + 480AAAUF////Af///wH///8BAFzPDS+F4sU/ovj/LJz4/yea+P8nmvn/f8f8//H5/v8/pvr/Foz3/x+N + 9f8KZtNt////Af///wH///8B////Af///wEAXM4TM4vm0zOh+f8toPn/Qab5//P5/v//////yef9/x2R + 9/8YjPb/IYbt+Rp13ZUAXM4b////Af///wH///8B////ASB32otEqfj/M6X6/0Ok+f+Uyfv//////2Wz + +v8olff/FIv3/xeJ9v8nh+z5D2nVj////wH///8B////ASB32nNGpPX/L6L6/zao+v86q/v/aLb6//// + //8nm/j/HZL4/yuV9v8ged2pAFvOH////wH///8B////AQBbzR8yhN+3QJXp10Ga7fdGrfr/Naf6/0un + +f+q0vv/IJX4/xyR9/8ikff/KH3ei////wH///8B////Af///wH///8B////Af///wEAXM5DS6v4/y6h + +f84pPn/Jpr4/zCd+P81k+3/M5f1/zuQ6usAW84J////Af///wH///8B////Af///wH///8BAFzOU1Wv + +f9Gne7vOovjxTWf+P88mfH/AFvNMQJfz0kieNuFAFzOM////wH///8B////Af///wH///8B////AQNf + z2M/jeKtAFzOGwBbzg87kOjbP5Loz////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAW8wH////Af///wH///8BBWHQMxhu1nf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA + AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABwAAAAcAAAAHAAAABwAA + AAcAAAAFAAAAAwAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAANAAAADwAA + AA8AAAANAAAADQAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAAFAAAABwAAAAsAAAANAAAADwAAABEAAAATAAAAEwAA + ABUAAAAVAAAAFQAPJhkAWci7ACxgIQAAABEAAAARAAAADwAAAAsAAAAJAAAABwAAAAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAANAAAADwBHnj0AH0YdAAAAFwAA + ABkAAAAbAAAAHQAAAB0AAAAdAFW+mQ5v3P0ATq5rAAAAGQAAABcAAAATAAAAEQAAAA0AAAALAAAABwAA + AAX///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAJAAAADQAAAA8AAAATAFfEpQhj + 0N8ARpxVAAAAHwAAACEAAAAjAAAAJQBIoGsTduL9JIz0/wJYwa8AAAAdAAAAGwAAABcAAAAVAAAAEQAA + AA8AAAALAAAABwAAAAX///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAsAAAAPAAAAEQAA + ABUAVsCbOpfz/x984f0BVr2lABg4MwAAACkALmhJDWvX8SKO9v8XiPb/DmvY8QAIFSUAAAAfAAAAGwAA + ABcAAAATAAAAEQAAAA0AAAAJAAAABf///wH///8B////Af///wH///8B////AQAAAAMAAAAHAAAACwAA + AA8AAAATAAAAFQBUvZEylPL/IZD3/zKR8P8PadLlAESYcQZgy9ktk/T/EIb2/xCF9v8efuX9AEGPWQAA + AB8AAAAbAAAAFwAAABUAOH4pAE2tQQAAAAkAAAAFAAAAA////wH///8B////Af///wH///8BAAAAAwAA + AAcAAAALAAAADwAAABEAAAAVAFW8iTeW8f8WjPf/GY33/zOa9/8ng+X/MZDv/xqN9/8RiPb/EIf2/yqO + 8f8AVLufAD6JSwBRtX0AWMStCGbU4RBu3P8AWsvBAAAACQAAAAX///8B////Af///wH///8B////Af// + /wH///8BAAAABQAAAAkAAAANAAAADwAAABMAVbx9O5fw/xqP9/8aj/f/Go/3/ySU9/8hkvf/Foz3/xWL + 9/8Tivf/J5P3/xt43/8efOP9JYjt/yKL9f8difb/GXnk/QBTuUkAAAAHAAAAA////wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAkAAAALABUtEwBXwYk/mO7/HZL4/x6T+P8dkvj/HZL4/xyR + +P8tofn/HpP3/xaM9/8Vi/f/IZD3/xaJ9v8Mg/b/CYH1/x+L9f8JZdLRAAAKBwAAAAX///8B////Af// + /wH///8B////Af///wH///8BAFzOQQBczokAXMynDWfTwxlz2eUie979LYTi/02l9P8hlvj/IZb4/yGW + +P8glfj/L6H6/7Pf/f9Ksfv/GpD3/xeN9/8Uivf/EYj2/w6F9v8NhPb/J4Xq/QBYyGUAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wEAXM81EGvW62ez+P9Jp/n/P6P5/zig+P8xnvj/J5r4/yWZ + +f8lmfn/JZn5/yqd+f+Jzv3//////8jo/v8vofr/GY/3/xaM9/8Tivf/EIf2/yWQ9v8Tb9npAFi/Cf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM45Hnfb81Gr+f8ilvj/I5j4/yWZ + +f8nm/n/KJz5/ymc+f8pnPn/VLX7//b7/v///////////5DR/f8kmPn/GI73/xWL9/8SiPb/NpTx/wBc + zrcAWs8J////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM5HJn7e91Su + +v8mmvn/KZz5/yqe+f8sn/n/LaD5/yuc+P/S6v3/////////////////+Pz+/1a1+/8ckfj/F433/xOK + 9/8ok/f/NI7s/RJu2OUAW85tAF7QB////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAXM5VL4bi/VSw+v8rn/n/LqH6/y+i+v8kmPn/i8X6////////////////////////////1+z+/yiZ + +P8Yjvf/FYv3/xGI9v8Sh/b/K5L3/zCL6/0Qa9fhAFzOZQBZzAX///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM6xYrD0/zCh+v8xpPr/M6X6/xmI9v+m0Pv/qtL7/+Pw/v///////////6zU + +/+t1fz/Vqv5/xiO9/8WjPf/Eon3/w+F9v8Lgvb/EIT1/0Cb9/8jet/9AFzNvf///wH///8B////Af// + /wH///8B////Af///wH///8BAFvNeUeX6P9Pr/r/MKP6/zOm+v82qPv/K575/ySZ+f8Xjvf/rNP8//// + ////////I5f5/xiN9/8WjPf/Go/3/xeN9/8Tiff/FIj2/zGV9/83j+z9FG3Y5wBbzXMAWcwL////Af// + /wH///8B////Af///wH///8B////AQBczm1Bk+f/VLD6/y2g+v8xpPr/Naf6/ziq+/87rPv/Oav7/yWY + +f+s0/z///////////8vofr/I5f4/x+U+P8bkPj/F433/zSa+P9Alu39F3HZ5wBbznMAXNEL////Af// + /wH///8B////Af///wH///8B////Af///wEAXM5jO43k/Vix+v8qnfn/LqD6/zGk+v81p/r/OKr7/zus + +/85q/v/JZj5/6zT/P///////////yqd+P8jl/j/H5T4/xuQ+P8Xjff/S6Dy/wBczbEAXNEL////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvNUxlz2P13uvb/aLj5/2O3+v9atPv/ULH6/z6q + +v82qPv/OKn7/zeo+/8jmPj/rNP8////////////JJj4/yKX+P8ek/j/G5D3/xeN9/8/n/j/GXHY2wBt + 2wP///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84nAFzOYwBczYEAXM6fEGrTvSR7 + 3OMyhd/9cr34/zOl+v80pvr/M6X6/yWa+f86l/f/VaX4/1Wl+P8Zj/f/IZb4/x2S+P8aj/f/Foz3/xuN + 9/9Ckuj/AFzOS////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBczn9ptfX/L6L6/zCj+v8wovr/LqH6/yyf+f8pnfn/Jpr5/yOX+P8ml/j/PKH5/yeW + 9/8Vi/f/EYj2/0qi9v8NZdGz////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAFvOjWm39/8sn/n/LaD5/y2g+f9Nrfr/OqX5/yeb+f8kmPj/IZb4/1iu + +f8wg+D/QpHm/VSk8v9Sp/j/Uaf4/zSG4v0AW84j////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAXM6babj5/yic+f85pPn/bLj4/ziJ4f1osfT/Lpz5/yGW + +P8flPj/X6nw/wBczXEAW845AF3OdQVg0K8dddvtLX/e/wBczov///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBczqtqufr/V7H6/1ii7P8QadTBAFzPORZv + 199ntvn/IJT4/zSd+P8+jOL9AFvNG////wH///8B////Af///wEAW84pAFzOP////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BBWLRt3y89v8rfdzvAFzPZf// + /wH///8BAFvOOS6D4PlRq/n/U6v5/xlw1sf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wECXc7RCmTSqwBb + zhn///8B////Af///wH///8BAFvNc02b6v9orvP/AFzOef///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBb + zBv///8B////Af///wH///8B////Af///wH///8BBWHRsy5+3f0AXM4n////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW84TAFzOs////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAAAADAAAAAwAAAAMAAAADAAAABQAAAAUAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAA + AAcAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAUAAAAFAAAABwAAAAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAANAAAADQAA + AA0AAAANAAAADQAAAAsAAAALAAAACwAAAAkAAAAJAAAABwAAAAUAAAAFAAAAA////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEQAA + ABEAAAARAAAAEQAAABEAAAARAEWaNQBGnjcAAgQPAAAADwAAAA0AAAANAAAACwAAAAkAAAAJAAAABwAA + AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAANAAAADwAAABEAAAARAAAAEwAA + ABMAAAAVAAAAFwAAABUAAAAVAAAAFQAAABUAG0UfAFrL1wBWwZUAI04fAAAAEwAAABEAAAARAAAADwAA + AA0AAAANAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAsAAAALAAAADQAPIRMAP40vABo7GwAA + ABUAAAAXAAAAGQAAABkAAAAZAAAAGwAAABsAAAAdAAAAGwAiTykAV8KpCWnX/QVgzdMAPYc9AAAAFwAA + ABcAAAAVAAAAEwAAABEAAAAPAAAADQAAAA0AAAALAAAABwAAAAcAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAABQAAAAcAAAAHAAAACwAAAA0AAAAPAAAAEQA1 + dScAWMavAFS8iQA2ejUAAQMbAAAAHQAAAB0AAAAfAAAAHwAAACEAAAAhABQsKQBQsoEHZ9bvIIbv/w5t + 2vcASKFdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAADwAAAA8AAAANAAAACQAAAAkAAAAHAAAAA/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAADQAA + AA8AAAARAAAAEwA3fS8AWsrRD2zY9wFax8MARppXAAAAHwAAACEAAAAjAAAAJQAAACUAAAAlAEGQWwVi + 0OUeg+v/IYz1/xZ34f8BVLmTAAAAHwAAAB0AAAAbAAAAGQAAABcAAAAVAAAAEwAAABEAAAAPAAAACwAA + AAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA + AAsAAAALAAAADQAAABEAAAATAAAAFQAsYykAWcnNN5Xy/y2K6v0Pa9f9AVS4lwAxb0MABxEpAAAAJwAA + ACkAKF1DBGDN5R+B6P0hjfb/EIX2/x+D6/8GYc/hAAYPJQAAACEAAAAdAAAAGwAAABkAAAAXAAAAFQAA + ABMAAAAPAAAADQAAAAsAAAAJAAAABwAAAAX///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQAfRyMAWcjLM5Px/zWZ9/8yk/H/HHfe+wdf + ycsAR6B1AAYPLQAfRj8AUrmxGXri/ymR9f8Sh/b/D4X2/yOL8/8LaNf/ADNyQwAAACEAAAAfAAAAHQAA + ABkAAAAXAAAAFQAAABMAAAARAAAADwAAAAsAAAAJAAAABwAAAAMAAAAD////Af///wH///8B////Af// + /wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAANAAAADwAAABEAAAATAAAAFQANIh0AWcfHMJHv/yeT + 9/8djvf/NZf1/y6L6v8NaNLrAFO3pQBQtKENa9b1Mpb1/xuM9v8Phvb/DoX2/yKO9v8Xdd/9AE6rfwAA + ACEAAAAfAAAAHQAAABkAAAAXAAAAFwAdPRsAR6A9AFS+bQBAkSMAAAAJAAAABwAAAAMAAAAD////Af// + /wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAAAAkAAAALAAAADwAAABEAAAATAAAAFQAA + ABcAWsfDMZDu/yuW9/8Vi/b/F4z3/yqV9/88nfb/IHzg/RJv2v80lPH/I5H3/xKI9/8Rh/b/EIf2/xyM + 9v8piez/AFjFxQAkUTMAL2k5AECRSwBMqmMAVb6PBF/NyQdk1PUHZdX/AFvN6wBUvl0AAAAJAAAABwAA + AAX///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABwAAAAkAAAALAAAADQAA + AA8AAAARAAAAFQAAABcAWse5MZDs/zCZ+P8Yjff/GI73/xiO9/8ikvf/Npz3/zmb9f8vmPf/FYv3/xSK + 9/8Tiff/EYj2/xaK9v8ylvX/BV7M6wBWwbEDXMe/DGnW6RFw3f0XduH/HH/p/SKG7/8be+b9AFrKrwAw + bBUAAAAJAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAA + AAcAAAAJAAAACwAAAA8AAAAPAAAAEQAAABUAWsexMo7r/zSc+P8aj/f/Go/3/xqP9/8aj/f/HZH3/yGT + 9/8bj/f/F433/xaM9/8Vi/f/FIr3/xOJ9v8vl/f/KIXo/yWE6P8sjO39LI/y/yWN9P8cifX/FIT1/yKK + 9P8Oa9n/AFS7UwAAAAkAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAYNDwAdQRkAWsevMY3p/zug+f8dkvj/HZL3/x2S + +P8ckvj/HJH3/xyR+P8bkfj/JZn4/ySY+P8Zjvf/Foz3/xSL9/8Wi/f/KZT3/yOQ9v8Xivb/DIP2/wqB + 9v8IgPX/E4X1/yGB6f8GYtDPAAARCQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAF3FBwBVvBkAVr8tAFbBRwBWwVsAWMRvAFjFhQBYxZUAW8znM47p/z+j + +f8flPf/H5T3/x+U+P8flPf/HpP3/x6T+P8lmvn/Ubf7/1e4+/8lmvj/GI73/xaM9/8Vi/f/E4n3/xGI + 9v8Phvb/DYT2/wuD9v8Jgfb/JYz0/xd03vsBWcZtAAAABQAAAAMAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAXM6PAFzOwwBbzcsBXc7TDmnU3Rt02uklf+D1MYnl/TuS + 6f9Fmu3/U6n1/zig+P8hlvf/IZb4/yGW9/8hlvf/IZX4/ySY+P83qPv/u+P9/7He/f9Gr/v/HJH4/xiO + 9/8Xjff/FIv3/xOJ9/8RiPb/D4X2/wyE9v8Rhfb/L43v/wtm09EAU74xAAAAA////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9zC2bT8Uia7f9ntPn/WK75/1Ss + +f9Oqvn/Rab5/z6j+P83oPj/LJv4/ySY+f8kmPj/JJj4/ySY+f8kmPj/JZn5/zin+/+S0f3///////v9 + /v+Y1P3/MaP6/xyR9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8qk/b/IHvh+QBczIEAV78H////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUDAV3PgR92 + 2u9Yp/L/QKP5/yGU+P8glPj/IZb4/yOX+P8kmPj/JZn5/yaa+f8mmvn/J5v5/yeb+f8nmvn/MKL6/23C + /P/k8/7////////////v+P7/Ybz8/ymd+f8bkPf/F433/xaM9/8Uivf/EYj2/xiL9v85mPX/CmXT2wBb + zjn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAFzOEwJf0I8adNr1XbD4/zmh+P8ilvj/I5j4/ySZ+P8mmvj/J5v4/yic+P8pnPj/KZz4/ymc + +P8qnfj/SrD7/8Hl/f/8/v7/////////////////w+b+/0iw+/8ilfj/GY/3/xeN9/8Vi/f/E4n2/ySR + 9/81j+3/AFzO4QBbzlMAWs8H////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBd0QkAXM6JIHnb+Vut9f8/pPn/JZn4/yeb+f8pnPj/Kp35/yue + +f8rn/n/LJ/5/yue+f8rnfj/otX8//7///////////////7+/v//////+vz+/6XZ/P88qfr/HJH4/xiO + 9/8WjPf/E4r3/xmM9/84m/f/Mo3q/xZx2v0HY9LHAFzOSwBbzhcAXs8D////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssNBWHQpSqC4PlgsPf/OqT5/ymd + +f8qnvn/LJ/5/y2g+v8toPn/LaD5/yOX+f9csPn/9vr+///////+/v7////////////+/v7//////+v2 + /v9ywPv/I5f4/xqP9/8Xjff/FIv3/xKJ9/8Vifb/KZL3/zaV9P8vien9FXDZ7wRf0KkAXM1ZAFnSCf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNIwVi + 0a8uheL9Z7n6/zql+f8sn/n/LaH6/y+i+v8wo/r/J5v4/zKZ+P/F4vz///////7+/v////////////// + ///////////////////a7v7/L534/xyS+P8Yjvf/FYz3/xOJ9/8RiPb/D4b2/xSH9v8jjvf/OZXy/y6H + 6P0Qa9bnAFzOqQBbzTsAWcsF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzisAW87VUKPv/1ay+v8vofr/MKP6/zGk+v8zpfr/E4b2/3i4+f/S5/3/1Oj9/9zs + /f/4+/7/////////////////1en9/9bq/f/W6v3/hcL6/xqP9/8Zj/f/Foz3/xSK9/8RiPf/D4X2/w2E + 9v8Kgvb/DIL1/yqQ9v9CnPb/LILk/QVg0P0AW82X////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAFzPEQBczn8fd9rvaLb3/0es+v8wovr/MaT6/zOl+v80p/r/GIz3/yqS + 9/8zl/f/MZb2/1Gk+P/c7P3//v7+////////////PJ74/zWY9/80mPf/LZX3/xeM9/8Zjvf/F433/xWL + 9/8SiPf/D4b1/w2E9v8Rhfb/J5D2/zaV9P8wiOn9GnLb8wVg0LMAW81b////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvNdR112e9msPL/Tq76/zGj+v8xo/r/M6b6/zWn + +v83qfv/M6X6/y+h+v8tofr/JZn4/zSX9//V6f3///////7+/v/+/v7/LKD6/x6T+P8dkff/G5D3/xqQ + 9/8aj/f/F433/xWL9/8Siff/E4j2/ymS9/9Dnvj/No7r/xhx2v0IY9LNAFrNUQBbzRsAWcwD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBczQsAXM1rIHfb/2ay9f9Sr/r/LaD6/y+i + +v8xpPr/NKb6/zeo+/84qvv/Oqz7/zqr+/84qvv/LqD6/zaY+P/V6f3/////////////////M6b6/ySY + +f8ilvj/H5T4/x2S+P8akPf/F433/xmN9/8ul/j/SaD0/z6S6/8ZctntAFvOtwBczk0AXNEJ////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFrNCwBbzWcWcNjpZbD0/1ax + +v8voPn/LaD6/y+i+f8ypPr/NKf6/zeo+/85q/v/PK36/zus+/85q/v/LqH6/zaY+P/V6f3//v7+//// + ////////MaP5/ySY+P8il/j/H5T3/x2S+P8akPj/F433/y6Y9/9MoPP/Hnbb8wdi0bEAXM5jAFvRD/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzOWRNu + 1+deqPD/WrL6/y2e+f8qnfn/LaD6/y+i+v8xpPr/NKb6/zeo+/84qvv/Oqz6/zqr+/84qvv/LqD6/zaY + +P/V6f3///////7+/v/+/v7/LKD5/yOY+P8ilvj/H5T4/xyS9/8akPj/F433/zGZ+P9MnvD/AFzNzwBc + zSUAXNED////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBY + ywMAW81RC2fT+1ai7P+Bwfj/XbP5/1ax+v9Mrfn/RKr6/0Kq+v9Aqvr/O6n6/zWn+v83qfv/OKn7/zip + +/83qPv/LKD5/zaY+P/V6f3/////////////////Jpr4/yKX+P8ilvj/H5T4/x2S+P8akPf/F433/xyP + 9/9Tqfj/GnLY5QBdzlH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBdzwcAW86bCWPR3yt/3fEzheD9Po3j/0mV5v1WoOr9Yqvw/2ey9P9ruPf/ar37/0Ks + +v81p/r/Nqj6/zan+/81p/r/K575/y6U9/+y1vz/1Oj9/9To/f/U6P3/IZb4/yGV+P8hlvj/HpP3/xyR + +P8aj/f/F433/xWL9/85nPj/QZHo/QNfz5UAXc4N////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAW84dAFzOMQFdzjkAW81HAFzOawNfzocLZdKlEmzVzxZv + 1u0acdf9ZbP0/1e1+v8zpfr/M6X6/zOl+v8ypfr/LJ/5/xaK9v8ji/b/Ko/2/yqP9v8qj/b/Eor3/yGV + 9/8glfj/HZL4/xyR9/8Zj/f/Foz3/xSK9/8ZjPf/VqTx/xdv19cAXM4t////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM6/X63y/1Wz+/8wo/r/MKP6/zCj+v8wovr/L6L6/y6h+v8sn/n/Kp35/yic + +f8mmvj/JJj4/yGW+P8klvj/LZr4/yeW+P8ekff/FYz3/xOJ9/8RiPb/Q5/2/zeH4v8FYM97////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBZ2QUAW87DZLH0/1Cw+v8uofr/LqH6/y6h+f8uofr/LKD5/yyf + +f8qnfn/KJz4/yeb+f8lmfn/Ipf4/yGW+P9Lqfn/Xa31/1ut9/9Uq/j/QaD4/zCY+P8fj/b/KJL2/02c + 7v0RadTZAFnMCf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBb0Q8AW87HabX2/0ut+v8rn/n/LJ/5/yyf + +f8toPn/V7L6/2G2+v83o/n/J5v5/yWZ+f8jl/j/IZb4/y2b+P9tuPn/G3LX/xpx2P8sf9/7SJns/1mo + 9P9hr/j/Xa35/2iw9/8keNv7AFvORf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBdzxsAXM7Nbrn4/0Oo + +f8pnPn/Lp/5/0aq+v9uuvj/XKXs/1Kf6/9vufn/LJz5/yOX+P8hlvj/H5T4/0Sl+f9bpe7/AFzNsQBa + zCkAW85fAF3OpQBczckJY9LXJn3f80SS6P06iuP/AFzOtQBf0gv///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd + zyUAXM7Rcrz6/z6l+f8yoPn/XbT6/2ix8/89jOL9B2LQvQ1o1NNWou3/WbH6/yaY+P8flPj/IpX4/1iu + +f87ieH9AFzOY////wH///8BAF3QAwBdzRMAW805AFzOZwBbzYsCXc6vAFzOuwBczh////8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzy8AXM7Vd7/6/1aw+v9wvPr/Up7r/xtx1+8GYdGFAFzPIQBbzlsRatXnb7j3/0Sm + +f8elPj/Kpj4/2Gu9v8ec9f9AFnNGf///wH///8B////Af///wH///8B////AQBZywcAW84ZAFzNKQBc + zQf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBczjkFYtLXhcT5/2uv8f8uf9zxAFzPqQBczi////8B////Af// + /wEAW851I3nb+Wmz9/83nvj/OJ74/1ih7P0RatS7////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBbzkMIY9HfSJTl/Rtx1tUBXc51AFrOD/// + /wH///8B////Af///wEAV84LB2PRsz6P5f9ksvj/WKz4/0GN4/8FYM5v////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBbzVcBXM7rCGLRowBb + zzMAWs4H////Af///wH///8B////Af///wH///8BAFvNNwxm0tFXo+7/cbX2/yt+3esAXM47////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBZ + zA8AXMwt////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBczk8KZdLhU5vp/w1l + 0a8AW84Z////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBd + zwcAXM55CmPR/wBczYkAXM0F////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAW84PAFzOmwBbzTf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA + AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAADAAAABQAAAAUAAAAFAAAABQAA + AAUAAAAFAAAABQAAAAUAAAAFAAAABQAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAADAAAAAwAAAAUAAAAFAAAABQAAAAcAAAAHAAAABwAA + AAcAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAHAAAABwAAAAcAAAAHAAAABQAA + AAUAAAAFAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABQAAAAcAAAAHAAAACQAA + AAkAAAAJAAAACwAAAAsAAAALAAAACwAAAA0AAAANAAAADQAAAA0AAAANAAAADQAAAA0AAAALAAAACwAA + AAsAAAALAAAACQAAAAkAAAAJAAAABwAAAAcAAAAFAAAABQAAAAMAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAUAAAAHAAAABwAA + AAkAAAAJAAAACwAAAAsAAAANAAAADQAAAA0AAAAPAAAADwAAAA8AAAAPAAAADwAAABEAAAARAAAAEQAA + AA8AAAAPAAAADwAAAA8AAAAPAAAADQAAAA0AAAANAAAACwAAAAsAAAAJAAAACQAAAAcAAAAHAAAABQAA + AAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAA + AAcAAAAJAAAACQAAAAsAAAALAAAADQAAAA0AAAAPAAAADwAAABEAAAARAAAAEQAAABMAAAATAAAAEwAA + ABMAAAATAAAAEwAAABMAAAATAAAAEwBIn0EAWcirAAwYFQAAABEAAAARAAAADwAAAA8AAAAPAAAADQAA + AA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA + AAMAAAAFAAAABwAAAAkAAAAJAAAACwAAAA0AAAANAAAADwAAAA8AAAARAAAAEwAAABMAAAATAAAAFQAA + ABUAAAAXAAAAFwAAABcAAAAXAAAAFwAAABcAAAAXAAAAFwAnYicAXM7/AFzO/wBKoU0AAAAVAAAAFQAA + ABMAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAAAAkAAAAHAAAABQAAAAUAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAEwAA + ABUAAAAXAAAAFwAAABkAAAAZAAAAGQAAABsAAAAbAAAAGwAAABsAAAAbAAAAGwAACRsAWcfBAmHR+wZi + 0f0AVr6VAAAAGQAAABcAAAAXAAAAFQAAABUAAAATAAAAEQAAABEAAAAPAAAADQAAAA0AAAALAAAACQAA + AAcAAAAHAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQA5 + eSkAWMWrAD6NOwAAABcAAAAXAAAAGQAAABsAAAAbAAAAHQAAAB0AAAAdAAAAHwAAAB8AAAAfAAAAHwAA + AB8AUbaLAF3P/R6E7v8UdeL/AFzM4QAAABsAAAAbAAAAGQAAABkAAAAXAAAAFQAAABUAAAATAAAAEQAA + AA8AAAAPAAAADQAAAAsAAAAJAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAABwAAAAkAAAALAAAADQAA + AA8AAAARAAAAEQAAABMAS6dPAFzO/wBczv8AU7mFAAkaHwAAABsAAAAdAAAAHwAAAB8AAAAhAAAAIQAA + ACEAAAAjAAAAIwAAACMARZddAF3P/RR65v8nj/b/JIbu/wBczv8ANnU9AAAAHQAAABsAAAAbAAAAGQAA + ABcAAAAXAAAAFQAAABMAAAARAAAAEQAAAA8AAAANAAAACwAAAAkAAAAJAAAABwAAAAUAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAMAAAAFAAAABwAA + AAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAEWdRwBczv8aeOH/A1/Q/QBbydcAPYVHAAAAHwAA + ACEAAAAjAAAAIwAAACUAAAAlAAAAJQAAACcAKlw9AFvM8Q1v3f0skvb/HYv2/ymR9v8GYtD9AE+wgQAA + AB8AAAAfAAAAHQAAABsAAAAZAAAAGQAAABcAAAAVAAAAEwAAABEAAAARAAAADwAAAA0AAAALAAAACQAA + AAcAAAAFAAAABQAAAAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAA + AAMAAAAFAAAABwAAAAkAAAALAAAACwAAAA0AAAAPAAAAEQAAABMAAAAVAAAAFwA/jj0AXM7/N5Ty/zyZ + 8/8Tb9n7AFzO/QBTt5EADSApAAAAJQAAACcAAAAnAAAAKQAAACkACxwvAFnG0Qdl1Psukvb/Io73/wmB + 9v8pkfb/E3Hd/wBZx8kAAAAjAAAAIQAAAB8AAAAdAAAAGwAAABkAAAAZAAAAFwAAABUAAAATAAAAEQAA + AA8AAAANAAAADQAAAAsAAAAJAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAAEQAAABEAAAATAAAAFQAA + ABcAN3gzAFzO/zSS8P9Bn/j/QJ/4/yqH6P8FYND9AFvJ3wA6hlUAAAApAAAAKQAAACsAAAAtAFC1owFe + z/0rjvH/LZX3/w6E9v8Lgvb/Io73/yOE6/8AXM79ABtAMQAAACEAAAAhAAAAHwAAAB0AAAAbAAAAGQAA + ABcAAAAVAAAAEwAAABMAAAARAAAADwAAAA0AAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAsAAAANAAAADwAA + ABEAAAATAAAAFQAAABUAAAAXACZZKQBczv8uju7/NJr3/x+P9/88nfj/Ppr0/xdy2/0AXc/9AFG1nwAP + JDMAAAAtAEOXcwBczf8jher/N5r4/xWI9v8Nhfb/DIT2/xiJ9v8xlPb/A17Q/wBJoW0AAAAjAAAAIQAA + AB8AAAAdAAAAGwAAABkAAAAXAAAAFwAAABUAAAATAAAAEQAAAA8AAAANAAAACwAAAAkAAAAHAAAABQAA + AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABwAA + AAkAAAALAAAADQAAAA8AAAARAAAAEwAAABMAAAAVAAAAFwARKx8AXM7/LY7t/zqc+P8Tivf/Fov3/zCY + +P9Fovn/MIzr/wdi0P0AXMrlAEijfwBczfcXd+D/Pp74/x+P9/8Qh/b/D4b2/w6F9v8Phfb/NJj3/xJv + 2vsAVr2vAAAAIwAAACEAAAAfAAAAHQAAABsAAAAZAAAAFwAAABcAAAAVADZyJwBQtVkAWcehAE+zSwAA + AAsAAAAJAAAABwAAAAUAAAADAAAAA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wEAAAADAAAABQAAAAcAAAAJAAAACwAAAA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcAAAAZAF3O/S2M + 7P9AoPj/FYv3/xWL9/8Vi/f/IZH3/0Cg+P9Dn/X/G3fd/QBczv8LaNb9P5/4/y+X+P8Siff/EYj3/xGH + 9v8Qh/b/D4b2/y2V9/8kgub/AFzN8wAHDiUAAAAhAAAAHwAAAB0ACRIdAEGRQwBRuHcAWMSpAFvM4wBc + zv8AXM7/AFzO/wBbzNcAAAALAAAACQAAAAcAAAAFAAAAA////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAAUAAAAHAAAACQAAAAkAAAALAAAADQAAAA8AAAARAAAAEwAA + ABUAAAAXAAAAFwBdzvUriun/RaT5/xeN9/8Xjff/F433/xeN9/8Zjvf/M5v4/0mm+f84lvH/Pp32/zyf + +P8Wi/f/FIr3/xOK9/8Siff/EYj3/xCH9v8ij/f/N5Xy/wFdzv8AR6FlAEedXwBUuY8AWcjHAFzN9wBc + zv8CXs79DGva+xN24/8jhO3/Hn/q/wBczv8AS6ozAAAACwAAAAkAAAAHAAAABQAAAAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAADAAAABQAAAAcAAAAJAAAACwAA + AA0AAAAPAAAADwAAABEAAAATAAAAFQAAABcBXc7rKojo/0un+f8Zjvf/GY/3/xmP9/8Zj/f/GY/3/xmO + 9/8jk/f/O5/4/zad+P8cj/f/Foz3/xaM9/8Vi/f/FIr3/xOK9/8Siff/F4v2/z6e+P8NZNH/AFzO/wBc + zv8IZNP5FHTf/x6A6P8oi/H/LpL3/y2S9/8pj/f/KY/3/xJu2vsAW8y/AAAACwAAAAkAAAAHAAAABQAA + AAMAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAwAA + AAUAAAAFAAAABwAAAAkAAAALAAAADQAAAA8AAAAPAAAAEQAAABMAAAAVAV3N4SiF5v9Rq/r/G5D4/xuQ + +P8bkPj/G5D4/xuQ+P8bkPj/GpD4/xqQ9/8Zj/f/GY/3/xiO9/8Xjff/F433/xaM9/8Vi/f/FIr3/xKJ + 9/83m/j/NZTy/yyM7f84mPX/Opv4/zeZ+P8sk/f/IIz2/xSG9v8Jf/X/F4b2/ymL8f8CXc7/AFS4TwAA + AAkAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAAAADAAAABQAAAAcAAAAHAAAACQAAAAsAAAANAAAADQAAAA8AAAARAAAAEwFd + zNclg+X/WK76/xyS+P8dkvj/HZL4/x2S+P8dkvj/HJL4/xyR+P8ckfj/G5H4/xuQ+P8dkvj/I5j4/xmO + 9/8Xjff/Foz3/xWL9/8Uivf/GYz3/zKY+P8wl/f/JJD3/xeK9v8Ng/b/C4L2/wmB9v8IgPX/B3/1/yyS + 9/8ad+D/AFzN3QAAGgsAAAAHAAAABwAAAAUAAAAD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQAAAAMAAAAFAAAABQAAAAcAAAAJAAAACwAA + AAsAAAANADVyHQBIoTkAXM7/IoDi/12x+v8fk/j/HpP4/x+U+P8flPj/H5T4/x6T+P8ek/j/HpP4/x2S + +P8elPj/Oaz7/z6v/P8wo/r/GY/3/xiO9/8Xjff/FYz3/xSK9/8Tiff/Eoj3/xCH9v8Phvb/DYT2/wyD + 9v8Kgvb/CYH2/xiI9v80k/T/BmHQ/QBYw2sAAAAHAAAABQAAAAUAAAAD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBmzAUAYM8hAFnGPwBb + yV8AWsp9AFvMmwBczLkBXc7dAF3P9QBczv8AXM7/AFzO/ymG5f9fs/r/Ipb4/yCV+P8glfj/IJX4/yCV + +P8glfj/IJX4/x+U+P8flPj/M6X7/1G3/P+z4P7/Pq/8/yWb+f8Zj/f/GI73/xeN9/8WjPf/FIv3/xOJ + 9/8RiPf/EIf2/w6F9v8NhPb/C4P2/wqB9v8vlPf/JIHm/wBcz/MAOY4TAAAABQAAAAMAAAAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc + zv8AXM7/AFzO/wBczv8CXs/9DmnV+Rt12/sngOH/M4zn/z+V7P9KoPD/VKn1/2Cy+f9jtfr/Sqn5/yKW + +P8il/j/Ipf4/yKX+P8il/j/Ipf4/yKW+P8hlvj/LJ/6/z+v/P/K6f7//////4nO/f88rfz/H5T5/xqP + 9/8Yjvf/F433/xWM9/8Uivf/E4n3/xGI9v8Qhvb/DoX2/wyE9v8WiPb/PJr3/w5n1PsAWsuNAAAABQAA + AAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXc/JAFzO/ziP6v9lsff/Z7X6/2a1+v9ntfr/ZLT6/12x+v9Urfr/TKr5/0Sm + +f88o/n/M574/yOY+f8kmPn/JJj5/ySY+f8kmPn/JJj5/ySY+f8jmPn/J5r5/z2t/P+S0v3///////// + ///2+///Wbr8/zWn+/8bkPj/Go/3/xiO9/8Xjff/FYv3/xSK9/8Siff/EYf2/w+G9v8Nhfb/L5X3/zGM + 6/8AXc79AFi/If///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFXVBwBczrcFYtL7Z7D1/2m2+v80nfn/JJX4/x6T + +P8glPj/IZX4/yKW+P8jl/j/JJj5/ySZ+f8lmfn/Jpr5/yaa+f8mmvn/Jpr5/yaa+f8mmvn/Jpn5/ziq + /P9fvf3/+fz//////////////////9Xu/v9BsPz/K5/6/xuQ+P8Zj/f/GI73/xaM9/8Vi/f/E4r3/xKI + 9/8Qh/b/FYj2/0Of+P8Xcdr7AFzPq////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAZswLAF3PyQll + 0vtcrPb/YLL6/ySW+P8glfj/IZb4/yKX+P8jmPn/JJn5/yWZ+f8mmvn/J5v5/yeb+f8onPn/KJz5/yic + +f8onPn/KJv5/zKk+/9Dsfz/3PH+////////////////////////////oNf+/z2u/P8il/j/G5D4/xmP + 9/8Xjff/Foz3/xSL9/8Tiff/EYj2/y2V9/9AmPH/AV3O/wBbzTn///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBVzA8BXtDXDmnV+2Oy+P9es/r/JZj4/yKX+P8kmPn/JZn5/yaa+f8nm/n/KJz5/ymc + +f8pnfn/Kp35/yqd+f8qnfn/Kp35/yuf+f81p/v/ptn9//////////////////////////////////3+ + //9pwf3/OKr8/x2R+P8akPj/GY73/xeN9/8Vi/f/FIr3/xKI9/88nfj/MIjn/wBczv8AXM+lAFrPJf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAF3RFwFdz+ESbtb7arb4/12z+v8nmfn/JZn5/yaa + +f8om/n/KZz5/yqd+f8qnvn/K575/yuf+f8sn/n/LJ/5/yyf+f8qnvn/Y7j7//7///////////////// + ////////////////////////5fT+/0Wx+/8vovr/G5H4/xmP9/8Yjvf/Foz3/xSL9/8Tiff/JpP3/0yl + +P84kez/EmvW+wBdzv0AXM+fAGDPIf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAWssjAV3P6Rh1 + 2/twu/r/XbP7/yea+f8onPn/KZ35/yqe+f8rn/n/LJ/6/y2g+v8toPr/LqH6/y6h+v8lmfn/MZz4/+j0 + /v////////////////////////////////////////////////+y3f3/M6X6/yOX+f8akPj/GY73/xeN + 9/8Vi/f/E4r3/xKI9/8ejvf/PJz4/0uj+P81juz/D2rW+wBczvsAW86XAF7QG////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzC0BXM/xIHve/XS9+/9bs/r/KZ35/yqe+f8sn/n/LaD6/y6h+v8vofr/L6L6/y+i + +v8nmvr/FYv3/7PZ/P///////////////////////////////////////////////////////////2+9 + +/8qnfn/HJL5/xmP9/8Yjvf/Foz3/xSK9/8Siff/EIf2/w+G9v8djPf/PJv4/0mh+P8xi+r/DWfU+wBc + z/kAXM2RAFnTF////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAF3MNwBdz/koguH9ecH7/1Wx+v8sn/r/LaD6/y6h + +v8vovr/MKP6/zGk+v8tofn/DYX3/2ey+f////////////////////////////////////////////// + ///////////////////v+P//OaH5/yGV+P8akPj/GI73/xaN9/8Vi/f/E4n3/xGI9v8Phvb/DYT2/wuD + 9v8civf/PJv3/0ef9/8viOn/C2bT+wBdzvcAXM6JAFnMFf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAW85DAFzO/zuT + 6f99xPv/MqL6/y+h+v8wo/r/MaT6/zKk+v8zpfr/EIf2/yKL9v/y+P7///////////////////////// + /////////////////////////////////////////////8Lh/f8aj/f/G5D4/xmP9/8Xjff/FYv3/xOK + 9/8RiPf/EIb2/w6F9v8Mg/b/CoL2/wiA9f8bifb/Opn3/0Wd9v82i+n/CmTS+wBczv8AXM1t////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAF3PhQBczv9XqPL/esP8/y+h+v8wovr/MaT6/zKl+v80pvr/NKf6/wR89v8vkvf/Vab4/1Wm + +P9Vpvj/Vab4/5HF+////////////////////////////1qq+P9bq/n/XKz5/12t+f9ervn/II/3/xWM + 9/8Zj/f/F433/xaM9/8Uivf/Eoj3/xCH9v8Ohfb/DIT2/wqC9v8IgPb/GIj2/zqZ9/9In/j/PpHt/w9p + 1fsAXM7/AFzOjf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAFzPewBczv9Qoe7/gMX7/0ar+/8vovr/MaP6/zKl+v80pvr/Naf7/zao + +/8nm/n/E4r3/xKJ9/8Siff/EYn2/wZ+9f9aqPn///////////////////////////8jl/n/EIb3/w2E + 9v8NhPb/DYT2/w+H9v8aj/j/Go/3/xiO9/8WjPf/FIr3/xKJ9/8Qh/b/DoX2/wyE9v8di/f/QJz4/0+k + +P84j+z/EmvW+wBbzv8AXM6nAFnMKf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvObQBczf9JnOz/g8b7/0ms+/8uofr/MKP6/zKk + +v8zpvr/Naf7/zeo+/84qvv/Oar7/zmq+/84qvv/N6n7/zao+/8Siff/Wqj5//////////////////// + ////////Nqn7/yOY+f8kmPn/Ipb4/yCV+P8ek/j/HJH4/xqQ9/8Yjvf/Foz3/xSL9/8Siff/EIf2/yKP + 9/9FoPj/Vqj5/z2T7f8TbNb7AFvO/wBczqcAWcwp////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNYQBczv9Dl+v/hcf8/06u + +v8toPr/LqH6/zCj+v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo + +f///////////////////////////zmr+/8mmvn/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM + 9/8Ui/f/JpP4/0uk+P9crfn/Qpbt/xVu1/sAW87/AFzOpwBc0Sf///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFzNVwBd + z/09kuj/h8f8/1Kw+v8rnvn/LaD6/y+i+v8xo/r/M6X6/zSn+v82qPv/OKr7/zqs+/88rfv/PK77/zus + +/85q/v/N6n7/xOJ+P9aqPn///////////////////////////84qfv/JZn5/ySY+f8il/j/IJX4/x6T + +P8ckvj/GpD4/xiO9/8Wjff/N5z4/2Kw+v9Gmu7/Fm7X+wBdz/0AXM6nAFzRJ////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAFvNTQBczvs2jOb/iMf8/1ex+v8pnfn/K575/y2g+v8vovr/MaP6/zOl+v80p/r/Nqj7/ziq + +/86rPv/PK37/zyu+/87rPv/Oav7/zep+/8Tifj/Wqj5////////////////////////////NKX6/yOY + +P8kmPn/Ipf4/yCV+P8ek/j/HJL4/xqQ+P8Yjvf/Fo33/1ar+f86j+n/AFzO/wBczqcAXNEn////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAF3NQwBdz/kvh+P/h8b8/12z+/8nm/n/KZz5/yue+f8toPr/L6H6/zCj + +v8ypfr/NKb6/zao+/84qfv/Oav7/zqs+/87rPv/Oqv7/ziq+/83qPv/E4n4/1qo+f////////////// + /////////////y+i+v8jmPf/JJj5/yKW+P8glfj/HpP4/xyR+P8akPj/GI73/xaM9/9Kpvn/UqDv/wBc + zv8AXswf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFvNOQBdzvcoguD9icb7/4rI+/9Xsfr/S6z6/0Cn + +v81o/n/LZ/6/y6h+v8wo/r/MqT6/zOm+v81p/v/N6j7/ziq+/85qvv/Oar7/ziq+/83qfv/Nqj7/xKJ + 9/9aqPn///////////////////////////8qnfn/IZf4/ySY+f8ilvj/IJX4/x6T+P8ckfj/GpD3/xiO + 9/8WjPf/J5X4/2iz+f8Vbdb7AF3Oh////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFnMFQBczv8AXM7/P5Hn/2Sq + 7/9osPP/eLz4/4jH+/+Myvz/jcv8/43L/P+Cxvz/dsL8/2u9+/9bt/v/Nqf6/zWn+/82qPv/N6n7/zep + +/83qPv/Nqj7/zSn+v8SiPf/Wqj5////////////////////////////Jpr5/yCV+P8jmPn/IZb4/x+U + +P8ek/j/HJH4/xqP9/8Yjvf/Foz3/xSK9/9ZrPn/Q5Pp/wBdz+8AbdsH////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBt + 2wcAW86XAFzOtwFdz9UBXc7zAFzO/wBczv8AXM7/D2nT+SR62/s3iuP/SZrq/1uo7/9ttvT/i8v8/2u+ + +/80pvr/Naf6/zWn+/81p/v/Naf7/zSm+v8zpfr/Eon3/zyZ9/+q0vz/qtL8/6rS/P+q0vz/qtL8/x+V + +f8ek/j/I5f4/yGV+P8flPj/HZL4/xuR+P8Zj/f/F433/xaM9/8Uivf/NJn4/2ex9/8JYtD/AFzOX/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQBVzA8AXtAxAFvNUQBdzXEAW86RAF7PtQFe + 0NkBXM73AFzO/0+k7/+DyPz/MqX6/zOl+v8zpfr/M6b6/zOl+v8ypfr/MaT6/yGW+f8CevX/AHn1/wB5 + 9f8AefX/AHn1/wB59f8Jgvb/IZX4/yKX+P8glfj/HpP4/x2S+P8bkPj/GY/3/xeN9/8Vi/f/E4r3/xSJ + 9/9lsvn/M4bj/QBdzs3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBdzv1UpO7/fcX8/zCj+v8xpPr/MaT6/zGk+v8xpPr/MaP6/zCj + +v8vovr/LqH6/yyg+v8rnvn/KZ35/yic+f8mmvn/JZn5/yOX+P8hlvj/H5T4/x6T+P8ckfj/GpD4/xiO + 9/8Wjff/FYv3/xOJ9/8RiPb/Q6D4/2Co8/8CXc7/AF3ONf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AQCA/wMAXM7/XKrx/3fC/P8vovr/L6L6/y+i + +v8vovr/L6L6/y+i+v8uofr/LaD6/yyf+v8rnvn/Kp35/yic+f8nm/n/JZn5/ySY+f8il/j/IJX4/zig + +f9fsvr/Wq/6/0Kj+P8ql/j/F4z3/xSK9/8Siff/EIf2/xuM9v9ttfr/JXfY+wBczqH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAVdUTAFzO/2Ov + 8/9wvvz/LaD6/y2g+v8uofr/LqH6/y2h+v8toPr/LKD6/yyf+f8rnvn/Kp35/yic+f8nm/n/Jpr5/ySY + +f8jl/j/IZb4/ySX+P98wPv/Xqnx/12p8v92uvj/er76/3O5+v9arfn/QaD5/ymU9/8Sh/b/Uqf5/1Gd + 7v8AXM/5AFnMFf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAF3RIQBczv9rtPX/abv7/yue+f8rn/n/LJ/5/yyf+f8sn/n/LqH5/161+v9+w/v/arv7/yye + +f8nm/n/Jpr5/ySZ+f8jl/j/IZb4/yCV+P9BpPn/f8D5/whh0P8AXM7/AV3P/xlw2fk1iub/UaDv/2my + 9/91ufr/cbf6/3G3+v9vtPn/EmrU+wBcz3X///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AQBe0DEAXM7/crr3/2G2+/8pnfn/Kp35/yqd+f8qnfn/Qqj6/37E + +/+Fxfr/TJvq/4LD+v9ouPv/JZn5/ySY+f8jl/n/Ipb4/yCV+P8flPj/YrP6/2Go7v8AXc73AFjKHQBb + zVEAXM+PAF7PzwBdzv0AXM7/DmjV+SqB4v9Fluz/cLP2/0GQ5v8AXc/jAID/A////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXM9BAFzO/3i++f9as/r/J5v5/yic + +f8un/n/ZLj7/4zK/P9kq+//D2jS+wBczv8shOL9isj8/02r+v8jl/j/Ipb4/yCV+P8flPj/IZT4/4HC + +/85h+D9AFzOrf///wH///8B////Af///wEAXdELAF3NQwBbzn8AXc+/AFzO9wBczv8EX8//AFzO/wBd + z0v///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAF7PTwBc + zv9/w/v/Uq76/yaa+f9Fqfr/gcT8/3/A+P8yhOD9AF3P/QBdz48AXM9RAF3P/U6e7f+Gxvv/NJ/5/yCV + +P8flPj/HpP4/zuh+f+Ewvr/DWXS/QBczln///8B////Af///wH///8B////Af///wH///8B////AQBV + qgMAWs0zAFzPbwBczssAXM4v////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbz18BXc/9hcX7/1Sv+v9qufv/isj7/1ei7f8JY9H9AV3P1wBbzzX///8B////AQBb + zoMCXs/9bLT1/3i/+/8kl/j/HZP4/xyS+P9csPr/aKzw/wBczvsAVcwP////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAXc5vBGHS+YnH+/+Jx/v/d7n1/yZ52vsAXc/5AF3PeQBA + vwX///8B////Af///wEAVaoDAFzPxRBq1ft9wPr/YbP6/xyR+P8ckPj/fL/6/z2N4/0AXc+7////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAFvOfw1q1fmHxfr/V5/p/wVf + 0P8BXc7DAFrPJf///wH///8B////Af///wH///8B////AQBYzhsBXs/tKYLh/YXE+/9Fpfn/M5z4/4PC + +v8TadP9AF3NZ////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQBc + zo0HYM//HHHX+wBdz/MAW85j////Af///wH///8B////Af///wH///8B////Af///wH///8BAF3NRwBb + zv9Km+z/gcL7/2m1+v9usfP/AFvO/wBgyhn///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM25AFzO/wBdz6sAWdMX////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wEAXM2FAl7P/Wex9f+Dwvv/RpPm/wBdz8v///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFnMKQBdzUP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAFWqAwBdz8cQa9X7gsD6/xlu1PsAXM91////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAXtAbAF3P7x1x + 2P8AXM7/AFzNJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AQBbzkkAXM7/AFzO/////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BAF3PjwBczT3///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + + 2, 2, 2, 2 + + + CenterParent + + + {0} {1} is available! + + + UpdateForm + + + System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.ru.resx b/AutoUpdater.NET/UpdateForm.ru.resx index 9d072671..19c36df5 100644 --- a/AutoUpdater.NET/UpdateForm.ru.resx +++ b/AutoUpdater.NET/UpdateForm.ru.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} доступен для обновления! - + Напомнить позже - + Нет - + Да - + Доступна версия {1} программы {0}. Вы используете версию {2}. Хотите загрузить обновление? - + Информация о выпуске: - + Доступна новая версия {0}! diff --git a/AutoUpdater.NET/UpdateForm.sk.resx b/AutoUpdater.NET/UpdateForm.sk.resx index 80d2580c..d1330067 100644 --- a/AutoUpdater.NET/UpdateForm.sk.resx +++ b/AutoUpdater.NET/UpdateForm.sk.resx @@ -1,150 +1,156 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 212, 19 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 212, 19 + + Nová verzie {0} je k dispozícii! - - 489, 15 - - + + 489, 15 + + Je k dispozícii verzia {0} {1}. Nainštalovaná je verzia {2}. Želáte si aktualizovať na novú verziu? - - 139, 17 - - + + 139, 17 + + Poznámky k vydaniu: - + Aktualizovať - + Pripomenúť neskôr - + Preskočiť túto verziu - + {0} {1} je k dispozícii! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.sv.resx b/AutoUpdater.NET/UpdateForm.sv.resx index 4e8f3df6..79171e2d 100644 --- a/AutoUpdater.NET/UpdateForm.sv.resx +++ b/AutoUpdater.NET/UpdateForm.sv.resx @@ -1,144 +1,150 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 200, 28 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + 200, 28 + + En ny version av {0} är tillgänglig! - + {0} {1} är nu tillgänglig. Du har version {2} installerad. Vill du ladda ner den nu? - + Uppdatera - + Påminn mig senare - + Hoppa över den här versionen - + {0} {1} är tillgänglig! - + Release Anmärkningar: \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.th.resx b/AutoUpdater.NET/UpdateForm.th.resx index 77e2ddd0..90f271bf 100644 --- a/AutoUpdater.NET/UpdateForm.th.resx +++ b/AutoUpdater.NET/UpdateForm.th.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} พร้อมสำหรับอัปเดตแล้ว! - + เตือนฉันในภายหลัง - + ข้ามเวอร์ชั่นนี้ไป - + อัปเดต - + {0} {1} พร้อมสำหรับการอัปเดตแล้ว ท่านมีเวอร์ชั่น {2} ติดตั้งอยู่ ต้องการอัปเดตเลยหรือไม่? - + สิ่งที่ถูกเปลี่ยนแปลง: - + เวอร์ชั่นใหม่ของ {0} พร้อมสำหรับการอัปเดตแล้ว! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.tr.resx b/AutoUpdater.NET/UpdateForm.tr.resx index 989b9822..7c36f9fe 100644 --- a/AutoUpdater.NET/UpdateForm.tr.resx +++ b/AutoUpdater.NET/UpdateForm.tr.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + {0} {1} mevcuttur! - + Daha sonra hatırlat - + Bu versiyonu geç - + Güncelle - + {0} {1} versiyonu hazır. Bilgisayarınızda {2} versiyonu kurulu. Güncellemeyi kurmak istediğinize emin misiniz? - + Sürüm Notları: - + {0}'nin yeni versiyonu mevcut! \ No newline at end of file diff --git a/AutoUpdater.NET/UpdateForm.zh-TW.resx b/AutoUpdater.NET/UpdateForm.zh-TW.resx new file mode 100644 index 00000000..1536ff38 --- /dev/null +++ b/AutoUpdater.NET/UpdateForm.zh-TW.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + {0} {1} 已經發行 + + + 稍後再提醒 + + + 忽略 + + + 更新 + + + {0} {1} 已經發行。本機目前的版本是 {2}。是否立即進行更新? + + + 發行事項: + + + 新版 {0} 已經發行! + + diff --git a/AutoUpdater.NET/UpdateForm.zh-tw.resx b/AutoUpdater.NET/UpdateForm.zh-tw.resx deleted file mode 100644 index 23133e41..00000000 --- a/AutoUpdater.NET/UpdateForm.zh-tw.resx +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - {0} {1} 已經發行 - - - 稍後再提醒 - - - 忽略 - - - 更新 - - - {0} {1} 已經發行。本機目前的版本是 {2}。是否立即進行更新? - - - 發行事項: - - - 新版 {0} 已經發行! - - diff --git a/AutoUpdater.NET/UpdateForm.zh.resx b/AutoUpdater.NET/UpdateForm.zh.resx index faef58fa..c0c09af6 100644 --- a/AutoUpdater.NET/UpdateForm.zh.resx +++ b/AutoUpdater.NET/UpdateForm.zh.resx @@ -1,141 +1,147 @@  - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + + + 新版本 {0} 可用! - + {0} {1} 现在可用。您安装的版本是 {2}。你现在要下载这个新版本吗? - + 发行说明: - + 更新 - + 以后再提醒更新 - + 忽略这个版本 - + {0} {1} 现在可用 diff --git a/AutoUpdater.NET/UpdateInfoEventArgs.cs b/AutoUpdater.NET/UpdateInfoEventArgs.cs index 75ea0264..ba326437 100644 --- a/AutoUpdater.NET/UpdateInfoEventArgs.cs +++ b/AutoUpdater.NET/UpdateInfoEventArgs.cs @@ -1,137 +1,144 @@ using System; using System.Xml.Serialization; -namespace AutoUpdaterDotNET +namespace AutoUpdaterDotNET; + +/// +/// Object of this class gives you all the details about the update useful in handling the update logic yourself. +/// +[XmlRoot("item")] +public class UpdateInfoEventArgs : EventArgs { + private string _changelogURL; + private string _downloadURL; + + /// + public UpdateInfoEventArgs() + { + Mandatory = new Mandatory(); + } + + /// + /// If new update is available then returns true otherwise false. + /// + public bool IsUpdateAvailable { get; set; } + + /// + /// If there is an error while checking for update then this property won't be null. + /// + [XmlIgnore] + public Exception Error { get; set; } + /// - /// Object of this class gives you all the details about the update useful in handling the update logic yourself. + /// Download URL of the update file. /// - [XmlRoot("item")] - public class UpdateInfoEventArgs : EventArgs + [XmlElement("url")] + public string DownloadURL { - private string _changelogURL; - private string _downloadURL; + get => GetURL(AutoUpdater.BaseUri, _downloadURL); + set => _downloadURL = value; + } - /// - public UpdateInfoEventArgs() - { - Mandatory = new Mandatory(); - } + /// + /// URL of the webpage specifying changes in the new update. + /// + [XmlElement("changelog")] + public string ChangelogURL + { + get => GetURL(AutoUpdater.BaseUri, _changelogURL); + set => _changelogURL = value; + } - /// - /// If new update is available then returns true otherwise false. - /// - public bool IsUpdateAvailable { get; set; } + /// + /// Returns newest version of the application available to download. + /// + [XmlElement("version")] + public string CurrentVersion { get; set; } - /// - /// Download URL of the update file. - /// - [XmlElement("url")] - public string DownloadURL - { - get => GetURL(AutoUpdater.BaseUri, _downloadURL); - set => _downloadURL = value; - } + /// + /// Returns version of the application currently installed on the user's PC. + /// + public Version InstalledVersion { get; set; } - /// - /// URL of the webpage specifying changes in the new update. - /// - [XmlElement("changelog")] - public string ChangelogURL - { - get => GetURL(AutoUpdater.BaseUri, _changelogURL); - set => _changelogURL = value; - } + /// + /// Shows if the update is required or optional. + /// + [XmlElement("mandatory")] + public Mandatory Mandatory { get; set; } - /// - /// Returns newest version of the application available to download. - /// - [XmlElement("version")] - public string CurrentVersion { get; set; } - - /// - /// Returns version of the application currently installed on the user's PC. - /// - public Version InstalledVersion { get; set; } - - /// - /// Shows if the update is required or optional. - /// - [XmlElement("mandatory")] - public Mandatory Mandatory { get; set; } - - /// - /// Command line arguments used by Installer. - /// - [XmlElement("args")] - public string InstallerArgs { get; set; } - - /// - /// Checksum of the update file. - /// - [XmlElement("checksum")] - public CheckSum CheckSum { get; set; } - - /// - /// Hash algorithm that generated the checksum provided in the XML file. - /// - public string HashingAlgorithm { get; set; } - - internal static string GetURL(Uri baseUri, string url) + /// + /// Executable path of the updated application relative to installation directory. + /// + [XmlElement("executable")] + public string ExecutablePath { get; set; } + + /// + /// Command line arguments used by Installer. + /// + [XmlElement("args")] + public string InstallerArgs { get; set; } + + /// + /// Checksum of the update file. + /// + [XmlElement("checksum")] + public CheckSum CheckSum { get; set; } + + internal static string GetURL(Uri baseUri, string url) + { + if (!string.IsNullOrEmpty(url) && Uri.IsWellFormedUriString(url, UriKind.Relative)) { - if (!string.IsNullOrEmpty(url) && Uri.IsWellFormedUriString(url, UriKind.Relative)) - { - Uri uri = new Uri(baseUri, url); + var uri = new Uri(baseUri, url); - if (uri.IsAbsoluteUri) - { - url = uri.AbsoluteUri; - } + if (uri.IsAbsoluteUri) + { + url = uri.AbsoluteUri; } - - return url; } + + return url; } +} +/// +/// Mandatory class to fetch the XML values related to Mandatory field. +/// +public class Mandatory +{ /// - /// Mandatory class to fetch the XML values related to Mandatory field. + /// Value of the Mandatory field. /// - public class Mandatory - { - /// - /// Value of the Mandatory field. - /// - [XmlText] - public bool Value { get; set; } - - /// - /// If this is set and 'Value' property is set to true then it will trigger the mandatory update only when current installed version is less than value of this property. - /// - [XmlAttribute("minVersion")] - public string MinimumVersion { get; set; } - - /// - /// Mode that should be used for this update. - /// - [XmlAttribute("mode")] - public Mode UpdateMode { get; set; } - } + [XmlText] + public bool Value { get; set; } /// - /// Checksum class to fetch the XML values for checksum. + /// If this is set and 'Value' property is set to true then it will trigger the mandatory update only when current + /// installed version is less than value of this property. /// - public class CheckSum - { - /// - /// Hash of the file. - /// - [XmlText] - public string Value { get; set; } - - /// - /// Hash algorithm that generated the hash. - /// - [XmlAttribute("algorithm")] - public string HashingAlgorithm { get; set; } - } + [XmlAttribute("minVersion")] + public string MinimumVersion { get; set; } + + /// + /// Mode that should be used for this update. + /// + [XmlAttribute("mode")] + public Mode UpdateMode { get; set; } +} + +/// +/// Checksum class to fetch the XML values for checksum. +/// +public class CheckSum +{ + /// + /// Hash of the file. + /// + [XmlText] + public string Value { get; set; } + + /// + /// Hash algorithm that generated the hash. + /// + [XmlAttribute("algorithm")] + public string HashingAlgorithm { get; set; } } \ No newline at end of file diff --git a/AutoUpdater.NET/Utils.cs b/AutoUpdater.NET/Utils.cs new file mode 100644 index 00000000..a42ae80b --- /dev/null +++ b/AutoUpdater.NET/Utils.cs @@ -0,0 +1,103 @@ +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; + +namespace AutoUpdaterDotNET; + +internal static class Utils +{ + public static string BuildArguments(Collection argumentList) + { + var arguments = new StringBuilder(); + if (argumentList is not { Count: > 0 }) + { + return string.Empty; + } + + foreach (string argument in argumentList) PasteArguments.AppendArgument(ref arguments, argument); + return arguments.ToString(); + } +} + +internal static class PasteArguments +{ + private const char Quote = '\"'; + private const char Backslash = '\\'; + + internal static void AppendArgument(ref StringBuilder stringBuilder, string argument) + { + if (stringBuilder.Length != 0) + { + stringBuilder.Append(' '); + } + + // Parsing rules for non-argv[0] arguments: + // - Backslash is a normal character except followed by a quote. + // - 2N backslashes followed by a quote ==> N literal backslashes followed by unescaped quote + // - 2N+1 backslashes followed by a quote ==> N literal backslashes followed by a literal quote + // - Parsing stops at first whitespace outside of quoted region. + // - (post 2008 rule): A closing quote followed by another quote ==> literal quote, and parsing remains in quoting mode. + if (argument.Length != 0 && ContainsNoWhitespaceOrQuotes(argument)) + { + // Simple case - no quoting or changes needed. + stringBuilder.Append(argument); + } + else + { + stringBuilder.Append(Quote); + var idx = 0; + while (idx < argument.Length) + { + char c = argument[idx++]; + switch (c) + { + case Backslash: + { + var numBackSlash = 1; + while (idx < argument.Length && argument[idx] == Backslash) + { + idx++; + numBackSlash++; + } + + if (idx == argument.Length) + { + // We'll emit an end quote after this so must double the number of backslashes. + stringBuilder.Append(Backslash, numBackSlash * 2); + } + else if (argument[idx] == Quote) + { + // Backslashes will be followed by a quote. Must double the number of backslashes. + stringBuilder.Append(Backslash, numBackSlash * 2 + 1); + stringBuilder.Append(Quote); + idx++; + } + else + { + // Backslash will not be followed by a quote, so emit as normal characters. + stringBuilder.Append(Backslash, numBackSlash); + } + + continue; + } + case Quote: + // Escape the quote so it appears as a literal. This also guarantees that we won't end up generating a closing quote followed + // by another quote (which parses differently pre-2008 vs. post-2008.) + stringBuilder.Append(Backslash); + stringBuilder.Append(Quote); + continue; + default: + stringBuilder.Append(c); + break; + } + } + + stringBuilder.Append(Quote); + } + } + + private static bool ContainsNoWhitespaceOrQuotes(string s) + { + return s.All(c => !char.IsWhiteSpace(c) && c != Quote); + } +} \ No newline at end of file diff --git a/AutoUpdater.NET/Wpf32Window.cs b/AutoUpdater.NET/Wpf32Window.cs new file mode 100644 index 00000000..ee0535f8 --- /dev/null +++ b/AutoUpdater.NET/Wpf32Window.cs @@ -0,0 +1,16 @@ +using System; +using System.Windows; +using System.Windows.Interop; +using IWin32Window = System.Windows.Forms.IWin32Window; + +namespace AutoUpdaterDotNET; + +internal class Wpf32Window : IWin32Window +{ + public Wpf32Window(Window wpfWindow) + { + Handle = new WindowInteropHelper(wpfWindow).EnsureHandle(); + } + + public IntPtr Handle { get; } +} \ No newline at end of file diff --git a/AutoUpdater.NET/build/Autoupdater.NET.Official.nuspec b/AutoUpdater.NET/build/Autoupdater.NET.Official.nuspec index 90873de9..f71cf5ca 100644 --- a/AutoUpdater.NET/build/Autoupdater.NET.Official.nuspec +++ b/AutoUpdater.NET/build/Autoupdater.NET.Official.nuspec @@ -1,19 +1,78 @@  - + Autoupdater.NET.Official - 1.6.0 + 1.9.3.0 AutoUpdater.NET - RBSoft - RBSoft + rbsoft + false MIT + docs\README.md + https://licenses.nuget.org/MIT https://github.com/ravibpatel/AutoUpdater.NET - false - AutoUpdater.NET is a class library that allows .NET developers to easily add auto update functionality to their classic desktop application projects. - Add auto update functionality to .NET applications. + AutoUpdater.NET is a class library that allows .NET developers to easily add auto update + functionality to their WinForms or WPF application projects. + https://github.com/ravibpatel/AutoUpdater.NET/releases - RBSoft - en-US + Copyright © 2012-2024 RBSoft autoupdate updater c# vb wpf winforms + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AutoUpdater.NET/packages.config b/AutoUpdater.NET/packages.config deleted file mode 100644 index 86ad4c1e..00000000 --- a/AutoUpdater.NET/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/AutoUpdaterTestWPF/App.xaml b/AutoUpdaterTest/App.xaml similarity index 64% rename from AutoUpdaterTestWPF/App.xaml rename to AutoUpdaterTest/App.xaml index aaf708fc..35dd39e5 100644 --- a/AutoUpdaterTestWPF/App.xaml +++ b/AutoUpdaterTest/App.xaml @@ -1,9 +1,8 @@ - - + - + \ No newline at end of file diff --git a/AutoUpdaterTest/App.xaml.cs b/AutoUpdaterTest/App.xaml.cs new file mode 100644 index 00000000..319d85c7 --- /dev/null +++ b/AutoUpdaterTest/App.xaml.cs @@ -0,0 +1,10 @@ +using System.Windows; + +namespace AutoUpdaterTest; + +/// +/// Interaction logic for App.xaml +/// +public partial class App : Application +{ +} \ No newline at end of file diff --git a/AutoUpdaterTest/AssemblyInfo.cs b/AutoUpdaterTest/AssemblyInfo.cs new file mode 100644 index 00000000..4a05c7d4 --- /dev/null +++ b/AutoUpdaterTest/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] \ No newline at end of file diff --git a/AutoUpdaterTest/AutoUpdaterTest.csproj b/AutoUpdaterTest/AutoUpdaterTest.csproj index 10ee336b..c9eb2b55 100644 --- a/AutoUpdaterTest/AutoUpdaterTest.csproj +++ b/AutoUpdaterTest/AutoUpdaterTest.csproj @@ -1,101 +1,42 @@ - - - - Debug - x86 - 8.0.30703 - 2.0 - {FD5AE762-C630-49F8-B814-FCF70E7838D1} - WinExe - Properties - AutoUpdaterTest - AutoUpdaterTest - v4.6.2 - 512 - - - - true - bin\Debug\ - DEBUG;TRACE - full - AnyCPU - prompt - MinimumRecommendedRules.ruleset - false - - - bin\Release\ - TRACE - true - pdbonly - AnyCPU - prompt - MinimumRecommendedRules.ruleset - false - - - app.manifest - - - - - ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll - - - - - - - - - - - Form - - - FormMain.cs - - - - - FormMain.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - {fb9e7e6b-b19f-4f37-a708-2996190cef13} - AutoUpdater.NET - - - - - \ No newline at end of file + + + + WinExe + net8.0-windows + enable + true + latest + 1.0.0 + + + + + + + + + + + + + + + + + True + True + Resource.resx + + + + + + ResXFileCodeGenerator + Resource.Designer.cs + + + + + + + diff --git a/AutoUpdaterTest/FormMain.Designer.cs b/AutoUpdaterTest/FormMain.Designer.cs deleted file mode 100644 index dddcd351..00000000 --- a/AutoUpdaterTest/FormMain.Designer.cs +++ /dev/null @@ -1,83 +0,0 @@ -namespace AutoUpdaterTest -{ - partial class FormMain - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.buttonCheckForUpdate = new System.Windows.Forms.Button(); - this.labelVersion = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // buttonCheckForUpdate - // - this.buttonCheckForUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCheckForUpdate.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.buttonCheckForUpdate.Location = new System.Drawing.Point(12, 54); - this.buttonCheckForUpdate.Name = "buttonCheckForUpdate"; - this.buttonCheckForUpdate.Size = new System.Drawing.Size(196, 40); - this.buttonCheckForUpdate.TabIndex = 0; - this.buttonCheckForUpdate.Text = "Check for update"; - this.buttonCheckForUpdate.UseVisualStyleBackColor = true; - this.buttonCheckForUpdate.Click += new System.EventHandler(this.ButtonCheckForUpdate_Click); - // - // labelVersion - // - this.labelVersion.AutoSize = true; - this.labelVersion.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.labelVersion.Location = new System.Drawing.Point(9, 23); - this.labelVersion.Name = "labelVersion"; - this.labelVersion.Size = new System.Drawing.Size(130, 15); - this.labelVersion.TabIndex = 1; - this.labelVersion.Text = "Current version : 1.0.0.0"; - // - // FormMain - // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(220, 106); - this.Controls.Add(this.labelVersion); - this.Controls.Add(this.buttonCheckForUpdate); - this.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "FormMain"; - this.ShowIcon = false; - this.Text = "AutoUpdaterTest"; - this.Load += new System.EventHandler(this.FormMain_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button buttonCheckForUpdate; - private System.Windows.Forms.Label labelVersion; - } -} \ No newline at end of file diff --git a/AutoUpdaterTest/FormMain.cs b/AutoUpdaterTest/FormMain.cs deleted file mode 100644 index 04c20b86..00000000 --- a/AutoUpdaterTest/FormMain.cs +++ /dev/null @@ -1,235 +0,0 @@ -using System; -using System.Globalization; -using System.IO; -using System.Net; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; -using System.Timers; -using System.Windows.Forms; -using AutoUpdaterDotNET; -using AutoUpdaterTest.Properties; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace AutoUpdaterTest -{ - public partial class FormMain : Form - { - public FormMain() - { - InitializeComponent(); - labelVersion.Text = string.Format(Resources.CurrentVersion, Assembly.GetEntryAssembly().GetName().Version); - } - - private void FormMain_Load(object sender, EventArgs e) - { - //Uncomment below lines to handle parsing logic of non XML AppCast file. - - //AutoUpdater.ParseUpdateInfoEvent += AutoUpdaterOnParseUpdateInfoEvent; - //AutoUpdater.Start("https://rbsoft.org/updates/AutoUpdaterTest.json"); - - //Uncomment below line to run update process using non administrator account. - - //AutoUpdater.RunUpdateAsAdmin = false; - - //Uncomment below line to see russian version - - //Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru"); - - //If you want to open download page when user click on download button uncomment below line. - - //AutoUpdater.OpenDownloadPage = true; - - //Don't want user to select remind later time in AutoUpdater notification window then uncomment 3 lines below so default remind later time will be set to 2 days. - - //AutoUpdater.LetUserSelectRemindLater = false; - //AutoUpdater.RemindLaterTimeSpan = RemindLaterFormat.Minutes; - //AutoUpdater.RemindLaterAt = 1; - - //Don't want to show Skip button then uncomment below line. - - //AutoUpdater.ShowSkipButton = false; - - //Don't want to show Remind Later button then uncomment below line. - - //AutoUpdater.ShowRemindLaterButton = false; - - //Want to show custom application title then uncomment below line. - - //AutoUpdater.AppTitle = "My Custom Application Title"; - - //Want to show errors then uncomment below line. - - //AutoUpdater.ReportErrors = true; - - //Want to handle how your application will exit when application finished downloading then uncomment below line. - - AutoUpdater.ApplicationExitEvent += AutoUpdater_ApplicationExitEvent; - - //Want to handle update logic yourself then uncomment below line. - - //AutoUpdater.CheckForUpdateEvent += AutoUpdaterOnCheckForUpdateEvent; - - //Want to use XML and Update file served only through Proxy. - - //var proxy = new WebProxy("localproxyIP:8080", true) {Credentials = new NetworkCredential("domain\\user", "password")}; - - //AutoUpdater.Proxy = proxy; - - //Want to check for updates frequently then uncomment following lines. - - //System.Timers.Timer timer = new System.Timers.Timer - //{ - // Interval = 2 * 60 * 1000, - // SynchronizingObject = this - //}; - //timer.Elapsed += delegate - //{ - // AutoUpdater.Start("https://rbsoft.org/updates/AutoUpdaterTest.xml"); - //}; - //timer.Start(); - - //Uncomment following lines to provide basic authentication credentials to use. - - //BasicAuthentication basicAuthentication = new BasicAuthentication("myUserName", "myPassword"); - //AutoUpdater.BasicAuthXML = AutoUpdater.BasicAuthDownload = basicAuthentication; - - //Uncomment following lines to enable forced updates. - - //AutoUpdater.Mandatory = true; - //AutoUpdater.UpdateMode = Mode.Forced; - - //Want to change update form size then uncomment below line. - - //AutoUpdater.UpdateFormSize = new System.Drawing.Size(800, 600); - - //Uncomment following if you want to update using FTP. - //AutoUpdater.Start("ftp://rbsoft.org/updates/AutoUpdaterTest.xml", new NetworkCredential("FtpUserName", "FtpPassword")); - - //Uncomment following lines if you want to persist Remind Later and Skip values in a json file. - //string jsonPath = Path.Combine(Environment.CurrentDirectory, "settings.json"); - //AutoUpdater.PersistenceProvider = new JsonFilePersistenceProvider(jsonPath); - - //Uncomment following line if you want to set the zip extraction path. - //var currentDirectory = new DirectoryInfo(Environment.CurrentDirectory); - //if (currentDirectory.Parent != null) - //{ - // AutoUpdater.InstallationPath = currentDirectory.Parent.FullName; - //} - - //Uncomment following line if you want to check for update synchronously. - //AutoUpdater.Synchronous = true; - - AutoUpdater.Start("https://rbsoft.org/updates/AutoUpdaterTest.xml"); - } - - private void AutoUpdater_ApplicationExitEvent() - { - Text = @"Closing application..."; - Thread.Sleep(5000); - Application.Exit(); - } - - - private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args) - { - dynamic json = JsonConvert.DeserializeObject(args.RemoteData); - args.UpdateInfo = new UpdateInfoEventArgs - { - CurrentVersion = json.version, - ChangelogURL = json.changelog, - DownloadURL = json.url, - Mandatory = new Mandatory - { - Value = json.mandatory.value, - UpdateMode = json.mandatory.mode, - MinimumVersion = json.mandatory.minVersion - }, - CheckSum = new CheckSum - { - Value = json.checksum.value, - HashingAlgorithm = json.checksum.hashingAlgorithm - } - }; - } - - private void AutoUpdaterOnCheckForUpdateEvent(UpdateInfoEventArgs args) - { - if (args != null) - { - if (args.IsUpdateAvailable) - { - DialogResult dialogResult; - if (args.Mandatory.Value) - { - dialogResult = - MessageBox.Show( - $@"There is new version {args.CurrentVersion} available. You are using version { - args.InstalledVersion - }. This is required update. Press Ok to begin updating the application.", - @"Update Available", - MessageBoxButtons.OK, - MessageBoxIcon.Information); - } - else - { - dialogResult = - MessageBox.Show( - $@"There is new version {args.CurrentVersion} available. You are using version { - args.InstalledVersion - }. Do you want to update the application now?", @"Update Available", - MessageBoxButtons.YesNo, - MessageBoxIcon.Information); - } - - - if (dialogResult.Equals(DialogResult.Yes) || dialogResult.Equals(DialogResult.OK)) - { - try - { - //You can use Download Update dialog used by AutoUpdater.NET to download the update. - - if (AutoUpdater.DownloadUpdate(args)) - { - Application.Exit(); - } - } - catch (Exception exception) - { - MessageBox.Show(exception.Message, exception.GetType().ToString(), MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } - } - else - { - MessageBox.Show(@"There is no update available. Please try again later.", @"Update Unavailable", - MessageBoxButtons.OK, MessageBoxIcon.Information); - } - } - else - { - MessageBox.Show( - @"There is a problem reaching update server. Please check your internet connection and try again later.", - @"Update Check Failed", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void ButtonCheckForUpdate_Click(object sender, EventArgs e) - { - //Uncomment below lines to select download path where update is saved. - - //FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); - //if (folderBrowserDialog.ShowDialog().Equals(DialogResult.OK)) - //{ - // AutoUpdater.DownloadPath = folderBrowserDialog.SelectedPath; - // AutoUpdater.Mandatory = true; - // AutoUpdater.Start("https://rbsoft.org/updates/AutoUpdaterTest.xml"); - //} - - AutoUpdater.Mandatory = true; - AutoUpdater.Start("https://rbsoft.org/updates/AutoUpdaterTest.xml"); - } - } -} diff --git a/AutoUpdaterTest/FormMain.resx b/AutoUpdaterTest/FormMain.resx deleted file mode 100644 index 29dcb1b3..00000000 --- a/AutoUpdaterTest/FormMain.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/AutoUpdaterTest/MainWindow.xaml b/AutoUpdaterTest/MainWindow.xaml new file mode 100644 index 00000000..f4c8e8da --- /dev/null +++ b/AutoUpdaterTest/MainWindow.xaml @@ -0,0 +1,26 @@ + + + + + + + + + + +