diff --git a/HudsonTrayTracker/Configuration.xml b/HudsonTrayTracker/Configuration.xml
deleted file mode 100644
index db240c1..0000000
--- a/HudsonTrayTracker/Configuration.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/HudsonTrayTracker.Tests/HudsonTrayTracker.Tests.csproj b/JenkinsTray.Tests/JenkinsTray.Tests.csproj
similarity index 94%
rename from HudsonTrayTracker.Tests/HudsonTrayTracker.Tests.csproj
rename to JenkinsTray.Tests/JenkinsTray.Tests.csproj
index 47626d2..06ac729 100644
--- a/HudsonTrayTracker.Tests/HudsonTrayTracker.Tests.csproj
+++ b/JenkinsTray.Tests/JenkinsTray.Tests.csproj
@@ -1,91 +1,91 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}
- Library
- Properties
- HudsonTrayTracker.Tests
- JenkinsTray.Tests
- v4.0
- 512
- {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
-
-
- 3.5
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
-
-
- bin\x86\Release\
- TRACE
- true
- pdbonly
- x86
- prompt
-
-
-
- False
- ..\lib\NUnit\nunit.core.dll
-
-
- False
- ..\lib\NUnit\nunit.framework.dll
-
-
-
- 3.5
-
-
-
-
-
-
- Properties\VersionInfo.cs
-
-
-
-
-
-
- {A54602CA-6823-4F2C-870F-1D464D9F4814}
- JenkinsTray
-
-
-
-
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}
+ Library
+ Properties
+ JenkinsTray.Tests
+ JenkinsTray.Tests
+ v4.0
+ 512
+ {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+
+
+ 3.5
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+
+
+
+ False
+ ..\lib\NUnit\nunit.core.dll
+
+
+ False
+ ..\lib\NUnit\nunit.framework.dll
+
+
+
+ 3.5
+
+
+
+
+
+
+ Properties\VersionInfo.cs
+
+
+
+
+
+
+ {A54602CA-6823-4F2C-870F-1D464D9F4814}
+ JenkinsTray
+
+
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker.Tests/Properties/AssemblyInfo.cs b/JenkinsTray.Tests/Properties/AssemblyInfo.cs
similarity index 97%
rename from HudsonTrayTracker.Tests/Properties/AssemblyInfo.cs
rename to JenkinsTray.Tests/Properties/AssemblyInfo.cs
index c059266..3bafdfd 100644
--- a/HudsonTrayTracker.Tests/Properties/AssemblyInfo.cs
+++ b/JenkinsTray.Tests/Properties/AssemblyInfo.cs
@@ -1,20 +1,20 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 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("JenkinsTray.Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM componenets. 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("30907250-fcf6-40bf-96a3-400c0c58d41d")]
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("JenkinsTray.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM componenets. 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("30907250-fcf6-40bf-96a3-400c0c58d41d")]
diff --git a/HudsonTrayTracker.Tests/Utils/StringUtilsTests.cs b/JenkinsTray.Tests/Utils/StringUtilsTests.cs
similarity index 91%
rename from HudsonTrayTracker.Tests/Utils/StringUtilsTests.cs
rename to JenkinsTray.Tests/Utils/StringUtilsTests.cs
index 5a02a71..382d526 100644
--- a/HudsonTrayTracker.Tests/Utils/StringUtilsTests.cs
+++ b/JenkinsTray.Tests/Utils/StringUtilsTests.cs
@@ -1,51 +1,51 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using NUnit.Framework;
-using Hudson.TrayTracker.Utils;
-
-namespace HudsonTrayTracker.Tests.Utils
-{
- [TestFixture]
- public class StringUtilsTests
- {
- [Test]
- public void TestSimpleName()
- {
- Assert.AreEqual("User", StringUtils.ExtractUserName("User"));
- }
-
- [Test]
- public void TestCompoundName()
- {
- Assert.AreEqual("User Name", StringUtils.ExtractUserName("User Name"));
- }
-
- [Test]
- public void TestNameWithDash()
- {
- Assert.AreEqual("User-Name", StringUtils.ExtractUserName("User-Name"));
- }
-
- [Test]
- public void TestTrimming()
- {
- Assert.AreEqual("User", StringUtils.ExtractUserName("User "));
- }
-
- [Test]
- public void TestAngleBrackets()
- {
- Assert.AreEqual("User Name", StringUtils.ExtractUserName("User Name "));
- Assert.AreEqual("", StringUtils.ExtractUserName(""));
- }
-
- [Test]
- public void TestBrackets()
- {
- Assert.AreEqual("User Name", StringUtils.ExtractUserName("User Name (user@example.com)"));
- Assert.AreEqual("(user@example.com)", StringUtils.ExtractUserName("(user@example.com)"));
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using Jenkins.Tray.Utils;
+
+namespace JenkinsTray.Tests.Utils
+{
+ [TestFixture]
+ public class StringUtilsTests
+ {
+ [Test]
+ public void TestSimpleName()
+ {
+ Assert.AreEqual("User", StringUtils.ExtractUserName("User"));
+ }
+
+ [Test]
+ public void TestCompoundName()
+ {
+ Assert.AreEqual("User Name", StringUtils.ExtractUserName("User Name"));
+ }
+
+ [Test]
+ public void TestNameWithDash()
+ {
+ Assert.AreEqual("User-Name", StringUtils.ExtractUserName("User-Name"));
+ }
+
+ [Test]
+ public void TestTrimming()
+ {
+ Assert.AreEqual("User", StringUtils.ExtractUserName("User "));
+ }
+
+ [Test]
+ public void TestAngleBrackets()
+ {
+ Assert.AreEqual("User Name", StringUtils.ExtractUserName("User Name "));
+ Assert.AreEqual("", StringUtils.ExtractUserName(""));
+ }
+
+ [Test]
+ public void TestBrackets()
+ {
+ Assert.AreEqual("User Name", StringUtils.ExtractUserName("User Name (user@example.com)"));
+ Assert.AreEqual("(user@example.com)", StringUtils.ExtractUserName("(user@example.com)"));
+ }
+ }
+}
diff --git a/HudsonTrayTracker.sln b/JenkinsTray.sln
similarity index 74%
rename from HudsonTrayTracker.sln
rename to JenkinsTray.sln
index 4dd0c18..29f8019 100644
--- a/HudsonTrayTracker.sln
+++ b/JenkinsTray.sln
@@ -1,35 +1,35 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0D9F4EE0-5F25-432E-AF6C-5836AE260047}"
- ProjectSection(SolutionItems) = preProject
- HudsonTrayTracker.vsmdi = HudsonTrayTracker.vsmdi
- LocalTestRun.testrunconfig = LocalTestRun.testrunconfig
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HudsonTrayTracker", "HudsonTrayTracker\HudsonTrayTracker.csproj", "{A54602CA-6823-4F2C-870F-1D464D9F4814}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HudsonTrayTracker.Tests", "HudsonTrayTracker.Tests\HudsonTrayTracker.Tests.csproj", "{B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}"
-EndProject
-Global
- GlobalSection(TestCaseManagementSettings) = postSolution
- CategoryFile = HudsonTrayTracker.vsmdi
- EndGlobalSection
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x86 = Debug|x86
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {A54602CA-6823-4F2C-870F-1D464D9F4814}.Debug|x86.ActiveCfg = Debug|x86
- {A54602CA-6823-4F2C-870F-1D464D9F4814}.Debug|x86.Build.0 = Debug|x86
- {A54602CA-6823-4F2C-870F-1D464D9F4814}.Release|x86.ActiveCfg = Release|x86
- {A54602CA-6823-4F2C-870F-1D464D9F4814}.Release|x86.Build.0 = Release|x86
- {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Debug|x86.ActiveCfg = Debug|x86
- {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Debug|x86.Build.0 = Debug|x86
- {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Release|x86.ActiveCfg = Release|x86
- {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0D9F4EE0-5F25-432E-AF6C-5836AE260047}"
+ ProjectSection(SolutionItems) = preProject
+ JenkinsTray.vsmdi = JenkinsTray.vsmdi
+ LocalTestRun.testrunconfig = LocalTestRun.testrunconfig
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JenkinsTray", "JenkinsTray\JenkinsTray.csproj", "{A54602CA-6823-4F2C-870F-1D464D9F4814}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JenkinsTray.Tests", "JenkinsTray.Tests\JenkinsTray.Tests.csproj", "{B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}"
+EndProject
+Global
+ GlobalSection(TestCaseManagementSettings) = postSolution
+ CategoryFile = JenkinsTray.vsmdi
+ EndGlobalSection
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A54602CA-6823-4F2C-870F-1D464D9F4814}.Debug|x86.ActiveCfg = Debug|x86
+ {A54602CA-6823-4F2C-870F-1D464D9F4814}.Debug|x86.Build.0 = Debug|x86
+ {A54602CA-6823-4F2C-870F-1D464D9F4814}.Release|x86.ActiveCfg = Release|x86
+ {A54602CA-6823-4F2C-870F-1D464D9F4814}.Release|x86.Build.0 = Release|x86
+ {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Debug|x86.ActiveCfg = Debug|x86
+ {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Debug|x86.Build.0 = Debug|x86
+ {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Release|x86.ActiveCfg = Release|x86
+ {B7F74B87-21B6-4887-A41E-49CDF8EFB7E0}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/HudsonTrayTracker.vsmdi b/JenkinsTray.vsmdi
similarity index 98%
rename from HudsonTrayTracker.vsmdi
rename to JenkinsTray.vsmdi
index 106767f..c219c48 100644
--- a/HudsonTrayTracker.vsmdi
+++ b/JenkinsTray.vsmdi
@@ -1,6 +1,6 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/App.config b/JenkinsTray/App.config
similarity index 88%
rename from HudsonTrayTracker/App.config
rename to JenkinsTray/App.config
index d80fb6f..491a17a 100644
--- a/HudsonTrayTracker/App.config
+++ b/JenkinsTray/App.config
@@ -1,24 +1,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/BusinessComponents/AllServersStatus.cs b/JenkinsTray/BusinessComponents/AllServersStatus.cs
similarity index 92%
rename from HudsonTrayTracker/BusinessComponents/AllServersStatus.cs
rename to JenkinsTray/BusinessComponents/AllServersStatus.cs
index 4843df5..cc320a4 100644
--- a/HudsonTrayTracker/BusinessComponents/AllServersStatus.cs
+++ b/JenkinsTray/BusinessComponents/AllServersStatus.cs
@@ -1,84 +1,84 @@
-using System.Collections.Generic;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.Utils;
-using Hudson.TrayTracker.Utils.Collections;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class AllServersStatus
- {
- private ThreadSafeDictionary lastStatuses = new ThreadSafeDictionary();
- private ThreadSafeDictionary lastCompletedStatuses = new ThreadSafeDictionary();
-
- public IEnumerable Servers { get; private set; }
-
- public List FailingProjects { get; private set; }
- public List StillFailingProjects { get; private set; }
- public List SucceedingProjects { get; private set; }
- public List FixedProjects { get; private set; }
-
- public void Update(IEnumerable servers)
- {
- FailingProjects = new List();
- StillFailingProjects = new List();
- SucceedingProjects = new List();
- FixedProjects = new List();
-
- foreach (var server in servers)
- {
- UpdateForServer(server);
- }
- }
-
- private void UpdateForServer(Server server)
- {
- foreach (var project in server.Projects)
- {
- UpdateForProject(project);
- lastStatuses.SetOrAdd(project.Url, project.Status);
- if (!project.Status.IsInProgress)
- {
- lastCompletedStatuses.SetOrAdd(project.Url, project.Status);
- }
- }
- }
-
- private void UpdateForProject(Project project)
- {
- if (lastStatuses.ContainsKey(project.Url) && lastCompletedStatuses.ContainsKey(project.Url))
- {
- if (lastStatuses[project.Url].IsInProgress)
- {
- if (project.StatusValue == BuildStatusEnum.Successful)
- {
- if (BuildStatusUtils.IsErrorBuild(lastCompletedStatuses[project.Url]))
- {
- FixedProjects.Add(project);
- }
- else
- {
- SucceedingProjects.Add(project);
- }
- }
- else if (TreatAsFailure(project.Status))
- {
- if (TreatAsFailure(lastCompletedStatuses[project.Url]))
- {
- StillFailingProjects.Add(project);
- }
- else
- {
- FailingProjects.Add(project);
- }
- }
- }
- }
- }
-
- private bool TreatAsFailure(BuildStatus status)
- {
- return status.Value == BuildStatusEnum.Failed
- || status.Value == BuildStatusEnum.Unstable;
- }
- }
-}
+using System.Collections.Generic;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.Utils;
+using Jenkins.Tray.Utils.Collections;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class AllServersStatus
+ {
+ private ThreadSafeDictionary lastStatuses = new ThreadSafeDictionary();
+ private ThreadSafeDictionary lastCompletedStatuses = new ThreadSafeDictionary();
+
+ public IEnumerable Servers { get; private set; }
+
+ public List FailingProjects { get; private set; }
+ public List StillFailingProjects { get; private set; }
+ public List SucceedingProjects { get; private set; }
+ public List FixedProjects { get; private set; }
+
+ public void Update(IEnumerable servers)
+ {
+ FailingProjects = new List();
+ StillFailingProjects = new List();
+ SucceedingProjects = new List();
+ FixedProjects = new List();
+
+ foreach (var server in servers)
+ {
+ UpdateForServer(server);
+ }
+ }
+
+ private void UpdateForServer(Server server)
+ {
+ foreach (var project in server.Projects)
+ {
+ UpdateForProject(project);
+ lastStatuses.SetOrAdd(project.Url, project.Status);
+ if (!project.Status.IsInProgress)
+ {
+ lastCompletedStatuses.SetOrAdd(project.Url, project.Status);
+ }
+ }
+ }
+
+ private void UpdateForProject(Project project)
+ {
+ if (lastStatuses.ContainsKey(project.Url) && lastCompletedStatuses.ContainsKey(project.Url))
+ {
+ if (lastStatuses[project.Url].IsInProgress)
+ {
+ if (project.StatusValue == BuildStatusEnum.Successful)
+ {
+ if (BuildStatusUtils.IsErrorBuild(lastCompletedStatuses[project.Url]))
+ {
+ FixedProjects.Add(project);
+ }
+ else
+ {
+ SucceedingProjects.Add(project);
+ }
+ }
+ else if (TreatAsFailure(project.Status))
+ {
+ if (TreatAsFailure(lastCompletedStatuses[project.Url]))
+ {
+ StillFailingProjects.Add(project);
+ }
+ else
+ {
+ FailingProjects.Add(project);
+ }
+ }
+ }
+ }
+ }
+
+ private bool TreatAsFailure(BuildStatus status)
+ {
+ return status.Value == BuildStatusEnum.Failed
+ || status.Value == BuildStatusEnum.Unstable;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/BusinessComponents/ApplicationUpdateService.cs b/JenkinsTray/BusinessComponents/ApplicationUpdateService.cs
similarity index 94%
rename from HudsonTrayTracker/BusinessComponents/ApplicationUpdateService.cs
rename to JenkinsTray/BusinessComponents/ApplicationUpdateService.cs
index 5238f45..49396b0 100644
--- a/HudsonTrayTracker/BusinessComponents/ApplicationUpdateService.cs
+++ b/JenkinsTray/BusinessComponents/ApplicationUpdateService.cs
@@ -1,194 +1,194 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Text;
-using Common.Logging;
-using System.Reflection;
-using System.Threading;
-using Hudson.TrayTracker.Utils.Logging;
-using System.ComponentModel;
-using System.Net;
-using Hudson.TrayTracker.Utils.IO;
-using Hudson.TrayTracker.Utils.Collections;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class ApplicationUpdateService
- {
- public enum UpdateSource
- {
- User,
- Timer,
- Program
- }
-
- public delegate void NewVersionAvailableHandler(Version version, string installerUrl);
- public event NewVersionAvailableHandler NewVersionAvailable;
-
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- // every hour
- static readonly int DEFAULT_UPDATE_PERIOD = 60 * 60 * 1000;
- // 5 seconds delay for the 1st check on application start up
- static readonly int DEFAULT_UPDATE_DELAY = 5 * 1000;
-
- static readonly String URL = "https://raw.githubusercontent.com/zionyx/jenkins-tray/master/scripts/version.properties";
-
- static readonly String PROPERTY_VERSION_NUMBER = "version.number";
- static readonly String PROPERTY_INSTALLER_URL = "version.installerUrl";
-
- public ConfigurationService ConfigurationService { get; set; }
-
- Timer timer;
- int updatePeriod = DEFAULT_UPDATE_PERIOD;
- bool updating;
- bool timerEnabled;
-
- public ApplicationUpdateService()
- {
- timerEnabled = false;
- updating = false;
- }
-
- public void Initialize()
- {
- timer = new Timer(CheckForUpdates);
- EnableTimer(ConfigurationService.GeneralSettings.CheckForUpdates);
- }
-
- public void EnableTimer(bool enable)
- {
- if (timerEnabled && !enable)
- {
- // Disable timer
- timer.Change(Timeout.Infinite, Timeout.Infinite);
- timerEnabled = false;
- }
- else if (!timerEnabled && enable)
- {
- // Enable timer
- timer.Change(DEFAULT_UPDATE_DELAY, updatePeriod);
- timerEnabled = true;
- }
- }
-
- public void CheckForUpdates_Asynchronous(UpdateSource source)
- {
- BackgroundWorker worker = new BackgroundWorker();
- worker.DoWork += delegate
- {
- DoCheckForUpdates(source);
- };
- worker.RunWorkerAsync();
- }
-
- public bool CheckForUpdates_Synchronous(UpdateSource source)
- {
- return DoCheckForUpdates(source);
- }
-
- private void CheckForUpdates(object state)
- {
- // ignore errors
- try
- {
- DoCheckForUpdates(UpdateSource.Timer);
- }
- catch { }
- }
-
- // returns true if an update was found, false otherwise
- private bool DoCheckForUpdates(UpdateSource source)
- {
- bool result = false;
-
- if (source == ApplicationUpdateService.UpdateSource.Timer &&
- ConfigurationService.GeneralSettings.CheckForUpdates == false)
- {
- logger.Info("Update check is already disabled in settings; stopping timer, from " + source);
- // Methods should only have 1 return point!
- EnableTimer(false);
- }
- else
- {
- logger.Info("Running update check from " + source);
-
- lock (this)
- {
- if (updating)
- {
- logger.Info("Already in update: skipping");
- return false;
- }
- updating = true;
- }
-
- try
- {
- result = DoCheckForUpdatesInternal();
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- throw;
- }
- finally
- {
- lock (this)
- {
- updating = false;
- }
- }
-
- logger.Info("Done");
- }
- return result;
- }
-
- // returns true if an update was found, false otherwise
- private bool DoCheckForUpdatesInternal()
- {
- bool result = false;
- logger.Info("Checking for updates from " + URL);
-
- // download the properties file
- WebClient webClient = new WebClient();
- String versionProperties = webClient.DownloadString(URL);
-
- // extract version details
- IPropertiesContainer properties = PropertiesFile.ReadProperties(versionProperties, "version.properties");
- string versionStr = properties[PROPERTY_VERSION_NUMBER];
- string installerUrl = properties[PROPERTY_INSTALLER_URL];
-
- Version version = new Version(versionStr);
- Version currentVersion = GetCurrentVersion();
-
- logger.Info("Current version: " + currentVersion);
- logger.Info("Last version: " + version);
- logger.Info("Installer URL: " + installerUrl);
-
- if (version <= currentVersion)
- {
- logger.Info("No updates");
- }
- else
- {
- logger.Info("An update is available");
-
- // disable the timer
- EnableTimer(false);
-
- if (NewVersionAvailable != null)
- NewVersionAvailable(version, installerUrl);
-
- result = true;
- }
- return result;
- }
-
- private Version GetCurrentVersion()
- {
- return new Version(FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using Common.Logging;
+using System.Reflection;
+using System.Threading;
+using Jenkins.Tray.Utils.Logging;
+using System.ComponentModel;
+using System.Net;
+using Jenkins.Tray.Utils.IO;
+using Jenkins.Tray.Utils.Collections;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class ApplicationUpdateService
+ {
+ public enum UpdateSource
+ {
+ User,
+ Timer,
+ Program
+ }
+
+ public delegate void NewVersionAvailableHandler(Version version, string installerUrl);
+ public event NewVersionAvailableHandler NewVersionAvailable;
+
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ // every hour
+ static readonly int DEFAULT_UPDATE_PERIOD = 60 * 60 * 1000;
+ // 5 seconds delay for the 1st check on application start up
+ static readonly int DEFAULT_UPDATE_DELAY = 5 * 1000;
+
+ static readonly String URL = "https://raw.githubusercontent.com/zionyx/jenkins-tray/master/scripts/version.properties";
+
+ static readonly String PROPERTY_VERSION_NUMBER = "version.number";
+ static readonly String PROPERTY_INSTALLER_URL = "version.installerUrl";
+
+ public ConfigurationService ConfigurationService { get; set; }
+
+ Timer timer;
+ int updatePeriod = DEFAULT_UPDATE_PERIOD;
+ bool updating;
+ bool timerEnabled;
+
+ public ApplicationUpdateService()
+ {
+ timerEnabled = false;
+ updating = false;
+ }
+
+ public void Initialize()
+ {
+ timer = new Timer(CheckForUpdates);
+ EnableTimer(ConfigurationService.GeneralSettings.CheckForUpdates);
+ }
+
+ public void EnableTimer(bool enable)
+ {
+ if (timerEnabled && !enable)
+ {
+ // Disable timer
+ timer.Change(Timeout.Infinite, Timeout.Infinite);
+ timerEnabled = false;
+ }
+ else if (!timerEnabled && enable)
+ {
+ // Enable timer
+ timer.Change(DEFAULT_UPDATE_DELAY, updatePeriod);
+ timerEnabled = true;
+ }
+ }
+
+ public void CheckForUpdates_Asynchronous(UpdateSource source)
+ {
+ BackgroundWorker worker = new BackgroundWorker();
+ worker.DoWork += delegate
+ {
+ DoCheckForUpdates(source);
+ };
+ worker.RunWorkerAsync();
+ }
+
+ public bool CheckForUpdates_Synchronous(UpdateSource source)
+ {
+ return DoCheckForUpdates(source);
+ }
+
+ private void CheckForUpdates(object state)
+ {
+ // ignore errors
+ try
+ {
+ DoCheckForUpdates(UpdateSource.Timer);
+ }
+ catch { }
+ }
+
+ // returns true if an update was found, false otherwise
+ private bool DoCheckForUpdates(UpdateSource source)
+ {
+ bool result = false;
+
+ if (source == ApplicationUpdateService.UpdateSource.Timer &&
+ ConfigurationService.GeneralSettings.CheckForUpdates == false)
+ {
+ logger.Info("Update check is already disabled in settings; stopping timer, from " + source);
+ // Methods should only have 1 return point!
+ EnableTimer(false);
+ }
+ else
+ {
+ logger.Info("Running update check from " + source);
+
+ lock (this)
+ {
+ if (updating)
+ {
+ logger.Info("Already in update: skipping");
+ return false;
+ }
+ updating = true;
+ }
+
+ try
+ {
+ result = DoCheckForUpdatesInternal();
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ throw;
+ }
+ finally
+ {
+ lock (this)
+ {
+ updating = false;
+ }
+ }
+
+ logger.Info("Done");
+ }
+ return result;
+ }
+
+ // returns true if an update was found, false otherwise
+ private bool DoCheckForUpdatesInternal()
+ {
+ bool result = false;
+ logger.Info("Checking for updates from " + URL);
+
+ // download the properties file
+ WebClient webClient = new WebClient();
+ String versionProperties = webClient.DownloadString(URL);
+
+ // extract version details
+ IPropertiesContainer properties = PropertiesFile.ReadProperties(versionProperties, "version.properties");
+ string versionStr = properties[PROPERTY_VERSION_NUMBER];
+ string installerUrl = properties[PROPERTY_INSTALLER_URL];
+
+ Version version = new Version(versionStr);
+ Version currentVersion = GetCurrentVersion();
+
+ logger.Info("Current version: " + currentVersion);
+ logger.Info("Last version: " + version);
+ logger.Info("Installer URL: " + installerUrl);
+
+ if (version <= currentVersion)
+ {
+ logger.Info("No updates");
+ }
+ else
+ {
+ logger.Info("An update is available");
+
+ // disable the timer
+ EnableTimer(false);
+
+ if (NewVersionAvailable != null)
+ NewVersionAvailable(version, installerUrl);
+
+ result = true;
+ }
+ return result;
+ }
+
+ private Version GetCurrentVersion()
+ {
+ return new Version(FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/BusinessComponents/ClaimService.cs b/JenkinsTray/BusinessComponents/ClaimService.cs
similarity index 90%
rename from HudsonTrayTracker/BusinessComponents/ClaimService.cs
rename to JenkinsTray/BusinessComponents/ClaimService.cs
index 45dbee7..3155580 100644
--- a/HudsonTrayTracker/BusinessComponents/ClaimService.cs
+++ b/JenkinsTray/BusinessComponents/ClaimService.cs
@@ -1,88 +1,88 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Runtime.Serialization;
-using System.Net;
-using System.IO;
-using System.Runtime.Serialization.Json;
-using System.Web;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.Utils;
-using System.Xml;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class ClaimService
- {
- public HudsonService HudsonService { get; set; }
-
- public static void FillInBuildDetails(BuildDetails res, XmlDocument xml)
- {
- XmlNode claimedNode = xml.SelectSingleNode("/*/action[claimed/text() = 'true']");
- if (claimedNode == null)
- return;
-
- var reasonNode = claimedNode.SelectSingleNode("reason");
- var claimedByNode = claimedNode.SelectSingleNode("claimedBy");
-
- ClaimDetails claimDetails = new ClaimDetails();
- claimDetails.User = claimedByNode.InnerText;
- claimDetails.Reason = reasonNode != null ? reasonNode.InnerText : "";
- res.ClaimDetails = claimDetails;
- }
-
- public void ClaimBuild(Project project, BuildDetails buildDetails, string reason, bool sticky)
- {
- string url = NetUtils.ConcatUrls(project.Url, buildDetails.Number.ToString(), "/claim/claim");
- var request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "POST";
- request.ContentType = "application/x-www-form-urlencoded";
-
- // we don't want to follow redirections
- request.AllowAutoRedirect = false;
-
- var credentials = project.Server.Credentials;
- if (credentials != null)
- request.Credentials = new NetworkCredential(credentials.Username, credentials.Password);
-
- using (Stream postStream = request.GetRequestStream())
- {
- var claim = new ClaimDetailsDto
- {
- Reason = reason,
- Sticky = sticky
- };
-
- var stream = new MemoryStream();
- var serializer = new DataContractJsonSerializer(typeof(ClaimDetailsDto));
- serializer.WriteObject(stream, claim);
- string json = Encoding.UTF8.GetString(stream.ToArray());
-
- string postData = "json=" + HttpUtility.UrlEncode(json, Encoding.UTF8);
- using (var writer = new StreamWriter(postStream))
- {
- writer.Write(postData);
- }
- }
-
- using (var response = (HttpWebResponse)request.GetResponse())
- {
- if (response.StatusCode != HttpStatusCode.Found && response.StatusCode != HttpStatusCode.OK)
- throw new Exception("Received response code " + response.StatusCode);
- }
-
- string buildUrl = NetUtils.ConcatUrls(project.Url, buildDetails.Number.ToString(), "/api/xml");
- HudsonService.RemoveFromCache(buildUrl);
- }
-
- [DataContract]
- protected class ClaimDetailsDto
- {
- [DataMember(Name = "reason")]
- public string Reason { get; set; }
- [DataMember(Name = "sticky")]
- public bool Sticky { get; set; }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using System.Net;
+using System.IO;
+using System.Runtime.Serialization.Json;
+using System.Web;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.Utils;
+using System.Xml;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class ClaimService
+ {
+ public JenkinsService JenkinsService { get; set; }
+
+ public static void FillInBuildDetails(BuildDetails res, XmlDocument xml)
+ {
+ XmlNode claimedNode = xml.SelectSingleNode("/*/action[claimed/text() = 'true']");
+ if (claimedNode == null)
+ return;
+
+ var reasonNode = claimedNode.SelectSingleNode("reason");
+ var claimedByNode = claimedNode.SelectSingleNode("claimedBy");
+
+ ClaimDetails claimDetails = new ClaimDetails();
+ claimDetails.User = claimedByNode.InnerText;
+ claimDetails.Reason = reasonNode != null ? reasonNode.InnerText : "";
+ res.ClaimDetails = claimDetails;
+ }
+
+ public void ClaimBuild(Project project, BuildDetails buildDetails, string reason, bool sticky)
+ {
+ string url = NetUtils.ConcatUrls(project.Url, buildDetails.Number.ToString(), "/claim/claim");
+ var request = (HttpWebRequest)WebRequest.Create(url);
+ request.Method = "POST";
+ request.ContentType = "application/x-www-form-urlencoded";
+
+ // we don't want to follow redirections
+ request.AllowAutoRedirect = false;
+
+ var credentials = project.Server.Credentials;
+ if (credentials != null)
+ request.Credentials = new NetworkCredential(credentials.Username, credentials.Password);
+
+ using (Stream postStream = request.GetRequestStream())
+ {
+ var claim = new ClaimDetailsDto
+ {
+ Reason = reason,
+ Sticky = sticky
+ };
+
+ var stream = new MemoryStream();
+ var serializer = new DataContractJsonSerializer(typeof(ClaimDetailsDto));
+ serializer.WriteObject(stream, claim);
+ string json = Encoding.UTF8.GetString(stream.ToArray());
+
+ string postData = "json=" + HttpUtility.UrlEncode(json, Encoding.UTF8);
+ using (var writer = new StreamWriter(postStream))
+ {
+ writer.Write(postData);
+ }
+ }
+
+ using (var response = (HttpWebResponse)request.GetResponse())
+ {
+ if (response.StatusCode != HttpStatusCode.Found && response.StatusCode != HttpStatusCode.OK)
+ throw new Exception("Received response code " + response.StatusCode);
+ }
+
+ string buildUrl = NetUtils.ConcatUrls(project.Url, buildDetails.Number.ToString(), "/api/xml");
+ JenkinsService.RemoveFromCache(buildUrl);
+ }
+
+ [DataContract]
+ protected class ClaimDetailsDto
+ {
+ [DataMember(Name = "reason")]
+ public string Reason { get; set; }
+ [DataMember(Name = "sticky")]
+ public bool Sticky { get; set; }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/BusinessComponents/ConfigurationService.cs b/JenkinsTray/BusinessComponents/ConfigurationService.cs
similarity index 94%
rename from HudsonTrayTracker/BusinessComponents/ConfigurationService.cs
rename to JenkinsTray/BusinessComponents/ConfigurationService.cs
index ad2cffb..5231d95 100644
--- a/HudsonTrayTracker/BusinessComponents/ConfigurationService.cs
+++ b/JenkinsTray/BusinessComponents/ConfigurationService.cs
@@ -1,264 +1,264 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Hudson.TrayTracker.Entities;
-using Iesi.Collections.Generic;
-using Hudson.TrayTracker.Utils.IO;
-using System.IO;
-using System.Reflection;
-using Common.Logging;
-using Newtonsoft.Json;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class ConfigurationService
- {
- public delegate void ConfigurationUpdatedHandler();
- public event ConfigurationUpdatedHandler ConfigurationUpdated;
-
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- const string HUDSON_TRAY_TRACKER_DIRECTORY = "Jenkins Tray";
- const string CONFIGURATION_FILE = "jenkins.configuration";
-
- string userConfigurationFile;
- Configuration configuration;
-
- public ISet Servers { get { return configuration.Servers; } }
- public NotificationSettings NotificationSettings { get { return configuration.NotificationSettings; } }
- public GeneralSettings GeneralSettings { get { return configuration.GeneralSettings; } }
-
- public void Initialize()
- {
- string userAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
- string userAppDataPath = PathHelper.Combine(userAppDataDir, HUDSON_TRAY_TRACKER_DIRECTORY);
- userConfigurationFile = PathHelper.Combine(userAppDataPath, CONFIGURATION_FILE);
-
- // create the directory in case it does not exist
- Directory.CreateDirectory(userAppDataPath);
-
- LoadConfiguration();
- }
-
- private void LoadConfiguration()
- {
- if (File.Exists(userConfigurationFile))
- {
- // read the JSON file
- var streamReader = File.OpenText(userConfigurationFile);
- var serializer = new JsonSerializer();
- using (var jsonReader = new JsonTextReader(streamReader))
- {
- configuration = serializer.Deserialize(jsonReader);
- }
-
- // link back projects to their server
- foreach (Server server in configuration.Servers)
- {
- foreach (Project project in server.Projects)
- project.Server = server;
- }
- }
- else
- {
- // read the legacy properties file
- var legacyReader = new LegacyConfigurationService();
- configuration = legacyReader.LoadConfiguration();
- }
- }
-
- // Save settings on application exit.
- public void SaveConfiguration()
- {
- var streamWriter = new StreamWriter(userConfigurationFile);
- var serializer = new JsonSerializer();
- using (var jsonWriter = new JsonTextWriter(streamWriter))
- {
- jsonWriter.Formatting = Formatting.Indented;
- serializer.Serialize(jsonWriter, configuration);
- }
-
- if (ConfigurationUpdated != null)
- ConfigurationUpdated();
- }
-
- public Server AddServer(string url, string displayName, string username, string password, bool ignoreUntrustedCertificate)
- {
- Server server = new Server();
- BindData(server, url, displayName, username, password, ignoreUntrustedCertificate);
- Servers.Add(server);
- SaveConfiguration();
- return server;
- }
-
- public void UpdateServer(Server server, string url, string displayName, string username, string password, bool ignoreUntrustedCertificate)
- {
- // note: we need to remove and re-add the server because its hash-code might change
- string oldServerUrl = server.Url;
- Servers.Remove(server);
- BindData(server, url, displayName, username, password, ignoreUntrustedCertificate);
-
- // Update all projects with new server url
- if (server.Url.ToUpper().CompareTo(oldServerUrl.ToUpper()) != 0)
- {
- logger.Info("Server Url updated: " + oldServerUrl + " -> " + server.Url);
- foreach (Project project in server.Projects)
- {
- string updatedUrl = project.Url.Replace(oldServerUrl, server.Url);
- logger.Info("Project Url updated: " + project.Url + " -> " + updatedUrl);
- project.Url = updatedUrl;
- }
- }
- Servers.Add(server);
- SaveConfiguration();
- }
-
- private void BindData(Server server, string url, string displayName, string username, string password, bool ignoreUntrustedCertificate)
- {
- server.Url = url;
- server.DisplayName = displayName;
- server.IgnoreUntrustedCertificate = ignoreUntrustedCertificate;
- if (String.IsNullOrEmpty(username) == false)
- server.Credentials = new Credentials(username, password);
- else
- server.Credentials = null;
- }
-
- public void RemoveServer(Server server)
- {
- Servers.Remove(server);
- SaveConfiguration();
- }
-
- public void AddProject(Project project)
- {
- DoAddProject(project);
- SaveConfiguration();
- }
- public void AddProjects(IList projects)
- {
- foreach (Project project in projects)
- DoAddProject(project);
- SaveConfiguration();
- }
- private void DoAddProject(Project project)
- {
- Server server = project.Server;
- server.Projects.Add(project);
- }
-
- public void RemoveProject(Project project)
- {
- DoRemoveProject(project);
- SaveConfiguration();
- }
- public void RemoveProjects(IList projects)
- {
- foreach (Project project in projects)
- DoRemoveProject(project);
- SaveConfiguration();
- }
- private void DoRemoveProject(Project project)
- {
- Server server = project.Server;
- server.Projects.Remove(project);
- }
-
- public IDictionary> GetProjects()
- {
- var res = new Dictionary>();
- foreach (Server server in Servers)
- {
- var projects = new HashedSet();
- foreach (Project project in server.Projects)
- projects.Add(project);
- res[server] = projects;
- }
- return res;
- }
-
- public string GetSoundPath(string status)
- {
- PropertyInfo prop = NotificationSettings.GetType().GetProperty(status + "SoundPath");
- string res = (string)prop.GetValue(NotificationSettings, null);
- return res;
- }
-
- public void SetSoundPath(string status, string path)
- {
- PropertyInfo prop = NotificationSettings.GetType().GetProperty(status + "SoundPath");
- object obj = prop.GetValue(NotificationSettings, null);
-
- // obj == null, is to allow NOTHING to be set to the status.
- if (obj == null || obj.ToString().CompareTo(path) != 0)
- {
- prop.SetValue(NotificationSettings, path, null);
- SaveConfiguration();
- }
- }
-
- public bool IsTreadUnstableAsFailed()
- {
- return NotificationSettings.TreatUnstableAsFailed;
- }
-
- public bool IsSoundNotificationsEnabled()
- {
- return NotificationSettings.SoundNotifications;
- }
-
- public void SetTreadUnstableAsFailed(bool value)
- {
- if (NotificationSettings.TreatUnstableAsFailed != value)
- {
- NotificationSettings.TreatUnstableAsFailed = value;
- SaveConfiguration();
- }
- }
-
- public void SetRefreshIntervalInSeconds(int value)
- {
- if (GeneralSettings.RefreshIntervalInSeconds != value)
- {
- GeneralSettings.RefreshIntervalInSeconds = value;
- SaveConfiguration();
- }
- }
-
- public void SetUpdateMainWindowIcon(bool value)
- {
- if (GeneralSettings.UpdateMainWindowIcon != value)
- {
- GeneralSettings.UpdateMainWindowIcon = value;
- SaveConfiguration();
- }
- }
-
- public void SetIntegrateWithClaimPlugin(bool value)
- {
- if (GeneralSettings.IntegrateWithClaimPlugin != value)
- {
- GeneralSettings.IntegrateWithClaimPlugin = value;
- SaveConfiguration();
- }
- }
-
- public void SetCheckForUpdates(bool value)
- {
- if (GeneralSettings.CheckForUpdates != value)
- {
- GeneralSettings.CheckForUpdates = value;
- SaveConfiguration();
- }
- }
-
- public void SetSoundNotifications(bool value)
- {
- if (NotificationSettings.SoundNotifications != value)
- {
- NotificationSettings.SoundNotifications = value;
- SaveConfiguration();
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Jenkins.Tray.Entities;
+using Iesi.Collections.Generic;
+using Jenkins.Tray.Utils.IO;
+using System.IO;
+using System.Reflection;
+using Common.Logging;
+using Newtonsoft.Json;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class ConfigurationService
+ {
+ public delegate void ConfigurationUpdatedHandler();
+ public event ConfigurationUpdatedHandler ConfigurationUpdated;
+
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ const string JENKINS_TRAY_DIRECTORY = "Jenkins Tray";
+ const string CONFIGURATION_FILE = "jenkins.configuration";
+
+ string userConfigurationFile;
+ Configuration configuration;
+
+ public ISet Servers { get { return configuration.Servers; } }
+ public NotificationSettings NotificationSettings { get { return configuration.NotificationSettings; } }
+ public GeneralSettings GeneralSettings { get { return configuration.GeneralSettings; } }
+
+ public void Initialize()
+ {
+ string userAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
+ string userAppDataPath = PathHelper.Combine(userAppDataDir, JENKINS_TRAY_DIRECTORY);
+ userConfigurationFile = PathHelper.Combine(userAppDataPath, CONFIGURATION_FILE);
+
+ // create the directory in case it does not exist
+ Directory.CreateDirectory(userAppDataPath);
+
+ LoadConfiguration();
+ }
+
+ private void LoadConfiguration()
+ {
+ if (File.Exists(userConfigurationFile))
+ {
+ // read the JSON file
+ var streamReader = File.OpenText(userConfigurationFile);
+ var serializer = new JsonSerializer();
+ using (var jsonReader = new JsonTextReader(streamReader))
+ {
+ configuration = serializer.Deserialize(jsonReader);
+ }
+
+ // link back projects to their server
+ foreach (Server server in configuration.Servers)
+ {
+ foreach (Project project in server.Projects)
+ project.Server = server;
+ }
+ }
+ else
+ {
+ // read the legacy properties file
+ var legacyReader = new LegacyConfigurationService();
+ configuration = legacyReader.LoadConfiguration();
+ }
+ }
+
+ // Save settings on application exit.
+ public void SaveConfiguration()
+ {
+ var streamWriter = new StreamWriter(userConfigurationFile);
+ var serializer = new JsonSerializer();
+ using (var jsonWriter = new JsonTextWriter(streamWriter))
+ {
+ jsonWriter.Formatting = Formatting.Indented;
+ serializer.Serialize(jsonWriter, configuration);
+ }
+
+ if (ConfigurationUpdated != null)
+ ConfigurationUpdated();
+ }
+
+ public Server AddServer(string url, string displayName, string username, string password, bool ignoreUntrustedCertificate)
+ {
+ Server server = new Server();
+ BindData(server, url, displayName, username, password, ignoreUntrustedCertificate);
+ Servers.Add(server);
+ SaveConfiguration();
+ return server;
+ }
+
+ public void UpdateServer(Server server, string url, string displayName, string username, string password, bool ignoreUntrustedCertificate)
+ {
+ // note: we need to remove and re-add the server because its hash-code might change
+ string oldServerUrl = server.Url;
+ Servers.Remove(server);
+ BindData(server, url, displayName, username, password, ignoreUntrustedCertificate);
+
+ // Update all projects with new server url
+ if (server.Url.ToUpper().CompareTo(oldServerUrl.ToUpper()) != 0)
+ {
+ logger.Info("Server Url updated: " + oldServerUrl + " -> " + server.Url);
+ foreach (Project project in server.Projects)
+ {
+ string updatedUrl = project.Url.Replace(oldServerUrl, server.Url);
+ logger.Info("Project Url updated: " + project.Url + " -> " + updatedUrl);
+ project.Url = updatedUrl;
+ }
+ }
+ Servers.Add(server);
+ SaveConfiguration();
+ }
+
+ private void BindData(Server server, string url, string displayName, string username, string password, bool ignoreUntrustedCertificate)
+ {
+ server.Url = url;
+ server.DisplayName = displayName;
+ server.IgnoreUntrustedCertificate = ignoreUntrustedCertificate;
+ if (String.IsNullOrEmpty(username) == false)
+ server.Credentials = new Credentials(username, password);
+ else
+ server.Credentials = null;
+ }
+
+ public void RemoveServer(Server server)
+ {
+ Servers.Remove(server);
+ SaveConfiguration();
+ }
+
+ public void AddProject(Project project)
+ {
+ DoAddProject(project);
+ SaveConfiguration();
+ }
+ public void AddProjects(IList projects)
+ {
+ foreach (Project project in projects)
+ DoAddProject(project);
+ SaveConfiguration();
+ }
+ private void DoAddProject(Project project)
+ {
+ Server server = project.Server;
+ server.Projects.Add(project);
+ }
+
+ public void RemoveProject(Project project)
+ {
+ DoRemoveProject(project);
+ SaveConfiguration();
+ }
+ public void RemoveProjects(IList projects)
+ {
+ foreach (Project project in projects)
+ DoRemoveProject(project);
+ SaveConfiguration();
+ }
+ private void DoRemoveProject(Project project)
+ {
+ Server server = project.Server;
+ server.Projects.Remove(project);
+ }
+
+ public IDictionary> GetProjects()
+ {
+ var res = new Dictionary>();
+ foreach (Server server in Servers)
+ {
+ var projects = new HashedSet();
+ foreach (Project project in server.Projects)
+ projects.Add(project);
+ res[server] = projects;
+ }
+ return res;
+ }
+
+ public string GetSoundPath(string status)
+ {
+ PropertyInfo prop = NotificationSettings.GetType().GetProperty(status + "SoundPath");
+ string res = (string)prop.GetValue(NotificationSettings, null);
+ return res;
+ }
+
+ public void SetSoundPath(string status, string path)
+ {
+ PropertyInfo prop = NotificationSettings.GetType().GetProperty(status + "SoundPath");
+ object obj = prop.GetValue(NotificationSettings, null);
+
+ // obj == null, is to allow NOTHING to be set to the status.
+ if (obj == null || obj.ToString().CompareTo(path) != 0)
+ {
+ prop.SetValue(NotificationSettings, path, null);
+ SaveConfiguration();
+ }
+ }
+
+ public bool IsTreadUnstableAsFailed()
+ {
+ return NotificationSettings.TreatUnstableAsFailed;
+ }
+
+ public bool IsSoundNotificationsEnabled()
+ {
+ return NotificationSettings.SoundNotifications;
+ }
+
+ public void SetTreadUnstableAsFailed(bool value)
+ {
+ if (NotificationSettings.TreatUnstableAsFailed != value)
+ {
+ NotificationSettings.TreatUnstableAsFailed = value;
+ SaveConfiguration();
+ }
+ }
+
+ public void SetRefreshIntervalInSeconds(int value)
+ {
+ if (GeneralSettings.RefreshIntervalInSeconds != value)
+ {
+ GeneralSettings.RefreshIntervalInSeconds = value;
+ SaveConfiguration();
+ }
+ }
+
+ public void SetUpdateMainWindowIcon(bool value)
+ {
+ if (GeneralSettings.UpdateMainWindowIcon != value)
+ {
+ GeneralSettings.UpdateMainWindowIcon = value;
+ SaveConfiguration();
+ }
+ }
+
+ public void SetIntegrateWithClaimPlugin(bool value)
+ {
+ if (GeneralSettings.IntegrateWithClaimPlugin != value)
+ {
+ GeneralSettings.IntegrateWithClaimPlugin = value;
+ SaveConfiguration();
+ }
+ }
+
+ public void SetCheckForUpdates(bool value)
+ {
+ if (GeneralSettings.CheckForUpdates != value)
+ {
+ GeneralSettings.CheckForUpdates = value;
+ SaveConfiguration();
+ }
+ }
+
+ public void SetSoundNotifications(bool value)
+ {
+ if (NotificationSettings.SoundNotifications != value)
+ {
+ NotificationSettings.SoundNotifications = value;
+ SaveConfiguration();
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/BusinessComponents/HudsonService.cs b/JenkinsTray/BusinessComponents/JenkinsService.cs
similarity index 94%
rename from HudsonTrayTracker/BusinessComponents/HudsonService.cs
rename to JenkinsTray/BusinessComponents/JenkinsService.cs
index b29c5c5..db7c980 100644
--- a/HudsonTrayTracker/BusinessComponents/HudsonService.cs
+++ b/JenkinsTray/BusinessComponents/JenkinsService.cs
@@ -1,401 +1,401 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Net;
-using System.Web;
-using System.Xml;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.Utils;
-using Common.Logging;
-using System.Reflection;
-using Hudson.TrayTracker.Utils.Logging;
-using Iesi.Collections.Generic;
-using Hudson.TrayTracker.Utils.Web;
-using System.Threading;
-using System.Security.Cryptography.X509Certificates;
-using System.Net.Security;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class HudsonService
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- [ThreadStatic]
- static WebClient threadWebClient;
-
- [ThreadStatic]
- static bool ignoreUntrustedCertificate;
-
- // cache: key=url, value=xml
- IDictionary cache = new Dictionary();
- // URLs visited between 2 calls to RecycleCache()
- ISet visitedURLs = new HashedSet();
-
- public ClaimService ClaimService { get; set; }
-
- public HudsonService()
- {
- ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
- }
-
- public IList LoadProjects(Server server)
- {
- String url = NetUtils.ConcatUrls(server.Url, "/api/xml");
-
- logger.Info("Loading projects from " + url);
-
- String xmlStr = DownloadString(server.Credentials, url, false, server.IgnoreUntrustedCertificate);
-
- if (logger.IsTraceEnabled)
- logger.Trace("XML: " + xmlStr);
-
- XmlDocument xml = new XmlDocument();
- xml.LoadXml(xmlStr);
-
- XmlNodeList jobElements = xml.SelectNodes("/hudson/job");
- var projects = new List();
- foreach (XmlNode jobElement in jobElements)
- {
- string projectName = jobElement.SelectSingleNode("name").InnerText;
- string projectUrl = jobElement.SelectSingleNode("url").InnerText;
-
- Project project = new Project();
- project.Server = server;
- project.Name = projectName;
- project.Url = projectUrl;
-
- if (logger.IsDebugEnabled)
- logger.Debug("Found project " + projectName + " (" + projectUrl + ")");
-
- projects.Add(project);
- }
-
- logger.Info("Done loading projects");
-
- return projects;
- }
-
- public AllBuildDetails UpdateProject(Project project)
- {
- String url = NetUtils.ConcatUrls(project.Url, "/api/xml");
-
- //logger.Info("Updating project from " + url);
-
- Credentials credentials = project.Server.Credentials;
- bool ignoreUntrustedCertificate = project.Server.IgnoreUntrustedCertificate;
- String xmlStr = DownloadString(credentials, url, false, ignoreUntrustedCertificate);
-
- if (logger.IsTraceEnabled)
- logger.Trace("XML: " + xmlStr);
-
- XmlDocument xml = new XmlDocument();
- xml.LoadXml(xmlStr);
-
- bool? inQueue = XmlUtils.SelectSingleNodeBoolean(xml, "/*/inQueue");
- string inQueueSince = XmlUtils.SelectSingleNodeText(xml, "/*/queueItem/inQueueSince");
- string why = XmlUtils.SelectSingleNodeText(xml, "/*/queueItem/why");
- bool? stuck = XmlUtils.SelectSingleNodeBoolean(xml, "/*/queueItem/stuck");
- string status = xml.SelectSingleNode("/*/color").InnerText;
- string lastBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastBuild/url");
- string lastCompletedBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastCompletedBuild/url");
- string lastSuccessfulBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastSuccessfulBuild/url");
- string lastFailedBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastFailedBuild/url");
-
- project.Queue.InQueue = (inQueue.HasValue && inQueue.Value == true);
- if (!String.IsNullOrEmpty(inQueueSince))
- {
- TimeSpan ts = TimeSpan.FromSeconds(long.Parse(inQueueSince) / 1000);
- DateTime date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
- date = date.Add(ts);
- project.Queue.InQueueSince = date;
- }
- if (!String.IsNullOrEmpty(why))
- {
- project.Queue.Why = why;
- }
-
- AllBuildDetails res = new AllBuildDetails();
- res.Status = GetStatus(status, stuck);
- res.LastBuild = GetBuildDetails(credentials, lastBuildUrl, ignoreUntrustedCertificate);
- res.LastCompletedBuild = GetBuildDetails(credentials, lastCompletedBuildUrl, ignoreUntrustedCertificate);
- res.LastSuccessfulBuild = GetBuildDetails(credentials, lastSuccessfulBuildUrl, ignoreUntrustedCertificate);
- res.LastFailedBuild = GetBuildDetails(credentials, lastFailedBuildUrl, ignoreUntrustedCertificate);
-
- //logger.Info("Done updating project");
- return res;
- }
-
- // http://javadoc.jenkins-ci.org/hudson/model/BallColor.html
- private BuildStatus GetStatus(string status, bool? stuck)
- {
- BuildStatusEnum value;
- if (status.StartsWith("grey"))
- value = BuildStatusEnum.Indeterminate;
- else if (status.StartsWith("blue") || status.StartsWith("green"))
- value = BuildStatusEnum.Successful;
- else if (status.StartsWith("yellow"))
- value = BuildStatusEnum.Unstable;
- else if (status.StartsWith("red"))
- value = BuildStatusEnum.Failed;
- else if (status.StartsWith("aborted"))
- value = BuildStatusEnum.Aborted;
- else if (status.StartsWith("disabled"))
- value = BuildStatusEnum.Disabled;
- else
- value = BuildStatusEnum.Unknown;
-
- bool isInProgress = status.EndsWith("_anime");
- bool isStuck = (stuck.HasValue && stuck.Value == true);
- return new BuildStatus(value, isInProgress, isStuck);
- }
-
- private BuildDetails GetBuildDetails(Credentials credentials, string buildUrl, bool ignoreUntrustedCertificate)
- {
- if (buildUrl == null)
- return null;
-
- String url = NetUtils.ConcatUrls(buildUrl, "/api/xml");
-
- if (logger.IsDebugEnabled)
- logger.Debug("Getting build details from " + url);
-
- String xmlStr = DownloadString(credentials, url, true, ignoreUntrustedCertificate);
-
- if (logger.IsTraceEnabled)
- logger.Trace("XML: " + xmlStr);
-
- XmlDocument xml = new XmlDocument();
- xml.LoadXml(xmlStr);
-
- string number = xml.SelectSingleNode("/*/number").InnerText;
- string fullDisplayName = xml.SelectSingleNode("/*/fullDisplayName").InnerText;
- string timestamp = xml.SelectSingleNode("/*/timestamp").InnerText;
- string estimatedDuration = xml.SelectSingleNode("/*/estimatedDuration").InnerText;
- string duration = xml.SelectSingleNode("/*/duration").InnerText;
- XmlNode xmlResult = xml.SelectSingleNode("/*/result");
- string result = xmlResult == null ? string.Empty : xmlResult.InnerText;
- XmlNodeList userNodes = xml.SelectNodes("/*/culprit/fullName");
-
- TimeSpan ts = TimeSpan.FromSeconds(long.Parse(timestamp) / 1000);
- DateTime date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
- date = date.Add(ts);
- TimeSpan estimatedts = TimeSpan.FromSeconds(long.Parse(estimatedDuration) / 1000);
- TimeSpan durationts = TimeSpan.FromSeconds(long.Parse(estimatedDuration) / 1000);
-
- ISet users = new HashedSet();
- foreach (XmlNode userNode in userNodes)
- {
- string userName = StringUtils.ExtractUserName(userNode.InnerText);
- users.Add(userName);
- }
-
- BuildDetails res = new BuildDetails();
- BuildCauses.FillInBuildCauses(res, xml);
- res.Number = int.Parse(number);
- res.DisplayName = fullDisplayName;
- res.Time = date;
- res.EstimatedDuration = estimatedts;
- res.Duration = durationts;
- res.Result = BuildStatus.StringToBuildStatus(result);
- res.Users = users;
-
- ClaimService.FillInBuildDetails(res, xml);
-
- if (logger.IsDebugEnabled)
- logger.Debug("Done getting build details");
-
- return res;
- }
-
- public void SafeRunBuild(Project project)
- {
- try
- {
- RunBuild(project);
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- throw ex;
- }
- }
-
- public void RunBuild(Project project)
- {
- String url = NetUtils.ConcatUrls(project.Url, "/build?delay=0sec");
-
- if (!string.IsNullOrEmpty(project.AuthenticationToken))
- {
- url = NetUtils.ConcatUrlsWithoutTrailingSlash(url, "&token=", HttpUtility.UrlEncodeUnicode(project.AuthenticationToken));
- if (!string.IsNullOrEmpty(project.CauseText))
- {
- url = NetUtils.ConcatUrlsWithoutTrailingSlash(url, "&cause=", HttpUtility.UrlEncodeUnicode(project.CauseText));
- }
- }
- logger.Info("Running build at " + url);
-
- Credentials credentials = project.Server.Credentials;
- String str = UploadString(credentials, url, project.Server.IgnoreUntrustedCertificate);
-
- if (logger.IsTraceEnabled)
- logger.Trace("Result: " + str);
-
- logger.Info("Done running build");
- }
-
- private String DownloadString(Credentials credentials, string url, bool cacheable,
- bool ignoreUntrustedCertificate)
- {
- string res;
-
- if (logger.IsTraceEnabled)
- logger.Trace("Downloading: " + url);
-
- if (cacheable)
- {
- lock (this)
- {
- // mark the URL as visited
- visitedURLs.Add(url);
- // perform a lookup in the cache
- if (cache.TryGetValue(url, out res))
- {
- if (logger.IsTraceEnabled)
- logger.Trace("Cache hit: " + url);
- return res;
- }
- }
-
- if (logger.IsTraceEnabled)
- logger.Trace("Cache miss: " + url);
- }
-
- // set the thread-static field
- HudsonService.ignoreUntrustedCertificate = ignoreUntrustedCertificate;
-
- WebClient webClient = GetWebClient(credentials);
- res = webClient.DownloadString(url);
-
- if (logger.IsTraceEnabled)
- logger.Trace("Downloaded: " + res);
-
- if (cacheable)
- {
- lock (this)
- {
- // store in cache
- cache[url] = res;
- }
- }
-
- return res;
- }
-
- private String UploadString(Credentials credentials, string url, bool ignoreUntrustedCertificate)
- {
- string res;
-
- if (logger.IsTraceEnabled)
- logger.Trace("Uploading: " + url);
-
- // set the thread-static field
- HudsonService.ignoreUntrustedCertificate = ignoreUntrustedCertificate;
-
- WebClient webClient = GetWebClient(credentials);
- webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
- res = webClient.UploadString(url,"");
-
- if (logger.IsTraceEnabled)
- logger.Trace("Uploaded: " + res);
-
- return res;
- }
-
- private WebClient GetWebClient(Credentials credentials)
- {
- if (threadWebClient == null)
- {
- logger.Info("Creating web client in thread " + Thread.CurrentThread.ManagedThreadId
- + " (" + Thread.CurrentThread.Name + ")");
- threadWebClient = new CookieAwareWebClient();
- threadWebClient.Encoding = Encoding.UTF8;
- }
-
- // reinitialize HTTP headers
- threadWebClient.Headers = new WebHeaderCollection();
-
- // credentials
- if (credentials != null)
- {
- string authentication = "Basic " + Convert.ToBase64String(
- Encoding.ASCII.GetBytes(credentials.Username + ":" + credentials.Password));
- threadWebClient.Headers.Add("Authorization", authentication);
- }
-
- return threadWebClient;
- }
-
- public void RecycleCache()
- {
- lock (this)
- {
- if (logger.IsTraceEnabled)
- logger.Trace("Recycling cache: " + cache.Keys.Count + " items in cache");
-
- var newCache = new Dictionary();
-
- foreach (string visitedURL in visitedURLs)
- {
- string value;
- if (cache.TryGetValue(visitedURL, out value))
- newCache.Add(visitedURL, value);
- }
-
- cache = newCache;
- visitedURLs.Clear();
-
- if (logger.IsTraceEnabled)
- logger.Trace("Recycling cache: " + cache.Keys.Count + " items in cache");
- }
- }
-
- public void RemoveFromCache(string url)
- {
- lock (this)
- {
- cache.Remove(url);
- }
- }
-
- public string GetConsolePage(Project project)
- {
- string res = project.Url;
- bool hasBuild = HasBuild(project.AllBuildDetails);
- if (hasBuild)
- res += "lastBuild/console";
- return res;
- }
-
- private bool HasBuild(AllBuildDetails allBuildDetails)
- {
- // no details, there is no build
- if (allBuildDetails == null)
- return false;
- // if there is a completed build, there is a build
- if (allBuildDetails.LastCompletedBuild != null)
- return true;
- // if there is a build in progress, there is a build
- bool buildInProgress = allBuildDetails.Status.IsInProgress;
- return buildInProgress;
- }
-
- private bool ValidateServerCertificate(object sender, X509Certificate certificate,
- X509Chain chain, SslPolicyErrors sslPolicyErrors)
- {
- if (ignoreUntrustedCertificate == true)
- return true;
- return sslPolicyErrors == SslPolicyErrors.None;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Net;
+using System.Web;
+using System.Xml;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.Utils;
+using Common.Logging;
+using System.Reflection;
+using Jenkins.Tray.Utils.Logging;
+using Iesi.Collections.Generic;
+using Jenkins.Tray.Utils.Web;
+using System.Threading;
+using System.Security.Cryptography.X509Certificates;
+using System.Net.Security;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class JenkinsService
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ [ThreadStatic]
+ static WebClient threadWebClient;
+
+ [ThreadStatic]
+ static bool ignoreUntrustedCertificate;
+
+ // cache: key=url, value=xml
+ IDictionary cache = new Dictionary();
+ // URLs visited between 2 calls to RecycleCache()
+ ISet visitedURLs = new HashedSet();
+
+ public ClaimService ClaimService { get; set; }
+
+ public JenkinsService()
+ {
+ ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
+ }
+
+ public IList LoadProjects(Server server)
+ {
+ String url = NetUtils.ConcatUrls(server.Url, "/api/xml");
+
+ logger.Info("Loading projects from " + url);
+
+ String xmlStr = DownloadString(server.Credentials, url, false, server.IgnoreUntrustedCertificate);
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("XML: " + xmlStr);
+
+ XmlDocument xml = new XmlDocument();
+ xml.LoadXml(xmlStr);
+
+ XmlNodeList jobElements = xml.SelectNodes("/hudson/job");
+ var projects = new List();
+ foreach (XmlNode jobElement in jobElements)
+ {
+ string projectName = jobElement.SelectSingleNode("name").InnerText;
+ string projectUrl = jobElement.SelectSingleNode("url").InnerText;
+
+ Project project = new Project();
+ project.Server = server;
+ project.Name = projectName;
+ project.Url = projectUrl;
+
+ if (logger.IsDebugEnabled)
+ logger.Debug("Found project " + projectName + " (" + projectUrl + ")");
+
+ projects.Add(project);
+ }
+
+ logger.Info("Done loading projects");
+
+ return projects;
+ }
+
+ public AllBuildDetails UpdateProject(Project project)
+ {
+ String url = NetUtils.ConcatUrls(project.Url, "/api/xml");
+
+ //logger.Info("Updating project from " + url);
+
+ Credentials credentials = project.Server.Credentials;
+ bool ignoreUntrustedCertificate = project.Server.IgnoreUntrustedCertificate;
+ String xmlStr = DownloadString(credentials, url, false, ignoreUntrustedCertificate);
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("XML: " + xmlStr);
+
+ XmlDocument xml = new XmlDocument();
+ xml.LoadXml(xmlStr);
+
+ bool? inQueue = XmlUtils.SelectSingleNodeBoolean(xml, "/*/inQueue");
+ string inQueueSince = XmlUtils.SelectSingleNodeText(xml, "/*/queueItem/inQueueSince");
+ string why = XmlUtils.SelectSingleNodeText(xml, "/*/queueItem/why");
+ bool? stuck = XmlUtils.SelectSingleNodeBoolean(xml, "/*/queueItem/stuck");
+ string status = xml.SelectSingleNode("/*/color").InnerText;
+ string lastBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastBuild/url");
+ string lastCompletedBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastCompletedBuild/url");
+ string lastSuccessfulBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastSuccessfulBuild/url");
+ string lastFailedBuildUrl = XmlUtils.SelectSingleNodeText(xml, "/*/lastFailedBuild/url");
+
+ project.Queue.InQueue = (inQueue.HasValue && inQueue.Value == true);
+ if (!String.IsNullOrEmpty(inQueueSince))
+ {
+ TimeSpan ts = TimeSpan.FromSeconds(long.Parse(inQueueSince) / 1000);
+ DateTime date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+ date = date.Add(ts);
+ project.Queue.InQueueSince = date;
+ }
+ if (!String.IsNullOrEmpty(why))
+ {
+ project.Queue.Why = why;
+ }
+
+ AllBuildDetails res = new AllBuildDetails();
+ res.Status = GetStatus(status, stuck);
+ res.LastBuild = GetBuildDetails(credentials, lastBuildUrl, ignoreUntrustedCertificate);
+ res.LastCompletedBuild = GetBuildDetails(credentials, lastCompletedBuildUrl, ignoreUntrustedCertificate);
+ res.LastSuccessfulBuild = GetBuildDetails(credentials, lastSuccessfulBuildUrl, ignoreUntrustedCertificate);
+ res.LastFailedBuild = GetBuildDetails(credentials, lastFailedBuildUrl, ignoreUntrustedCertificate);
+
+ //logger.Info("Done updating project");
+ return res;
+ }
+
+ // http://javadoc.jenkins-ci.org/hudson/model/BallColor.html
+ private BuildStatus GetStatus(string status, bool? stuck)
+ {
+ BuildStatusEnum value;
+ if (status.StartsWith("grey"))
+ value = BuildStatusEnum.Indeterminate;
+ else if (status.StartsWith("blue") || status.StartsWith("green"))
+ value = BuildStatusEnum.Successful;
+ else if (status.StartsWith("yellow"))
+ value = BuildStatusEnum.Unstable;
+ else if (status.StartsWith("red"))
+ value = BuildStatusEnum.Failed;
+ else if (status.StartsWith("aborted"))
+ value = BuildStatusEnum.Aborted;
+ else if (status.StartsWith("disabled"))
+ value = BuildStatusEnum.Disabled;
+ else
+ value = BuildStatusEnum.Unknown;
+
+ bool isInProgress = status.EndsWith("_anime");
+ bool isStuck = (stuck.HasValue && stuck.Value == true);
+ return new BuildStatus(value, isInProgress, isStuck);
+ }
+
+ private BuildDetails GetBuildDetails(Credentials credentials, string buildUrl, bool ignoreUntrustedCertificate)
+ {
+ if (buildUrl == null)
+ return null;
+
+ String url = NetUtils.ConcatUrls(buildUrl, "/api/xml");
+
+ if (logger.IsDebugEnabled)
+ logger.Debug("Getting build details from " + url);
+
+ String xmlStr = DownloadString(credentials, url, true, ignoreUntrustedCertificate);
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("XML: " + xmlStr);
+
+ XmlDocument xml = new XmlDocument();
+ xml.LoadXml(xmlStr);
+
+ string number = xml.SelectSingleNode("/*/number").InnerText;
+ string fullDisplayName = xml.SelectSingleNode("/*/fullDisplayName").InnerText;
+ string timestamp = xml.SelectSingleNode("/*/timestamp").InnerText;
+ string estimatedDuration = xml.SelectSingleNode("/*/estimatedDuration").InnerText;
+ string duration = xml.SelectSingleNode("/*/duration").InnerText;
+ XmlNode xmlResult = xml.SelectSingleNode("/*/result");
+ string result = xmlResult == null ? string.Empty : xmlResult.InnerText;
+ XmlNodeList userNodes = xml.SelectNodes("/*/culprit/fullName");
+
+ TimeSpan ts = TimeSpan.FromSeconds(long.Parse(timestamp) / 1000);
+ DateTime date = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+ date = date.Add(ts);
+ TimeSpan estimatedts = TimeSpan.FromSeconds(long.Parse(estimatedDuration) / 1000);
+ TimeSpan durationts = TimeSpan.FromSeconds(long.Parse(estimatedDuration) / 1000);
+
+ ISet users = new HashedSet();
+ foreach (XmlNode userNode in userNodes)
+ {
+ string userName = StringUtils.ExtractUserName(userNode.InnerText);
+ users.Add(userName);
+ }
+
+ BuildDetails res = new BuildDetails();
+ BuildCauses.FillInBuildCauses(res, xml);
+ res.Number = int.Parse(number);
+ res.DisplayName = fullDisplayName;
+ res.Time = date;
+ res.EstimatedDuration = estimatedts;
+ res.Duration = durationts;
+ res.Result = BuildStatus.StringToBuildStatus(result);
+ res.Users = users;
+
+ ClaimService.FillInBuildDetails(res, xml);
+
+ if (logger.IsDebugEnabled)
+ logger.Debug("Done getting build details");
+
+ return res;
+ }
+
+ public void SafeRunBuild(Project project)
+ {
+ try
+ {
+ RunBuild(project);
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ throw ex;
+ }
+ }
+
+ public void RunBuild(Project project)
+ {
+ String url = NetUtils.ConcatUrls(project.Url, "/build?delay=0sec");
+
+ if (!string.IsNullOrEmpty(project.AuthenticationToken))
+ {
+ url = NetUtils.ConcatUrlsWithoutTrailingSlash(url, "&token=", HttpUtility.UrlEncodeUnicode(project.AuthenticationToken));
+ if (!string.IsNullOrEmpty(project.CauseText))
+ {
+ url = NetUtils.ConcatUrlsWithoutTrailingSlash(url, "&cause=", HttpUtility.UrlEncodeUnicode(project.CauseText));
+ }
+ }
+ logger.Info("Running build at " + url);
+
+ Credentials credentials = project.Server.Credentials;
+ String str = UploadString(credentials, url, project.Server.IgnoreUntrustedCertificate);
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Result: " + str);
+
+ logger.Info("Done running build");
+ }
+
+ private String DownloadString(Credentials credentials, string url, bool cacheable,
+ bool ignoreUntrustedCertificate)
+ {
+ string res;
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Downloading: " + url);
+
+ if (cacheable)
+ {
+ lock (this)
+ {
+ // mark the URL as visited
+ visitedURLs.Add(url);
+ // perform a lookup in the cache
+ if (cache.TryGetValue(url, out res))
+ {
+ if (logger.IsTraceEnabled)
+ logger.Trace("Cache hit: " + url);
+ return res;
+ }
+ }
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Cache miss: " + url);
+ }
+
+ // set the thread-static field
+ JenkinsService.ignoreUntrustedCertificate = ignoreUntrustedCertificate;
+
+ WebClient webClient = GetWebClient(credentials);
+ res = webClient.DownloadString(url);
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Downloaded: " + res);
+
+ if (cacheable)
+ {
+ lock (this)
+ {
+ // store in cache
+ cache[url] = res;
+ }
+ }
+
+ return res;
+ }
+
+ private String UploadString(Credentials credentials, string url, bool ignoreUntrustedCertificate)
+ {
+ string res;
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Uploading: " + url);
+
+ // set the thread-static field
+ JenkinsService.ignoreUntrustedCertificate = ignoreUntrustedCertificate;
+
+ WebClient webClient = GetWebClient(credentials);
+ webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
+ res = webClient.UploadString(url,"");
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Uploaded: " + res);
+
+ return res;
+ }
+
+ private WebClient GetWebClient(Credentials credentials)
+ {
+ if (threadWebClient == null)
+ {
+ logger.Info("Creating web client in thread " + Thread.CurrentThread.ManagedThreadId
+ + " (" + Thread.CurrentThread.Name + ")");
+ threadWebClient = new CookieAwareWebClient();
+ threadWebClient.Encoding = Encoding.UTF8;
+ }
+
+ // reinitialize HTTP headers
+ threadWebClient.Headers = new WebHeaderCollection();
+
+ // credentials
+ if (credentials != null)
+ {
+ string authentication = "Basic " + Convert.ToBase64String(
+ Encoding.ASCII.GetBytes(credentials.Username + ":" + credentials.Password));
+ threadWebClient.Headers.Add("Authorization", authentication);
+ }
+
+ return threadWebClient;
+ }
+
+ public void RecycleCache()
+ {
+ lock (this)
+ {
+ if (logger.IsTraceEnabled)
+ logger.Trace("Recycling cache: " + cache.Keys.Count + " items in cache");
+
+ var newCache = new Dictionary();
+
+ foreach (string visitedURL in visitedURLs)
+ {
+ string value;
+ if (cache.TryGetValue(visitedURL, out value))
+ newCache.Add(visitedURL, value);
+ }
+
+ cache = newCache;
+ visitedURLs.Clear();
+
+ if (logger.IsTraceEnabled)
+ logger.Trace("Recycling cache: " + cache.Keys.Count + " items in cache");
+ }
+ }
+
+ public void RemoveFromCache(string url)
+ {
+ lock (this)
+ {
+ cache.Remove(url);
+ }
+ }
+
+ public string GetConsolePage(Project project)
+ {
+ string res = project.Url;
+ bool hasBuild = HasBuild(project.AllBuildDetails);
+ if (hasBuild)
+ res += "lastBuild/console";
+ return res;
+ }
+
+ private bool HasBuild(AllBuildDetails allBuildDetails)
+ {
+ // no details, there is no build
+ if (allBuildDetails == null)
+ return false;
+ // if there is a completed build, there is a build
+ if (allBuildDetails.LastCompletedBuild != null)
+ return true;
+ // if there is a build in progress, there is a build
+ bool buildInProgress = allBuildDetails.Status.IsInProgress;
+ return buildInProgress;
+ }
+
+ private bool ValidateServerCertificate(object sender, X509Certificate certificate,
+ X509Chain chain, SslPolicyErrors sslPolicyErrors)
+ {
+ if (ignoreUntrustedCertificate == true)
+ return true;
+ return sslPolicyErrors == SslPolicyErrors.None;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/BusinessComponents/NotificationService.cs b/JenkinsTray/BusinessComponents/NotificationService.cs
similarity index 93%
rename from HudsonTrayTracker/BusinessComponents/NotificationService.cs
rename to JenkinsTray/BusinessComponents/NotificationService.cs
index 2e184c9..234c075 100644
--- a/HudsonTrayTracker/BusinessComponents/NotificationService.cs
+++ b/JenkinsTray/BusinessComponents/NotificationService.cs
@@ -1,53 +1,53 @@
-using System;
-using System.ComponentModel;
-using Hudson.TrayTracker.Entities;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class NotificationService : Component
- {
- private AllServersStatus allServersStatus = new AllServersStatus();
-
- public ConfigurationService ConfigurationService { get; set; }
- public ProjectsUpdateService UpdateService { private get; set; }
-
- public void Initialize()
- {
- ConfigurationService.ConfigurationUpdated += Execute;
- UpdateService.ProjectsUpdated += Execute;
- Disposed += delegate
- {
- ConfigurationService.ConfigurationUpdated -= Execute;
- UpdateService.ProjectsUpdated -= Execute;
- };
-
- //Execute();
- }
-
- public void Execute()
- {
- allServersStatus.Update(ConfigurationService.Servers);
-
- if (ConfigurationService.NotificationSettings.SoundNotifications)
- {
- string fileToPlay = null;
- if (allServersStatus.StillFailingProjects.Count > 0)
- fileToPlay = ConfigurationService.NotificationSettings.StillFailingSoundPath;
- else if (allServersStatus.FailingProjects.Count > 0)
- fileToPlay = ConfigurationService.NotificationSettings.FailedSoundPath;
- else if (allServersStatus.FixedProjects.Count > 0)
- fileToPlay = ConfigurationService.NotificationSettings.FixedSoundPath;
- else if (allServersStatus.SucceedingProjects.Count > 0)
- fileToPlay = ConfigurationService.NotificationSettings.SucceededSoundPath;
- if (fileToPlay != null)
- SoundPlayer.PlayFile(fileToPlay);
- }
- }
-
- private bool TreatAsFailure(BuildStatusEnum status)
- {
- return status == BuildStatusEnum.Failed
- || (status == BuildStatusEnum.Unstable && ConfigurationService.NotificationSettings.TreatUnstableAsFailed);
- }
- }
+using System;
+using System.ComponentModel;
+using Jenkins.Tray.Entities;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class NotificationService : Component
+ {
+ private AllServersStatus allServersStatus = new AllServersStatus();
+
+ public ConfigurationService ConfigurationService { get; set; }
+ public ProjectsUpdateService UpdateService { private get; set; }
+
+ public void Initialize()
+ {
+ ConfigurationService.ConfigurationUpdated += Execute;
+ UpdateService.ProjectsUpdated += Execute;
+ Disposed += delegate
+ {
+ ConfigurationService.ConfigurationUpdated -= Execute;
+ UpdateService.ProjectsUpdated -= Execute;
+ };
+
+ //Execute();
+ }
+
+ public void Execute()
+ {
+ allServersStatus.Update(ConfigurationService.Servers);
+
+ if (ConfigurationService.NotificationSettings.SoundNotifications)
+ {
+ string fileToPlay = null;
+ if (allServersStatus.StillFailingProjects.Count > 0)
+ fileToPlay = ConfigurationService.NotificationSettings.StillFailingSoundPath;
+ else if (allServersStatus.FailingProjects.Count > 0)
+ fileToPlay = ConfigurationService.NotificationSettings.FailedSoundPath;
+ else if (allServersStatus.FixedProjects.Count > 0)
+ fileToPlay = ConfigurationService.NotificationSettings.FixedSoundPath;
+ else if (allServersStatus.SucceedingProjects.Count > 0)
+ fileToPlay = ConfigurationService.NotificationSettings.SucceededSoundPath;
+ if (fileToPlay != null)
+ SoundPlayer.PlayFile(fileToPlay);
+ }
+ }
+
+ private bool TreatAsFailure(BuildStatusEnum status)
+ {
+ return status == BuildStatusEnum.Failed
+ || (status == BuildStatusEnum.Unstable && ConfigurationService.NotificationSettings.TreatUnstableAsFailed);
+ }
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/BusinessComponents/ProjectsUpdateService.cs b/JenkinsTray/BusinessComponents/ProjectsUpdateService.cs
similarity index 92%
rename from HudsonTrayTracker/BusinessComponents/ProjectsUpdateService.cs
rename to JenkinsTray/BusinessComponents/ProjectsUpdateService.cs
index 8e35a23..50f8e4d 100644
--- a/HudsonTrayTracker/BusinessComponents/ProjectsUpdateService.cs
+++ b/JenkinsTray/BusinessComponents/ProjectsUpdateService.cs
@@ -1,185 +1,185 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
-using Common.Logging;
-using System.Reflection;
-using Hudson.TrayTracker.Entities;
-using System.ComponentModel;
-using Hudson.TrayTracker.Utils.Logging;
-using Iesi.Collections.Generic;
-using Amib.Threading;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public class ProjectsUpdateService
- {
- public enum UpdateSource
- {
- User,
- Timer,
- Program
- }
-
- public delegate void ProjectsUpdatedHandler();
- public event ProjectsUpdatedHandler ProjectsUpdated;
-
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
-#if !DEBUG
- const int TOTAL_THREAD_COUNT = 8;
- const int THREAD_COUNT_BY_DOMAIN = 4;
-#else
- const int TOTAL_THREAD_COUNT = 1;
- const int THREAD_COUNT_BY_DOMAIN = 1;
-#endif
-
- SmartThreadPool threadPool = new SmartThreadPool(3600, TOTAL_THREAD_COUNT, TOTAL_THREAD_COUNT);
-
- Timer timer;
- bool updating;
-
- public ConfigurationService ConfigurationService { get; set; }
- public HudsonService HudsonService { get; set; }
-
- public ProjectsUpdateService()
- {
- }
-
- public void Initialize()
- {
- timer = new Timer(UpdateProjects, null, 0, Timeout.Infinite);
- }
-
- public void UpdateProjects()
- {
- var worker = new BackgroundWorker();
- worker.DoWork += delegate
- {
- DoUpdateProjects(UpdateSource.User);
- };
- worker.RunWorkerAsync();
- }
-
- private void UpdateProjects(object state)
- {
- DoUpdateProjects(UpdateSource.Timer);
-
- int timeBetweenUpdates = ConfigurationService.GeneralSettings.RefreshIntervalInSeconds * 1000;
- timer.Change(timeBetweenUpdates, Timeout.Infinite);
- }
-
- private void DoUpdateProjects(UpdateSource source)
- {
- logger.Info("Running update from " + source);
-
- lock (this)
- {
- if (updating)
- {
- logger.Info("Already in update: skipping");
- return;
- }
- updating = true;
- }
-
- try
- {
- DoUpdateProjectsInternal();
- HudsonService.RecycleCache();
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- throw;
- }
- finally
- {
- lock (this)
- {
- updating = false;
- }
- }
-
- logger.Info("Done");
- }
-
- private void DoUpdateProjectsInternal()
- {
- IDictionary> projectsByServer = ConfigurationService.GetProjects();
- var allWorkItemsGroup = new List();
- var allFutureBuildDetails = new Dictionary();
-
- foreach (KeyValuePair> pair in projectsByServer)
- {
- Server server = pair.Key;
- ISet projects = pair.Value;
-
- IWorkItemsGroup workItemsGroup = threadPool.CreateWorkItemsGroup(THREAD_COUNT_BY_DOMAIN);
- allWorkItemsGroup.Add(workItemsGroup);
-
- foreach (Project project in projects)
- {
- WorkItemCallback work = delegate(object state)
- {
- AllBuildDetails newBuildDetail = null;
- try
- {
- Project project_ = (Project)state;
- newBuildDetail = HudsonService.UpdateProject(project_);
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- }
- return newBuildDetail;
- };
- IWorkItemResult futureRes = workItemsGroup.QueueWorkItem(work, project);
- allFutureBuildDetails[project] = futureRes;
- }
- }
-
- foreach (IWorkItemsGroup workItemsGroup in allWorkItemsGroup)
- {
- workItemsGroup.WaitForIdle();
- }
-
- foreach (ISet projects in projectsByServer.Values)
- {
- foreach (Project project in projects)
- {
- IWorkItemResult newStatus;
- allFutureBuildDetails.TryGetValue(project, out newStatus);
- AllBuildDetails previousAllBuildDetails = project.AllBuildDetails;
- if (newStatus != null)
- {
- project.AllBuildDetails = (AllBuildDetails)newStatus.Result;
- project.Activity.HasNewBuild = false;
-
- if (previousAllBuildDetails != null && project.AllBuildDetails != null )
- {
- project.PreviousStatus = previousAllBuildDetails.Status;
-
- if (previousAllBuildDetails.LastBuild != null && project.AllBuildDetails.LastBuild != null)
- {
- // Has existing LastBuilds
- if (previousAllBuildDetails.LastBuild.Number != project.AllBuildDetails.LastBuild.Number)
- {
- project.Activity.HasNewBuild = true;
- }
- }
- else if (previousAllBuildDetails.LastBuild == null && project.AllBuildDetails.LastBuild != null)
- {
- // 1st new LastBuild is found
- project.Activity.HasNewBuild = true;
- }
- }
- }
- }
- }
-
- if (ProjectsUpdated != null)
- ProjectsUpdated();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+using Common.Logging;
+using System.Reflection;
+using Jenkins.Tray.Entities;
+using System.ComponentModel;
+using Jenkins.Tray.Utils.Logging;
+using Iesi.Collections.Generic;
+using Amib.Threading;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public class ProjectsUpdateService
+ {
+ public enum UpdateSource
+ {
+ User,
+ Timer,
+ Program
+ }
+
+ public delegate void ProjectsUpdatedHandler();
+ public event ProjectsUpdatedHandler ProjectsUpdated;
+
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+#if !DEBUG
+ const int TOTAL_THREAD_COUNT = 8;
+ const int THREAD_COUNT_BY_DOMAIN = 4;
+#else
+ const int TOTAL_THREAD_COUNT = 1;
+ const int THREAD_COUNT_BY_DOMAIN = 1;
+#endif
+
+ SmartThreadPool threadPool = new SmartThreadPool(3600, TOTAL_THREAD_COUNT, TOTAL_THREAD_COUNT);
+
+ Timer timer;
+ bool updating;
+
+ public ConfigurationService ConfigurationService { get; set; }
+ public JenkinsService JenkinsService { get; set; }
+
+ public ProjectsUpdateService()
+ {
+ }
+
+ public void Initialize()
+ {
+ timer = new Timer(UpdateProjects, null, 0, Timeout.Infinite);
+ }
+
+ public void UpdateProjects()
+ {
+ var worker = new BackgroundWorker();
+ worker.DoWork += delegate
+ {
+ DoUpdateProjects(UpdateSource.User);
+ };
+ worker.RunWorkerAsync();
+ }
+
+ private void UpdateProjects(object state)
+ {
+ DoUpdateProjects(UpdateSource.Timer);
+
+ int timeBetweenUpdates = ConfigurationService.GeneralSettings.RefreshIntervalInSeconds * 1000;
+ timer.Change(timeBetweenUpdates, Timeout.Infinite);
+ }
+
+ private void DoUpdateProjects(UpdateSource source)
+ {
+ logger.Info("Running update from " + source);
+
+ lock (this)
+ {
+ if (updating)
+ {
+ logger.Info("Already in update: skipping");
+ return;
+ }
+ updating = true;
+ }
+
+ try
+ {
+ DoUpdateProjectsInternal();
+ JenkinsService.RecycleCache();
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ throw;
+ }
+ finally
+ {
+ lock (this)
+ {
+ updating = false;
+ }
+ }
+
+ logger.Info("Done");
+ }
+
+ private void DoUpdateProjectsInternal()
+ {
+ IDictionary> projectsByServer = ConfigurationService.GetProjects();
+ var allWorkItemsGroup = new List();
+ var allFutureBuildDetails = new Dictionary();
+
+ foreach (KeyValuePair> pair in projectsByServer)
+ {
+ Server server = pair.Key;
+ ISet projects = pair.Value;
+
+ IWorkItemsGroup workItemsGroup = threadPool.CreateWorkItemsGroup(THREAD_COUNT_BY_DOMAIN);
+ allWorkItemsGroup.Add(workItemsGroup);
+
+ foreach (Project project in projects)
+ {
+ WorkItemCallback work = delegate(object state)
+ {
+ AllBuildDetails newBuildDetail = null;
+ try
+ {
+ Project project_ = (Project)state;
+ newBuildDetail = JenkinsService.UpdateProject(project_);
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ }
+ return newBuildDetail;
+ };
+ IWorkItemResult futureRes = workItemsGroup.QueueWorkItem(work, project);
+ allFutureBuildDetails[project] = futureRes;
+ }
+ }
+
+ foreach (IWorkItemsGroup workItemsGroup in allWorkItemsGroup)
+ {
+ workItemsGroup.WaitForIdle();
+ }
+
+ foreach (ISet projects in projectsByServer.Values)
+ {
+ foreach (Project project in projects)
+ {
+ IWorkItemResult newStatus;
+ allFutureBuildDetails.TryGetValue(project, out newStatus);
+ AllBuildDetails previousAllBuildDetails = project.AllBuildDetails;
+ if (newStatus != null)
+ {
+ project.AllBuildDetails = (AllBuildDetails)newStatus.Result;
+ project.Activity.HasNewBuild = false;
+
+ if (previousAllBuildDetails != null && project.AllBuildDetails != null )
+ {
+ project.PreviousStatus = previousAllBuildDetails.Status;
+
+ if (previousAllBuildDetails.LastBuild != null && project.AllBuildDetails.LastBuild != null)
+ {
+ // Has existing LastBuilds
+ if (previousAllBuildDetails.LastBuild.Number != project.AllBuildDetails.LastBuild.Number)
+ {
+ project.Activity.HasNewBuild = true;
+ }
+ }
+ else if (previousAllBuildDetails.LastBuild == null && project.AllBuildDetails.LastBuild != null)
+ {
+ // 1st new LastBuild is found
+ project.Activity.HasNewBuild = true;
+ }
+ }
+ }
+ }
+ }
+
+ if (ProjectsUpdated != null)
+ ProjectsUpdated();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/BusinessComponents/SoundPlayer.cs b/JenkinsTray/BusinessComponents/SoundPlayer.cs
similarity index 94%
rename from HudsonTrayTracker/BusinessComponents/SoundPlayer.cs
rename to JenkinsTray/BusinessComponents/SoundPlayer.cs
index c0ea061..f768142 100644
--- a/HudsonTrayTracker/BusinessComponents/SoundPlayer.cs
+++ b/JenkinsTray/BusinessComponents/SoundPlayer.cs
@@ -1,40 +1,40 @@
-using System.IO;
-using System.Runtime.InteropServices;
-using Common.Logging;
-using System.Reflection;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- public static class SoundPlayer
- {
- private enum Flags
- {
- SND_SYNC = 0x0000, /* play synchronously (default) */
- SND_ASYNC = 0x0001, /* play asynchronously */
- SND_NODEFAULT = 0x0002, /* silence (!default) if sound not found */
- SND_MEMORY = 0x0004, /* pszSound points to a memory file */
- SND_LOOP = 0x0008, /* loop the sound until next sndPlaySound */
- SND_NOSTOP = 0x0010, /* don't stop any currently playing sound */
- SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */
- SND_ALIAS = 0x00010000, /* name is a registry alias */
- SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */
- SND_FILENAME = 0x00020000, /* name is file name */
- SND_RESOURCE = 0x00040004 /* name is resource name or atom */
- }
-
- [DllImport("winmm.dll")]
- static extern bool PlaySound(string file, int module, int flags);
-
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- public static void PlayFile(string filePath)
- {
- logger.Debug("Playing sound: " + filePath);
-
- if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
- {
- PlaySound(filePath, 0, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));
- }
- }
- }
+using System.IO;
+using System.Runtime.InteropServices;
+using Common.Logging;
+using System.Reflection;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ public static class SoundPlayer
+ {
+ private enum Flags
+ {
+ SND_SYNC = 0x0000, /* play synchronously (default) */
+ SND_ASYNC = 0x0001, /* play asynchronously */
+ SND_NODEFAULT = 0x0002, /* silence (!default) if sound not found */
+ SND_MEMORY = 0x0004, /* pszSound points to a memory file */
+ SND_LOOP = 0x0008, /* loop the sound until next sndPlaySound */
+ SND_NOSTOP = 0x0010, /* don't stop any currently playing sound */
+ SND_NOWAIT = 0x00002000, /* don't wait if the driver is busy */
+ SND_ALIAS = 0x00010000, /* name is a registry alias */
+ SND_ALIAS_ID = 0x00110000, /* alias is a predefined ID */
+ SND_FILENAME = 0x00020000, /* name is file name */
+ SND_RESOURCE = 0x00040004 /* name is resource name or atom */
+ }
+
+ [DllImport("winmm.dll")]
+ static extern bool PlaySound(string file, int module, int flags);
+
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ public static void PlayFile(string filePath)
+ {
+ logger.Debug("Playing sound: " + filePath);
+
+ if (!string.IsNullOrEmpty(filePath) && File.Exists(filePath))
+ {
+ PlaySound(filePath, 0, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/JenkinsTray/Configuration.xml b/JenkinsTray/Configuration.xml
new file mode 100644
index 0000000..c2b8562
--- /dev/null
+++ b/JenkinsTray/Configuration.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/Entities/AllBuildDetails.cs b/JenkinsTray/Entities/AllBuildDetails.cs
similarity index 89%
rename from HudsonTrayTracker/Entities/AllBuildDetails.cs
rename to JenkinsTray/Entities/AllBuildDetails.cs
index 1ad8ccd..38a84ef 100644
--- a/HudsonTrayTracker/Entities/AllBuildDetails.cs
+++ b/JenkinsTray/Entities/AllBuildDetails.cs
@@ -1,16 +1,16 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Hudson.TrayTracker.Entities
-{
- public class AllBuildDetails
- {
- public BuildStatus Status { get; set; }
- public BuildStatus PreviousStatus { get; set; }
- public BuildDetails LastBuild { get; set; }
- public BuildDetails LastCompletedBuild { get; set; }
- public BuildDetails LastSuccessfulBuild { get; set; }
- public BuildDetails LastFailedBuild { get; set; }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Jenkins.Tray.Entities
+{
+ public class AllBuildDetails
+ {
+ public BuildStatus Status { get; set; }
+ public BuildStatus PreviousStatus { get; set; }
+ public BuildDetails LastBuild { get; set; }
+ public BuildDetails LastCompletedBuild { get; set; }
+ public BuildDetails LastSuccessfulBuild { get; set; }
+ public BuildDetails LastFailedBuild { get; set; }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/BuildCause.cs b/JenkinsTray/Entities/BuildCause.cs
similarity index 96%
rename from HudsonTrayTracker/Entities/BuildCause.cs
rename to JenkinsTray/Entities/BuildCause.cs
index 8be8082..6e5a962 100644
--- a/HudsonTrayTracker/Entities/BuildCause.cs
+++ b/JenkinsTray/Entities/BuildCause.cs
@@ -1,131 +1,131 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Xml;
-using Iesi.Collections.Generic;
-
-namespace Hudson.TrayTracker.Entities
-{
- public enum BuildCauseEnum
- {
- Unknown,
- SCM,
- Timer,
- User,
- UpstreamProject,
- RemoteHost
- }
-
- public class BuildCause
- {
- public string ShortDescription { get; set; }
- public string Starter { get; set; }
- public string UserID { get; set; }
- public BuildCauseEnum Cause;
-
- public BuildCause()
- {
-
- }
- }
-
- public class BuildCauses
- {
- public ISet Causes;
- public bool? HasUniqueCauses { get; set; }
-
- public BuildCauses()
- {
- Causes = new HashedSet();
- HasUniqueCauses = null;
- }
-
- public BuildCause FirstBuildCause
- {
- get
- {
- BuildCause first = null;
- if (HasUniqueCauses == true)
- {
- using (IEnumerator enumer = Causes.GetEnumerator())
- {
- if (enumer.MoveNext())
- first = enumer.Current;
- }
- }
- return first;
- }
- }
-
- public static void FillInBuildCauses(BuildDetails res, XmlDocument xml)
- {
- XmlNodeList causes = xml.SelectNodes("/*/action/cause");
- res.Causes = new BuildCauses();
- res.Causes.HasUniqueCauses = null;
- BuildCauseEnum causeEnum = BuildCauseEnum.Unknown;
-
- foreach (XmlNode causeNode in causes)
- {
- string causeShortDesc = causeNode["shortDescription"].InnerText;
- BuildCause cause = new BuildCause();
- cause.ShortDescription = causeShortDesc;
-
- if (causeShortDesc.StartsWith("Started by user"))
- {
- cause.Cause = BuildCauseEnum.User;
- var userName = causeNode["userName"];
- if (userName != null && userName.InnerText.Length > 0)
- {
- cause.Starter = userName.InnerText.ToString();
- }
- var userID = causeNode["userId"];
- if (userID != null && userID.InnerText.Length > 0)
- {
- cause.UserID = userID.InnerText.ToString();
- }
- }
- else if (causeShortDesc.StartsWith("Started by Timer", StringComparison.CurrentCultureIgnoreCase))
- {
- cause.Cause = BuildCauseEnum.Timer;
- }
- else if (causeShortDesc.StartsWith("Started by Upstream Project", StringComparison.CurrentCultureIgnoreCase))
- {
- cause.Cause = BuildCauseEnum.UpstreamProject;
- var upstreamProject = causeNode["upstreamProject"];
- if (upstreamProject != null && upstreamProject.InnerText.Length > 0)
- {
- cause.Starter = upstreamProject.InnerText.ToString();
- }
- }
- else if (causeShortDesc.StartsWith("Started by an SCM change", StringComparison.CurrentCultureIgnoreCase))
- {
- cause.Cause = BuildCauseEnum.SCM;
- }
- else if (causeShortDesc.StartsWith("Started by remote host", StringComparison.CurrentCultureIgnoreCase))
- {
- cause.Cause = BuildCauseEnum.RemoteHost;
- string startedBy = @"Started by remote host ";
- string remoteHost = causeShortDesc.Remove(0, startedBy.Length);
- int index = remoteHost.IndexOf(" with note: ");
- cause.Starter = index > 0 ? remoteHost.Remove(index) : remoteHost;
- }
- else
- {
- cause.Cause = BuildCauseEnum.Unknown;
- }
- if (res.Causes.HasUniqueCauses == null)
- {
- causeEnum = cause.Cause;
- res.Causes.HasUniqueCauses = true;
- }
- else
- {
- if (cause.Cause != causeEnum)
- res.Causes.HasUniqueCauses = false;
- }
- res.Causes.Causes.Add(cause);
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml;
+using Iesi.Collections.Generic;
+
+namespace Jenkins.Tray.Entities
+{
+ public enum BuildCauseEnum
+ {
+ Unknown,
+ SCM,
+ Timer,
+ User,
+ UpstreamProject,
+ RemoteHost
+ }
+
+ public class BuildCause
+ {
+ public string ShortDescription { get; set; }
+ public string Starter { get; set; }
+ public string UserID { get; set; }
+ public BuildCauseEnum Cause;
+
+ public BuildCause()
+ {
+
+ }
+ }
+
+ public class BuildCauses
+ {
+ public ISet Causes;
+ public bool? HasUniqueCauses { get; set; }
+
+ public BuildCauses()
+ {
+ Causes = new HashedSet();
+ HasUniqueCauses = null;
+ }
+
+ public BuildCause FirstBuildCause
+ {
+ get
+ {
+ BuildCause first = null;
+ if (HasUniqueCauses == true)
+ {
+ using (IEnumerator enumer = Causes.GetEnumerator())
+ {
+ if (enumer.MoveNext())
+ first = enumer.Current;
+ }
+ }
+ return first;
+ }
+ }
+
+ public static void FillInBuildCauses(BuildDetails res, XmlDocument xml)
+ {
+ XmlNodeList causes = xml.SelectNodes("/*/action/cause");
+ res.Causes = new BuildCauses();
+ res.Causes.HasUniqueCauses = null;
+ BuildCauseEnum causeEnum = BuildCauseEnum.Unknown;
+
+ foreach (XmlNode causeNode in causes)
+ {
+ string causeShortDesc = causeNode["shortDescription"].InnerText;
+ BuildCause cause = new BuildCause();
+ cause.ShortDescription = causeShortDesc;
+
+ if (causeShortDesc.StartsWith("Started by user"))
+ {
+ cause.Cause = BuildCauseEnum.User;
+ var userName = causeNode["userName"];
+ if (userName != null && userName.InnerText.Length > 0)
+ {
+ cause.Starter = userName.InnerText.ToString();
+ }
+ var userID = causeNode["userId"];
+ if (userID != null && userID.InnerText.Length > 0)
+ {
+ cause.UserID = userID.InnerText.ToString();
+ }
+ }
+ else if (causeShortDesc.StartsWith("Started by Timer", StringComparison.CurrentCultureIgnoreCase))
+ {
+ cause.Cause = BuildCauseEnum.Timer;
+ }
+ else if (causeShortDesc.StartsWith("Started by Upstream Project", StringComparison.CurrentCultureIgnoreCase))
+ {
+ cause.Cause = BuildCauseEnum.UpstreamProject;
+ var upstreamProject = causeNode["upstreamProject"];
+ if (upstreamProject != null && upstreamProject.InnerText.Length > 0)
+ {
+ cause.Starter = upstreamProject.InnerText.ToString();
+ }
+ }
+ else if (causeShortDesc.StartsWith("Started by an SCM change", StringComparison.CurrentCultureIgnoreCase))
+ {
+ cause.Cause = BuildCauseEnum.SCM;
+ }
+ else if (causeShortDesc.StartsWith("Started by remote host", StringComparison.CurrentCultureIgnoreCase))
+ {
+ cause.Cause = BuildCauseEnum.RemoteHost;
+ string startedBy = @"Started by remote host ";
+ string remoteHost = causeShortDesc.Remove(0, startedBy.Length);
+ int index = remoteHost.IndexOf(" with note: ");
+ cause.Starter = index > 0 ? remoteHost.Remove(index) : remoteHost;
+ }
+ else
+ {
+ cause.Cause = BuildCauseEnum.Unknown;
+ }
+ if (res.Causes.HasUniqueCauses == null)
+ {
+ causeEnum = cause.Cause;
+ res.Causes.HasUniqueCauses = true;
+ }
+ else
+ {
+ if (cause.Cause != causeEnum)
+ res.Causes.HasUniqueCauses = false;
+ }
+ res.Causes.Causes.Add(cause);
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/BuildDetails.cs b/JenkinsTray/Entities/BuildDetails.cs
similarity index 92%
rename from HudsonTrayTracker/Entities/BuildDetails.cs
rename to JenkinsTray/Entities/BuildDetails.cs
index 9b0e954..4cf7198 100644
--- a/HudsonTrayTracker/Entities/BuildDetails.cs
+++ b/JenkinsTray/Entities/BuildDetails.cs
@@ -1,23 +1,23 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Diagnostics;
-using Iesi.Collections.Generic;
-
-namespace Hudson.TrayTracker.Entities
-{
- [DebuggerDisplay("BuildNumber={Number}, Result={Result}")]
- public class BuildDetails
- {
- public BuildCauses Causes { get; set; }
- public int Number { get; set; }
- public string Url { get; set; }
- public string DisplayName { get; set; }
- public DateTime Time { get; set; }
- public TimeSpan EstimatedDuration { get; set; }
- public TimeSpan Duration { get; set; }
- public BuildStatusEnum Result { get; set; }
- public ISet Users { get; set; }
- public ClaimDetails ClaimDetails { get; set; }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Diagnostics;
+using Iesi.Collections.Generic;
+
+namespace Jenkins.Tray.Entities
+{
+ [DebuggerDisplay("BuildNumber={Number}, Result={Result}")]
+ public class BuildDetails
+ {
+ public BuildCauses Causes { get; set; }
+ public int Number { get; set; }
+ public string Url { get; set; }
+ public string DisplayName { get; set; }
+ public DateTime Time { get; set; }
+ public TimeSpan EstimatedDuration { get; set; }
+ public TimeSpan Duration { get; set; }
+ public BuildStatusEnum Result { get; set; }
+ public ISet Users { get; set; }
+ public ClaimDetails ClaimDetails { get; set; }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/BuildStatus.cs b/JenkinsTray/Entities/BuildStatus.cs
similarity index 95%
rename from HudsonTrayTracker/Entities/BuildStatus.cs
rename to JenkinsTray/Entities/BuildStatus.cs
index 83248e1..dc2b272 100644
--- a/HudsonTrayTracker/Entities/BuildStatus.cs
+++ b/JenkinsTray/Entities/BuildStatus.cs
@@ -1,126 +1,126 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Diagnostics;
-
-namespace Hudson.TrayTracker.Entities
-{
- public enum BuildStatusEnum
- {
- Unknown,
- Disabled,
- Aborted,
- Successful,
- Indeterminate,
- Unstable,
- Failed,
- }
-
- [DebuggerDisplay("Status={Value}, InProgress={IsInProgress}, Stuck={IsStuck}")]
- public class BuildStatus
- {
- public static readonly BuildStatus UNKNOWN_BUILD_STATUS = new BuildStatus(BuildStatusEnum.Unknown, false, false);
-
- public readonly BuildStatusEnum Value;
- public readonly bool IsInProgress;
- public readonly bool IsStuck;
-
- private static readonly string SUCCESS = "success";
- private static readonly string FAILURE = "failure";
- private static readonly string UNSTABLE = "unstable";
- private static readonly string ABORTED = "aborted";
-
- public BuildStatus(BuildStatusEnum value, bool isInProgress, bool isStuck)
- {
- this.Value = value;
- this.IsInProgress = isInProgress;
- this.IsStuck = isStuck;
- }
-
- // http://javadoc.jenkins-ci.org/hudson/model/Result.html
- public static BuildStatusEnum StringToBuildStatus(string result)
- {
- BuildStatusEnum status = BuildStatusEnum.Unknown;
-
- result = result.ToLower();
- if (result == SUCCESS)
- {
- status = BuildStatusEnum.Successful;
- }
- else if (result == FAILURE)
- {
- status = BuildStatusEnum.Failed;
- }
- else if (result == UNSTABLE)
- {
- status = BuildStatusEnum.Unstable;
- }
- else if (result == ABORTED)
- {
- status = BuildStatusEnum.Aborted;
- }
- return status;
- }
-
- public string Key
- {
- get
- {
- string res = Value.ToString();
- if (IsInProgress)
- res += "_BuildInProgress";
- if (IsStuck)
- res += "_Stuck";
- return res;
- }
- }
-
- public override string ToString()
- {
- string toString = null;
-
- switch (this.Value)
- {
- case BuildStatusEnum.Successful:
- toString = SUCCESS;
- break;
- case BuildStatusEnum.Failed:
- toString = FAILURE;
- break;
- case BuildStatusEnum.Unstable:
- toString = UNSTABLE;
- break;
- case BuildStatusEnum.Aborted:
- toString = ABORTED;
- break;
- default:
- toString = base.ToString();
- break;
- }
- return toString;
- }
- }
-
- public static class BuildStatusUtils
- {
- public static bool IsWorse(BuildStatus status, BuildStatus thanStatus)
- {
- bool res = status.Value > thanStatus.Value;
- return res;
- }
-
- public static BuildStatus DegradeStatus(BuildStatus status)
- {
- return new BuildStatus(status.Value, false, status.IsStuck);
- }
-
- public static bool IsErrorBuild(BuildStatus status)
- {
- return IsErrorBuild(status.Value);
- }
- public static bool IsErrorBuild(BuildStatusEnum status)
- {
- return status == BuildStatusEnum.Failed;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Diagnostics;
+
+namespace Jenkins.Tray.Entities
+{
+ public enum BuildStatusEnum
+ {
+ Unknown,
+ Disabled,
+ Aborted,
+ Successful,
+ Indeterminate,
+ Unstable,
+ Failed,
+ }
+
+ [DebuggerDisplay("Status={Value}, InProgress={IsInProgress}, Stuck={IsStuck}")]
+ public class BuildStatus
+ {
+ public static readonly BuildStatus UNKNOWN_BUILD_STATUS = new BuildStatus(BuildStatusEnum.Unknown, false, false);
+
+ public readonly BuildStatusEnum Value;
+ public readonly bool IsInProgress;
+ public readonly bool IsStuck;
+
+ private static readonly string SUCCESS = "success";
+ private static readonly string FAILURE = "failure";
+ private static readonly string UNSTABLE = "unstable";
+ private static readonly string ABORTED = "aborted";
+
+ public BuildStatus(BuildStatusEnum value, bool isInProgress, bool isStuck)
+ {
+ this.Value = value;
+ this.IsInProgress = isInProgress;
+ this.IsStuck = isStuck;
+ }
+
+ // http://javadoc.jenkins-ci.org/hudson/model/Result.html
+ public static BuildStatusEnum StringToBuildStatus(string result)
+ {
+ BuildStatusEnum status = BuildStatusEnum.Unknown;
+
+ result = result.ToLower();
+ if (result == SUCCESS)
+ {
+ status = BuildStatusEnum.Successful;
+ }
+ else if (result == FAILURE)
+ {
+ status = BuildStatusEnum.Failed;
+ }
+ else if (result == UNSTABLE)
+ {
+ status = BuildStatusEnum.Unstable;
+ }
+ else if (result == ABORTED)
+ {
+ status = BuildStatusEnum.Aborted;
+ }
+ return status;
+ }
+
+ public string Key
+ {
+ get
+ {
+ string res = Value.ToString();
+ if (IsInProgress)
+ res += "_BuildInProgress";
+ if (IsStuck)
+ res += "_Stuck";
+ return res;
+ }
+ }
+
+ public override string ToString()
+ {
+ string toString = null;
+
+ switch (this.Value)
+ {
+ case BuildStatusEnum.Successful:
+ toString = SUCCESS;
+ break;
+ case BuildStatusEnum.Failed:
+ toString = FAILURE;
+ break;
+ case BuildStatusEnum.Unstable:
+ toString = UNSTABLE;
+ break;
+ case BuildStatusEnum.Aborted:
+ toString = ABORTED;
+ break;
+ default:
+ toString = base.ToString();
+ break;
+ }
+ return toString;
+ }
+ }
+
+ public static class BuildStatusUtils
+ {
+ public static bool IsWorse(BuildStatus status, BuildStatus thanStatus)
+ {
+ bool res = status.Value > thanStatus.Value;
+ return res;
+ }
+
+ public static BuildStatus DegradeStatus(BuildStatus status)
+ {
+ return new BuildStatus(status.Value, false, status.IsStuck);
+ }
+
+ public static bool IsErrorBuild(BuildStatus status)
+ {
+ return IsErrorBuild(status.Value);
+ }
+ public static bool IsErrorBuild(BuildStatusEnum status)
+ {
+ return status == BuildStatusEnum.Failed;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/BuildTransition.cs b/JenkinsTray/Entities/BuildTransition.cs
similarity index 98%
rename from HudsonTrayTracker/Entities/BuildTransition.cs
rename to JenkinsTray/Entities/BuildTransition.cs
index d7abf58..c58b427 100644
--- a/HudsonTrayTracker/Entities/BuildTransition.cs
+++ b/JenkinsTray/Entities/BuildTransition.cs
@@ -4,7 +4,7 @@
using System.Text;
using System.Windows.Forms;
-namespace Hudson.TrayTracker.Entities
+namespace Jenkins.Tray.Entities
{
public class BuildTransition
{
diff --git a/HudsonTrayTracker/Entities/ClaimDetails.cs b/JenkinsTray/Entities/ClaimDetails.cs
similarity index 82%
rename from HudsonTrayTracker/Entities/ClaimDetails.cs
rename to JenkinsTray/Entities/ClaimDetails.cs
index 9fc136e..cce2ab3 100644
--- a/HudsonTrayTracker/Entities/ClaimDetails.cs
+++ b/JenkinsTray/Entities/ClaimDetails.cs
@@ -1,13 +1,13 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Iesi.Collections.Generic;
-
-namespace Hudson.TrayTracker.Entities
-{
- public class ClaimDetails
- {
- public string User { get; set; }
- public string Reason { get; set; }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Iesi.Collections.Generic;
+
+namespace Jenkins.Tray.Entities
+{
+ public class ClaimDetails
+ {
+ public string User { get; set; }
+ public string Reason { get; set; }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/Configuration.cs b/JenkinsTray/Entities/Configuration.cs
similarity index 86%
rename from HudsonTrayTracker/Entities/Configuration.cs
rename to JenkinsTray/Entities/Configuration.cs
index b404ffa..dece249 100644
--- a/HudsonTrayTracker/Entities/Configuration.cs
+++ b/JenkinsTray/Entities/Configuration.cs
@@ -1,30 +1,30 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Iesi.Collections.Generic;
-using Newtonsoft.Json;
-using Hudson.TrayTracker.Utils.Serialization;
-
-namespace Hudson.TrayTracker.Entities
-{
- [JsonObject(MemberSerialization.OptIn)]
- public class Configuration
- {
- [JsonProperty("servers")]
- public ISet Servers { get; set; }
-
- [JsonProperty("notificationSettings")]
- public NotificationSettings NotificationSettings { get; set; }
-
- [JsonProperty("generalSettings")]
- public GeneralSettings GeneralSettings { get; set; }
-
- public Configuration()
- {
- Servers = new HashedSet();
- NotificationSettings = new NotificationSettings();
- GeneralSettings = new GeneralSettings();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Iesi.Collections.Generic;
+using Newtonsoft.Json;
+using Jenkins.Tray.Utils.Serialization;
+
+namespace Jenkins.Tray.Entities
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ public class Configuration
+ {
+ [JsonProperty("servers")]
+ public ISet Servers { get; set; }
+
+ [JsonProperty("notificationSettings")]
+ public NotificationSettings NotificationSettings { get; set; }
+
+ [JsonProperty("generalSettings")]
+ public GeneralSettings GeneralSettings { get; set; }
+
+ public Configuration()
+ {
+ Servers = new HashedSet();
+ NotificationSettings = new NotificationSettings();
+ GeneralSettings = new GeneralSettings();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/Credentials.cs b/JenkinsTray/Entities/Credentials.cs
similarity index 89%
rename from HudsonTrayTracker/Entities/Credentials.cs
rename to JenkinsTray/Entities/Credentials.cs
index d876b5c..271415d 100644
--- a/HudsonTrayTracker/Entities/Credentials.cs
+++ b/JenkinsTray/Entities/Credentials.cs
@@ -1,26 +1,26 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Hudson.TrayTracker.Entities
-{
- public class Credentials
- {
- public string Username { get; set; }
- public string Password { get; set; }
-
- public Credentials()
- {
- }
-
- public Credentials(string username, string password)
- {
- if (username == null)
- throw new ArgumentNullException("username");
- if (password == null)
- password = "";
- this.Username = username;
- this.Password = password;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Jenkins.Tray.Entities
+{
+ public class Credentials
+ {
+ public string Username { get; set; }
+ public string Password { get; set; }
+
+ public Credentials()
+ {
+ }
+
+ public Credentials(string username, string password)
+ {
+ if (username == null)
+ throw new ArgumentNullException("username");
+ if (password == null)
+ password = "";
+ this.Username = username;
+ this.Password = password;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/GeneralSettings.cs b/JenkinsTray/Entities/GeneralSettings.cs
similarity index 88%
rename from HudsonTrayTracker/Entities/GeneralSettings.cs
rename to JenkinsTray/Entities/GeneralSettings.cs
index 9ac45a8..4956a04 100644
--- a/HudsonTrayTracker/Entities/GeneralSettings.cs
+++ b/JenkinsTray/Entities/GeneralSettings.cs
@@ -1,36 +1,36 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json;
-using Hudson.TrayTracker.BusinessComponents;
-
-namespace Hudson.TrayTracker.Entities
-{
- [JsonObject(MemberSerialization.OptIn)]
- public class GeneralSettings
- {
- // 15 seconds
- const int DEFAULT_TIME_BETWEEN_UPDATES = 15;
-
- [JsonProperty("refreshIntervalInSeconds")]
- public int RefreshIntervalInSeconds { get; set; }
-
- [JsonProperty("updateMainWindowIcon")]
- public bool UpdateMainWindowIcon { get; set; }
-
- [JsonProperty("integrateWithClaimPlugin")]
- public bool IntegrateWithClaimPlugin { get; set; }
-
- [JsonProperty("checkForUpdates")]
- public bool CheckForUpdates { get; set; }
-
- public ApplicationUpdateService ApplicationUpdateService { get; set; }
-
- public GeneralSettings()
- {
- RefreshIntervalInSeconds = DEFAULT_TIME_BETWEEN_UPDATES;
- CheckForUpdates = true;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json;
+using Jenkins.Tray.BusinessComponents;
+
+namespace Jenkins.Tray.Entities
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ public class GeneralSettings
+ {
+ // 15 seconds
+ const int DEFAULT_TIME_BETWEEN_UPDATES = 15;
+
+ [JsonProperty("refreshIntervalInSeconds")]
+ public int RefreshIntervalInSeconds { get; set; }
+
+ [JsonProperty("updateMainWindowIcon")]
+ public bool UpdateMainWindowIcon { get; set; }
+
+ [JsonProperty("integrateWithClaimPlugin")]
+ public bool IntegrateWithClaimPlugin { get; set; }
+
+ [JsonProperty("checkForUpdates")]
+ public bool CheckForUpdates { get; set; }
+
+ public ApplicationUpdateService ApplicationUpdateService { get; set; }
+
+ public GeneralSettings()
+ {
+ RefreshIntervalInSeconds = DEFAULT_TIME_BETWEEN_UPDATES;
+ CheckForUpdates = true;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/NotificationSettings.cs b/JenkinsTray/Entities/NotificationSettings.cs
similarity index 91%
rename from HudsonTrayTracker/Entities/NotificationSettings.cs
rename to JenkinsTray/Entities/NotificationSettings.cs
index 6d00678..ae06d9a 100644
--- a/HudsonTrayTracker/Entities/NotificationSettings.cs
+++ b/JenkinsTray/Entities/NotificationSettings.cs
@@ -1,25 +1,25 @@
-using Newtonsoft.Json;
-namespace Hudson.TrayTracker.Entities
-{
- [JsonObject(MemberSerialization.OptIn)]
- public class NotificationSettings
- {
- [JsonProperty("soundNotifications")]
- public bool SoundNotifications { get; set; }
-
- [JsonProperty("failedSoundPath")]
- public string FailedSoundPath { get; set; }
-
- [JsonProperty("succeededSoundPath")]
- public string SucceededSoundPath { get; set; }
-
- [JsonProperty("stillFailingSoundPath")]
- public string StillFailingSoundPath { get; set; }
-
- [JsonProperty("fixedSoundPath")]
- public string FixedSoundPath { get; set; }
-
- [JsonProperty("treatUnstableAsFailed")]
- public bool TreatUnstableAsFailed { get; set; }
- }
-}
+using Newtonsoft.Json;
+namespace Jenkins.Tray.Entities
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ public class NotificationSettings
+ {
+ [JsonProperty("soundNotifications")]
+ public bool SoundNotifications { get; set; }
+
+ [JsonProperty("failedSoundPath")]
+ public string FailedSoundPath { get; set; }
+
+ [JsonProperty("succeededSoundPath")]
+ public string SucceededSoundPath { get; set; }
+
+ [JsonProperty("stillFailingSoundPath")]
+ public string StillFailingSoundPath { get; set; }
+
+ [JsonProperty("fixedSoundPath")]
+ public string FixedSoundPath { get; set; }
+
+ [JsonProperty("treatUnstableAsFailed")]
+ public bool TreatUnstableAsFailed { get; set; }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/Project.cs b/JenkinsTray/Entities/Project.cs
similarity index 95%
rename from HudsonTrayTracker/Entities/Project.cs
rename to JenkinsTray/Entities/Project.cs
index 62e42d6..cdeee0d 100644
--- a/HudsonTrayTracker/Entities/Project.cs
+++ b/JenkinsTray/Entities/Project.cs
@@ -1,146 +1,146 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Newtonsoft.Json;
-
-namespace Hudson.TrayTracker.Entities
-{
- [JsonObject(MemberSerialization.OptIn)]
- public class Project : IComparable
- {
- public class QueueItem
- {
- public bool InQueue { get; set; }
- public DateTime InQueueSince { get; set; }
- public string Why { get; set; }
- }
-
- public Server Server { get; set; }
-
- [JsonProperty("name")]
- public string Name { get; set; }
-
- [JsonProperty("url")]
- public string Url { get; set; }
-
- [JsonProperty("acknowledged")]
- public bool IsAcknowledged { get; set; }
-
- [JsonProperty("token")]
- public string AuthenticationToken { get; set; }
-
- [JsonProperty("causetext")]
- public string CauseText { get; set; }
-
- public AllBuildDetails AllBuildDetails { get; set; }
- public ProjectActivity Activity { get; set; }
- public QueueItem Queue { get; set; }
-
- public Project()
- {
- Queue = new QueueItem();
- Activity = new ProjectActivity(this);
- }
-
- public BuildStatus Status
- {
- get
- {
- // get a copy of the reference to avoid a race condition
- AllBuildDetails details = this.AllBuildDetails;
- if (details == null)
- return BuildStatus.UNKNOWN_BUILD_STATUS;
- return details.Status;
- }
- }
-
- public BuildStatusEnum StatusValue
- {
- get { return Status.Value; }
- }
-
- public BuildStatus PreviousStatus
- {
- set
- {
- if (this.AllBuildDetails != null)
- {
- this.AllBuildDetails.PreviousStatus = value;
- }
- }
- get
- {
- // get a copy of the reference to avoid a race condition
- AllBuildDetails details = this.AllBuildDetails;
- if (details == null)
- return BuildStatus.UNKNOWN_BUILD_STATUS;
- return details.PreviousStatus;
- }
- }
-
- public BuildStatusEnum PreviousStatusValue
- {
- get { return PreviousStatus.Value; }
- }
-
- public BuildDetails LastBuild
- {
- get
- {
- // get a copy of the reference to avoid a race condition
- AllBuildDetails details = this.AllBuildDetails;
- if (details == null)
- return null;
- return details.LastBuild;
- }
- }
-
- public BuildDetails LastSuccessfulBuild
- {
- get
- {
- // get a copy of the reference to avoid a race condition
- AllBuildDetails details = this.AllBuildDetails;
- if (details == null)
- return null;
- return details.LastSuccessfulBuild;
- }
- }
-
- public BuildDetails LastFailedBuild
- {
- get
- {
- // get a copy of the reference to avoid a race condition
- AllBuildDetails details = this.AllBuildDetails;
- if (details == null)
- return null;
- return details.LastFailedBuild;
- }
- }
-
- public override int GetHashCode()
- {
- return Name.GetHashCode();
- }
-
- public override bool Equals(object obj)
- {
- Project other = obj as Project;
- if (other == null)
- return false;
- return other.Server.Equals(Server)
- && other.Name == Name;
- }
-
- public override string ToString()
- {
- return Name;
- }
-
- public int CompareTo(Project other)
- {
- return Name.CompareTo(other.Name);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Newtonsoft.Json;
+
+namespace Jenkins.Tray.Entities
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ public class Project : IComparable
+ {
+ public class QueueItem
+ {
+ public bool InQueue { get; set; }
+ public DateTime InQueueSince { get; set; }
+ public string Why { get; set; }
+ }
+
+ public Server Server { get; set; }
+
+ [JsonProperty("name")]
+ public string Name { get; set; }
+
+ [JsonProperty("url")]
+ public string Url { get; set; }
+
+ [JsonProperty("acknowledged")]
+ public bool IsAcknowledged { get; set; }
+
+ [JsonProperty("token")]
+ public string AuthenticationToken { get; set; }
+
+ [JsonProperty("causetext")]
+ public string CauseText { get; set; }
+
+ public AllBuildDetails AllBuildDetails { get; set; }
+ public ProjectActivity Activity { get; set; }
+ public QueueItem Queue { get; set; }
+
+ public Project()
+ {
+ Queue = new QueueItem();
+ Activity = new ProjectActivity(this);
+ }
+
+ public BuildStatus Status
+ {
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ AllBuildDetails details = this.AllBuildDetails;
+ if (details == null)
+ return BuildStatus.UNKNOWN_BUILD_STATUS;
+ return details.Status;
+ }
+ }
+
+ public BuildStatusEnum StatusValue
+ {
+ get { return Status.Value; }
+ }
+
+ public BuildStatus PreviousStatus
+ {
+ set
+ {
+ if (this.AllBuildDetails != null)
+ {
+ this.AllBuildDetails.PreviousStatus = value;
+ }
+ }
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ AllBuildDetails details = this.AllBuildDetails;
+ if (details == null)
+ return BuildStatus.UNKNOWN_BUILD_STATUS;
+ return details.PreviousStatus;
+ }
+ }
+
+ public BuildStatusEnum PreviousStatusValue
+ {
+ get { return PreviousStatus.Value; }
+ }
+
+ public BuildDetails LastBuild
+ {
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ AllBuildDetails details = this.AllBuildDetails;
+ if (details == null)
+ return null;
+ return details.LastBuild;
+ }
+ }
+
+ public BuildDetails LastSuccessfulBuild
+ {
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ AllBuildDetails details = this.AllBuildDetails;
+ if (details == null)
+ return null;
+ return details.LastSuccessfulBuild;
+ }
+ }
+
+ public BuildDetails LastFailedBuild
+ {
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ AllBuildDetails details = this.AllBuildDetails;
+ if (details == null)
+ return null;
+ return details.LastFailedBuild;
+ }
+ }
+
+ public override int GetHashCode()
+ {
+ return Name.GetHashCode();
+ }
+
+ public override bool Equals(object obj)
+ {
+ Project other = obj as Project;
+ if (other == null)
+ return false;
+ return other.Server.Equals(Server)
+ && other.Name == Name;
+ }
+
+ public override string ToString()
+ {
+ return Name;
+ }
+
+ public int CompareTo(Project other)
+ {
+ return Name.CompareTo(other.Name);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Entities/ProjectActivity.cs b/JenkinsTray/Entities/ProjectActivity.cs
similarity index 98%
rename from HudsonTrayTracker/Entities/ProjectActivity.cs
rename to JenkinsTray/Entities/ProjectActivity.cs
index e9ce44e..62c8694 100644
--- a/HudsonTrayTracker/Entities/ProjectActivity.cs
+++ b/JenkinsTray/Entities/ProjectActivity.cs
@@ -6,9 +6,9 @@
using System.Diagnostics;
using Common.Logging;
using System.Reflection;
-using Hudson.TrayTracker.Utils;
+using Jenkins.Tray.Utils;
-namespace Hudson.TrayTracker.Entities
+namespace Jenkins.Tray.Entities
{
public class CaptionAndMessage
{
@@ -122,7 +122,7 @@ public CaptionAndMessage ActivityDetails
case BuildCauseEnum.SCM:
if (lastBuild.Users.Count() == 1)
{
- Source = string.Format(" (commits by {0})", StringUtils.Join(lastBuild.Users, HudsonTrayTrackerResources.BuildDetails_UserSeparator));
+ Source = string.Format(" (commits by {0})", StringUtils.Join(lastBuild.Users, JenkinsTrayResources.BuildDetails_UserSeparator));
}
else
{
diff --git a/HudsonTrayTracker/Entities/Server.cs b/JenkinsTray/Entities/Server.cs
similarity index 90%
rename from HudsonTrayTracker/Entities/Server.cs
rename to JenkinsTray/Entities/Server.cs
index 9df2a5d..d8282bc 100644
--- a/HudsonTrayTracker/Entities/Server.cs
+++ b/JenkinsTray/Entities/Server.cs
@@ -1,57 +1,57 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Iesi.Collections.Generic;
-using Newtonsoft.Json;
-using Hudson.TrayTracker.Utils.Serialization;
-
-namespace Hudson.TrayTracker.Entities
-{
- [JsonObject(MemberSerialization.OptIn)]
- public class Server
- {
- [JsonProperty("url")]
- public string Url { get; set; }
-
- [JsonProperty("displayName")]
- public string DisplayName { get; set; }
-
- [JsonProperty("credentials")]
- [JsonConverter(typeof(CredentialsJsonConverter))]
- public Credentials Credentials { get; set; }
-
- [JsonProperty("ignoreUntrustedCertificate")]
- public bool IgnoreUntrustedCertificate { get; set; }
-
- [JsonProperty("projects")]
- public ISet Projects { get; private set; }
-
- public string DisplayText
- {
- get { return String.IsNullOrEmpty(DisplayName) ? Url : DisplayName; }
- }
-
- public Server()
- {
- Projects = new HashedSet();
- }
-
- public override int GetHashCode()
- {
- return Url.GetHashCode();
- }
-
- public override bool Equals(object obj)
- {
- Server other = obj as Server;
- if (other == null)
- return false;
- return other.Url == Url;
- }
-
- public override string ToString()
- {
- return Url;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Iesi.Collections.Generic;
+using Newtonsoft.Json;
+using Jenkins.Tray.Utils.Serialization;
+
+namespace Jenkins.Tray.Entities
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ public class Server
+ {
+ [JsonProperty("url")]
+ public string Url { get; set; }
+
+ [JsonProperty("displayName")]
+ public string DisplayName { get; set; }
+
+ [JsonProperty("credentials")]
+ [JsonConverter(typeof(CredentialsJsonConverter))]
+ public Credentials Credentials { get; set; }
+
+ [JsonProperty("ignoreUntrustedCertificate")]
+ public bool IgnoreUntrustedCertificate { get; set; }
+
+ [JsonProperty("projects")]
+ public ISet Projects { get; private set; }
+
+ public string DisplayText
+ {
+ get { return String.IsNullOrEmpty(DisplayName) ? Url : DisplayName; }
+ }
+
+ public Server()
+ {
+ Projects = new HashedSet();
+ }
+
+ public override int GetHashCode()
+ {
+ return Url.GetHashCode();
+ }
+
+ public override bool Equals(object obj)
+ {
+ Server other = obj as Server;
+ if (other == null)
+ return false;
+ return other.Url == Url;
+ }
+
+ public override string ToString()
+ {
+ return Url;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/HudsonTrayTracker.csproj b/JenkinsTray/JenkinsTray.csproj
similarity index 95%
rename from HudsonTrayTracker/HudsonTrayTracker.csproj
rename to JenkinsTray/JenkinsTray.csproj
index 249c032..0f2c00c 100644
--- a/HudsonTrayTracker/HudsonTrayTracker.csproj
+++ b/JenkinsTray/JenkinsTray.csproj
@@ -1,477 +1,477 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {A54602CA-6823-4F2C-870F-1D464D9F4814}
- WinExe
- Properties
- Hudson.TrayTracker
- JenkinsTray
- Hudson.TrayTracker.Program
-
-
-
-
- 3.5
- v3.5
- http://localhost/HudsonTrayTracker/
- true
- Web
- true
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- true
- false
- true
- HudsonTrayTracker.ico
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
-
-
- bin\x86\Release\
- TRACE
- true
- pdbonly
- x86
- prompt
-
-
-
- False
- ..\lib\Spring\antlr.runtime.dll
-
-
- False
- ..\lib\Common.Logging\Common.Logging.dll
-
-
- False
- ..\lib\Common.Logging\Common.Logging.Log4Net.dll
-
-
- False
- ..\lib\DevExpress\DevExpress.Data.v10.1.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.OfficeSkins.v10.1.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.Utils.v10.1.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.XtraBars.v10.1.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.XtraBars.v10.1.Design.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.XtraEditors.v10.1.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.XtraEditors.v10.1.Design.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.XtraGrid.v10.1.dll
- True
-
-
- False
- ..\lib\DevExpress\DevExpress.XtraGrid.v10.1.Design.dll
- True
-
-
- False
- ..\lib\Iesi.Collections\Iesi.Collections.dll
-
-
- False
- ..\lib\Log4Net\log4net.dll
-
-
- False
- ..\lib\Json.NET\Newtonsoft.Json.Net35.dll
-
-
- False
- ..\lib\SmartThreadPool\SmartThreadPool.dll
-
-
- False
- ..\lib\Spring\Spring.Core.dll
-
-
-
- 3.5
-
-
-
-
-
-
- 3.0
-
-
- 3.5
-
-
-
-
-
-
-
- Properties\VersionInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
- Component
-
-
-
-
-
-
-
-
-
-
-
-
-
- Form
-
-
- AboutForm.cs
-
-
- Form
-
-
- ClaimBuildForm.cs
-
-
- UserControl
-
-
- ProjectListControl.cs
-
-
- UserControl
-
-
- ServerListControl.cs
-
-
- UserControl
-
-
- NotificationSettingsControl.cs
-
-
- UserControl
-
-
- NotificationsSettingsControl.cs
-
-
- UserControl
-
-
- ServersSettingsControl.cs
-
-
-
- Form
-
-
- AuthenticationTokenForm.cs
-
-
- Form
-
-
- MainForm.cs
-
-
- True
- True
- HudsonTrayTrackerResources.resx
-
-
- Form
-
-
- SettingsForm.cs
-
-
- Form
-
-
- EditServerForm.cs
-
-
-
-
- AuthenticationTokenForm.cs
-
-
- Designer
- MainForm.cs
-
-
- Designer
- ResXFileCodeGenerator
- HudsonTrayTrackerResources.Designer.cs
-
-
- Designer
- SettingsForm.cs
-
-
- EditServerForm.cs
- Designer
-
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
-
- Component
-
-
- TrayNotifier.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Component
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Designer
- AboutForm.cs
-
-
- Designer
- TrayNotifier.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClaimBuildForm.cs
-
-
- ProjectListControl.cs
- Designer
-
-
- ServerListControl.cs
- Designer
-
-
- Designer
- NotificationSettingsControl.cs
-
-
- Designer
- NotificationsSettingsControl.cs
-
-
- Designer
- ServersSettingsControl.cs
-
-
-
-
- False
- .NET Framework Client Profile
- false
-
-
- False
- .NET Framework 2.0 %28x86%29
- true
-
-
- False
- .NET Framework 3.0 %28x86%29
- false
-
-
- False
- .NET Framework 3.5
- false
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
-
-
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {A54602CA-6823-4F2C-870F-1D464D9F4814}
+ WinExe
+ Properties
+ Jenkins.Tray
+ JenkinsTray
+ Jenkins.Tray.Program
+
+
+
+
+ 3.5
+ v3.5
+ http://localhost/JenkinsTray/
+ true
+ Web
+ true
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ true
+ false
+ true
+ JenkinsTray.ico
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+
+
+
+ False
+ ..\lib\Spring\antlr.runtime.dll
+
+
+ False
+ ..\lib\Common.Logging\Common.Logging.dll
+
+
+ False
+ ..\lib\Common.Logging\Common.Logging.Log4Net.dll
+
+
+ False
+ ..\lib\DevExpress\DevExpress.Data.v10.1.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.OfficeSkins.v10.1.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.Utils.v10.1.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.XtraBars.v10.1.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.XtraBars.v10.1.Design.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.XtraEditors.v10.1.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.XtraEditors.v10.1.Design.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.XtraGrid.v10.1.dll
+ True
+
+
+ False
+ ..\lib\DevExpress\DevExpress.XtraGrid.v10.1.Design.dll
+ True
+
+
+ False
+ ..\lib\Iesi.Collections\Iesi.Collections.dll
+
+
+ False
+ ..\lib\Log4Net\log4net.dll
+
+
+ False
+ ..\lib\Json.NET\Newtonsoft.Json.Net35.dll
+
+
+ False
+ ..\lib\SmartThreadPool\SmartThreadPool.dll
+
+
+ False
+ ..\lib\Spring\Spring.Core.dll
+
+
+
+ 3.5
+
+
+
+
+
+
+ 3.0
+
+
+ 3.5
+
+
+
+
+
+
+
+ Properties\VersionInfo.cs
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ AboutForm.cs
+
+
+ Form
+
+
+ ClaimBuildForm.cs
+
+
+ UserControl
+
+
+ ProjectListControl.cs
+
+
+ UserControl
+
+
+ ServerListControl.cs
+
+
+ UserControl
+
+
+ NotificationSettingsControl.cs
+
+
+ UserControl
+
+
+ NotificationsSettingsControl.cs
+
+
+ UserControl
+
+
+ ServersSettingsControl.cs
+
+
+
+ Form
+
+
+ AuthenticationTokenForm.cs
+
+
+ Form
+
+
+ MainForm.cs
+
+
+ True
+ True
+ JenkinsTrayResources.resx
+
+
+ Form
+
+
+ SettingsForm.cs
+
+
+ Form
+
+
+ EditServerForm.cs
+
+
+
+
+ AuthenticationTokenForm.cs
+
+
+ Designer
+ MainForm.cs
+
+
+ Designer
+ ResXFileCodeGenerator
+ JenkinsTrayResources.Designer.cs
+
+
+ Designer
+ SettingsForm.cs
+
+
+ EditServerForm.cs
+ Designer
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+ Component
+
+
+ TrayNotifier.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Designer
+ AboutForm.cs
+
+
+ Designer
+ TrayNotifier.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ClaimBuildForm.cs
+
+
+ ProjectListControl.cs
+ Designer
+
+
+ ServerListControl.cs
+ Designer
+
+
+ Designer
+ NotificationSettingsControl.cs
+
+
+ Designer
+ NotificationsSettingsControl.cs
+
+
+ Designer
+ ServersSettingsControl.cs
+
+
+
+
+ False
+ .NET Framework Client Profile
+ false
+
+
+ False
+ .NET Framework 2.0 %28x86%29
+ true
+
+
+ False
+ .NET Framework 3.0 %28x86%29
+ false
+
+
+ False
+ .NET Framework 3.5
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/HudsonTrayTracker.ico b/JenkinsTray/JenkinsTray.ico
similarity index 100%
rename from HudsonTrayTracker/HudsonTrayTracker.ico
rename to JenkinsTray/JenkinsTray.ico
diff --git a/HudsonTrayTracker/HudsonTrayTrackerResources.Designer.cs b/JenkinsTray/JenkinsTrayResources.Designer.cs
similarity index 96%
rename from HudsonTrayTracker/HudsonTrayTrackerResources.Designer.cs
rename to JenkinsTray/JenkinsTrayResources.Designer.cs
index 7369a29..b9b6114 100644
--- a/HudsonTrayTracker/HudsonTrayTrackerResources.Designer.cs
+++ b/JenkinsTray/JenkinsTrayResources.Designer.cs
@@ -1,706 +1,706 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.34014
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Hudson.TrayTracker {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class HudsonTrayTrackerResources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal HudsonTrayTrackerResources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Hudson.TrayTracker.HudsonTrayTrackerResources", typeof(HudsonTrayTrackerResources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Jenkins Tray updates.
- ///
- internal static string ApplicationUpdates_Caption {
- get {
- return ResourceManager.GetString("ApplicationUpdates_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to A new version is available: v{0}.
- ///
- ///Do you want to download the update now (the application will close) ?.
- ///
- internal static string ApplicationUpdates_NewVersion_Text {
- get {
- return ResourceManager.GetString("ApplicationUpdates_NewVersion_Text", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No update available..
- ///
- internal static string ApplicationUpdates_NoUpdate_Text {
- get {
- return ResourceManager.GetString("ApplicationUpdates_NoUpdate_Text", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Project: {0}.
- ///
- internal static string AuthenticateToken_ProjectName {
- get {
- return ResourceManager.GetString("AuthenticateToken_ProjectName", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Broken by {0}. .
- ///
- internal static string BuildDetails_BrokenBy {
- get {
- return ResourceManager.GetString("BuildDetails_BrokenBy", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Started by multiple sources. .
- ///
- internal static string BuildDetails_Cause_MultipleSources {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_MultipleSources", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Started remotely. .
- ///
- internal static string BuildDetails_Cause_RemoteHost {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_RemoteHost", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Started by SCM change. .
- ///
- internal static string BuildDetails_Cause_SCM {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_SCM", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Changes by {0} persons. .
- ///
- internal static string BuildDetails_Cause_SCM_Multiple {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_SCM_Multiple", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Changes by {0}. .
- ///
- internal static string BuildDetails_Cause_SCM_Single {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_SCM_Single", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Scheduled. .
- ///
- internal static string BuildDetails_Cause_Timer {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_Timer", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Started by upstream project. .
- ///
- internal static string BuildDetails_Cause_UpstreamProject {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_UpstreamProject", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Started by {0}. .
- ///
- internal static string BuildDetails_Cause_User {
- get {
- return ResourceManager.GetString("BuildDetails_Cause_User", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Took less than a minute. .
- ///
- internal static string BuildDetails_Duration_0M {
- get {
- return ResourceManager.GetString("BuildDetails_Duration_0M", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Took {0:D1} hour(s) {1:D1} minutes. .
- ///
- internal static string BuildDetails_Duration_HHMM {
- get {
- return ResourceManager.GetString("BuildDetails_Duration_HHMM", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Took {0:D1} minutes. .
- ///
- internal static string BuildDetails_Duration_MM {
- get {
- return ResourceManager.GetString("BuildDetails_Duration_MM", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0:D1} hours {1:D1} minutes longer than usual. .
- ///
- internal static string BuildDetails_EstimatedDuration_HHMM_LongerThanUsual {
- get {
- return ResourceManager.GetString("BuildDetails_EstimatedDuration_HHMM_LongerThanUsual", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0:D1} hour(s) {1:D1} minutes remaining. .
- ///
- internal static string BuildDetails_EstimatedDuration_HHMM_Remaining {
- get {
- return ResourceManager.GetString("BuildDetails_EstimatedDuration_HHMM_Remaining", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0:D1} minutes longer than usual. .
- ///
- internal static string BuildDetails_EstimatedDuration_MM_LongerThanUsual {
- get {
- return ResourceManager.GetString("BuildDetails_EstimatedDuration_MM_LongerThanUsual", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0:D1} minutes remaining. .
- ///
- internal static string BuildDetails_EstimatedDuration_MM_Remaining {
- get {
- return ResourceManager.GetString("BuildDetails_EstimatedDuration_MM_Remaining", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0} - {1} ({2}).
- ///
- internal static string BuildDetails_Format_DisplayName_NumberDate {
- get {
- return ResourceManager.GetString("BuildDetails_Format_DisplayName_NumberDate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0} ({1}).
- ///
- internal static string BuildDetails_Format_NumberDate {
- get {
- return ResourceManager.GetString("BuildDetails_Format_NumberDate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0} ({1}, {2}).
- ///
- internal static string BuildDetails_Format_NumberDateUsers {
- get {
- return ResourceManager.GetString("BuildDetails_Format_NumberDateUsers", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Subsequent build is queued..
- ///
- internal static string BuildDetails_InQueue {
- get {
- return ResourceManager.GetString("BuildDetails_InQueue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to In queue since {0}..
- ///
- internal static string BuildDetails_InQueue_Since {
- get {
- return ResourceManager.GetString("BuildDetails_InQueue_Since", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Reason: {0}..
- ///
- internal static string BuildDetails_InQueue_Why {
- get {
- return ResourceManager.GetString("BuildDetails_InQueue_Why", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to , .
- ///
- internal static string BuildDetails_UserSeparator {
- get {
- return ResourceManager.GetString("BuildDetails_UserSeparator", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build failed.
- ///
- internal static string BuildFailed_Caption {
- get {
- return ResourceManager.GetString("BuildFailed_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Projects regressed.
- ///
- internal static string BuildRegressions_Caption {
- get {
- return ResourceManager.GetString("BuildRegressions_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build was aborted.
- ///
- internal static string BuildStatus_Aborted {
- get {
- return ResourceManager.GetString("BuildStatus_Aborted", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build was aborted. Build is stuck..
- ///
- internal static string BuildStatus_Aborted_Stuck {
- get {
- return ResourceManager.GetString("BuildStatus_Aborted_Stuck", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Project disabled.
- ///
- internal static string BuildStatus_Disabled {
- get {
- return ResourceManager.GetString("BuildStatus_Disabled", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Project disabled. Build in progress..
- ///
- internal static string BuildStatus_Disabled_BuildInProgress {
- get {
- return ResourceManager.GetString("BuildStatus_Disabled_BuildInProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Project disabled. Build is stuck..
- ///
- internal static string BuildStatus_Disabled_Stuck {
- get {
- return ResourceManager.GetString("BuildStatus_Disabled_Stuck", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build failed.
- ///
- internal static string BuildStatus_Failed {
- get {
- return ResourceManager.GetString("BuildStatus_Failed", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Last build failed. Build in progress..
- ///
- internal static string BuildStatus_Failed_BuildInProgress {
- get {
- return ResourceManager.GetString("BuildStatus_Failed_BuildInProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Last build failed. Build is stuck..
- ///
- internal static string BuildStatus_Failed_Stuck {
- get {
- return ResourceManager.GetString("BuildStatus_Failed_Stuck", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Indeterminate: no build done..
- ///
- internal static string BuildStatus_Indeterminate {
- get {
- return ResourceManager.GetString("BuildStatus_Indeterminate", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Indeterminate: no build done. Build in progress..
- ///
- internal static string BuildStatus_Indeterminate_BuildInProgress {
- get {
- return ResourceManager.GetString("BuildStatus_Indeterminate_BuildInProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Indeterminate: no build done. Build is stuck..
- ///
- internal static string BuildStatus_Indeterminate_Stuck {
- get {
- return ResourceManager.GetString("BuildStatus_Indeterminate_Stuck", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Successful.
- ///
- internal static string BuildStatus_Successful {
- get {
- return ResourceManager.GetString("BuildStatus_Successful", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Successful. Build in progress..
- ///
- internal static string BuildStatus_Successful_BuildInProgress {
- get {
- return ResourceManager.GetString("BuildStatus_Successful_BuildInProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Successful. Build is stuck..
- ///
- internal static string BuildStatus_Successful_Stuck {
- get {
- return ResourceManager.GetString("BuildStatus_Successful_Stuck", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Unknown status.
- ///
- internal static string BuildStatus_Unknown {
- get {
- return ResourceManager.GetString("BuildStatus_Unknown", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Unstable: some tests failed..
- ///
- internal static string BuildStatus_Unstable {
- get {
- return ResourceManager.GetString("BuildStatus_Unstable", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Unstable: some tests failed. Build in progress..
- ///
- internal static string BuildStatus_Unstable_BuildInProgress {
- get {
- return ResourceManager.GetString("BuildStatus_Unstable_BuildInProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Unstable: some tests failed. Build is stuck..
- ///
- internal static string BuildStatus_Unstable_Stuck {
- get {
- return ResourceManager.GetString("BuildStatus_Unstable_Stuck", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build status.
- ///
- internal static string DisplayBuildStatus_Caption {
- get {
- return ResourceManager.GetString("DisplayBuildStatus_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to No projects configured.
- ///
- internal static string DisplayBuildStatus_NoProjects {
- get {
- return ResourceManager.GetString("DisplayBuildStatus_NoProjects", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to An error occurred.
- ///
- internal static string ErrorBoxCaption {
- get {
- return ResourceManager.GetString("ErrorBoxCaption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The following error occurred:
- ///
- ///Message: {0}.
- ///
- internal static string ErrorBoxMessage {
- get {
- return ResourceManager.GetString("ErrorBoxMessage", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Error.
- ///
- internal static string FailedLoadingIcons_Caption {
- get {
- return ResourceManager.GetString("FailedLoadingIcons_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Failed loading icons for the tray notifier..
- ///
- internal static string FailedLoadingIcons_Text {
- get {
- return ResourceManager.GetString("FailedLoadingIcons_Text", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Error loading projects from {0}.
- ///
- internal static string FailedLoadingProjects_FormatString {
- get {
- return ResourceManager.GetString("FailedLoadingProjects_FormatString", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to A fatal error occurred.
- ///
- internal static string FatalError_Caption {
- get {
- return ResourceManager.GetString("FatalError_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Fatal error.
- ///
- ///Please refer to the log files for more details..
- ///
- internal static string FatalError_Message {
- get {
- return ResourceManager.GetString("FatalError_Message", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Last check: {0}.
- ///
- internal static string LastCheck_Format {
- get {
- return ResourceManager.GetString("LastCheck_Format", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Loading projects from {0}.
- ///
- internal static string LoadingProjects_FormatString {
- get {
- return ResourceManager.GetString("LoadingProjects_FormatString", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build failed.
- ///
- internal static string NotificationSettings_Failed {
- get {
- return ResourceManager.GetString("NotificationSettings_Failed", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build fixed.
- ///
- internal static string NotificationSettings_Fixed {
- get {
- return ResourceManager.GetString("NotificationSettings_Fixed", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build still failing.
- ///
- internal static string NotificationSettings_StillFailing {
- get {
- return ResourceManager.GetString("NotificationSettings_StillFailing", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Build succeeded.
- ///
- internal static string NotificationSettings_Succeeded {
- get {
- return ResourceManager.GetString("NotificationSettings_Succeeded", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Error.
- ///
- internal static string RunBuildFailed_Caption {
- get {
- return ResourceManager.GetString("RunBuildFailed_Caption", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Failed running build: {0}..
- ///
- internal static string RunBuildFailed_Text {
- get {
- return ResourceManager.GetString("RunBuildFailed_Text", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The following error occurred:
- ///
- ///Type: {0}
- ///Message: {1}
- ///
- ///Please refer to the log files for more details.
- ///
- ///The application will now be closed..
- ///
- internal static string SeriousErrorBoxMessage {
- get {
- return ResourceManager.GetString("SeriousErrorBoxMessage", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to All builds are good..
- ///
- internal static string Tooltip_AllGood {
- get {
- return ResourceManager.GetString("Tooltip_AllGood", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}: {1}..
- ///
- internal static string Tooltip_BuildStatus {
- get {
- return ResourceManager.GetString("Tooltip_BuildStatus", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}: Failed and in progress..
- ///
- internal static string Tooltip_Failed_And_InProgress {
- get {
- return ResourceManager.GetString("Tooltip_Failed_And_InProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}: In progress..
- ///
- internal static string Tooltip_InProgress {
- get {
- return ResourceManager.GetString("Tooltip_InProgress", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Version {0}.
- ///
- internal static string Version_Format {
- get {
- return ResourceManager.GetString("Version_Format", resourceCulture);
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34014
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Jenkins.Tray {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class JenkinsTrayResources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal JenkinsTrayResources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Jenkins.Tray.JenkinsTrayResources", typeof(JenkinsTrayResources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Jenkins Tray updates.
+ ///
+ internal static string ApplicationUpdates_Caption {
+ get {
+ return ResourceManager.GetString("ApplicationUpdates_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A new version is available: v{0}.
+ ///
+ ///Do you want to download the update now (the application will close) ?.
+ ///
+ internal static string ApplicationUpdates_NewVersion_Text {
+ get {
+ return ResourceManager.GetString("ApplicationUpdates_NewVersion_Text", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No update available..
+ ///
+ internal static string ApplicationUpdates_NoUpdate_Text {
+ get {
+ return ResourceManager.GetString("ApplicationUpdates_NoUpdate_Text", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Project: {0}.
+ ///
+ internal static string AuthenticateToken_ProjectName {
+ get {
+ return ResourceManager.GetString("AuthenticateToken_ProjectName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Broken by {0}. .
+ ///
+ internal static string BuildDetails_BrokenBy {
+ get {
+ return ResourceManager.GetString("BuildDetails_BrokenBy", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Started by multiple sources. .
+ ///
+ internal static string BuildDetails_Cause_MultipleSources {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_MultipleSources", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Started remotely. .
+ ///
+ internal static string BuildDetails_Cause_RemoteHost {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_RemoteHost", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Started by SCM change. .
+ ///
+ internal static string BuildDetails_Cause_SCM {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_SCM", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changes by {0} persons. .
+ ///
+ internal static string BuildDetails_Cause_SCM_Multiple {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_SCM_Multiple", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Changes by {0}. .
+ ///
+ internal static string BuildDetails_Cause_SCM_Single {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_SCM_Single", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Scheduled. .
+ ///
+ internal static string BuildDetails_Cause_Timer {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_Timer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Started by upstream project. .
+ ///
+ internal static string BuildDetails_Cause_UpstreamProject {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_UpstreamProject", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Started by {0}. .
+ ///
+ internal static string BuildDetails_Cause_User {
+ get {
+ return ResourceManager.GetString("BuildDetails_Cause_User", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Took less than a minute. .
+ ///
+ internal static string BuildDetails_Duration_0M {
+ get {
+ return ResourceManager.GetString("BuildDetails_Duration_0M", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Took {0:D1} hour(s) {1:D1} minutes. .
+ ///
+ internal static string BuildDetails_Duration_HHMM {
+ get {
+ return ResourceManager.GetString("BuildDetails_Duration_HHMM", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Took {0:D1} minutes. .
+ ///
+ internal static string BuildDetails_Duration_MM {
+ get {
+ return ResourceManager.GetString("BuildDetails_Duration_MM", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0:D1} hours {1:D1} minutes longer than usual. .
+ ///
+ internal static string BuildDetails_EstimatedDuration_HHMM_LongerThanUsual {
+ get {
+ return ResourceManager.GetString("BuildDetails_EstimatedDuration_HHMM_LongerThanUsual", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0:D1} hour(s) {1:D1} minutes remaining. .
+ ///
+ internal static string BuildDetails_EstimatedDuration_HHMM_Remaining {
+ get {
+ return ResourceManager.GetString("BuildDetails_EstimatedDuration_HHMM_Remaining", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0:D1} minutes longer than usual. .
+ ///
+ internal static string BuildDetails_EstimatedDuration_MM_LongerThanUsual {
+ get {
+ return ResourceManager.GetString("BuildDetails_EstimatedDuration_MM_LongerThanUsual", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0:D1} minutes remaining. .
+ ///
+ internal static string BuildDetails_EstimatedDuration_MM_Remaining {
+ get {
+ return ResourceManager.GetString("BuildDetails_EstimatedDuration_MM_Remaining", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} - {1} ({2}).
+ ///
+ internal static string BuildDetails_Format_DisplayName_NumberDate {
+ get {
+ return ResourceManager.GetString("BuildDetails_Format_DisplayName_NumberDate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} ({1}).
+ ///
+ internal static string BuildDetails_Format_NumberDate {
+ get {
+ return ResourceManager.GetString("BuildDetails_Format_NumberDate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} ({1}, {2}).
+ ///
+ internal static string BuildDetails_Format_NumberDateUsers {
+ get {
+ return ResourceManager.GetString("BuildDetails_Format_NumberDateUsers", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Subsequent build is queued..
+ ///
+ internal static string BuildDetails_InQueue {
+ get {
+ return ResourceManager.GetString("BuildDetails_InQueue", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to In queue since {0}..
+ ///
+ internal static string BuildDetails_InQueue_Since {
+ get {
+ return ResourceManager.GetString("BuildDetails_InQueue_Since", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Reason: {0}..
+ ///
+ internal static string BuildDetails_InQueue_Why {
+ get {
+ return ResourceManager.GetString("BuildDetails_InQueue_Why", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to , .
+ ///
+ internal static string BuildDetails_UserSeparator {
+ get {
+ return ResourceManager.GetString("BuildDetails_UserSeparator", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build failed.
+ ///
+ internal static string BuildFailed_Caption {
+ get {
+ return ResourceManager.GetString("BuildFailed_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Projects regressed.
+ ///
+ internal static string BuildRegressions_Caption {
+ get {
+ return ResourceManager.GetString("BuildRegressions_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build was aborted.
+ ///
+ internal static string BuildStatus_Aborted {
+ get {
+ return ResourceManager.GetString("BuildStatus_Aborted", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build was aborted. Build is stuck..
+ ///
+ internal static string BuildStatus_Aborted_Stuck {
+ get {
+ return ResourceManager.GetString("BuildStatus_Aborted_Stuck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Project disabled.
+ ///
+ internal static string BuildStatus_Disabled {
+ get {
+ return ResourceManager.GetString("BuildStatus_Disabled", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Project disabled. Build in progress..
+ ///
+ internal static string BuildStatus_Disabled_BuildInProgress {
+ get {
+ return ResourceManager.GetString("BuildStatus_Disabled_BuildInProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Project disabled. Build is stuck..
+ ///
+ internal static string BuildStatus_Disabled_Stuck {
+ get {
+ return ResourceManager.GetString("BuildStatus_Disabled_Stuck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build failed.
+ ///
+ internal static string BuildStatus_Failed {
+ get {
+ return ResourceManager.GetString("BuildStatus_Failed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Last build failed. Build in progress..
+ ///
+ internal static string BuildStatus_Failed_BuildInProgress {
+ get {
+ return ResourceManager.GetString("BuildStatus_Failed_BuildInProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Last build failed. Build is stuck..
+ ///
+ internal static string BuildStatus_Failed_Stuck {
+ get {
+ return ResourceManager.GetString("BuildStatus_Failed_Stuck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Indeterminate: no build done..
+ ///
+ internal static string BuildStatus_Indeterminate {
+ get {
+ return ResourceManager.GetString("BuildStatus_Indeterminate", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Indeterminate: no build done. Build in progress..
+ ///
+ internal static string BuildStatus_Indeterminate_BuildInProgress {
+ get {
+ return ResourceManager.GetString("BuildStatus_Indeterminate_BuildInProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Indeterminate: no build done. Build is stuck..
+ ///
+ internal static string BuildStatus_Indeterminate_Stuck {
+ get {
+ return ResourceManager.GetString("BuildStatus_Indeterminate_Stuck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successful.
+ ///
+ internal static string BuildStatus_Successful {
+ get {
+ return ResourceManager.GetString("BuildStatus_Successful", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successful. Build in progress..
+ ///
+ internal static string BuildStatus_Successful_BuildInProgress {
+ get {
+ return ResourceManager.GetString("BuildStatus_Successful_BuildInProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Successful. Build is stuck..
+ ///
+ internal static string BuildStatus_Successful_Stuck {
+ get {
+ return ResourceManager.GetString("BuildStatus_Successful_Stuck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unknown status.
+ ///
+ internal static string BuildStatus_Unknown {
+ get {
+ return ResourceManager.GetString("BuildStatus_Unknown", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unstable: some tests failed..
+ ///
+ internal static string BuildStatus_Unstable {
+ get {
+ return ResourceManager.GetString("BuildStatus_Unstable", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unstable: some tests failed. Build in progress..
+ ///
+ internal static string BuildStatus_Unstable_BuildInProgress {
+ get {
+ return ResourceManager.GetString("BuildStatus_Unstable_BuildInProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Unstable: some tests failed. Build is stuck..
+ ///
+ internal static string BuildStatus_Unstable_Stuck {
+ get {
+ return ResourceManager.GetString("BuildStatus_Unstable_Stuck", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build status.
+ ///
+ internal static string DisplayBuildStatus_Caption {
+ get {
+ return ResourceManager.GetString("DisplayBuildStatus_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to No projects configured.
+ ///
+ internal static string DisplayBuildStatus_NoProjects {
+ get {
+ return ResourceManager.GetString("DisplayBuildStatus_NoProjects", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to An error occurred.
+ ///
+ internal static string ErrorBoxCaption {
+ get {
+ return ResourceManager.GetString("ErrorBoxCaption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The following error occurred:
+ ///
+ ///Message: {0}.
+ ///
+ internal static string ErrorBoxMessage {
+ get {
+ return ResourceManager.GetString("ErrorBoxMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error.
+ ///
+ internal static string FailedLoadingIcons_Caption {
+ get {
+ return ResourceManager.GetString("FailedLoadingIcons_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed loading icons for the tray notifier..
+ ///
+ internal static string FailedLoadingIcons_Text {
+ get {
+ return ResourceManager.GetString("FailedLoadingIcons_Text", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error loading projects from {0}.
+ ///
+ internal static string FailedLoadingProjects_FormatString {
+ get {
+ return ResourceManager.GetString("FailedLoadingProjects_FormatString", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to A fatal error occurred.
+ ///
+ internal static string FatalError_Caption {
+ get {
+ return ResourceManager.GetString("FatalError_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Fatal error.
+ ///
+ ///Please refer to the log files for more details..
+ ///
+ internal static string FatalError_Message {
+ get {
+ return ResourceManager.GetString("FatalError_Message", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Last check: {0}.
+ ///
+ internal static string LastCheck_Format {
+ get {
+ return ResourceManager.GetString("LastCheck_Format", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Loading projects from {0}.
+ ///
+ internal static string LoadingProjects_FormatString {
+ get {
+ return ResourceManager.GetString("LoadingProjects_FormatString", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build failed.
+ ///
+ internal static string NotificationSettings_Failed {
+ get {
+ return ResourceManager.GetString("NotificationSettings_Failed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build fixed.
+ ///
+ internal static string NotificationSettings_Fixed {
+ get {
+ return ResourceManager.GetString("NotificationSettings_Fixed", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build still failing.
+ ///
+ internal static string NotificationSettings_StillFailing {
+ get {
+ return ResourceManager.GetString("NotificationSettings_StillFailing", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Build succeeded.
+ ///
+ internal static string NotificationSettings_Succeeded {
+ get {
+ return ResourceManager.GetString("NotificationSettings_Succeeded", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Error.
+ ///
+ internal static string RunBuildFailed_Caption {
+ get {
+ return ResourceManager.GetString("RunBuildFailed_Caption", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Failed running build: {0}..
+ ///
+ internal static string RunBuildFailed_Text {
+ get {
+ return ResourceManager.GetString("RunBuildFailed_Text", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to The following error occurred:
+ ///
+ ///Type: {0}
+ ///Message: {1}
+ ///
+ ///Please refer to the log files for more details.
+ ///
+ ///The application will now be closed..
+ ///
+ internal static string SeriousErrorBoxMessage {
+ get {
+ return ResourceManager.GetString("SeriousErrorBoxMessage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to All builds are good..
+ ///
+ internal static string Tooltip_AllGood {
+ get {
+ return ResourceManager.GetString("Tooltip_AllGood", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}: {1}..
+ ///
+ internal static string Tooltip_BuildStatus {
+ get {
+ return ResourceManager.GetString("Tooltip_BuildStatus", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}: Failed and in progress..
+ ///
+ internal static string Tooltip_Failed_And_InProgress {
+ get {
+ return ResourceManager.GetString("Tooltip_Failed_And_InProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}: In progress..
+ ///
+ internal static string Tooltip_InProgress {
+ get {
+ return ResourceManager.GetString("Tooltip_InProgress", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Version {0}.
+ ///
+ internal static string Version_Format {
+ get {
+ return ResourceManager.GetString("Version_Format", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/HudsonTrayTrackerResources.resx b/JenkinsTray/JenkinsTrayResources.resx
similarity index 97%
rename from HudsonTrayTracker/HudsonTrayTrackerResources.resx
rename to JenkinsTray/JenkinsTrayResources.resx
index 481c4c3..d0e6bde 100644
--- a/HudsonTrayTracker/HudsonTrayTrackerResources.resx
+++ b/JenkinsTray/JenkinsTrayResources.resx
@@ -1,343 +1,343 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- Jenkins Tray updates
-
-
- A new version is available: v{0}.
-
-Do you want to download the update now (the application will close) ?
-
-
- No update available.
-
-
- {0} ({1})
-
-
- {0} - {1} ({2})
-
-
- {0} ({1}, {2})
-
-
- ,
-
-
- Changes by {0}.
-
-
- Changes by {0} persons.
-
-
- Scheduled.
-
-
- Started by {0}.
-
-
- Started by upstream project.
-
-
- Started remotely.
-
-
- Started by multiple sources.
-
-
- {0:D1} hour(s) {1:D1} minutes remaining.
-
-
- {0:D1} minutes remaining.
-
-
- {0:D1} hours {1:D1} minutes longer than usual.
-
-
- {0:D1} minutes longer than usual.
-
-
- Took {0:D1} hour(s) {1:D1} minutes.
-
-
- Took {0:D1} minutes.
-
-
- Build failed
-
-
- Projects regressed
-
-
- Build was aborted
-
-
- Build was aborted. Build is stuck.
-
-
- Build failed
-
-
- Last build failed. Build in progress.
-
-
- Last build failed. Build is stuck.
-
-
- Indeterminate: no build done.
-
-
- Indeterminate: no build done. Build in progress.
-
-
- Indeterminate: no build done. Build is stuck.
-
-
- Successful
-
-
- Successful. Build in progress.
-
-
- Successful. Build is stuck.
-
-
- Project disabled
-
-
- Project disabled. Build in progress.
-
-
- Project disabled. Build is stuck.
-
-
- Unknown status
-
-
- Unstable: some tests failed.
-
-
- Unstable: some tests failed. Build in progress.
-
-
- Unstable: some tests failed. Build is stuck.
-
-
- Build status
-
-
- No projects configured
-
-
- An error occurred
-
-
- The following error occurred:
-
-Message: {0}
-
-
- Error
-
-
- Failed loading icons for the tray notifier.
-
-
- Error loading projects from {0}
-
-
- A fatal error occurred
-
-
- Fatal error.
-
-Please refer to the log files for more details.
-
-
- Last check: {0}
-
-
- Loading projects from {0}
-
-
- Build failed
-
-
- Build fixed
-
-
- Build still failing
-
-
- Build succeeded
-
-
- Error
-
-
- Failed running build: {0}.
-
-
- The following error occurred:
-
-Type: {0}
-Message: {1}
-
-Please refer to the log files for more details.
-
-The application will now be closed.
-
-
- Version {0}
-
-
- Took less than a minute.
-
-
- Started by SCM change.
-
-
- Broken by {0}.
-
-
- {0}: {1}.
-
-
- {0}: Failed and in progress.
-
-
- {0}: In progress.
-
-
- All builds are good.
-
-
- Project: {0}
-
-
- In queue since {0}.
-
-
- Subsequent build is queued.
-
-
- Reason: {0}.
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ Jenkins Tray updates
+
+
+ A new version is available: v{0}.
+
+Do you want to download the update now (the application will close) ?
+
+
+ No update available.
+
+
+ {0} ({1})
+
+
+ {0} - {1} ({2})
+
+
+ {0} ({1}, {2})
+
+
+ ,
+
+
+ Changes by {0}.
+
+
+ Changes by {0} persons.
+
+
+ Scheduled.
+
+
+ Started by {0}.
+
+
+ Started by upstream project.
+
+
+ Started remotely.
+
+
+ Started by multiple sources.
+
+
+ {0:D1} hour(s) {1:D1} minutes remaining.
+
+
+ {0:D1} minutes remaining.
+
+
+ {0:D1} hours {1:D1} minutes longer than usual.
+
+
+ {0:D1} minutes longer than usual.
+
+
+ Took {0:D1} hour(s) {1:D1} minutes.
+
+
+ Took {0:D1} minutes.
+
+
+ Build failed
+
+
+ Projects regressed
+
+
+ Build was aborted
+
+
+ Build was aborted. Build is stuck.
+
+
+ Build failed
+
+
+ Last build failed. Build in progress.
+
+
+ Last build failed. Build is stuck.
+
+
+ Indeterminate: no build done.
+
+
+ Indeterminate: no build done. Build in progress.
+
+
+ Indeterminate: no build done. Build is stuck.
+
+
+ Successful
+
+
+ Successful. Build in progress.
+
+
+ Successful. Build is stuck.
+
+
+ Project disabled
+
+
+ Project disabled. Build in progress.
+
+
+ Project disabled. Build is stuck.
+
+
+ Unknown status
+
+
+ Unstable: some tests failed.
+
+
+ Unstable: some tests failed. Build in progress.
+
+
+ Unstable: some tests failed. Build is stuck.
+
+
+ Build status
+
+
+ No projects configured
+
+
+ An error occurred
+
+
+ The following error occurred:
+
+Message: {0}
+
+
+ Error
+
+
+ Failed loading icons for the tray notifier.
+
+
+ Error loading projects from {0}
+
+
+ A fatal error occurred
+
+
+ Fatal error.
+
+Please refer to the log files for more details.
+
+
+ Last check: {0}
+
+
+ Loading projects from {0}
+
+
+ Build failed
+
+
+ Build fixed
+
+
+ Build still failing
+
+
+ Build succeeded
+
+
+ Error
+
+
+ Failed running build: {0}.
+
+
+ The following error occurred:
+
+Type: {0}
+Message: {1}
+
+Please refer to the log files for more details.
+
+The application will now be closed.
+
+
+ Version {0}
+
+
+ Took less than a minute.
+
+
+ Started by SCM change.
+
+
+ Broken by {0}.
+
+
+ {0}: {1}.
+
+
+ {0}: Failed and in progress.
+
+
+ {0}: In progress.
+
+
+ All builds are good.
+
+
+ Project: {0}
+
+
+ In queue since {0}.
+
+
+ Subsequent build is queued.
+
+
+ Reason: {0}.
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/Legacy/BusinessComponents/LegacyConfigurationService.cs b/JenkinsTray/Legacy/BusinessComponents/LegacyConfigurationService.cs
similarity index 92%
rename from HudsonTrayTracker/Legacy/BusinessComponents/LegacyConfigurationService.cs
rename to JenkinsTray/Legacy/BusinessComponents/LegacyConfigurationService.cs
index b78b7b2..b32a2a4 100644
--- a/HudsonTrayTracker/Legacy/BusinessComponents/LegacyConfigurationService.cs
+++ b/JenkinsTray/Legacy/BusinessComponents/LegacyConfigurationService.cs
@@ -1,104 +1,104 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using Hudson.TrayTracker.Entities;
-using Iesi.Collections.Generic;
-using Hudson.TrayTracker.Utils.IO;
-using System.IO;
-using System.Reflection;
-using Common.Logging;
-
-namespace Hudson.TrayTracker.BusinessComponents
-{
- [Obsolete]
- public class LegacyConfigurationService
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- const string HUDSON_TRAY_TRACKER_DIRECTORY = "Jenkins Tray";
- const string PROPERTIES_FILE = "hudson.properties";
- // 15 seconds
- const int DEFAULT_TIME_BETWEEN_UPDATES = 15;
-
- public Configuration LoadConfiguration()
- {
- string userAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
- string userAppDataPath = PathHelper.Combine(userAppDataDir, HUDSON_TRAY_TRACKER_DIRECTORY);
- string userConfigurationFile = PathHelper.Combine(userAppDataPath, PROPERTIES_FILE);
-
- // create the directory in case it does not exist
- Directory.CreateDirectory(userAppDataPath);
-
- // read the properties file
- PropertiesFile propertiesFile = PropertiesFile.ReadPropertiesFile(userConfigurationFile);
-
- // load the servers
- var servers = new HashedSet();
- var serverMap = new Dictionary();
- int serverCount = propertiesFile.GetGroupCount("servers");
- for (int serverId = 0; serverId < serverCount; serverId++)
- {
- // read the server configuration
- Server server = new Server();
- server.Url = propertiesFile.GetGroupRequiredStringValue("servers", serverId, "url");
- server.DisplayName = propertiesFile.GetGroupStringValue("servers", serverId, "displayName");
- server.IgnoreUntrustedCertificate = propertiesFile.GetGroupBoolValue("servers", serverId, "ignoreUntrustedCertificate", false);
-
- // credentials
- string username = propertiesFile.GetGroupStringValue("servers", serverId, "username");
- if (username != null)
- {
- string passwordBase64 = propertiesFile.GetGroupRequiredStringValue("servers", serverId, "passwordBase64");
- string password = Encoding.UTF8.GetString(Convert.FromBase64String(passwordBase64));
- server.Credentials = new Credentials(username, password);
- }
-
-#if DEBUG//FIXME
- server.Credentials = new Credentials("plop", "bam");
-#endif
-
- // keep the server
- servers.Add(server);
-
- // temporary keep for projects loading
- serverMap.Add(serverId, server);
- }
-
- // load the projects
- int projectCount = propertiesFile.GetGroupCount("projects");
- for (int projectId = 0; projectId < projectCount; projectId++)
- {
- // read the project configuration
- int serverId = propertiesFile.GetGroupRequiredIntValue("projects", projectId, "server");
- Server server = serverMap[serverId];
- Project project = new Project();
- project.Server = server;
- project.Name = propertiesFile.GetGroupRequiredStringValue("projects", projectId, "name");
- project.Url = propertiesFile.GetGroupRequiredStringValue("projects", projectId, "url");
-
- // keep the project
- server.Projects.Add(project);
- }
-
- var notificationSettings = new NotificationSettings();
- notificationSettings.FailedSoundPath = propertiesFile.GetStringValue("sounds.Failed");
- notificationSettings.FixedSoundPath = propertiesFile.GetStringValue("sounds.Fixed");
- notificationSettings.StillFailingSoundPath = propertiesFile.GetStringValue("sounds.StillFailing");
- notificationSettings.SucceededSoundPath = propertiesFile.GetStringValue("sounds.Succeeded");
- notificationSettings.TreatUnstableAsFailed = propertiesFile.GetBoolValue("sounds.TreatUnstableAsFailed") ?? true;
-
- var generalSettings = new GeneralSettings();
- generalSettings.RefreshIntervalInSeconds = propertiesFile.GetIntValue("general.RefreshTimeInSeconds", DEFAULT_TIME_BETWEEN_UPDATES);
- generalSettings.UpdateMainWindowIcon = propertiesFile.GetBoolValue("general.UpdateMainWindowIcon", true);
- generalSettings.IntegrateWithClaimPlugin = propertiesFile.GetBoolValue("general.IntegrateWithClaimPlugin", true);
-
- var res = new Configuration
- {
- Servers = servers,
- NotificationSettings = notificationSettings,
- GeneralSettings = generalSettings
- };
- return res;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Jenkins.Tray.Entities;
+using Iesi.Collections.Generic;
+using Jenkins.Tray.Utils.IO;
+using System.IO;
+using System.Reflection;
+using Common.Logging;
+
+namespace Jenkins.Tray.BusinessComponents
+{
+ [Obsolete]
+ public class LegacyConfigurationService
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ const string JENKINS_TRAY_DIRECTORY = "Jenkins Tray";
+ const string PROPERTIES_FILE = "jenkins.properties";
+ // 15 seconds
+ const int DEFAULT_TIME_BETWEEN_UPDATES = 15;
+
+ public Configuration LoadConfiguration()
+ {
+ string userAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
+ string userAppDataPath = PathHelper.Combine(userAppDataDir, JENKINS_TRAY_DIRECTORY);
+ string userConfigurationFile = PathHelper.Combine(userAppDataPath, PROPERTIES_FILE);
+
+ // create the directory in case it does not exist
+ Directory.CreateDirectory(userAppDataPath);
+
+ // read the properties file
+ PropertiesFile propertiesFile = PropertiesFile.ReadPropertiesFile(userConfigurationFile);
+
+ // load the servers
+ var servers = new HashedSet();
+ var serverMap = new Dictionary();
+ int serverCount = propertiesFile.GetGroupCount("servers");
+ for (int serverId = 0; serverId < serverCount; serverId++)
+ {
+ // read the server configuration
+ Server server = new Server();
+ server.Url = propertiesFile.GetGroupRequiredStringValue("servers", serverId, "url");
+ server.DisplayName = propertiesFile.GetGroupStringValue("servers", serverId, "displayName");
+ server.IgnoreUntrustedCertificate = propertiesFile.GetGroupBoolValue("servers", serverId, "ignoreUntrustedCertificate", false);
+
+ // credentials
+ string username = propertiesFile.GetGroupStringValue("servers", serverId, "username");
+ if (username != null)
+ {
+ string passwordBase64 = propertiesFile.GetGroupRequiredStringValue("servers", serverId, "passwordBase64");
+ string password = Encoding.UTF8.GetString(Convert.FromBase64String(passwordBase64));
+ server.Credentials = new Credentials(username, password);
+ }
+
+#if DEBUG//FIXME
+ server.Credentials = new Credentials("plop", "bam");
+#endif
+
+ // keep the server
+ servers.Add(server);
+
+ // temporary keep for projects loading
+ serverMap.Add(serverId, server);
+ }
+
+ // load the projects
+ int projectCount = propertiesFile.GetGroupCount("projects");
+ for (int projectId = 0; projectId < projectCount; projectId++)
+ {
+ // read the project configuration
+ int serverId = propertiesFile.GetGroupRequiredIntValue("projects", projectId, "server");
+ Server server = serverMap[serverId];
+ Project project = new Project();
+ project.Server = server;
+ project.Name = propertiesFile.GetGroupRequiredStringValue("projects", projectId, "name");
+ project.Url = propertiesFile.GetGroupRequiredStringValue("projects", projectId, "url");
+
+ // keep the project
+ server.Projects.Add(project);
+ }
+
+ var notificationSettings = new NotificationSettings();
+ notificationSettings.FailedSoundPath = propertiesFile.GetStringValue("sounds.Failed");
+ notificationSettings.FixedSoundPath = propertiesFile.GetStringValue("sounds.Fixed");
+ notificationSettings.StillFailingSoundPath = propertiesFile.GetStringValue("sounds.StillFailing");
+ notificationSettings.SucceededSoundPath = propertiesFile.GetStringValue("sounds.Succeeded");
+ notificationSettings.TreatUnstableAsFailed = propertiesFile.GetBoolValue("sounds.TreatUnstableAsFailed") ?? true;
+
+ var generalSettings = new GeneralSettings();
+ generalSettings.RefreshIntervalInSeconds = propertiesFile.GetIntValue("general.RefreshTimeInSeconds", DEFAULT_TIME_BETWEEN_UPDATES);
+ generalSettings.UpdateMainWindowIcon = propertiesFile.GetBoolValue("general.UpdateMainWindowIcon", true);
+ generalSettings.IntegrateWithClaimPlugin = propertiesFile.GetBoolValue("general.IntegrateWithClaimPlugin", true);
+
+ var res = new Configuration
+ {
+ Servers = servers,
+ NotificationSettings = notificationSettings,
+ GeneralSettings = generalSettings
+ };
+ return res;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Legacy/Collections/DualPropertiesContainer.cs b/JenkinsTray/Legacy/Collections/DualPropertiesContainer.cs
similarity index 96%
rename from HudsonTrayTracker/Legacy/Collections/DualPropertiesContainer.cs
rename to JenkinsTray/Legacy/Collections/DualPropertiesContainer.cs
index 99d5876..9d0ed1c 100644
--- a/HudsonTrayTracker/Legacy/Collections/DualPropertiesContainer.cs
+++ b/JenkinsTray/Legacy/Collections/DualPropertiesContainer.cs
@@ -1,240 +1,240 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Hudson.TrayTracker.Utils.Collections
-{
- [Obsolete]
- public class DualPropertiesContainer : IPropertiesContainer
- {
- string id;
- PropertiesContainer userProperties;
- PropertiesContainer defaultProperties;
- PropertiesContainer allProperties;
- PropertiesContainer[] writeEnabledContainers;
-
- // user properties: they can be changed
- internal IPropertiesContainer UserProperties
- {
- get { return userProperties; }
- }
-
- // default properties: they are read-only
- internal IPropertiesContainer DefaultProperties
- {
- get { return defaultProperties; }
- }
-
- // user+default properties: they are read-only
- internal IPropertiesContainer Properties
- {
- get { return allProperties; }
- }
-
- public DualPropertiesContainer(string id)
- {
- this.id = id;
- userProperties = new PropertiesContainer("User:" + id, true);
- defaultProperties = new PropertiesContainer("Default:" + id, true);
- allProperties = new PropertiesContainer("All:" + id, true);
- writeEnabledContainers = new PropertiesContainer[] { userProperties, allProperties };
- }
-
- delegate void PropertiesWriteActionDelegate(IPropertiesContainer properties);
-
- private void Apply(PropertiesWriteActionDelegate action)
- {
- foreach (PropertiesContainer container in writeEnabledContainers)
- {
- container.ReadOnly = false;
- action(container);
- container.ReadOnly = true;
- }
- }
-
- public string this[string key]
- {
- get { return allProperties[key]; }
- set
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties[key] = value;
- });
- }
- }
-
- public string GetStringValue(string key)
- {
- return allProperties.GetStringValue(key);
- }
- public string GetStringValue(string key, string defaultValue)
- {
- return allProperties.GetStringValue(key, defaultValue);
- }
- public string GetRequiredStringValue(string key)
- {
- return allProperties.GetRequiredStringValue(key);
- }
- public Int32? GetIntValue(string key)
- {
- return allProperties.GetIntValue(key);
- }
- public Int32 GetIntValue(string key, Int32 defaultValue)
- {
- return allProperties.GetIntValue(key, defaultValue);
- }
- public void SetIntValue(string key, int value)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.SetIntValue(key, value);
- });
- }
- public Int32 GetRequiredIntValue(string key)
- {
- return allProperties.GetRequiredIntValue(key);
- }
- public float? GetFloatValue(string key)
- {
- return allProperties.GetFloatValue(key);
- }
- public float? GetFloatValue(string key, float defaultValue)
- {
- return allProperties.GetFloatValue(key, defaultValue);
- }
- public float GetRequiredFloatValue(string key)
- {
- return allProperties.GetRequiredFloatValue(key);
- }
- public bool? GetBoolValue(string key)
- {
- return allProperties.GetBoolValue(key);
- }
- public bool GetBoolValue(string key, bool defaultValue)
- {
- return allProperties.GetBoolValue(key, defaultValue);
- }
- public void SetBoolValue(string key, bool value)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.SetBoolValue(key, value);
- });
- }
- public void RemoveValue(string key)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.RemoveValue(key);
- });
- }
-
- public int GetGroupCount(string group)
- {
- return allProperties.GetGroupCount(group);
- }
- public string GetGroupStringValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupStringValue(group, groupId, key);
- }
- public string GetGroupStringValue(string group, int groupId, string key, string defaultValue)
- {
- return allProperties.GetGroupStringValue(group, groupId, key, defaultValue);
- }
- public string GetGroupRequiredStringValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupRequiredStringValue(group, groupId, key);
- }
- public Int32? GetGroupIntValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupIntValue(group, groupId, key);
- }
- public Int32? GetGroupIntValue(string group, int groupId, string key, Int32 defaultValue)
- {
- return allProperties.GetGroupIntValue(group, groupId, key, defaultValue);
- }
- public Int32 GetGroupRequiredIntValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupRequiredIntValue(group, groupId, key);
- }
- public float? GetGroupFloatValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupFloatValue(group, groupId, key);
- }
- public float? GetGroupFloatValue(string group, int groupId, string key, float defaultValue)
- {
- return allProperties.GetGroupFloatValue(group, groupId, key, defaultValue);
- }
- public float GetGroupRequiredFloatValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupRequiredFloatValue(group, groupId, key);
- }
- public bool? GetGroupBoolValue(string group, int groupId, string key)
- {
- return allProperties.GetGroupBoolValue(group, groupId, key);
- }
-
- public bool GetGroupBoolValue(string group, int groupId, string key, bool defaultValue)
- {
- return allProperties.GetGroupBoolValue(group, groupId, key, defaultValue);
- }
- public void SetGroupCount(string group, int count)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.SetGroupCount(group, count);
- });
- }
- public void SetGroupStringValue(string group, int groupId, string key, string value)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.SetGroupStringValue(group, groupId, key, value);
- });
- }
- public void SetGroupIntValue(string group, int groupId, string key, int value)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.SetGroupIntValue(group, groupId, key, value);
- });
- }
- public void SetGroupBoolValue(string group, int groupId, string key, bool value)
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.SetGroupBoolValue(group, groupId, key, value);
- });
- }
-
- public IEnumerator> GetEnumerator()
- {
- return allProperties.GetEnumerator();
- }
-
- System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
- {
- return allProperties.GetEnumerator();
- }
-
- public void CopyPropertiesFrom(IPropertiesContainer properties)
- {
- throw new Exception("The method or operation is not implemented.");
- }
-
- public bool ReadOnly
- {
- get { throw new Exception("The method or operation is not implemented."); }
- set { throw new Exception("The method or operation is not implemented."); }
- }
-
- public void Clear()
- {
- Apply(delegate(IPropertiesContainer properties)
- {
- properties.Clear();
- });
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Jenkins.Tray.Utils.Collections
+{
+ [Obsolete]
+ public class DualPropertiesContainer : IPropertiesContainer
+ {
+ string id;
+ PropertiesContainer userProperties;
+ PropertiesContainer defaultProperties;
+ PropertiesContainer allProperties;
+ PropertiesContainer[] writeEnabledContainers;
+
+ // user properties: they can be changed
+ internal IPropertiesContainer UserProperties
+ {
+ get { return userProperties; }
+ }
+
+ // default properties: they are read-only
+ internal IPropertiesContainer DefaultProperties
+ {
+ get { return defaultProperties; }
+ }
+
+ // user+default properties: they are read-only
+ internal IPropertiesContainer Properties
+ {
+ get { return allProperties; }
+ }
+
+ public DualPropertiesContainer(string id)
+ {
+ this.id = id;
+ userProperties = new PropertiesContainer("User:" + id, true);
+ defaultProperties = new PropertiesContainer("Default:" + id, true);
+ allProperties = new PropertiesContainer("All:" + id, true);
+ writeEnabledContainers = new PropertiesContainer[] { userProperties, allProperties };
+ }
+
+ delegate void PropertiesWriteActionDelegate(IPropertiesContainer properties);
+
+ private void Apply(PropertiesWriteActionDelegate action)
+ {
+ foreach (PropertiesContainer container in writeEnabledContainers)
+ {
+ container.ReadOnly = false;
+ action(container);
+ container.ReadOnly = true;
+ }
+ }
+
+ public string this[string key]
+ {
+ get { return allProperties[key]; }
+ set
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties[key] = value;
+ });
+ }
+ }
+
+ public string GetStringValue(string key)
+ {
+ return allProperties.GetStringValue(key);
+ }
+ public string GetStringValue(string key, string defaultValue)
+ {
+ return allProperties.GetStringValue(key, defaultValue);
+ }
+ public string GetRequiredStringValue(string key)
+ {
+ return allProperties.GetRequiredStringValue(key);
+ }
+ public Int32? GetIntValue(string key)
+ {
+ return allProperties.GetIntValue(key);
+ }
+ public Int32 GetIntValue(string key, Int32 defaultValue)
+ {
+ return allProperties.GetIntValue(key, defaultValue);
+ }
+ public void SetIntValue(string key, int value)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.SetIntValue(key, value);
+ });
+ }
+ public Int32 GetRequiredIntValue(string key)
+ {
+ return allProperties.GetRequiredIntValue(key);
+ }
+ public float? GetFloatValue(string key)
+ {
+ return allProperties.GetFloatValue(key);
+ }
+ public float? GetFloatValue(string key, float defaultValue)
+ {
+ return allProperties.GetFloatValue(key, defaultValue);
+ }
+ public float GetRequiredFloatValue(string key)
+ {
+ return allProperties.GetRequiredFloatValue(key);
+ }
+ public bool? GetBoolValue(string key)
+ {
+ return allProperties.GetBoolValue(key);
+ }
+ public bool GetBoolValue(string key, bool defaultValue)
+ {
+ return allProperties.GetBoolValue(key, defaultValue);
+ }
+ public void SetBoolValue(string key, bool value)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.SetBoolValue(key, value);
+ });
+ }
+ public void RemoveValue(string key)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.RemoveValue(key);
+ });
+ }
+
+ public int GetGroupCount(string group)
+ {
+ return allProperties.GetGroupCount(group);
+ }
+ public string GetGroupStringValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupStringValue(group, groupId, key);
+ }
+ public string GetGroupStringValue(string group, int groupId, string key, string defaultValue)
+ {
+ return allProperties.GetGroupStringValue(group, groupId, key, defaultValue);
+ }
+ public string GetGroupRequiredStringValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupRequiredStringValue(group, groupId, key);
+ }
+ public Int32? GetGroupIntValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupIntValue(group, groupId, key);
+ }
+ public Int32? GetGroupIntValue(string group, int groupId, string key, Int32 defaultValue)
+ {
+ return allProperties.GetGroupIntValue(group, groupId, key, defaultValue);
+ }
+ public Int32 GetGroupRequiredIntValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupRequiredIntValue(group, groupId, key);
+ }
+ public float? GetGroupFloatValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupFloatValue(group, groupId, key);
+ }
+ public float? GetGroupFloatValue(string group, int groupId, string key, float defaultValue)
+ {
+ return allProperties.GetGroupFloatValue(group, groupId, key, defaultValue);
+ }
+ public float GetGroupRequiredFloatValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupRequiredFloatValue(group, groupId, key);
+ }
+ public bool? GetGroupBoolValue(string group, int groupId, string key)
+ {
+ return allProperties.GetGroupBoolValue(group, groupId, key);
+ }
+
+ public bool GetGroupBoolValue(string group, int groupId, string key, bool defaultValue)
+ {
+ return allProperties.GetGroupBoolValue(group, groupId, key, defaultValue);
+ }
+ public void SetGroupCount(string group, int count)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.SetGroupCount(group, count);
+ });
+ }
+ public void SetGroupStringValue(string group, int groupId, string key, string value)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.SetGroupStringValue(group, groupId, key, value);
+ });
+ }
+ public void SetGroupIntValue(string group, int groupId, string key, int value)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.SetGroupIntValue(group, groupId, key, value);
+ });
+ }
+ public void SetGroupBoolValue(string group, int groupId, string key, bool value)
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.SetGroupBoolValue(group, groupId, key, value);
+ });
+ }
+
+ public IEnumerator> GetEnumerator()
+ {
+ return allProperties.GetEnumerator();
+ }
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return allProperties.GetEnumerator();
+ }
+
+ public void CopyPropertiesFrom(IPropertiesContainer properties)
+ {
+ throw new Exception("The method or operation is not implemented.");
+ }
+
+ public bool ReadOnly
+ {
+ get { throw new Exception("The method or operation is not implemented."); }
+ set { throw new Exception("The method or operation is not implemented."); }
+ }
+
+ public void Clear()
+ {
+ Apply(delegate(IPropertiesContainer properties)
+ {
+ properties.Clear();
+ });
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Legacy/Collections/IPropertiesContainer.cs b/JenkinsTray/Legacy/Collections/IPropertiesContainer.cs
similarity index 95%
rename from HudsonTrayTracker/Legacy/Collections/IPropertiesContainer.cs
rename to JenkinsTray/Legacy/Collections/IPropertiesContainer.cs
index 065bf02..660129c 100644
--- a/HudsonTrayTracker/Legacy/Collections/IPropertiesContainer.cs
+++ b/JenkinsTray/Legacy/Collections/IPropertiesContainer.cs
@@ -1,53 +1,53 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-using System.Reflection;
-
-namespace Hudson.TrayTracker.Utils.Collections
-{
- // reads a properties file
- [Obsolete]
- public interface IPropertiesContainer : IEnumerable>
- {
- bool ReadOnly { get; set; }
-
- string this[string key] { get; set; }
-
- string GetStringValue(string key);
- string GetStringValue(string key, string defaultValue);
- string GetRequiredStringValue(string key);
- Int32? GetIntValue(string key);
- Int32 GetIntValue(string key, Int32 defaultValue);
- Int32 GetRequiredIntValue(string key);
- void SetIntValue(string key, int value);
- float? GetFloatValue(string key);
- float? GetFloatValue(string key, float defaultValue);
- float GetRequiredFloatValue(string key);
- bool? GetBoolValue(string key);
- bool GetBoolValue(string key, bool defaultValue);
- void SetBoolValue(string key, bool value);
- void RemoveValue(string key);
-
- int GetGroupCount(string group);
- string GetGroupStringValue(string group, int groupId, string key);
- string GetGroupStringValue(string group, int groupId, string key, string defaultValue);
- string GetGroupRequiredStringValue(string group, int groupId, string key);
- Int32? GetGroupIntValue(string group, int groupId, string key);
- Int32? GetGroupIntValue(string group, int groupId, string key, Int32 defaultValue);
- Int32 GetGroupRequiredIntValue(string group, int groupId, string key);
- float? GetGroupFloatValue(string group, int groupId, string key);
- float? GetGroupFloatValue(string group, int groupId, string key, float defaultValue);
- float GetGroupRequiredFloatValue(string group, int groupId, string key);
- bool? GetGroupBoolValue(string group, int groupId, string key);
- bool GetGroupBoolValue(string group, int groupId, string key, bool defaultValue);
- void SetGroupCount(string group, int count);
- void SetGroupStringValue(string group, int groupId, string key, string value);
- void SetGroupIntValue(string group, int groupId, string key, int value);
- void SetGroupBoolValue(string group, int groupId, string key, bool value);
-
- void CopyPropertiesFrom(IPropertiesContainer properties);
-
- void Clear();
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Reflection;
+
+namespace Jenkins.Tray.Utils.Collections
+{
+ // reads a properties file
+ [Obsolete]
+ public interface IPropertiesContainer : IEnumerable>
+ {
+ bool ReadOnly { get; set; }
+
+ string this[string key] { get; set; }
+
+ string GetStringValue(string key);
+ string GetStringValue(string key, string defaultValue);
+ string GetRequiredStringValue(string key);
+ Int32? GetIntValue(string key);
+ Int32 GetIntValue(string key, Int32 defaultValue);
+ Int32 GetRequiredIntValue(string key);
+ void SetIntValue(string key, int value);
+ float? GetFloatValue(string key);
+ float? GetFloatValue(string key, float defaultValue);
+ float GetRequiredFloatValue(string key);
+ bool? GetBoolValue(string key);
+ bool GetBoolValue(string key, bool defaultValue);
+ void SetBoolValue(string key, bool value);
+ void RemoveValue(string key);
+
+ int GetGroupCount(string group);
+ string GetGroupStringValue(string group, int groupId, string key);
+ string GetGroupStringValue(string group, int groupId, string key, string defaultValue);
+ string GetGroupRequiredStringValue(string group, int groupId, string key);
+ Int32? GetGroupIntValue(string group, int groupId, string key);
+ Int32? GetGroupIntValue(string group, int groupId, string key, Int32 defaultValue);
+ Int32 GetGroupRequiredIntValue(string group, int groupId, string key);
+ float? GetGroupFloatValue(string group, int groupId, string key);
+ float? GetGroupFloatValue(string group, int groupId, string key, float defaultValue);
+ float GetGroupRequiredFloatValue(string group, int groupId, string key);
+ bool? GetGroupBoolValue(string group, int groupId, string key);
+ bool GetGroupBoolValue(string group, int groupId, string key, bool defaultValue);
+ void SetGroupCount(string group, int count);
+ void SetGroupStringValue(string group, int groupId, string key, string value);
+ void SetGroupIntValue(string group, int groupId, string key, int value);
+ void SetGroupBoolValue(string group, int groupId, string key, bool value);
+
+ void CopyPropertiesFrom(IPropertiesContainer properties);
+
+ void Clear();
+ }
+}
diff --git a/HudsonTrayTracker/Legacy/Collections/PropertiesContainer.cs b/JenkinsTray/Legacy/Collections/PropertiesContainer.cs
similarity index 96%
rename from HudsonTrayTracker/Legacy/Collections/PropertiesContainer.cs
rename to JenkinsTray/Legacy/Collections/PropertiesContainer.cs
index 8961d34..90a598b 100644
--- a/HudsonTrayTracker/Legacy/Collections/PropertiesContainer.cs
+++ b/JenkinsTray/Legacy/Collections/PropertiesContainer.cs
@@ -1,319 +1,319 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-using System.Reflection;
-
-using Common.Logging;
-using System.Globalization;
-using System.Text.RegularExpressions;
-
-namespace Hudson.TrayTracker.Utils.Collections
-{
- // reads a properties file
- [Obsolete]
- public class PropertiesContainer : IPropertiesContainer
- {
- private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- private static readonly Regex REGEX_BOOLEAN_TRUE = new Regex("^( *)(true|1|yes)( *)$", RegexOptions.IgnoreCase);
-
- string id;
- IDictionary properties;
- CultureInfo culture = new CultureInfo("en-US");
- bool readOnly;
-
- public bool ReadOnly
- {
- get { return readOnly; }
- set { readOnly = value; }
- }
-
- // returns the property or null if not found
- public string this[string key]
- {
- get { return GetStringValue(key); }
- set
- {
- if (readOnly)
- throw new Exception("Cannot write to a read-only container");
- properties[key] = value;
- }
- }
-
- public PropertiesContainer(string id, bool readOnly)
- {
- this.id = id;
- this.readOnly = readOnly;
- properties = new Dictionary();
- }
-
- public PropertiesContainer(string id)
- : this(id, false)
- {
- }
-
- public string GetStringValue(string key)
- {
- string res = null;
- properties.TryGetValue(key, out res);
- return res;
- }
-
- public string GetStringValue(string key, string defaultValue)
- {
- string res = GetStringValue(key);
- if (res != null)
- return res;
- return defaultValue;
- }
-
- public string GetRequiredStringValue(string key)
- {
- string value = GetStringValue(key);
- if (value != null)
- return value;
- throw new Exception("Required property '" + key + "' not found in container '" + id + "'");
- }
-
- public Int32? GetIntValue(string key)
- {
- string strValue = GetStringValue(key);
- if (strValue == null)
- return null;
-
- Int32 intValue;
- if (Int32.TryParse(strValue, out intValue) == false)
- {
- logger.Error("Failed reading Int32 property '" + key + "' in file '" + id + "'");
- throw new Exception("Failed reading Int32 property '" + key + "' in file '" + id + "'");
- }
- return intValue;
- }
-
- public Int32 GetIntValue(string key, Int32 defaultValue)
- {
- Int32? value = GetIntValue(key);
- if (value != null)
- return value.Value;
- return defaultValue;
- }
-
- public Int32 GetRequiredIntValue(string key)
- {
- Int32? value = GetIntValue(key);
- if (value != null)
- return value.Value;
- throw new Exception("Required property '" + key + "' not found in file '" + id + "'");
- }
-
- public void SetIntValue(string key, int value)
- {
- this[key] = value.ToString();
- }
-
- public float? GetFloatValue(string key)
- {
- string strValue = GetStringValue(key);
- if (strValue == null)
- return null;
-
- float floatValue;
- if (float.TryParse(strValue, NumberStyles.Float, culture, out floatValue) == false)
- {
- logger.Error("Failed reading float property '" + key + "' in file '" + id + "'");
- throw new Exception("Failed reading float property '" + key + "' in file '" + id + "'");
- }
- return floatValue;
- }
-
- public float? GetFloatValue(string key, float defaultValue)
- {
- float? value = GetFloatValue(key);
- if (value != null)
- return value.Value;
- return defaultValue;
- }
-
- public float GetRequiredFloatValue(string key)
- {
- float? value = GetFloatValue(key);
- if (value != null)
- return value.Value;
- throw new Exception("Required property '" + key + "' not found in file '" + id + "'");
- }
-
- public bool? GetBoolValue(string key)
- {
- string strValue = GetStringValue(key);
- if (strValue == null)
- return null;
-
- //if (strValue == "true" || strValue == "1" || strValue == "yes")
- // return true;
- return REGEX_BOOLEAN_TRUE.IsMatch(strValue);
- }
-
- public bool GetBoolValue(string key, bool defaultValue)
- {
- bool? value = GetBoolValue(key);
- if (value != null)
- return value.Value;
- return defaultValue;
- }
-
- public void SetBoolValue(string key, bool value)
- {
- this[key] = value ? "true" : "false";
- }
-
- public void RemoveValue(string key)
- {
- properties.Remove(key);
- }
-
- public int GetGroupCount(string group)
- {
- int? count = GetIntValue(group + ".count");
- if (count.HasValue)
- return count.Value;
- return 0;
- }
-
- public string GetGroupStringValue(string group, int groupId, string key)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetStringValue(groupKey);
- }
-
- public string GetGroupStringValue(string group, int groupId, string key, string defaultValue)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetStringValue(groupKey, defaultValue);
- }
-
- public string GetGroupRequiredStringValue(string group, int groupId, string key)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetRequiredStringValue(groupKey);
- }
-
- public Int32? GetGroupIntValue(string group, int groupId, string key)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetIntValue(groupKey);
- }
-
- public Int32? GetGroupIntValue(string group, int groupId, string key, Int32 defaultValue)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetIntValue(groupKey, defaultValue);
- }
-
- public void SetGroupIntValue(string group, int groupId, string key, int value)
- {
- string groupKey = GetGroupKey(group, groupId, key);
-
- this[groupKey] = value.ToString();
- }
-
- public bool? GetGroupBoolValue(string group, int groupId, string key)
- {
- string strValue = GetGroupStringValue(group, groupId, key);
-
- if (strValue == null)
- return null;
-
- return REGEX_BOOLEAN_TRUE.IsMatch(strValue);
- }
-
- public bool GetGroupBoolValue(string group, int groupId, string key, bool defaultValue)
- {
- bool? value = GetGroupBoolValue(group, groupId, key);
-
- if (value != null)
- return value.Value;
-
- return defaultValue;
- }
-
- public void SetGroupBoolValue(string group, int groupId, string key, bool value)
- {
- string groupKey = GetGroupKey(group, groupId, key);
-
- this[groupKey] = value ? "true" : "false";
- }
-
- public Int32 GetGroupRequiredIntValue(string group, int groupId, string key)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetRequiredIntValue(groupKey);
- }
-
- public float? GetGroupFloatValue(string group, int groupId, string key)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetFloatValue(groupKey);
- }
-
- public float? GetGroupFloatValue(string group, int groupId, string key, float defaultValue)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetFloatValue(groupKey, defaultValue);
- }
-
- public float GetGroupRequiredFloatValue(string group, int groupId, string key)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- return GetRequiredFloatValue(groupKey);
- }
-
- public void SetGroupCount(string group, int count)
- {
- if (count < 1)
- throw new Exception("Count must be positive.");
- this[group + ".count"] = count.ToString();
- }
-
- public void SetGroupStringValue(string group, int groupId, string key, string value)
- {
- string groupKey = GetGroupKey(group, groupId, key);
- this[groupKey] = value;
- }
-
- private string GetGroupKey(string group, int groupId, string key)
- {
- return group + "[" + groupId + "]." + key;
- }
-
- #region IEnumerable> Members
-
- public IEnumerator> GetEnumerator()
- {
- return properties.GetEnumerator();
- }
-
- #endregion
-
- #region IEnumerable Members
-
- System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
- {
- return properties.GetEnumerator();
- }
-
- #endregion
-
- public void CopyPropertiesFrom(IPropertiesContainer properties)
- {
- foreach (KeyValuePair pair in properties)
- this[pair.Key] = pair.Value;
- }
-
- public void Clear()
- {
- if (readOnly)
- throw new Exception("Cannot write to a read-only container");
- properties.Clear();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Reflection;
+
+using Common.Logging;
+using System.Globalization;
+using System.Text.RegularExpressions;
+
+namespace Jenkins.Tray.Utils.Collections
+{
+ // reads a properties file
+ [Obsolete]
+ public class PropertiesContainer : IPropertiesContainer
+ {
+ private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+ private static readonly Regex REGEX_BOOLEAN_TRUE = new Regex("^( *)(true|1|yes)( *)$", RegexOptions.IgnoreCase);
+
+ string id;
+ IDictionary properties;
+ CultureInfo culture = new CultureInfo("en-US");
+ bool readOnly;
+
+ public bool ReadOnly
+ {
+ get { return readOnly; }
+ set { readOnly = value; }
+ }
+
+ // returns the property or null if not found
+ public string this[string key]
+ {
+ get { return GetStringValue(key); }
+ set
+ {
+ if (readOnly)
+ throw new Exception("Cannot write to a read-only container");
+ properties[key] = value;
+ }
+ }
+
+ public PropertiesContainer(string id, bool readOnly)
+ {
+ this.id = id;
+ this.readOnly = readOnly;
+ properties = new Dictionary();
+ }
+
+ public PropertiesContainer(string id)
+ : this(id, false)
+ {
+ }
+
+ public string GetStringValue(string key)
+ {
+ string res = null;
+ properties.TryGetValue(key, out res);
+ return res;
+ }
+
+ public string GetStringValue(string key, string defaultValue)
+ {
+ string res = GetStringValue(key);
+ if (res != null)
+ return res;
+ return defaultValue;
+ }
+
+ public string GetRequiredStringValue(string key)
+ {
+ string value = GetStringValue(key);
+ if (value != null)
+ return value;
+ throw new Exception("Required property '" + key + "' not found in container '" + id + "'");
+ }
+
+ public Int32? GetIntValue(string key)
+ {
+ string strValue = GetStringValue(key);
+ if (strValue == null)
+ return null;
+
+ Int32 intValue;
+ if (Int32.TryParse(strValue, out intValue) == false)
+ {
+ logger.Error("Failed reading Int32 property '" + key + "' in file '" + id + "'");
+ throw new Exception("Failed reading Int32 property '" + key + "' in file '" + id + "'");
+ }
+ return intValue;
+ }
+
+ public Int32 GetIntValue(string key, Int32 defaultValue)
+ {
+ Int32? value = GetIntValue(key);
+ if (value != null)
+ return value.Value;
+ return defaultValue;
+ }
+
+ public Int32 GetRequiredIntValue(string key)
+ {
+ Int32? value = GetIntValue(key);
+ if (value != null)
+ return value.Value;
+ throw new Exception("Required property '" + key + "' not found in file '" + id + "'");
+ }
+
+ public void SetIntValue(string key, int value)
+ {
+ this[key] = value.ToString();
+ }
+
+ public float? GetFloatValue(string key)
+ {
+ string strValue = GetStringValue(key);
+ if (strValue == null)
+ return null;
+
+ float floatValue;
+ if (float.TryParse(strValue, NumberStyles.Float, culture, out floatValue) == false)
+ {
+ logger.Error("Failed reading float property '" + key + "' in file '" + id + "'");
+ throw new Exception("Failed reading float property '" + key + "' in file '" + id + "'");
+ }
+ return floatValue;
+ }
+
+ public float? GetFloatValue(string key, float defaultValue)
+ {
+ float? value = GetFloatValue(key);
+ if (value != null)
+ return value.Value;
+ return defaultValue;
+ }
+
+ public float GetRequiredFloatValue(string key)
+ {
+ float? value = GetFloatValue(key);
+ if (value != null)
+ return value.Value;
+ throw new Exception("Required property '" + key + "' not found in file '" + id + "'");
+ }
+
+ public bool? GetBoolValue(string key)
+ {
+ string strValue = GetStringValue(key);
+ if (strValue == null)
+ return null;
+
+ //if (strValue == "true" || strValue == "1" || strValue == "yes")
+ // return true;
+ return REGEX_BOOLEAN_TRUE.IsMatch(strValue);
+ }
+
+ public bool GetBoolValue(string key, bool defaultValue)
+ {
+ bool? value = GetBoolValue(key);
+ if (value != null)
+ return value.Value;
+ return defaultValue;
+ }
+
+ public void SetBoolValue(string key, bool value)
+ {
+ this[key] = value ? "true" : "false";
+ }
+
+ public void RemoveValue(string key)
+ {
+ properties.Remove(key);
+ }
+
+ public int GetGroupCount(string group)
+ {
+ int? count = GetIntValue(group + ".count");
+ if (count.HasValue)
+ return count.Value;
+ return 0;
+ }
+
+ public string GetGroupStringValue(string group, int groupId, string key)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetStringValue(groupKey);
+ }
+
+ public string GetGroupStringValue(string group, int groupId, string key, string defaultValue)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetStringValue(groupKey, defaultValue);
+ }
+
+ public string GetGroupRequiredStringValue(string group, int groupId, string key)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetRequiredStringValue(groupKey);
+ }
+
+ public Int32? GetGroupIntValue(string group, int groupId, string key)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetIntValue(groupKey);
+ }
+
+ public Int32? GetGroupIntValue(string group, int groupId, string key, Int32 defaultValue)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetIntValue(groupKey, defaultValue);
+ }
+
+ public void SetGroupIntValue(string group, int groupId, string key, int value)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+
+ this[groupKey] = value.ToString();
+ }
+
+ public bool? GetGroupBoolValue(string group, int groupId, string key)
+ {
+ string strValue = GetGroupStringValue(group, groupId, key);
+
+ if (strValue == null)
+ return null;
+
+ return REGEX_BOOLEAN_TRUE.IsMatch(strValue);
+ }
+
+ public bool GetGroupBoolValue(string group, int groupId, string key, bool defaultValue)
+ {
+ bool? value = GetGroupBoolValue(group, groupId, key);
+
+ if (value != null)
+ return value.Value;
+
+ return defaultValue;
+ }
+
+ public void SetGroupBoolValue(string group, int groupId, string key, bool value)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+
+ this[groupKey] = value ? "true" : "false";
+ }
+
+ public Int32 GetGroupRequiredIntValue(string group, int groupId, string key)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetRequiredIntValue(groupKey);
+ }
+
+ public float? GetGroupFloatValue(string group, int groupId, string key)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetFloatValue(groupKey);
+ }
+
+ public float? GetGroupFloatValue(string group, int groupId, string key, float defaultValue)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetFloatValue(groupKey, defaultValue);
+ }
+
+ public float GetGroupRequiredFloatValue(string group, int groupId, string key)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ return GetRequiredFloatValue(groupKey);
+ }
+
+ public void SetGroupCount(string group, int count)
+ {
+ if (count < 1)
+ throw new Exception("Count must be positive.");
+ this[group + ".count"] = count.ToString();
+ }
+
+ public void SetGroupStringValue(string group, int groupId, string key, string value)
+ {
+ string groupKey = GetGroupKey(group, groupId, key);
+ this[groupKey] = value;
+ }
+
+ private string GetGroupKey(string group, int groupId, string key)
+ {
+ return group + "[" + groupId + "]." + key;
+ }
+
+ #region IEnumerable> Members
+
+ public IEnumerator> GetEnumerator()
+ {
+ return properties.GetEnumerator();
+ }
+
+ #endregion
+
+ #region IEnumerable Members
+
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+ {
+ return properties.GetEnumerator();
+ }
+
+ #endregion
+
+ public void CopyPropertiesFrom(IPropertiesContainer properties)
+ {
+ foreach (KeyValuePair pair in properties)
+ this[pair.Key] = pair.Value;
+ }
+
+ public void Clear()
+ {
+ if (readOnly)
+ throw new Exception("Cannot write to a read-only container");
+ properties.Clear();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Legacy/IO/PropertiesFile.cs b/JenkinsTray/Legacy/IO/PropertiesFile.cs
similarity index 95%
rename from HudsonTrayTracker/Legacy/IO/PropertiesFile.cs
rename to JenkinsTray/Legacy/IO/PropertiesFile.cs
index 7fb1e67..4c8645e 100644
--- a/HudsonTrayTracker/Legacy/IO/PropertiesFile.cs
+++ b/JenkinsTray/Legacy/IO/PropertiesFile.cs
@@ -1,163 +1,163 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-using System.Reflection;
-
-using Common.Logging;
-
-using Hudson.TrayTracker.Utils.Collections;
-
-namespace Hudson.TrayTracker.Utils.IO
-{
- // reads a properties file
- [Obsolete]
- public class PropertiesFile : DualPropertiesContainer
- {
- private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- string filename;
-
- public static PropertiesFile ReadPropertiesFile(string filename)
- {
- PropertiesFile file = new PropertiesFile(filename);
- file.ReadProperties();
- return file;
- }
-
- public static PropertiesFile ReadPropertiesFileOrFail(string filename)
- {
- PropertiesFile file = new PropertiesFile(filename);
- file.ReadPropertiesOrFail();
- return file;
- }
-
- public static IPropertiesContainer ReadProperties(Stream stream, string id)
- {
- PropertiesContainer properties = new PropertiesContainer(id);
- StreamReader streamReader = new StreamReader(stream);
- ParseStream(streamReader, properties);
- return properties;
- }
-
- public static IPropertiesContainer ReadProperties(string content, string id)
- {
- PropertiesContainer properties = new PropertiesContainer(id);
- StringReader reader = new StringReader(content);
- ParseStream(reader, properties);
- return properties;
- }
-
- public static bool CanReadFile(string metadataFile)
- {
- bool exists = File.Exists(metadataFile);
- return exists;
- }
-
- public PropertiesFile(string filename)
- : base(filename)
- {
- if (filename == null)
- throw new ArgumentNullException("filename");
- this.filename = filename;
- }
-
- public void WriteProperties()
- {
- WriteFile();
- }
-
- // Reads the properties from the file, and returns a boolean indicating wheter file was found or not.
- // The file used is the one provided as a constructor argument.
- public bool ReadProperties()
- {
- return ReadProperties(filename, true);
- }
-
- // Reads the properties from the file, and returns a boolean indicating wheter file was found or not
- public bool ReadProperties(string filename, bool isUserFile)
- {
- bool exists = File.Exists(filename);
- if (exists)
- {
- // read properties
- IPropertiesContainer properties = isUserFile ? UserProperties : DefaultProperties;
- properties.ReadOnly = false;
- ParseFile(filename, properties);
- properties.ReadOnly = true;
-
- // copy to the "all" container
- Properties.ReadOnly = false;
- Properties.CopyPropertiesFrom(properties);
- Properties.ReadOnly = true;
- }
- else
- logger.Info("Properties file not found: " + filename);
- return exists;
- }
-
- // reads the properties from the file, and throws an exception if the file was not found
- public void ReadPropertiesOrFail()
- {
- bool exists = ReadProperties();
- if (!exists)
- throw new Exception("Properties file not found: " + filename);
- }
-
- private void ParseFile(string filename, IPropertiesContainer properties)
- {
- if (logger.IsInfoEnabled)
- logger.Info("Parsing file: " + filename);
-
- StreamReader stream = File.OpenText(filename);
- ParseStream(stream, properties);
- stream.Close();
- stream.Dispose();
- }
-
- private static void ParseStream(TextReader stream, IPropertiesContainer properties)
- {
- string line;
- int i = 1;
- while ((line = stream.ReadLine()) != null)
- ParseLine(line, i++, properties);
- }
-
- private static void ParseLine(string line, int lineNumber, IPropertiesContainer properties)
- {
- if (line.Trim() == "" || line.StartsWith("#"))
- return;
-
- int index = line.IndexOf('=');
- if (index == -1)
- {
- logger.Error("Could not parse line " + lineNumber + ": " + line);
- throw new Exception("Could not parse line " + lineNumber + ": " + line);
- }
-
- string propKey = line.Substring(0, index).Trim();
- string propValue = line.Substring(index + 1).Trim();
-
- properties[propKey] = propValue;
- }
-
- private void WriteFile()
- {
- if (logger.IsInfoEnabled)
- logger.Info("Writing file: " + filename);
-
- StreamWriter file = new StreamWriter(filename);
- foreach (KeyValuePair pair in UserProperties)
- {
- file.Write(pair.Key);
- file.Write("=");
- file.Write(pair.Value);
- file.WriteLine();
- }
- file.Flush();
- file.Close();
- file.Dispose();
- file = null;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Reflection;
+
+using Common.Logging;
+
+using Jenkins.Tray.Utils.Collections;
+
+namespace Jenkins.Tray.Utils.IO
+{
+ // reads a properties file
+ [Obsolete]
+ public class PropertiesFile : DualPropertiesContainer
+ {
+ private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ string filename;
+
+ public static PropertiesFile ReadPropertiesFile(string filename)
+ {
+ PropertiesFile file = new PropertiesFile(filename);
+ file.ReadProperties();
+ return file;
+ }
+
+ public static PropertiesFile ReadPropertiesFileOrFail(string filename)
+ {
+ PropertiesFile file = new PropertiesFile(filename);
+ file.ReadPropertiesOrFail();
+ return file;
+ }
+
+ public static IPropertiesContainer ReadProperties(Stream stream, string id)
+ {
+ PropertiesContainer properties = new PropertiesContainer(id);
+ StreamReader streamReader = new StreamReader(stream);
+ ParseStream(streamReader, properties);
+ return properties;
+ }
+
+ public static IPropertiesContainer ReadProperties(string content, string id)
+ {
+ PropertiesContainer properties = new PropertiesContainer(id);
+ StringReader reader = new StringReader(content);
+ ParseStream(reader, properties);
+ return properties;
+ }
+
+ public static bool CanReadFile(string metadataFile)
+ {
+ bool exists = File.Exists(metadataFile);
+ return exists;
+ }
+
+ public PropertiesFile(string filename)
+ : base(filename)
+ {
+ if (filename == null)
+ throw new ArgumentNullException("filename");
+ this.filename = filename;
+ }
+
+ public void WriteProperties()
+ {
+ WriteFile();
+ }
+
+ // Reads the properties from the file, and returns a boolean indicating wheter file was found or not.
+ // The file used is the one provided as a constructor argument.
+ public bool ReadProperties()
+ {
+ return ReadProperties(filename, true);
+ }
+
+ // Reads the properties from the file, and returns a boolean indicating wheter file was found or not
+ public bool ReadProperties(string filename, bool isUserFile)
+ {
+ bool exists = File.Exists(filename);
+ if (exists)
+ {
+ // read properties
+ IPropertiesContainer properties = isUserFile ? UserProperties : DefaultProperties;
+ properties.ReadOnly = false;
+ ParseFile(filename, properties);
+ properties.ReadOnly = true;
+
+ // copy to the "all" container
+ Properties.ReadOnly = false;
+ Properties.CopyPropertiesFrom(properties);
+ Properties.ReadOnly = true;
+ }
+ else
+ logger.Info("Properties file not found: " + filename);
+ return exists;
+ }
+
+ // reads the properties from the file, and throws an exception if the file was not found
+ public void ReadPropertiesOrFail()
+ {
+ bool exists = ReadProperties();
+ if (!exists)
+ throw new Exception("Properties file not found: " + filename);
+ }
+
+ private void ParseFile(string filename, IPropertiesContainer properties)
+ {
+ if (logger.IsInfoEnabled)
+ logger.Info("Parsing file: " + filename);
+
+ StreamReader stream = File.OpenText(filename);
+ ParseStream(stream, properties);
+ stream.Close();
+ stream.Dispose();
+ }
+
+ private static void ParseStream(TextReader stream, IPropertiesContainer properties)
+ {
+ string line;
+ int i = 1;
+ while ((line = stream.ReadLine()) != null)
+ ParseLine(line, i++, properties);
+ }
+
+ private static void ParseLine(string line, int lineNumber, IPropertiesContainer properties)
+ {
+ if (line.Trim() == "" || line.StartsWith("#"))
+ return;
+
+ int index = line.IndexOf('=');
+ if (index == -1)
+ {
+ logger.Error("Could not parse line " + lineNumber + ": " + line);
+ throw new Exception("Could not parse line " + lineNumber + ": " + line);
+ }
+
+ string propKey = line.Substring(0, index).Trim();
+ string propValue = line.Substring(index + 1).Trim();
+
+ properties[propKey] = propValue;
+ }
+
+ private void WriteFile()
+ {
+ if (logger.IsInfoEnabled)
+ logger.Info("Writing file: " + filename);
+
+ StreamWriter file = new StreamWriter(filename);
+ foreach (KeyValuePair pair in UserProperties)
+ {
+ file.Write(pair.Key);
+ file.Write("=");
+ file.Write(pair.Value);
+ file.WriteLine();
+ }
+ file.Flush();
+ file.Close();
+ file.Dispose();
+ file = null;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/LoggingConfig.xml b/JenkinsTray/LoggingConfig.xml
similarity index 88%
rename from HudsonTrayTracker/LoggingConfig.xml
rename to JenkinsTray/LoggingConfig.xml
index 51161a8..c23f3c6 100644
--- a/HudsonTrayTracker/LoggingConfig.xml
+++ b/JenkinsTray/LoggingConfig.xml
@@ -1,20 +1,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/Program.cs b/JenkinsTray/Program.cs
similarity index 91%
rename from HudsonTrayTracker/Program.cs
rename to JenkinsTray/Program.cs
index 03d0886..fd4e593 100644
--- a/HudsonTrayTracker/Program.cs
+++ b/JenkinsTray/Program.cs
@@ -1,85 +1,85 @@
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
-using Hudson.TrayTracker.BusinessComponents;
-using DevExpress.Skins;
-using DevExpress.LookAndFeel;
-using DevExpress.UserSkins;
-using Hudson.TrayTracker.UI;
-using Hudson.TrayTracker.Utils.Logging;
-using System.Reflection;
-using System.Diagnostics;
-using Common.Logging;
-using Hudson.TrayTracker.Utils;
-using System.Threading;
-using System.Drawing;
-using System.IO;
-using DevExpress.XtraEditors;
-using Spring.Context.Support;
-
-namespace Hudson.TrayTracker
-{
- static class Program
- {
- private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- ///
- /// The main entry point for the application.
- ///
- [STAThread]
- static void Main()
- {
- try
- {
- Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionHandler.Application_ThreadException);
-
- // skinning
- SkinManager.EnableFormSkins();
- OfficeSkins.Register();
- UserLookAndFeel.Default.ActiveLookAndFeel.SkinName = "Office 2010 Blue";
-
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.ApplicationExit += new EventHandler(Application_Exit);
- Application_Prepare();
-
- // Spring
- ContextRegistry.GetContext();
- MainForm.Instance.Show();
- TrayNotifier.Instance.UpdateNotifierStartup();
-
- ApplicationContext appContext = new ApplicationContext();
- Application.Run(appContext);
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- MessageBox.Show(ex.ToString(), "Program exception handler");
- }
- }
-
- private static void Application_Prepare()
- {
- logger.Info("Log4net ready.");
- logger.Info(Assembly.GetExecutingAssembly().GetName().Name
- + " v" + FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
- logger.Info(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location));
- }
-
- static void Application_Exit(object sender, EventArgs e)
- {
- try
- {
- TrayNotifier.Instance.ConfigurationService.SaveConfiguration();
- TrayNotifier.Instance.Dispose();
- }
- catch (Exception ex)
- {
- logger.Error("Failed disposing tray notifier", ex);
- }
-
- logger.Info(Assembly.GetExecutingAssembly().GetName().Name
- + " v" + FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion + " Exit");
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+using Jenkins.Tray.BusinessComponents;
+using DevExpress.Skins;
+using DevExpress.LookAndFeel;
+using DevExpress.UserSkins;
+using Jenkins.Tray.UI;
+using Jenkins.Tray.Utils.Logging;
+using System.Reflection;
+using System.Diagnostics;
+using Common.Logging;
+using Jenkins.Tray.Utils;
+using System.Threading;
+using System.Drawing;
+using System.IO;
+using DevExpress.XtraEditors;
+using Spring.Context.Support;
+
+namespace Jenkins.Tray
+{
+ static class Program
+ {
+ private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ try
+ {
+ Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionHandler.Application_ThreadException);
+
+ // skinning
+ SkinManager.EnableFormSkins();
+ OfficeSkins.Register();
+ UserLookAndFeel.Default.ActiveLookAndFeel.SkinName = "Office 2010 Blue";
+
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.ApplicationExit += new EventHandler(Application_Exit);
+ Application_Prepare();
+
+ // Spring
+ ContextRegistry.GetContext();
+ MainForm.Instance.Show();
+ TrayNotifier.Instance.UpdateNotifierStartup();
+
+ ApplicationContext appContext = new ApplicationContext();
+ Application.Run(appContext);
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ MessageBox.Show(ex.ToString(), "Program exception handler");
+ }
+ }
+
+ private static void Application_Prepare()
+ {
+ logger.Info("Log4net ready.");
+ logger.Info(Assembly.GetExecutingAssembly().GetName().Name
+ + " v" + FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
+ logger.Info(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location));
+ }
+
+ static void Application_Exit(object sender, EventArgs e)
+ {
+ try
+ {
+ TrayNotifier.Instance.ConfigurationService.SaveConfiguration();
+ TrayNotifier.Instance.Dispose();
+ }
+ catch (Exception ex)
+ {
+ logger.Error("Failed disposing tray notifier", ex);
+ }
+
+ logger.Info(Assembly.GetExecutingAssembly().GetName().Name
+ + " v" + FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion + " Exit");
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Properties/AssemblyInfo.cs b/JenkinsTray/Properties/AssemblyInfo.cs
similarity index 97%
rename from HudsonTrayTracker/Properties/AssemblyInfo.cs
rename to JenkinsTray/Properties/AssemblyInfo.cs
index 5642e59..c8d9513 100644
--- a/HudsonTrayTracker/Properties/AssemblyInfo.cs
+++ b/JenkinsTray/Properties/AssemblyInfo.cs
@@ -1,20 +1,20 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 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("Jenkins Tray")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[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("BDA12237-85B5-4D12-A88B-E8A488C2A0A8")]
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("Jenkins Tray")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[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("BDA12237-85B5-4D12-A88B-E8A488C2A0A8")]
diff --git a/HudsonTrayTracker/Properties/Resources.Designer.cs b/JenkinsTray/Properties/Resources.Designer.cs
similarity index 92%
rename from HudsonTrayTracker/Properties/Resources.Designer.cs
rename to JenkinsTray/Properties/Resources.Designer.cs
index caffccd..1a5ebc7 100644
--- a/HudsonTrayTracker/Properties/Resources.Designer.cs
+++ b/JenkinsTray/Properties/Resources.Designer.cs
@@ -1,63 +1,63 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18033
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Hudson.TrayTracker.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Hudson.TrayTracker.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18033
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Jenkins.Tray.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Jenkins.Tray.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Properties/Resources.resx b/JenkinsTray/Properties/Resources.resx
similarity index 97%
rename from HudsonTrayTracker/Properties/Resources.resx
rename to JenkinsTray/Properties/Resources.resx
index 4d26a2a..04e2214 100644
--- a/HudsonTrayTracker/Properties/Resources.resx
+++ b/JenkinsTray/Properties/Resources.resx
@@ -1,121 +1,121 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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/HudsonTrayTracker/Properties/Settings.Designer.cs b/JenkinsTray/Properties/Settings.Designer.cs
similarity index 93%
rename from HudsonTrayTracker/Properties/Settings.Designer.cs
rename to JenkinsTray/Properties/Settings.Designer.cs
index 3ebe362..12abec6 100644
--- a/HudsonTrayTracker/Properties/Settings.Designer.cs
+++ b/JenkinsTray/Properties/Settings.Designer.cs
@@ -1,26 +1,26 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.18033
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Hudson.TrayTracker.Properties {
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default {
- get {
- return defaultInstance;
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18033
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Jenkins.Tray.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Properties/Settings.settings b/JenkinsTray/Properties/Settings.settings
similarity index 97%
rename from HudsonTrayTracker/Properties/Settings.settings
rename to JenkinsTray/Properties/Settings.settings
index abf36c5..3964565 100644
--- a/HudsonTrayTracker/Properties/Settings.settings
+++ b/JenkinsTray/Properties/Settings.settings
@@ -1,7 +1,7 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/HudsonTrayTracker/Properties/licenses.licx b/JenkinsTray/Properties/licenses.licx
similarity index 99%
rename from HudsonTrayTracker/Properties/licenses.licx
rename to JenkinsTray/Properties/licenses.licx
index 038fdb2..80450e4 100644
--- a/HudsonTrayTracker/Properties/licenses.licx
+++ b/JenkinsTray/Properties/licenses.licx
@@ -1,6 +1,6 @@
-DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraTab.XtraTabControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/HudsonTrayTracker/Resources/MiscIcons/Unlock.ico b/JenkinsTray/Resources/MiscIcons/Unlock.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/MiscIcons/Unlock.ico
rename to JenkinsTray/Resources/MiscIcons/Unlock.ico
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Aborted.gif b/JenkinsTray/Resources/StatusIcons/Aborted.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Aborted.gif
rename to JenkinsTray/Resources/StatusIcons/Aborted.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Aborted_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Aborted_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Aborted_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Aborted_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Aborted_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Aborted_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Aborted_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Aborted_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Disabled.gif b/JenkinsTray/Resources/StatusIcons/Disabled.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Disabled.gif
rename to JenkinsTray/Resources/StatusIcons/Disabled.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Disabled_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Disabled_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Disabled_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Disabled_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Disabled_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Disabled_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Disabled_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Disabled_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Failed.gif b/JenkinsTray/Resources/StatusIcons/Failed.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Failed.gif
rename to JenkinsTray/Resources/StatusIcons/Failed.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Failed_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Failed_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Failed_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Failed_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Failed_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Failed_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Failed_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Failed_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Indeterminate.gif b/JenkinsTray/Resources/StatusIcons/Indeterminate.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Indeterminate.gif
rename to JenkinsTray/Resources/StatusIcons/Indeterminate.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Indeterminate_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Indeterminate_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Indeterminate_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Indeterminate_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Indeterminate_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Indeterminate_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Indeterminate_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Indeterminate_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Successful.gif b/JenkinsTray/Resources/StatusIcons/Successful.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Successful.gif
rename to JenkinsTray/Resources/StatusIcons/Successful.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Successful_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Successful_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Successful_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Successful_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Successful_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Successful_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Successful_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Successful_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Unknown.gif b/JenkinsTray/Resources/StatusIcons/Unknown.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Unknown.gif
rename to JenkinsTray/Resources/StatusIcons/Unknown.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Unknown_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Unknown_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Unknown_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Unknown_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Unknown_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Unknown_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Unknown_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Unknown_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Unstable.gif b/JenkinsTray/Resources/StatusIcons/Unstable.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Unstable.gif
rename to JenkinsTray/Resources/StatusIcons/Unstable.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Unstable_BuildInProgress.gif b/JenkinsTray/Resources/StatusIcons/Unstable_BuildInProgress.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Unstable_BuildInProgress.gif
rename to JenkinsTray/Resources/StatusIcons/Unstable_BuildInProgress.gif
diff --git a/HudsonTrayTracker/Resources/StatusIcons/Unstable_Stuck.gif b/JenkinsTray/Resources/StatusIcons/Unstable_Stuck.gif
similarity index 100%
rename from HudsonTrayTracker/Resources/StatusIcons/Unstable_Stuck.gif
rename to JenkinsTray/Resources/StatusIcons/Unstable_Stuck.gif
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Aborted.ico b/JenkinsTray/Resources/TrayIcons/Aborted.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Aborted.ico
rename to JenkinsTray/Resources/TrayIcons/Aborted.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Aborted_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Aborted_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Aborted_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Aborted_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Aborted_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Aborted_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Aborted_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Aborted_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Aborted_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Aborted_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Aborted_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Aborted_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Disabled.ico b/JenkinsTray/Resources/TrayIcons/Disabled.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Disabled.ico
rename to JenkinsTray/Resources/TrayIcons/Disabled.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Disabled_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Disabled_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Disabled_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Disabled_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Disabled_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Disabled_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Disabled_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Disabled_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Disabled_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Disabled_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Disabled_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Disabled_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Failed.ico b/JenkinsTray/Resources/TrayIcons/Failed.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Failed.ico
rename to JenkinsTray/Resources/TrayIcons/Failed.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Failed_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Failed_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Failed_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Failed_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Failed_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Failed_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Failed_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Failed_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Failed_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Failed_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Failed_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Failed_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Indeterminate.ico b/JenkinsTray/Resources/TrayIcons/Indeterminate.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Indeterminate.ico
rename to JenkinsTray/Resources/TrayIcons/Indeterminate.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Indeterminate_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Indeterminate_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Indeterminate_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Indeterminate_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Indeterminate_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Indeterminate_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Indeterminate_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Indeterminate_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Indeterminate_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Indeterminate_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Indeterminate_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Indeterminate_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Successful.ico b/JenkinsTray/Resources/TrayIcons/Successful.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Successful.ico
rename to JenkinsTray/Resources/TrayIcons/Successful.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Successful_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Successful_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Successful_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Successful_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Successful_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Successful_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Successful_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Successful_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Successful_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Successful_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Successful_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Successful_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unknown.ico b/JenkinsTray/Resources/TrayIcons/Unknown.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unknown.ico
rename to JenkinsTray/Resources/TrayIcons/Unknown.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unknown_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Unknown_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unknown_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Unknown_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unknown_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Unknown_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unknown_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Unknown_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unknown_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Unknown_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unknown_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Unknown_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unstable.ico b/JenkinsTray/Resources/TrayIcons/Unstable.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unstable.ico
rename to JenkinsTray/Resources/TrayIcons/Unstable.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unstable_BuildInProgress.ico b/JenkinsTray/Resources/TrayIcons/Unstable_BuildInProgress.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unstable_BuildInProgress.ico
rename to JenkinsTray/Resources/TrayIcons/Unstable_BuildInProgress.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unstable_BuildInProgress_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Unstable_BuildInProgress_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unstable_BuildInProgress_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Unstable_BuildInProgress_Stuck.ico
diff --git a/HudsonTrayTracker/Resources/TrayIcons/Unstable_Stuck.ico b/JenkinsTray/Resources/TrayIcons/Unstable_Stuck.ico
similarity index 100%
rename from HudsonTrayTracker/Resources/TrayIcons/Unstable_Stuck.ico
rename to JenkinsTray/Resources/TrayIcons/Unstable_Stuck.ico
diff --git a/HudsonTrayTracker/UI/AboutForm.Designer.cs b/JenkinsTray/UI/AboutForm.Designer.cs
similarity index 98%
rename from HudsonTrayTracker/UI/AboutForm.Designer.cs
rename to JenkinsTray/UI/AboutForm.Designer.cs
index 1bdfff0..047f798 100644
--- a/HudsonTrayTracker/UI/AboutForm.Designer.cs
+++ b/JenkinsTray/UI/AboutForm.Designer.cs
@@ -1,214 +1,214 @@
-namespace Hudson.TrayTracker.UI
-{
- partial class AboutForm
- {
- ///
- /// 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()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
- this.versionLabelControl = new DevExpress.XtraEditors.LabelControl();
- this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
- this.linkLabel3 = new System.Windows.Forms.LinkLabel();
- this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
- this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
- this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
- this.linkLabel2 = new System.Windows.Forms.LinkLabel();
- this.tableLayoutPanel1.SuspendLayout();
- this.SuspendLayout();
- //
- // tableLayoutPanel1
- //
- this.tableLayoutPanel1.ColumnCount = 1;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Controls.Add(this.linkLabel2, 0, 12);
- this.tableLayoutPanel1.Controls.Add(this.labelControl7, 0, 11);
- this.tableLayoutPanel1.Controls.Add(this.labelControl6, 0, 10);
- this.tableLayoutPanel1.Controls.Add(this.labelControl5, 0, 10);
- this.tableLayoutPanel1.Controls.Add(this.labelControl1, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.versionLabelControl, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.labelControl3, 0, 3);
- this.tableLayoutPanel1.Controls.Add(this.linkLabel3, 0, 4);
- this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RowCount = 13;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(284, 249);
- this.tableLayoutPanel1.TabIndex = 0;
- //
- // labelControl1
- //
- this.labelControl1.Appearance.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold);
- this.labelControl1.Appearance.Options.UseFont = true;
- this.labelControl1.Appearance.Options.UseTextOptions = true;
- this.labelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.labelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.Vertical;
- this.labelControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.labelControl1.Location = new System.Drawing.Point(3, 20);
- this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 20, 3, 5);
- this.labelControl1.Name = "labelControl1";
- this.labelControl1.Size = new System.Drawing.Size(278, 19);
- this.labelControl1.TabIndex = 0;
- this.labelControl1.Text = "Jenkins Tray";
- //
- // versionLabelControl
- //
- this.versionLabelControl.Appearance.Options.UseTextOptions = true;
- this.versionLabelControl.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.versionLabelControl.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.versionLabelControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.versionLabelControl.Location = new System.Drawing.Point(3, 49);
- this.versionLabelControl.Margin = new System.Windows.Forms.Padding(3, 5, 3, 20);
- this.versionLabelControl.Name = "versionLabelControl";
- this.versionLabelControl.Size = new System.Drawing.Size(278, 14);
- this.versionLabelControl.TabIndex = 3;
- this.versionLabelControl.Text = "Version -";
- //
- // labelControl3
- //
- this.labelControl3.Appearance.Options.UseTextOptions = true;
- this.labelControl3.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.labelControl3.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.labelControl3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.labelControl3.Location = new System.Drawing.Point(3, 88);
- this.labelControl3.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.labelControl3.Name = "labelControl3";
- this.labelControl3.Size = new System.Drawing.Size(278, 15);
- this.labelControl3.TabIndex = 4;
- this.labelControl3.Text = "Main Contributor: Khang Yeen Lee";
- //
- // linkLabel3
- //
- this.linkLabel3.Anchor = System.Windows.Forms.AnchorStyles.Top;
- this.linkLabel3.AutoSize = true;
- this.linkLabel3.Location = new System.Drawing.Point(45, 114);
- this.linkLabel3.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
- this.linkLabel3.Name = "linkLabel3";
- this.linkLabel3.Size = new System.Drawing.Size(193, 13);
- this.linkLabel3.TabIndex = 2;
- this.linkLabel3.TabStop = true;
- this.linkLabel3.Text = "https://github.com/zionyx/jenkins-tray";
- this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
- //
- // labelControl5
- //
- this.labelControl5.Appearance.Options.UseTextOptions = true;
- this.labelControl5.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.labelControl5.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.labelControl5.Dock = System.Windows.Forms.DockStyle.Fill;
- this.labelControl5.Location = new System.Drawing.Point(3, 163);
- this.labelControl5.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.labelControl5.Name = "labelControl5";
- this.labelControl5.Size = new System.Drawing.Size(278, 15);
- this.labelControl5.TabIndex = 8;
- this.labelControl5.Text = "Original Project: Hudson Tray Tracker";
- //
- // labelControl6
- //
- this.labelControl6.Appearance.Options.UseTextOptions = true;
- this.labelControl6.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.labelControl6.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.labelControl6.Dock = System.Windows.Forms.DockStyle.Fill;
- this.labelControl6.Location = new System.Drawing.Point(3, 138);
- this.labelControl6.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.labelControl6.Name = "labelControl6";
- this.labelControl6.Size = new System.Drawing.Size(278, 15);
- this.labelControl6.TabIndex = 9;
- //
- // labelControl7
- //
- this.labelControl7.Appearance.Options.UseTextOptions = true;
- this.labelControl7.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.labelControl7.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.labelControl7.Dock = System.Windows.Forms.DockStyle.Fill;
- this.labelControl7.Location = new System.Drawing.Point(3, 188);
- this.labelControl7.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.labelControl7.Name = "labelControl7";
- this.labelControl7.Size = new System.Drawing.Size(278, 15);
- this.labelControl7.TabIndex = 10;
- this.labelControl7.Text = "Original Author: Alexis Seigneurin (for IDM)";
- //
- // linkLabel2
- //
- this.linkLabel2.Anchor = System.Windows.Forms.AnchorStyles.Top;
- this.linkLabel2.AutoSize = true;
- this.linkLabel2.Location = new System.Drawing.Point(31, 214);
- this.linkLabel2.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
- this.linkLabel2.Name = "linkLabel2";
- this.linkLabel2.Size = new System.Drawing.Size(222, 13);
- this.linkLabel2.TabIndex = 11;
- this.linkLabel2.TabStop = true;
- this.linkLabel2.Text = "http://hudson-tray-tracker.googlecode.com/";
- this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
- //
- // AboutForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(284, 249);
- this.Controls.Add(this.tableLayoutPanel1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "AboutForm";
- this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.Text = "About Jenkins Tray";
- this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private DevExpress.XtraEditors.LabelControl labelControl1;
- private DevExpress.XtraEditors.LabelControl versionLabelControl;
- private DevExpress.XtraEditors.LabelControl labelControl3;
- private System.Windows.Forms.LinkLabel linkLabel3;
- private System.Windows.Forms.LinkLabel linkLabel2;
- private DevExpress.XtraEditors.LabelControl labelControl7;
- private DevExpress.XtraEditors.LabelControl labelControl6;
- private DevExpress.XtraEditors.LabelControl labelControl5;
- }
+namespace Jenkins.Tray.UI
+{
+ partial class AboutForm
+ {
+ ///
+ /// 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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
+ this.versionLabelControl = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl3 = new DevExpress.XtraEditors.LabelControl();
+ this.linkLabel3 = new System.Windows.Forms.LinkLabel();
+ this.labelControl5 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl6 = new DevExpress.XtraEditors.LabelControl();
+ this.labelControl7 = new DevExpress.XtraEditors.LabelControl();
+ this.linkLabel2 = new System.Windows.Forms.LinkLabel();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 1;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.Controls.Add(this.linkLabel2, 0, 12);
+ this.tableLayoutPanel1.Controls.Add(this.labelControl7, 0, 11);
+ this.tableLayoutPanel1.Controls.Add(this.labelControl6, 0, 10);
+ this.tableLayoutPanel1.Controls.Add(this.labelControl5, 0, 10);
+ this.tableLayoutPanel1.Controls.Add(this.labelControl1, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.versionLabelControl, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.labelControl3, 0, 3);
+ this.tableLayoutPanel1.Controls.Add(this.linkLabel3, 0, 4);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 13;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(284, 249);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // labelControl1
+ //
+ this.labelControl1.Appearance.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold);
+ this.labelControl1.Appearance.Options.UseFont = true;
+ this.labelControl1.Appearance.Options.UseTextOptions = true;
+ this.labelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.labelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.Vertical;
+ this.labelControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelControl1.Location = new System.Drawing.Point(3, 20);
+ this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 20, 3, 5);
+ this.labelControl1.Name = "labelControl1";
+ this.labelControl1.Size = new System.Drawing.Size(278, 19);
+ this.labelControl1.TabIndex = 0;
+ this.labelControl1.Text = "Jenkins Tray";
+ //
+ // versionLabelControl
+ //
+ this.versionLabelControl.Appearance.Options.UseTextOptions = true;
+ this.versionLabelControl.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.versionLabelControl.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.versionLabelControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.versionLabelControl.Location = new System.Drawing.Point(3, 49);
+ this.versionLabelControl.Margin = new System.Windows.Forms.Padding(3, 5, 3, 20);
+ this.versionLabelControl.Name = "versionLabelControl";
+ this.versionLabelControl.Size = new System.Drawing.Size(278, 14);
+ this.versionLabelControl.TabIndex = 3;
+ this.versionLabelControl.Text = "Version -";
+ //
+ // labelControl3
+ //
+ this.labelControl3.Appearance.Options.UseTextOptions = true;
+ this.labelControl3.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.labelControl3.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelControl3.Location = new System.Drawing.Point(3, 88);
+ this.labelControl3.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.labelControl3.Name = "labelControl3";
+ this.labelControl3.Size = new System.Drawing.Size(278, 15);
+ this.labelControl3.TabIndex = 4;
+ this.labelControl3.Text = "Main Contributor: Khang Yeen Lee";
+ //
+ // linkLabel3
+ //
+ this.linkLabel3.Anchor = System.Windows.Forms.AnchorStyles.Top;
+ this.linkLabel3.AutoSize = true;
+ this.linkLabel3.Location = new System.Drawing.Point(45, 114);
+ this.linkLabel3.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
+ this.linkLabel3.Name = "linkLabel3";
+ this.linkLabel3.Size = new System.Drawing.Size(193, 13);
+ this.linkLabel3.TabIndex = 2;
+ this.linkLabel3.TabStop = true;
+ this.linkLabel3.Text = "https://github.com/zionyx/jenkins-tray";
+ this.linkLabel3.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+ //
+ // labelControl5
+ //
+ this.labelControl5.Appearance.Options.UseTextOptions = true;
+ this.labelControl5.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.labelControl5.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelControl5.Location = new System.Drawing.Point(3, 163);
+ this.labelControl5.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.labelControl5.Name = "labelControl5";
+ this.labelControl5.Size = new System.Drawing.Size(278, 15);
+ this.labelControl5.TabIndex = 8;
+ this.labelControl5.Text = "Original Project: Hudson Tray Tracker";
+ //
+ // labelControl6
+ //
+ this.labelControl6.Appearance.Options.UseTextOptions = true;
+ this.labelControl6.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.labelControl6.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl6.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelControl6.Location = new System.Drawing.Point(3, 138);
+ this.labelControl6.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.labelControl6.Name = "labelControl6";
+ this.labelControl6.Size = new System.Drawing.Size(278, 15);
+ this.labelControl6.TabIndex = 9;
+ //
+ // labelControl7
+ //
+ this.labelControl7.Appearance.Options.UseTextOptions = true;
+ this.labelControl7.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.labelControl7.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl7.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelControl7.Location = new System.Drawing.Point(3, 188);
+ this.labelControl7.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.labelControl7.Name = "labelControl7";
+ this.labelControl7.Size = new System.Drawing.Size(278, 15);
+ this.labelControl7.TabIndex = 10;
+ this.labelControl7.Text = "Original Author: Alexis Seigneurin (for IDM)";
+ //
+ // linkLabel2
+ //
+ this.linkLabel2.Anchor = System.Windows.Forms.AnchorStyles.Top;
+ this.linkLabel2.AutoSize = true;
+ this.linkLabel2.Location = new System.Drawing.Point(31, 214);
+ this.linkLabel2.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6);
+ this.linkLabel2.Name = "linkLabel2";
+ this.linkLabel2.Size = new System.Drawing.Size(222, 13);
+ this.linkLabel2.TabIndex = 11;
+ this.linkLabel2.TabStop = true;
+ this.linkLabel2.Text = "http://hudson-tray-tracker.googlecode.com/";
+ this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel_LinkClicked);
+ //
+ // AboutForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(284, 249);
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "AboutForm";
+ this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "About Jenkins Tray";
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private DevExpress.XtraEditors.LabelControl labelControl1;
+ private DevExpress.XtraEditors.LabelControl versionLabelControl;
+ private DevExpress.XtraEditors.LabelControl labelControl3;
+ private System.Windows.Forms.LinkLabel linkLabel3;
+ private System.Windows.Forms.LinkLabel linkLabel2;
+ private DevExpress.XtraEditors.LabelControl labelControl7;
+ private DevExpress.XtraEditors.LabelControl labelControl6;
+ private DevExpress.XtraEditors.LabelControl labelControl5;
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/AboutForm.cs b/JenkinsTray/UI/AboutForm.cs
similarity index 86%
rename from HudsonTrayTracker/UI/AboutForm.cs
rename to JenkinsTray/UI/AboutForm.cs
index dbe7b67..c134ee2 100644
--- a/HudsonTrayTracker/UI/AboutForm.cs
+++ b/JenkinsTray/UI/AboutForm.cs
@@ -1,51 +1,51 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using System.Diagnostics;
-using System.Reflection;
-using Spring.Context.Support;
-using Hudson.TrayTracker.Utils;
-using Common.Logging;
-
-namespace Hudson.TrayTracker.UI
-{
- public partial class AboutForm : DevExpress.XtraEditors.XtraForm
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- public static AboutForm Instance
- {
- get
- {
- AboutForm instance = (AboutForm)ContextRegistry.GetContext().GetObject("AboutForm");
- return instance;
- }
- }
-
- public AboutForm()
- {
- InitializeComponent();
-
- versionLabelControl.Text = string.Format(HudsonTrayTrackerResources.Version_Format,
- FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
- }
-
- private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
- {
- string url = ((LinkLabel)sender).Text;
- UIUtils.OpenWebPage(url, logger);
- }
-
- public static void ShowDialogOrFocus()
- {
- if (Instance.Visible)
- Instance.Focus();
- else
- Instance.ShowDialog();
- }
- }
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Diagnostics;
+using System.Reflection;
+using Spring.Context.Support;
+using Jenkins.Tray.Utils;
+using Common.Logging;
+
+namespace Jenkins.Tray.UI
+{
+ public partial class AboutForm : DevExpress.XtraEditors.XtraForm
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ public static AboutForm Instance
+ {
+ get
+ {
+ AboutForm instance = (AboutForm)ContextRegistry.GetContext().GetObject("AboutForm");
+ return instance;
+ }
+ }
+
+ public AboutForm()
+ {
+ InitializeComponent();
+
+ versionLabelControl.Text = string.Format(JenkinsTrayResources.Version_Format,
+ FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion);
+ }
+
+ private void linkLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ string url = ((LinkLabel)sender).Text;
+ UIUtils.OpenWebPage(url, logger);
+ }
+
+ public static void ShowDialogOrFocus()
+ {
+ if (Instance.Visible)
+ Instance.Focus();
+ else
+ Instance.ShowDialog();
+ }
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/AboutForm.resx b/JenkinsTray/UI/AboutForm.resx
similarity index 98%
rename from HudsonTrayTracker/UI/AboutForm.resx
rename to JenkinsTray/UI/AboutForm.resx
index 15783ff..5fd21f4 100644
--- a/HudsonTrayTracker/UI/AboutForm.resx
+++ b/JenkinsTray/UI/AboutForm.resx
@@ -1,654 +1,654 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
- AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
- CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
- AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
- g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
- 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
- ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
- /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
- l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
- wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
- /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
- //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
- l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
- z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
- //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
- //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
- 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
- /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
- //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
- kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
- 7P//////////////////////////////////////////////////////////////////////////////
- /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
- iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
- tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
- ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
- /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
- 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
- pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
- xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
- sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
- zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
- /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
- //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
- q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
- 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
- //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
- 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
- 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
- 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
- nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
- sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
- +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
- zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
- //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
- sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
- v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
- AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
- iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
- n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
- t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
- wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
- 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
- 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
- wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
- 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
- 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- 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
- MTEoJyQkJCQhISEfHx8dHR0aGhoYFxcWFRRQUE9PTU1NTEtJSUhIRUVFRUNDQUFBPz4+PDw7Ojk5NzY2
- NDMzMjExMScnJyQkJCEhIR8fHx0dHRoaGhgYFxYVUlBQT09NTU1MS0lJSEhFRkVDQ0NCQUE/Pj48PDs6
- OTk3NjY2MzMzMTEoJycnJSQkISEhHx8fHR0eGhoaGBgWFlJSUFBPT01NTUxLSUlISEVFRENDQkJBQT4+
- Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
- QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
- RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
- SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
- TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
- UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
- VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
- HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
- ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
- JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
- MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
- NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
- OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
- Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
- QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
- RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
- S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
- TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
- UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
- VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
- WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
- WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
- nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
- pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
- rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
- hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
- tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
- jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
- vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
- oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
- xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
- ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
- zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
- pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
- f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
- rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
- hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
- tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
- //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
- vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
- w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
- xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
- 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
- zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
- //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
- 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
- ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
- 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
- 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
- jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
- vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
- lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
- xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
- tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
- zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
- ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
- 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
- rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
- 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
- tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
- 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
- vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
- 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
- xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
- 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
- zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
- pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
- 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
- rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
- 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
- tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
- 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
- vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
- 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
- xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
- 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
- zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
- /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
- 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
- //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
- 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
- tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
- 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
- vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
- 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
- xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
- 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
- zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
- AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
- jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
- q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
- pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
- xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
- 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
- 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
- y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
- 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
- FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
- IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
- NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
- AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
- fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
- cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
- fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
- JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
- PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
- R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
- UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
- GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
- ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
- ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
- QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
- TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
- VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
- f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
- iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
- k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
- 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
- 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
- sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
- vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
- x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
- 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
- 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
- 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
- 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
- /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
- rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
- uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
- w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
- zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
- f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
- sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
- 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
- zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
- 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
- BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
- FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
- IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
- EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
+ CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
+ AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
+ g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
+ 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
+ ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
+ /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
+ l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
+ wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
+ /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
+ //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
+ l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
+ z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
+ //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
+ //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
+ 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
+ kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
+ 7P//////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
+ iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
+ tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
+ ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
+ /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
+ 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
+ pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
+ xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
+ sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
+ zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
+ /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
+ //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
+ q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
+ 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
+ //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
+ 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
+ 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
+ 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
+ nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
+ sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
+ +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
+ //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
+ sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
+ v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
+ AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
+ iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
+ n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
+ t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
+ wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
+ 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
+ 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
+ wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
+ 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
+ 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ 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
+ MTEoJyQkJCQhISEfHx8dHR0aGhoYFxcWFRRQUE9PTU1NTEtJSUhIRUVFRUNDQUFBPz4+PDw7Ojk5NzY2
+ NDMzMjExMScnJyQkJCEhIR8fHx0dHRoaGhgYFxYVUlBQT09NTU1MS0lJSEhFRkVDQ0NCQUE/Pj48PDs6
+ OTk3NjY2MzMzMTEoJycnJSQkISEhHx8fHR0eGhoaGBgWFlJSUFBPT01NTUxLSUlISEVFRENDQkJBQT4+
+ Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
+ QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
+ RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
+ SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
+ TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
+ UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
+ VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
+ HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
+ ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
+ JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
+ MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
+ NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
+ OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
+ Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
+ QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
+ RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
+ S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
+ TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
+ UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
+ VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
+ WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
+ WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
+ nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
+ pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
+ rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
+ hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
+ tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
+ jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
+ vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
+ oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
+ xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
+ ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
+ zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
+ pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
+ f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
+ rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
+ hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
+ tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
+ //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
+ vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
+ w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
+ xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
+ 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
+ zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
+ //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
+ 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
+ ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
+ 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
+ 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
+ jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
+ vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
+ lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
+ xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
+ tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
+ zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
+ ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
+ 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
+ rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
+ 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
+ tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
+ vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
+ 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
+ xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
+ 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
+ zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
+ pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
+ 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
+ rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
+ 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
+ tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
+ vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
+ 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
+ xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
+ 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
+ zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
+ /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
+ 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
+ //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
+ 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
+ tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
+ 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
+ vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
+ 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
+ xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
+ 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
+ zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
+ AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
+ jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
+ q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
+ pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
+ xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
+ 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
+ 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
+ y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
+ 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
+ FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
+ IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
+ NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
+ AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
+ fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
+ cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
+ fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
+ JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
+ PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
+ R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
+ UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
+ GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
+ ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
+ ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
+ QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
+ TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
+ VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
+ f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
+ iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
+ k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
+ 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
+ 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
+ sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
+ vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
+ x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
+ 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
+ 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
+ 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
+ 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
+ /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
+ rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
+ uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
+ w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
+ zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
+ f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
+ sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
+ 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
+ zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
+ 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
+ BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
+ FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
+ IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
+ EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/AuthenticationTokenForm.Designer.cs b/JenkinsTray/UI/AuthenticationTokenForm.Designer.cs
similarity index 98%
rename from HudsonTrayTracker/UI/AuthenticationTokenForm.Designer.cs
rename to JenkinsTray/UI/AuthenticationTokenForm.Designer.cs
index 9124dec..d26879b 100644
--- a/HudsonTrayTracker/UI/AuthenticationTokenForm.Designer.cs
+++ b/JenkinsTray/UI/AuthenticationTokenForm.Designer.cs
@@ -1,4 +1,4 @@
-namespace Hudson.TrayTracker.UI
+namespace Jenkins.Tray.UI
{
partial class AuthenticationTokenForm
{
@@ -28,158 +28,158 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AuthenticationTokenForm));
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
- this.validateButton = new DevExpress.XtraEditors.SimpleButton();
- this.cancelButton = new DevExpress.XtraEditors.SimpleButton();
- this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
- this.TokentextBox = new DevExpress.XtraEditors.TextEdit();
- this.CausetextBox = new DevExpress.XtraEditors.TextEdit();
- this.Causelabel = new DevExpress.XtraEditors.LabelControl();
- this.tableLayoutPanel1.SuspendLayout();
- this.tableLayoutPanel2.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.TokentextBox.Properties)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.CausetextBox.Properties)).BeginInit();
- this.SuspendLayout();
- //
- // tableLayoutPanel1
- //
- this.tableLayoutPanel1.ColumnCount = 2;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 2);
- this.tableLayoutPanel1.Controls.Add(this.labelControl2, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.TokentextBox, 1, 0);
- this.tableLayoutPanel1.Controls.Add(this.CausetextBox, 1, 1);
- this.tableLayoutPanel1.Controls.Add(this.Causelabel, 0, 1);
- this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 10);
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RowCount = 3;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(473, 104);
- this.tableLayoutPanel1.TabIndex = 0;
- //
- // tableLayoutPanel2
- //
- this.tableLayoutPanel2.AutoSize = true;
- this.tableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel2.ColumnCount = 4;
- this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 2);
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel2.Controls.Add(this.validateButton, 1, 0);
- this.tableLayoutPanel2.Controls.Add(this.cancelButton, 2, 0);
- this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 68);
- this.tableLayoutPanel2.Name = "tableLayoutPanel2";
- this.tableLayoutPanel2.RowCount = 1;
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel2.Size = new System.Drawing.Size(467, 33);
- this.tableLayoutPanel2.TabIndex = 8;
- //
- // validateButton
- //
- this.validateButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.validateButton.Location = new System.Drawing.Point(155, 3);
- this.validateButton.Name = "validateButton";
- this.validateButton.Size = new System.Drawing.Size(75, 23);
- this.validateButton.TabIndex = 2;
- this.validateButton.Text = "OK";
- this.validateButton.Click += new System.EventHandler(this.validateButton_Click);
- //
- // cancelButton
- //
- this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.cancelButton.Location = new System.Drawing.Point(236, 3);
- this.cancelButton.Name = "cancelButton";
- this.cancelButton.Size = new System.Drawing.Size(75, 23);
- this.cancelButton.TabIndex = 3;
- this.cancelButton.Text = "Cancel";
- //
- // labelControl2
- //
- this.labelControl2.Appearance.Options.UseTextOptions = true;
- this.labelControl2.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.labelControl2.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.labelControl2.Dock = System.Windows.Forms.DockStyle.Left;
- this.labelControl2.Location = new System.Drawing.Point(3, 5);
- this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.labelControl2.Name = "labelControl2";
- this.labelControl2.Size = new System.Drawing.Size(116, 28);
- this.labelControl2.TabIndex = 1;
- this.labelControl2.Text = "Authentication Token:\r\n (Case sensitive)";
- //
- // TokentextBox
- //
- this.TokentextBox.Dock = System.Windows.Forms.DockStyle.Fill;
- this.TokentextBox.Location = new System.Drawing.Point(125, 3);
- this.TokentextBox.Name = "TokentextBox";
- this.TokentextBox.Size = new System.Drawing.Size(345, 20);
- this.TokentextBox.TabIndex = 0;
- //
- // CausetextBox
- //
- this.CausetextBox.Dock = System.Windows.Forms.DockStyle.Fill;
- this.CausetextBox.Location = new System.Drawing.Point(125, 41);
- this.CausetextBox.Name = "CausetextBox";
- this.CausetextBox.Size = new System.Drawing.Size(345, 20);
- this.CausetextBox.TabIndex = 1;
- //
- // Causelabel
- //
- this.Causelabel.Appearance.Options.UseTextOptions = true;
- this.Causelabel.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
- this.Causelabel.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
- this.Causelabel.Dock = System.Windows.Forms.DockStyle.Left;
- this.Causelabel.Location = new System.Drawing.Point(3, 43);
- this.Causelabel.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.Causelabel.Name = "Causelabel";
- this.Causelabel.Size = new System.Drawing.Size(116, 17);
- this.Causelabel.TabIndex = 3;
- this.Causelabel.Text = "Cause Text (Optional):";
- //
- // AuthenticationTokenForm
- //
- this.AcceptButton = this.validateButton;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.AutoSize = true;
- this.CancelButton = this.cancelButton;
- this.ClientSize = new System.Drawing.Size(493, 124);
- this.Controls.Add(this.tableLayoutPanel1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "AuthenticationTokenForm";
- this.Padding = new System.Windows.Forms.Padding(10);
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
- this.tableLayoutPanel2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.TokentextBox.Properties)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.CausetextBox.Properties)).EndInit();
- this.ResumeLayout(false);
-
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AuthenticationTokenForm));
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.validateButton = new DevExpress.XtraEditors.SimpleButton();
+ this.cancelButton = new DevExpress.XtraEditors.SimpleButton();
+ this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
+ this.TokentextBox = new DevExpress.XtraEditors.TextEdit();
+ this.CausetextBox = new DevExpress.XtraEditors.TextEdit();
+ this.Causelabel = new DevExpress.XtraEditors.LabelControl();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.tableLayoutPanel2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.TokentextBox.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.CausetextBox.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 2;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.labelControl2, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.TokentextBox, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.CausetextBox, 1, 1);
+ this.tableLayoutPanel1.Controls.Add(this.Causelabel, 0, 1);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 10);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(473, 104);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // tableLayoutPanel2
+ //
+ this.tableLayoutPanel2.AutoSize = true;
+ this.tableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel2.ColumnCount = 4;
+ this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 2);
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel2.Controls.Add(this.validateButton, 1, 0);
+ this.tableLayoutPanel2.Controls.Add(this.cancelButton, 2, 0);
+ this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 68);
+ this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+ this.tableLayoutPanel2.RowCount = 1;
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(467, 33);
+ this.tableLayoutPanel2.TabIndex = 8;
+ //
+ // validateButton
+ //
+ this.validateButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.validateButton.Location = new System.Drawing.Point(155, 3);
+ this.validateButton.Name = "validateButton";
+ this.validateButton.Size = new System.Drawing.Size(75, 23);
+ this.validateButton.TabIndex = 2;
+ this.validateButton.Text = "OK";
+ this.validateButton.Click += new System.EventHandler(this.validateButton_Click);
+ //
+ // cancelButton
+ //
+ this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.cancelButton.Location = new System.Drawing.Point(236, 3);
+ this.cancelButton.Name = "cancelButton";
+ this.cancelButton.Size = new System.Drawing.Size(75, 23);
+ this.cancelButton.TabIndex = 3;
+ this.cancelButton.Text = "Cancel";
+ //
+ // labelControl2
+ //
+ this.labelControl2.Appearance.Options.UseTextOptions = true;
+ this.labelControl2.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.labelControl2.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.labelControl2.Dock = System.Windows.Forms.DockStyle.Left;
+ this.labelControl2.Location = new System.Drawing.Point(3, 5);
+ this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.labelControl2.Name = "labelControl2";
+ this.labelControl2.Size = new System.Drawing.Size(116, 28);
+ this.labelControl2.TabIndex = 1;
+ this.labelControl2.Text = "Authentication Token:\r\n (Case sensitive)";
+ //
+ // TokentextBox
+ //
+ this.TokentextBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.TokentextBox.Location = new System.Drawing.Point(125, 3);
+ this.TokentextBox.Name = "TokentextBox";
+ this.TokentextBox.Size = new System.Drawing.Size(345, 20);
+ this.TokentextBox.TabIndex = 0;
+ //
+ // CausetextBox
+ //
+ this.CausetextBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.CausetextBox.Location = new System.Drawing.Point(125, 41);
+ this.CausetextBox.Name = "CausetextBox";
+ this.CausetextBox.Size = new System.Drawing.Size(345, 20);
+ this.CausetextBox.TabIndex = 1;
+ //
+ // Causelabel
+ //
+ this.Causelabel.Appearance.Options.UseTextOptions = true;
+ this.Causelabel.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
+ this.Causelabel.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None;
+ this.Causelabel.Dock = System.Windows.Forms.DockStyle.Left;
+ this.Causelabel.Location = new System.Drawing.Point(3, 43);
+ this.Causelabel.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.Causelabel.Name = "Causelabel";
+ this.Causelabel.Size = new System.Drawing.Size(116, 17);
+ this.Causelabel.TabIndex = 3;
+ this.Causelabel.Text = "Cause Text (Optional):";
+ //
+ // AuthenticationTokenForm
+ //
+ this.AcceptButton = this.validateButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.AutoSize = true;
+ this.CancelButton = this.cancelButton;
+ this.ClientSize = new System.Drawing.Size(493, 124);
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "AuthenticationTokenForm";
+ this.Padding = new System.Windows.Forms.Padding(10);
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.tableLayoutPanel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.TokentextBox.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.CausetextBox.Properties)).EndInit();
+ this.ResumeLayout(false);
+
}
- #endregion
-
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private DevExpress.XtraEditors.LabelControl labelControl2;
- private DevExpress.XtraEditors.LabelControl Causelabel;
- private DevExpress.XtraEditors.TextEdit TokentextBox;
- private DevExpress.XtraEditors.TextEdit CausetextBox;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
- private DevExpress.XtraEditors.SimpleButton validateButton;
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private DevExpress.XtraEditors.LabelControl labelControl2;
+ private DevExpress.XtraEditors.LabelControl Causelabel;
+ private DevExpress.XtraEditors.TextEdit TokentextBox;
+ private DevExpress.XtraEditors.TextEdit CausetextBox;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+ private DevExpress.XtraEditors.SimpleButton validateButton;
private DevExpress.XtraEditors.SimpleButton cancelButton;
diff --git a/HudsonTrayTracker/UI/AuthenticationTokenForm.cs b/JenkinsTray/UI/AuthenticationTokenForm.cs
similarity index 89%
rename from HudsonTrayTracker/UI/AuthenticationTokenForm.cs
rename to JenkinsTray/UI/AuthenticationTokenForm.cs
index 21e5cd9..f4f0b86 100644
--- a/HudsonTrayTracker/UI/AuthenticationTokenForm.cs
+++ b/JenkinsTray/UI/AuthenticationTokenForm.cs
@@ -8,11 +8,11 @@
using System.Windows.Forms;
using System.Reflection;
using Spring.Context.Support;
-using Hudson.TrayTracker.Utils;
-using Hudson.TrayTracker.Entities;
+using Jenkins.Tray.Utils;
+using Jenkins.Tray.Entities;
using Common.Logging;
-namespace Hudson.TrayTracker.UI
+namespace Jenkins.Tray.UI
{
public partial class AuthenticationTokenForm : DevExpress.XtraEditors.XtraForm
{
@@ -37,7 +37,7 @@ public void UpdateValues()
{
if (referenceProject != null)
{
- this.Text = string.Format(HudsonTrayTrackerResources.AuthenticateToken_ProjectName, referenceProject.Name);
+ this.Text = string.Format(JenkinsTrayResources.AuthenticateToken_ProjectName, referenceProject.Name);
TokentextBox.Text = referenceProject.AuthenticationToken;
CausetextBox.Text = referenceProject.CauseText;
}
@@ -52,8 +52,8 @@ public static void ShowDialogOrFocus(Project project)
Instance.Focus();
else
Instance.ShowDialog();
- }
-
+ }
+
private void validateButton_Click(object sender, EventArgs e)
{
if (referenceProject != null)
diff --git a/HudsonTrayTracker/UI/AuthenticationTokenForm.resx b/JenkinsTray/UI/AuthenticationTokenForm.resx
similarity index 98%
rename from HudsonTrayTracker/UI/AuthenticationTokenForm.resx
rename to JenkinsTray/UI/AuthenticationTokenForm.resx
index 7d15032..d3179ba 100644
--- a/HudsonTrayTracker/UI/AuthenticationTokenForm.resx
+++ b/JenkinsTray/UI/AuthenticationTokenForm.resx
@@ -1,145 +1,145 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
- AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAD7wEIC+8BCovvAQvr7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vA
- QvD7wEJgAAAAAAAAAAAAAAAA+8BCQPvAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vA
- Qv/7wEL/+8BC8AAAAAAAAAAAAAAAAPvAQk77wEL/+8BC//vAQv/7wEL/+8BC//vAQqr7wELU+8BC//vA
- Qv/7wEL/+8BC//vAQv8AAAAAAAAAAAAAAAD7wEJO+8BC//vAQv/7wEL/+8BC//vAQv/7wEI6+8BCiPvA
- Qv/7wEL/+8BC//vAQv/7wEL/AAAAAAAAAAAAAAAA+8BCTvvAQv/7wEL/+8BC//vAQv/7wELy+8BCIPvA
- QmL7wEL/+8BC//vAQv/7wEL/+8BC/wAAAAAAAAAAAAAAAPvAQk77wEL/+8BC//vAQv/7wEL/+8BCpgAA
- AAD7wEIA+8BC9PvAQv/7wEL/+8BC//vAQv8AAAAAAAAAAAAAAAD7wEJO+8BC//vAQv/7wEL/+8BC//vA
- Quz7wEJS+8BCfPvAQv/7wEL/+8BC//vAQv/7wEL/AAAAAAAAAAAAAAAA+8BCTvvAQv/7wEL/+8BC//vA
- Qv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC/wAAAAAAAAAAAAAAAPvAQjb7wEL/+8BC//vA
- Qv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQub7wELE+8BCpgAAAAD7wEIA+8BCevvA
- QtT7wELW+8BC1vvAQtb7wELW+8BC1vvAQtb7wELW+8BC1vvAQsj7wEJE+8BC//vAQtYAAAAAAAAAAAAA
- AAAAAAAA+8BCIPvAQoj7wEJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvAQvr7wELcAAAAAAAA
- AAAAAAAAAAAAAPvAQkD7wEL/+8BCmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7wELa+8BC+vvA
- QhIAAAAAAAAAAAAAAAD7wEJw+8BC//vAQngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+8BCivvA
- Qv/7wEKi+8BCCAAAAAD7wEIm+8BC5PvAQvz7wEIqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvA
- QhL7wELe+8BC//vAQvD7wELc+8BC/PvAQv/7wEKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA+8BCGPvAQp77wELq+8BC+vvAQtb7wEJu+8BCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAA8AEAAPAAAADwAAAA8EAAAPBgAADwYAAA8GAAAPAAAADwAAAAOAEAAD7/AAA+fwAAPv8AABz/
- AACA/wAAw/8AAA==
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD7wEIC+8BCovvAQvr7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vA
+ QvD7wEJgAAAAAAAAAAAAAAAA+8BCQPvAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vA
+ Qv/7wEL/+8BC8AAAAAAAAAAAAAAAAPvAQk77wEL/+8BC//vAQv/7wEL/+8BC//vAQqr7wELU+8BC//vA
+ Qv/7wEL/+8BC//vAQv8AAAAAAAAAAAAAAAD7wEJO+8BC//vAQv/7wEL/+8BC//vAQv/7wEI6+8BCiPvA
+ Qv/7wEL/+8BC//vAQv/7wEL/AAAAAAAAAAAAAAAA+8BCTvvAQv/7wEL/+8BC//vAQv/7wELy+8BCIPvA
+ QmL7wEL/+8BC//vAQv/7wEL/+8BC/wAAAAAAAAAAAAAAAPvAQk77wEL/+8BC//vAQv/7wEL/+8BCpgAA
+ AAD7wEIA+8BC9PvAQv/7wEL/+8BC//vAQv8AAAAAAAAAAAAAAAD7wEJO+8BC//vAQv/7wEL/+8BC//vA
+ Quz7wEJS+8BCfPvAQv/7wEL/+8BC//vAQv/7wEL/AAAAAAAAAAAAAAAA+8BCTvvAQv/7wEL/+8BC//vA
+ Qv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC/wAAAAAAAAAAAAAAAPvAQjb7wEL/+8BC//vA
+ Qv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQv/7wEL/+8BC//vAQub7wELE+8BCpgAAAAD7wEIA+8BCevvA
+ QtT7wELW+8BC1vvAQtb7wELW+8BC1vvAQtb7wELW+8BC1vvAQsj7wEJE+8BC//vAQtYAAAAAAAAAAAAA
+ AAAAAAAA+8BCIPvAQoj7wEJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvAQvr7wELcAAAAAAAA
+ AAAAAAAAAAAAAPvAQkD7wEL/+8BCmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7wELa+8BC+vvA
+ QhIAAAAAAAAAAAAAAAD7wEJw+8BC//vAQngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+8BCivvA
+ Qv/7wEKi+8BCCAAAAAD7wEIm+8BC5PvAQvz7wEIqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPvA
+ QhL7wELe+8BC//vAQvD7wELc+8BC/PvAQv/7wEKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA+8BCGPvAQp77wELq+8BC+vvAQtb7wEJu+8BCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA8AEAAPAAAADwAAAA8EAAAPBgAADwYAAA8GAAAPAAAADwAAAAOAEAAD7/AAA+fwAAPv8AABz/
+ AACA/wAAw/8AAA==
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/ClaimBuildForm.Designer.cs b/JenkinsTray/UI/ClaimBuildForm.Designer.cs
similarity index 98%
rename from HudsonTrayTracker/UI/ClaimBuildForm.Designer.cs
rename to JenkinsTray/UI/ClaimBuildForm.Designer.cs
index 312f958..41493ad 100644
--- a/HudsonTrayTracker/UI/ClaimBuildForm.Designer.cs
+++ b/JenkinsTray/UI/ClaimBuildForm.Designer.cs
@@ -1,246 +1,246 @@
-namespace Hudson.TrayTracker.UI
-{
- partial class ClaimBuildForm
- {
- ///
- /// 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()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClaimBuildForm));
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
- this.buildNumberLabel = new DevExpress.XtraEditors.LabelControl();
- this.claimBuildLabel = new DevExpress.XtraEditors.LabelControl();
- this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
- this.stickyCheckEdit = new DevExpress.XtraEditors.CheckEdit();
- this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
- this.reasonLabel = new DevExpress.XtraEditors.LabelControl();
- this.reasonMemoEdit = new DevExpress.XtraEditors.MemoEdit();
- this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
- this.okButton = new DevExpress.XtraEditors.SimpleButton();
- this.cancelButton = new DevExpress.XtraEditors.SimpleButton();
- this.tableLayoutPanel1.SuspendLayout();
- this.tableLayoutPanel2.SuspendLayout();
- this.tableLayoutPanel3.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.stickyCheckEdit.Properties)).BeginInit();
- this.tableLayoutPanel4.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.reasonMemoEdit.Properties)).BeginInit();
- this.tableLayoutPanel5.SuspendLayout();
- this.SuspendLayout();
- //
- // tableLayoutPanel1
- //
- this.tableLayoutPanel1.ColumnCount = 1;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 2);
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel4, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel5, 0, 3);
- this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.Padding = new System.Windows.Forms.Padding(10);
- this.tableLayoutPanel1.RowCount = 4;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.Size = new System.Drawing.Size(329, 191);
- this.tableLayoutPanel1.TabIndex = 0;
- //
- // tableLayoutPanel2
- //
- this.tableLayoutPanel2.AutoSize = true;
- this.tableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel2.ColumnCount = 2;
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel2.Controls.Add(this.buildNumberLabel, 1, 0);
- this.tableLayoutPanel2.Controls.Add(this.claimBuildLabel, 0, 0);
- this.tableLayoutPanel2.Location = new System.Drawing.Point(13, 13);
- this.tableLayoutPanel2.Name = "tableLayoutPanel2";
- this.tableLayoutPanel2.RowCount = 1;
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel2.Size = new System.Drawing.Size(83, 19);
- this.tableLayoutPanel2.TabIndex = 5;
- //
- // buildNumberLabel
- //
- this.buildNumberLabel.Appearance.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.buildNumberLabel.Appearance.Options.UseFont = true;
- this.buildNumberLabel.Location = new System.Drawing.Point(73, 3);
- this.buildNumberLabel.Name = "buildNumberLabel";
- this.buildNumberLabel.Size = new System.Drawing.Size(7, 13);
- this.buildNumberLabel.TabIndex = 1;
- this.buildNumberLabel.Text = "1";
- //
- // claimBuildLabel
- //
- this.claimBuildLabel.Appearance.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.claimBuildLabel.Appearance.Options.UseFont = true;
- this.claimBuildLabel.Location = new System.Drawing.Point(3, 3);
- this.claimBuildLabel.Name = "claimBuildLabel";
- this.claimBuildLabel.Size = new System.Drawing.Size(64, 13);
- this.claimBuildLabel.TabIndex = 0;
- this.claimBuildLabel.Text = "Claim build:";
- //
- // tableLayoutPanel3
- //
- this.tableLayoutPanel3.AutoSize = true;
- this.tableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel3.ColumnCount = 1;
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel3.Controls.Add(this.stickyCheckEdit, 0, 0);
- this.tableLayoutPanel3.Location = new System.Drawing.Point(13, 118);
- this.tableLayoutPanel3.Name = "tableLayoutPanel3";
- this.tableLayoutPanel3.RowCount = 1;
- this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel3.Size = new System.Drawing.Size(261, 25);
- this.tableLayoutPanel3.TabIndex = 6;
- //
- // stickyCheckEdit
- //
- this.stickyCheckEdit.Location = new System.Drawing.Point(3, 3);
- this.stickyCheckEdit.Name = "stickyCheckEdit";
- this.stickyCheckEdit.Properties.AutoWidth = true;
- this.stickyCheckEdit.Properties.Caption = "Sticky (automatically applies if the next run fails)";
- this.stickyCheckEdit.Size = new System.Drawing.Size(255, 19);
- this.stickyCheckEdit.TabIndex = 1;
- //
- // tableLayoutPanel4
- //
- this.tableLayoutPanel4.AutoSize = true;
- this.tableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel4.ColumnCount = 2;
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel4.Controls.Add(this.reasonLabel, 0, 0);
- this.tableLayoutPanel4.Controls.Add(this.reasonMemoEdit, 1, 0);
- this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel4.Location = new System.Drawing.Point(13, 38);
- this.tableLayoutPanel4.Name = "tableLayoutPanel4";
- this.tableLayoutPanel4.RowCount = 1;
- this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel4.Size = new System.Drawing.Size(303, 74);
- this.tableLayoutPanel4.TabIndex = 7;
- //
- // reasonLabel
- //
- this.reasonLabel.Location = new System.Drawing.Point(3, 3);
- this.reasonLabel.Name = "reasonLabel";
- this.reasonLabel.Size = new System.Drawing.Size(40, 13);
- this.reasonLabel.TabIndex = 2;
- this.reasonLabel.Text = "Reason:";
- //
- // reasonMemoEdit
- //
- this.reasonMemoEdit.Dock = System.Windows.Forms.DockStyle.Fill;
- this.reasonMemoEdit.Location = new System.Drawing.Point(49, 3);
- this.reasonMemoEdit.Name = "reasonMemoEdit";
- this.reasonMemoEdit.Size = new System.Drawing.Size(251, 68);
- this.reasonMemoEdit.TabIndex = 0;
- //
- // tableLayoutPanel5
- //
- this.tableLayoutPanel5.AutoSize = true;
- this.tableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel5.ColumnCount = 4;
- this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
- this.tableLayoutPanel5.Controls.Add(this.okButton, 1, 0);
- this.tableLayoutPanel5.Controls.Add(this.cancelButton, 2, 0);
- this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel5.Location = new System.Drawing.Point(13, 149);
- this.tableLayoutPanel5.Name = "tableLayoutPanel5";
- this.tableLayoutPanel5.RowCount = 1;
- this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel5.Size = new System.Drawing.Size(303, 29);
- this.tableLayoutPanel5.TabIndex = 8;
- //
- // okButton
- //
- this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.okButton.Location = new System.Drawing.Point(73, 3);
- this.okButton.Name = "okButton";
- this.okButton.Size = new System.Drawing.Size(75, 23);
- this.okButton.TabIndex = 2;
- this.okButton.Text = "OK";
- this.okButton.Click += new System.EventHandler(this.okButton_Click);
- //
- // cancelButton
- //
- this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- this.cancelButton.Location = new System.Drawing.Point(154, 3);
- this.cancelButton.Name = "cancelButton";
- this.cancelButton.Size = new System.Drawing.Size(75, 23);
- this.cancelButton.TabIndex = 3;
- this.cancelButton.Text = "Cancel";
- this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
- //
- // ClaimBuildForm
- //
- this.AcceptButton = this.okButton;
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.cancelButton;
- this.ClientSize = new System.Drawing.Size(329, 191);
- this.Controls.Add(this.tableLayoutPanel1);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "ClaimBuildForm";
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Claim build";
- this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
- this.tableLayoutPanel2.ResumeLayout(false);
- this.tableLayoutPanel2.PerformLayout();
- this.tableLayoutPanel3.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.stickyCheckEdit.Properties)).EndInit();
- this.tableLayoutPanel4.ResumeLayout(false);
- this.tableLayoutPanel4.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.reasonMemoEdit.Properties)).EndInit();
- this.tableLayoutPanel5.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private DevExpress.XtraEditors.LabelControl claimBuildLabel;
- private DevExpress.XtraEditors.LabelControl buildNumberLabel;
- private DevExpress.XtraEditors.LabelControl reasonLabel;
- private DevExpress.XtraEditors.CheckEdit stickyCheckEdit;
- private DevExpress.XtraEditors.MemoEdit reasonMemoEdit;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
- private DevExpress.XtraEditors.SimpleButton okButton;
- private DevExpress.XtraEditors.SimpleButton cancelButton;
-
- }
+namespace Jenkins.Tray.UI
+{
+ partial class ClaimBuildForm
+ {
+ ///
+ /// 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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClaimBuildForm));
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.buildNumberLabel = new DevExpress.XtraEditors.LabelControl();
+ this.claimBuildLabel = new DevExpress.XtraEditors.LabelControl();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this.stickyCheckEdit = new DevExpress.XtraEditors.CheckEdit();
+ this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
+ this.reasonLabel = new DevExpress.XtraEditors.LabelControl();
+ this.reasonMemoEdit = new DevExpress.XtraEditors.MemoEdit();
+ this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
+ this.okButton = new DevExpress.XtraEditors.SimpleButton();
+ this.cancelButton = new DevExpress.XtraEditors.SimpleButton();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.tableLayoutPanel2.SuspendLayout();
+ this.tableLayoutPanel3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.stickyCheckEdit.Properties)).BeginInit();
+ this.tableLayoutPanel4.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.reasonMemoEdit.Properties)).BeginInit();
+ this.tableLayoutPanel5.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 1;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel4, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel5, 0, 3);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.Padding = new System.Windows.Forms.Padding(10);
+ this.tableLayoutPanel1.RowCount = 4;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(329, 191);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // tableLayoutPanel2
+ //
+ this.tableLayoutPanel2.AutoSize = true;
+ this.tableLayoutPanel2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel2.ColumnCount = 2;
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel2.Controls.Add(this.buildNumberLabel, 1, 0);
+ this.tableLayoutPanel2.Controls.Add(this.claimBuildLabel, 0, 0);
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(13, 13);
+ this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+ this.tableLayoutPanel2.RowCount = 1;
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(83, 19);
+ this.tableLayoutPanel2.TabIndex = 5;
+ //
+ // buildNumberLabel
+ //
+ this.buildNumberLabel.Appearance.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.buildNumberLabel.Appearance.Options.UseFont = true;
+ this.buildNumberLabel.Location = new System.Drawing.Point(73, 3);
+ this.buildNumberLabel.Name = "buildNumberLabel";
+ this.buildNumberLabel.Size = new System.Drawing.Size(7, 13);
+ this.buildNumberLabel.TabIndex = 1;
+ this.buildNumberLabel.Text = "1";
+ //
+ // claimBuildLabel
+ //
+ this.claimBuildLabel.Appearance.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.claimBuildLabel.Appearance.Options.UseFont = true;
+ this.claimBuildLabel.Location = new System.Drawing.Point(3, 3);
+ this.claimBuildLabel.Name = "claimBuildLabel";
+ this.claimBuildLabel.Size = new System.Drawing.Size(64, 13);
+ this.claimBuildLabel.TabIndex = 0;
+ this.claimBuildLabel.Text = "Claim build:";
+ //
+ // tableLayoutPanel3
+ //
+ this.tableLayoutPanel3.AutoSize = true;
+ this.tableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel3.ColumnCount = 1;
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel3.Controls.Add(this.stickyCheckEdit, 0, 0);
+ this.tableLayoutPanel3.Location = new System.Drawing.Point(13, 118);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ this.tableLayoutPanel3.RowCount = 1;
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel3.Size = new System.Drawing.Size(261, 25);
+ this.tableLayoutPanel3.TabIndex = 6;
+ //
+ // stickyCheckEdit
+ //
+ this.stickyCheckEdit.Location = new System.Drawing.Point(3, 3);
+ this.stickyCheckEdit.Name = "stickyCheckEdit";
+ this.stickyCheckEdit.Properties.AutoWidth = true;
+ this.stickyCheckEdit.Properties.Caption = "Sticky (automatically applies if the next run fails)";
+ this.stickyCheckEdit.Size = new System.Drawing.Size(255, 19);
+ this.stickyCheckEdit.TabIndex = 1;
+ //
+ // tableLayoutPanel4
+ //
+ this.tableLayoutPanel4.AutoSize = true;
+ this.tableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel4.ColumnCount = 2;
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel4.Controls.Add(this.reasonLabel, 0, 0);
+ this.tableLayoutPanel4.Controls.Add(this.reasonMemoEdit, 1, 0);
+ this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel4.Location = new System.Drawing.Point(13, 38);
+ this.tableLayoutPanel4.Name = "tableLayoutPanel4";
+ this.tableLayoutPanel4.RowCount = 1;
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel4.Size = new System.Drawing.Size(303, 74);
+ this.tableLayoutPanel4.TabIndex = 7;
+ //
+ // reasonLabel
+ //
+ this.reasonLabel.Location = new System.Drawing.Point(3, 3);
+ this.reasonLabel.Name = "reasonLabel";
+ this.reasonLabel.Size = new System.Drawing.Size(40, 13);
+ this.reasonLabel.TabIndex = 2;
+ this.reasonLabel.Text = "Reason:";
+ //
+ // reasonMemoEdit
+ //
+ this.reasonMemoEdit.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.reasonMemoEdit.Location = new System.Drawing.Point(49, 3);
+ this.reasonMemoEdit.Name = "reasonMemoEdit";
+ this.reasonMemoEdit.Size = new System.Drawing.Size(251, 68);
+ this.reasonMemoEdit.TabIndex = 0;
+ //
+ // tableLayoutPanel5
+ //
+ this.tableLayoutPanel5.AutoSize = true;
+ this.tableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel5.ColumnCount = 4;
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel5.Controls.Add(this.okButton, 1, 0);
+ this.tableLayoutPanel5.Controls.Add(this.cancelButton, 2, 0);
+ this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel5.Location = new System.Drawing.Point(13, 149);
+ this.tableLayoutPanel5.Name = "tableLayoutPanel5";
+ this.tableLayoutPanel5.RowCount = 1;
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel5.Size = new System.Drawing.Size(303, 29);
+ this.tableLayoutPanel5.TabIndex = 8;
+ //
+ // okButton
+ //
+ this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+ this.okButton.Location = new System.Drawing.Point(73, 3);
+ this.okButton.Name = "okButton";
+ this.okButton.Size = new System.Drawing.Size(75, 23);
+ this.okButton.TabIndex = 2;
+ this.okButton.Text = "OK";
+ this.okButton.Click += new System.EventHandler(this.okButton_Click);
+ //
+ // cancelButton
+ //
+ this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.cancelButton.Location = new System.Drawing.Point(154, 3);
+ this.cancelButton.Name = "cancelButton";
+ this.cancelButton.Size = new System.Drawing.Size(75, 23);
+ this.cancelButton.TabIndex = 3;
+ this.cancelButton.Text = "Cancel";
+ this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
+ //
+ // ClaimBuildForm
+ //
+ this.AcceptButton = this.okButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.cancelButton;
+ this.ClientSize = new System.Drawing.Size(329, 191);
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "ClaimBuildForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Claim build";
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.tableLayoutPanel2.ResumeLayout(false);
+ this.tableLayoutPanel2.PerformLayout();
+ this.tableLayoutPanel3.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.stickyCheckEdit.Properties)).EndInit();
+ this.tableLayoutPanel4.ResumeLayout(false);
+ this.tableLayoutPanel4.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.reasonMemoEdit.Properties)).EndInit();
+ this.tableLayoutPanel5.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private DevExpress.XtraEditors.LabelControl claimBuildLabel;
+ private DevExpress.XtraEditors.LabelControl buildNumberLabel;
+ private DevExpress.XtraEditors.LabelControl reasonLabel;
+ private DevExpress.XtraEditors.CheckEdit stickyCheckEdit;
+ private DevExpress.XtraEditors.MemoEdit reasonMemoEdit;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
+ private DevExpress.XtraEditors.SimpleButton okButton;
+ private DevExpress.XtraEditors.SimpleButton cancelButton;
+
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/ClaimBuildForm.cs b/JenkinsTray/UI/ClaimBuildForm.cs
similarity index 88%
rename from HudsonTrayTracker/UI/ClaimBuildForm.cs
rename to JenkinsTray/UI/ClaimBuildForm.cs
index 3fce136..baa3d52 100644
--- a/HudsonTrayTracker/UI/ClaimBuildForm.cs
+++ b/JenkinsTray/UI/ClaimBuildForm.cs
@@ -1,50 +1,50 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.BusinessComponents;
-using Spring.Context.Support;
-
-namespace Hudson.TrayTracker.UI
-{
- public partial class ClaimBuildForm : DevExpress.XtraEditors.XtraForm
- {
- ClaimService claimService;
-
- Project project;
- BuildDetails buildDetails;
-
- public ClaimBuildForm()
- {
- InitializeComponent();
-
- claimService = (ClaimService)ContextRegistry.GetContext().GetObject("ClaimService");
- }
-
- public void Initialize(Project project, BuildDetails buildDetails)
- {
- this.project = project;
- this.buildDetails = buildDetails;
-
- buildNumberLabel.Text = buildDetails.Number.ToString();
- reasonMemoEdit.Select();
- }
-
- private void okButton_Click(object sender, EventArgs e)
- {
- string reason = reasonMemoEdit.Text;
- bool sticky = stickyCheckEdit.Checked;
- claimService.ClaimBuild(project, buildDetails, reason, sticky);
- }
-
- private void cancelButton_Click(object sender, EventArgs e)
- {
- Close();
- }
- }
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.BusinessComponents;
+using Spring.Context.Support;
+
+namespace Jenkins.Tray.UI
+{
+ public partial class ClaimBuildForm : DevExpress.XtraEditors.XtraForm
+ {
+ ClaimService claimService;
+
+ Project project;
+ BuildDetails buildDetails;
+
+ public ClaimBuildForm()
+ {
+ InitializeComponent();
+
+ claimService = (ClaimService)ContextRegistry.GetContext().GetObject("ClaimService");
+ }
+
+ public void Initialize(Project project, BuildDetails buildDetails)
+ {
+ this.project = project;
+ this.buildDetails = buildDetails;
+
+ buildNumberLabel.Text = buildDetails.Number.ToString();
+ reasonMemoEdit.Select();
+ }
+
+ private void okButton_Click(object sender, EventArgs e)
+ {
+ string reason = reasonMemoEdit.Text;
+ bool sticky = stickyCheckEdit.Checked;
+ claimService.ClaimBuild(project, buildDetails, reason, sticky);
+ }
+
+ private void cancelButton_Click(object sender, EventArgs e)
+ {
+ Close();
+ }
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/ClaimBuildForm.resx b/JenkinsTray/UI/ClaimBuildForm.resx
similarity index 98%
rename from HudsonTrayTracker/UI/ClaimBuildForm.resx
rename to JenkinsTray/UI/ClaimBuildForm.resx
index 6ad62fa..e9f0694 100644
--- a/HudsonTrayTracker/UI/ClaimBuildForm.resx
+++ b/JenkinsTray/UI/ClaimBuildForm.resx
@@ -1,449 +1,449 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
- AAABAAYAKSkAAAEAIAC5GwAAZgAAACkpAAABAAgAgQwAAB8cAAAgIAAAAQAgAKgQAACgKAAAICAAAAEA
- CACoCAAASDkAABAQAAABACAAaAQAAPBBAAAQEAAAAQAIAGgFAABYRgAAKAAAACkAAABSAAAAAQAgAAAA
- AACINAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKv/v/UKH4/wAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA1uf//wh99/8Igvf/MYrn/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
- //8Ifff/Qqb3/5TT//8plvf/MYrn/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///CH33/zmi9/9Ssvf/lNP3/5zT
- 9/8plvf/OY7n/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA1uf//wh99/8xqvf/Urb//zmu//+Ey///pdf//6XX//8povf/OZLv/wAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
- //8Ifff/OaL3/2vD//9rw///c8P//6XX//+l1///pdf//5zX//8xlvf/OZr3/wAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///CIL3/zmi9/9Stv//c8P//5zX
- //+c1///pdf//6XX//+c1///nNf//6XX//8xpvf/Qp7v/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAA1uf//xCC9/85ovf/Urb//zmq9/85rv//e8v//6XX//+c1///nNf//5zX
- //+c1///pdf//6XX//8xlvf/Qp73/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
- //8Qgvf/OaL3/1Ky9/8xqvf/Mab3/zmq9/+U0///nNf//5zX//+c1///nNf//5zX//+U0///pdf//6XX
- //8plvf/Sp73/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///EIL3/zma9/9Ssvf/Mab3/zGq
- 9/9rw///e8f//5zX//+c1///nNf//5zX//+c1///nNf//5zX//+c1///pdf//6XX//8xlvf/SqL//wAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAzuf//wiC9/85ovf/UrL3/zGm9/8xpvf/Mab3/3vL//+c1///nNf//5zX
- //+c1///nNf//5zX//+c1///nNf//5TT//+c1///nNf//6XX//8xlvf/Sp73/wAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
- //8Qgvf/OaL3/1Ky9/8xpvf/KaL3/ymi9/8xpvf/Mab3/2vD//+c1///nNf//5zX//+c1///nNf//5zX
- //+c1///lNP//5zX//+c1///nM/3/6XX//8xlvf/SqL//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///GIb3/4zH9/+My/f/KaLv/ymi
- 9/8povf/KaL3/zGm9/8xpvf/Y77//5zX//+U0///nNf//5zX//+c1///nNf//5TT//+U0///lNP//5TT
- //+cz/f/nNf//6XX//8xlvf/SqL3/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAzuf//xiG9/+Mx/f/rdv3/3vH//8pou//KaL3/ymi9/8povf/KaL3/1q6
- 9/+Ey/f/nNf//5TT//+c1///lNP//5TT//+U0///lNP//5TT//+U0///lNP3/5TP//+Uz///nNP3/6XX
- //8xlvf/SqL3/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
- //8Yhvf/hMv3/63b9/+U0/f/Y7b3/yme7/8pou//KaLv/ymi9/8povf/hMv3/5zT9/+U0///lNP//5TT
- //+U0///nNP3/5TT//+U0/f/lNP3/5TT9/+U0/f/lM///5TP//+Uz/f/nNP3/6XX//8xlvf/SqL3/wAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///EIL3/4zH9/+t2/f/lM/3/5TP
- 9/+My/f/UrL3/yme7/8xou//a8P//zGi7/8povf/Mab3/5TP9/+U0///lNP//5TT//+U0///lNP//5TT
- 9/+U0/f/lNP3/5TP9/+Uz///lM///5TP9/+Uz/f/nNP3/6XX//8plvf/SqL3/wAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAzuf//xCC9/85nu//Y7b3/2u29/+Uz/f/lM/3/5TP9/+Uz/f/e8P3/4zL
- 9/+U0/f/a773/ymi7/8povf/c8P3/5TT9/+U0/f/lNP3/5TT9/+U0/f/lNP3/5TT9/+U0/f/lM/3/5TP
- //+Uz/f/lM/3/5TP9/+Uz/f/nNP3/6XX9/8plvf/SqL3/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM7n
- //8Qgvf/OZ7v/1Ku7/8hmuf/IZbv/zGe7/9ruu//lM/3/5TP9/+Uz/f/lM/3/4zL9/8xpvf/KZ7v/0qu
- 9/+My/f/lNP//5TT9/+Uz/f/lNP3/5TT9/+U0/f/lM/3/5TP9/+U0/f/lM/3/5TP9/+Uz/f/lM/3/5TP
- 9/+My/f/pc/3/6XX9/8plvf/SqL3/wAAAAAAAAAAAAAAAAAAAADO5///EIL3/zme7/9Sru//IZbv/yGW
- 7/8hlu//IZbv/yGa5/9Ssu//lM/3/5TP9/+Uz/f/c8P3/yme7/8pnu//Wrb3/4TL9/+Ey/f/lNP3/5TT
- 9/+Uz/f/lM/3/5TP9/+Uz/f/lNP3/5TP9/+Uz/f/lM/3/5TP9/+Uz/f/lM/3/4zL9/+My/f/nNP3/6XX
- 9/8plvf/SqL3/wAAAAAAAAAAzuf//xCC9/85nu//Uq7v/yGW7/8Ykuf/GJLn/xiS5/8hlu//IZbv/yGa
- 7/9Sru//lM/3/5TP9/+Uz/f/UrL3/yme7/8pnu//KZ7v/zGi7/+Mx+//lNP3/5TP9/+U0/f/lM/3/5TP
- 9/+Uz/f/lM/3/5TP9/+Uz/f/lM/3/4zL9/+My/f/jMv3/4zL9/+My/f/nM/3/6XX9/8plvf/Sp73/wAA
- AAAQgvf/MZ7v/1qy7/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/IZrv/yGa7/9Ssu//jMv3/5TP
- 9/+My/f/WrLv/3vD9/9rvvf/IZrv/2vD//+U0/f/jMv3/5TP9/+Uz/f/lM/3/5TP9/+Uz/f/lM/3/4zL
- 9/+Uz/f/lM/3/4zL9/+My/f/jMv3/4zL9/+My/f/nM/3/6XX9/8Yivf/e7r//3O2//8Yhvf/UrLv/zmi
- 5/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/yGa7/8hmu//GJLn/yGa7/9rvvf/lM/3/5TP9/+My/f/lNP3/4zL
- 9/85pu//lNP3/3vD7/+My/f/lNP3/5TT9/+My/f/lNP3/4zL9/+cz/f/jMv3/4zL9/+My/f/jMv3/4zL
- 9/+My/f/jMfv/4zL9/+l1/f/a7bv/xCC9//O5///AAAAAHO2//8Yhvf/Wq7v/zmi5/8Ykuf/GJLn/xiS
- 5/8Ykuf/GJLn/yGa7/8hlu//IZrv/zGi7/+My/f/jMv3/5TT9/97w/f/MaLv/yGa7/85pu//IZrv/zGi
- 7/97w+//lM/3/5TP9/+My/f/jMv3/4zL9/+My/f/jMv3/4zL9/+My/f/jMfv/4zL9/+My/f/jMv3/0Ke
- 7/8Qgvf/zuf//wAAAAAAAAAAAAAAAHO2//8Yivf/WrLv/zmi5/8Qkuf/GJLn/xiS5/8Ykuf/GJLn/xiS
- 5/8Ykuf/GJLn/2u67/+My/f/jMv3/2O29/8hmu//IZrv/yGa7/8hmu//GJLn/3vD7/+My/f/c8P3/4TH
- 9/+My/f/jMv3/4zL9/+My/f/jMv3/4zL9/+Mx+//c77v/63X9/9jtvf/EIL3/87n//8AAAAAAAAAAAAA
- AAAAAAAAAAAAAHO2//8Yivf/WrLv/zmi5/8Qjuf/EJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/MZ7v/4zL
- 9/+Uz/f/hMv3/xiS5/8Ykuf/GJLn/xiS5/8hmu//Wrb3/1Ky7/8Ykuf/IZrn/4zL9/+Ew+//WrLv/1qy
- 7/+Mx+//c773/yGa5/9aru//Wq7v/wiC9//O5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
- //8Yivf/Y7bv/zmi5/8Ykuf/EJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/c8P3/4zL9/+My/f/UrLv/0Ki
- 7/8xou//GJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/e8P3/1qy7/8Ykuf/GJLe/3O+7/9jtu//WrLv/0Ki
- 7/8Qgvf/zuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yivf/Y7bv/0Ki
- 7/8Qjuf/GJLn/xiS5/8Qkuf/GJLn/xiS5/9asu//jMv3/4zL9/+My/f/jMv3/2u67/8Ykuf/GJLn/xiS
- 5/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/xCS5/8Ykuf/GJLn/1qy7/85ouf/EIL3/9bn//8AAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yhvf/Y7bv/zmi5/8Qjuf/EJLn/xCS
- 5/8Qkuf/GJLn/0qq7/+My/f/jMv3/4zH7/+Ew+//Wq7v/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/xiS
- 5/8Qkuf/EJLn/xiS5/9jtu//QqLv/wiC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yivf/Y7bv/0Ki5/8Qjuf/EJLn/xiO3v8Yjt7/OaLn/4zH
- 7/+My/f/c77v/xiS5/8Qkuf/GJLn/xCO5/8Ykuf/GJLn/xCO5/8Ykuf/EI7n/xCO5/8Ykuf/Y7bv/0Ki
- 7/8Qgvf/zuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAHO2//8Yivf/a7bv/0Ki5/8Yjt7/EI7e/xiO3v8hluf/jMfv/4zL9/9ruu//EI7n/xCO
- 5/8Qjuf/EI7n/xCO5/8Qjuf/EI7n/xCO5/8Qjuf/GJLn/2Oy5/9Cou//CIL3/9bn//8AAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
- //8Yhvf/a7bv/0Ki5/8Qjt7/GI7e/zGe5/+Mx+//jMfv/2u67/8Yjt7/EI7n/xCO5/8Qjuf/EI7n/xCO
- 3v8Yjt7/EI7e/xiS5/9jsuf/QqLv/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yivf/a7bv/0Ki
- 5/8Qjt7/QqLn/4zH7/+Mx+//hMPv/1qy7/8xnuf/EI7n/xCO3v8Qjuf/EI7e/xCO3v8Yjt7/Y7Ln/0Ki
- 7/8Igvf/zuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yhvf/a7bv/0Ki5/9aruf/jMfv/4zH
- 7/+Mx+//jMfv/2u25/8Qjt7/EI7e/xCO3v8Qjt7/GI7e/2u27/9Cou//CIL3/9bn//8AAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yhvf/a7bv/4zH7/+Ew+//hMPv/2u27/9asu//QqLn/wiK
- 3v8Qjt7/CIbe/xiO3v9rtu//QqLv/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAHO2//8Yhvf/tdv3/6XP9/+Ew+//EI7e/xCO3v8Iit7/CIbe/wiG3v8Yjt7/a7bv/0Ki
- 7/8Qgvf/1uf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
- //9Knvf/tdv3/4TD7/8Iht7/CIbe/wiG3v8Iht7/EI7e/2u25/9Couf/CH33/9bn//8AAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//9Kovf/nM/3/zme
- 5/8Iht7/CIbe/xCO3v9rtuf/QqLv/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//9Cnvf/pdf3/0Ki5/8Qjt7/a7bn/0Ke
- 7/8Igvf/1uf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//85nu//a7bn/2u27/9Cnu//EIL3/9bn//8AAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAHO2//8Yhvf/MZ7n/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
- //8Qgvf/1uf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//+f//4AAAP//w///gAAA//+B//+AAAD//wD//4AAAP/+
- AH//gAAA//wAP/+AAAD/+AAf/4AAAP/wAA//gAAA/+AAB/+AAAD/wAAD/4AAAP+AAAH/gAAA/wAAAP+A
- AAD+AAAAf4AAAPwAAAA/gAAA+AAAAB+AAADwAAAAD4AAAOAAAAAHgAAAwAAAAAOAAACAAAAAAYAAAAAA
- AAAAgAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAwAAAAAGAAADgAAAAA4AAAPAAAAAHgAAA+AAAAA+A
- AAD8AAAAH4AAAP4AAAA/gAAA/wAAAH+AAAD/gAAA/4AAAP/AAAH/gAAA/+AAA/+AAAD/8AAH/4AAAP/4
- AA//gAAA//wAH/+AAAD//gA//4AAAP//AH//gAAA//+A//+AAAD//8H//4AAAP//4///gAAAAAAAAAAo
- AAAAKQAAAFIAAAABAAgAAAAAACINAAAAAAAAAAAAAAAAAAAAAAAACH33/wiG3v8Iit7/EI7e/xiO3v8Y
- kt7/EI7n/xCS5/8Ykuf/CIL3/xCC9/8Yhvf/GIr3/zGK5/85juf/IZbn/yGa5/8hlu//IZrv/yme7/8x
- nuf/OZ7n/zmS7/8xnu//OZ7v/ymW9/8xlvf/OZr3/ymi7/85ouf/MaLv/zmm7/8povf/Mab3/zmi9/8x
- qvf/Oar3/zmu//9Cnu//Qp73/0qe9/9Couf/QqLv/0qq7/9aruf/Uq7v/1qu7/9Ssu//WrLv/0Km9/9K
- ovf/Sq73/0qi//9Qofj/UrL3/1q29/9auvf/Urb//2Oy5/9rtuf/Y7bv/2u27/9ruu//c77v/2O29/9r
- tvf/a773/2O+//9zvvf/c7b//3u6//97w+//a8P//3PD9/97w/f/c8P//3vH//97y///ir/7/4TD7/+M
- x+//hMf3/4zH9/+Ey/f/jMv3/4TL//+Uz/f/nM/3/5TP//+U0/f/nNP3/5TT//+c1///pc/3/6XX9/+t
- 1/f/rdv3/6XX//+12/f/zuf//9bn////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
- AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAP//////////////////////
- //9lNf//////////////////////////AAAA////////////////////////ZAkJY///////////////
- //////////8AAAD//////////////////////2UAMVsZDf///////////////////////wAAAP//////
- //////////////9kACI2WVogZP//////////////////////AAAA////////////////////ZQAjOSVV
- YWEgFv////////////////////8AAAD//////////////////2QAIkhIS2FhYVwhZP//////////////
- /////wAAAP////////////////9lCSI5S1xcYWFcXGEhJv//////////////////AAAA////////////
- ////ZAoiOSQlTWFcXFxcYWEXZP////////////////8AAAD//////////////2UKIjYjISRbXFxcXFxb
- YWEZKP///////////////wAAAP////////////9kChs2ISNITFxcXFxcXFxcYWEZZf//////////////
- AAAA////////////ZQkiNiEhIU1cXFxcXFxcXFtcXGEaKP////////////8AAAD//////////2QKIjYh
- ICAhIUhcXFxcXFxcW1xcV2EZZf///////////wAAAP////////9lC1JUHCAgICEhQ1xbXFxcXFtbW1tX
- XGEaMv//////////AAAA////////YwtSYEwcICAgIDhTXFtcW1tbW1tbWVhYWmEZZf////////8AAAD/
- /////2ULU2BZQBMcHCAgU1pbW1tbWltZWVlZWFhWWmEaMv///////wAAAP////9kClJgVlZUNhMeSB4g
- IVZbW1tbW1lZWVZYWFZWWmERZf//////AAAA////ZQoYQEFWVlZWSlRZQhwgSVlZWVlZWVlZVlhWVlZW
- Wl4ZMv////8AAAD//2MKGC0QERc+VlZWVlQhEzNUW1lWWVlZVlZZVlZWVlZUXV4SZf///wAAAP9lChgt
- ERISERAvVlZWSRMTN1NTWVlWVlZWWVZWVlZWVlRUWl4ZMf//AAAAYwofLxIICAgRERItVlZWNhMTEx5Q
- WVZZVlZWVlZWVlRUVFRUWlwSY/8AAAAKHi8HBxAHCAgIEhIvVFZUMEpCEkhZVFZWVlZWVlRWVlRUVFNU
- WV4STQAAAE0SLx0QBwgICBISCBJCVlZUWVQfWUdUWVlUWVRXVFRUWVNZUFlgXEhkAAAA/2VcWyMFBxAH
- EBIREh5UVFlKHhIfEh5HVlZUVFRUVFRUUFRTUyQHZP8AAAD//1UHOB0HCAgHCAgICD5UVEASEhISCEdU
- SVNUVFNZVFNQP2BcXGX//wAAAP///2VcWx8HBwgIEAgIHlRWUwgICAgQNy8IEFRPMDBQPxAvOAdk////
- AAAA/////1USOB0FBwgHCAgISVRULyoeCAgICAgISjAIBT84OE1cZf////8AAAD//////2VcXCQHBxAH
- BwgwVFRUVD4ICAgICAgICAcHBzgdB2T//////wAAAP///////00SOB0DBwMHCCtUVFBPLggICAgICAcH
- BxA4TVxl////////AAAA/////////2VcXB8HBwUFHVBUPwgHCAYICAYIBgcQPB8HZP////////8AAAD/
- /////////1USQikFAwUQUFQ+BgYGBgYGBgcHBThNXGX//////////wAAAP///////////2VcXB8FBRRQ
- UD4FBgYGBgMFAwg6Hwdk////////////AAAA/////////////00SQh0DKVBQTzAUBgMHAwMFOE1cZf//
- //////////8AAAD//////////////2VcXCssUFBQUDsDAwMDBT4fB2T//////////////wAAAP//////
- /////////1UMP1BPTz4wHQIDAgVCTVxl////////////////AAAA/////////////////2VcZGBPAwMC
- AgIFPCQHZP////////////////8AAAD//////////////////1UzYE8CAgICAz5NXGX/////////////
- /////wAAAP///////////////////2VjYx0CAgM+Hwdk////////////////////AAAA////////////
- /////////1UkXh0DPk1cZf////////////////////8AAAD//////////////////////2VjXEIfB2T/
- /////////////////////wAAAP///////////////////////1UMSFxl////////////////////////
- AAAA/////////////////////////2QMZP////////////////////////8AAAD//+f//4AAAP//w///
- gAAA//+B//+AAAD//wD//4AAAP/+AH//gAAA//wAP/+AAAD/+AAf/4AAAP/wAA//gAAA/+AAB/+AAAD/
- wAAD/4AAAP+AAAH/gAAA/wAAAP+AAAD+AAAAf4AAAPwAAAA/gAAA+AAAAB+AAADwAAAAD4AAAOAAAAAH
- gAAAwAAAAAOAAACAAAAAAYAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAwAAAAAGAAADg
- AAAAA4AAAPAAAAAHgAAA+AAAAA+AAAD8AAAAH4AAAP4AAAA/gAAA/wAAAH+AAAD/gAAA/4AAAP/AAAH/
- gAAA/+AAA/+AAAD/8AAH/4AAAP/4AA//gAAA//wAH/+AAAD//gA//4AAAP//AH//gAAA//+A//+AAAD/
- /8H//4AAAP//4///gAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChzfxX
- XKj5/zyW84Yzf+UKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- 1ub+Um6x+vgwmPj/N5jz/zCM6YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAANXn/lZprvroMJr3/2i8+P+Bxvj/OJnx+zeM5nsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAP///wLE3f5TbLH68C+g+P9Ns/7/Xrz+/5nT/v+Uzv7/NqDz9ziS8H9Ikf4HAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAx9/+UnC1+/8tmfj/Yrz+/3vJ//+Oz///pdf//6LX//+Jy/7/R6T4/zue84RVqv8G
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAANXn/ldvsvruLZv4/0Wu+/9Qtv7/i9D//6HX//+g1///ndf//57X//+LzP3/
- SaX2/0Gd9n0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAADV5f9QbbL66DSc9/9Grvj/Nqr4/zeq+P+N0P//ndf//5zX//+c1///
- m9b//57V//+RzP7/OZv29kme9noAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu9v+V2+z+vsxl/f/R6z3/zKn9/9Qt/v/e8j//5rW//+c1///
- nNf//5zX//+c1///m9f//6HX//+Uzv7/RqL5/UWe+4RMmf8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANXl/1Bss/r7LZr3/0Sr9/8xpvf/L6X3/0ex+f98yv7/
- m9f//5zX//+c1///nNf//5zX//+Y1f//mtb//53X//+Kx/v/TqT4/0We+4QAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV5/5XcrT66GKw9/9XtPX/MKX1/ymi9/8ro/f/
- Mab3/1i5/f+Y1f//mdX//5zX//+c1///m9b//5XU//+W1P//mNT+/53S+v+Kyf3/RqL5/Umj9noAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8CwN/+UnK3+u5ttvf/ndT4/1m39/8povT/
- KaL2/ymi9/9Brvf/dsX4/5nV//+X1P//mNX//5bU//+V0///lNP+/5TT/v+U0vn/lc/+/5rS+/+Tzfz/
- P5z29keh9n1Vqv8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTd/lN9uvv/aLb3/6DW9/+Nzvf/
- V7L1/y2i8P8so/D/N6n4/0ux9v94xPf/k9H9/5TT//+U0///mNP7/5TT/f+U0/f/lNP3/5TS+P+Uz///
- lM/6/5nR9/+Py/z/SqT4/0Og94RIkf4HAAAAAAAAAAAAAAAAAAAAAAAAAADM5/5WbrL58D+f9P+CxPf/
- ks33/5PP9/+EyPf/X7f1/2C49P9yw/n/O6nz/yyj9v+Cyfj/lNP7/5TT+/+U0/v/lNP6/5TT9/+U0/f/
- lM/4/5TP/v+Uz/n/lM/3/5rS+P+Gx/n/SKX3/0ag9n8AAAAAAAAAAAAAAAAAAAAAzeb+Ummw+ugzmfL/
- Q6fu/zSg7v9GqPH/e8Ly/5TP9/+Qzff/kc73/3fE9/80pvP/O6j1/4TJ+P+U0/v/lNH3/5TT9/+U0/f/
- lNL3/5TQ9/+U0ff/lM/4/5TP9/+Uz/f/k8/3/5rP9/+Oyff/O57290qh9nsAAAAAAAAAALjb/ldss/n4
- Mpny/0Om7/8hlu7/H5Xt/yGW7/8sn+r/Zrry/5DN9/+Szvf/ZLv1/y2g8P9GrPT/c8P2/4LJ9v+T0vb/
- lND3/5TQ9/+Uz/f/lNH3/5TP9/+Uz/f/lM/3/5PO9/+Rzvf/jcv3/5bQ9/+SzPf/QaD2+0Sf94NMmf8K
- bbT6/y+Y8v8/pO3/IZbr/xiS5/8Ykuf/HJTr/x6W7P8tn+//Zbny/47M9/+Hyff/UrHz/0ar8f8/qfL/
- TK7x/4zO9v+Sz/f/lNH3/5TP9/+Uz/f/lM/3/5PO9/+Tzvf/kM33/4zL9/+My/f/jMv3/5bO9/+Jx/f/
- RqH3/12r+4ZDnvr/OJ/y/zqj6v8ak+f/GJLn/xiS5/8Ykuf/Hpfs/x+Y7f8rnu3/cL/2/5PP9/+Ex/X/
- hcr2/3LA9v9RsvP/hMv1/4vL9v+U0ff/ks/3/5PQ9/+Rzff/lM73/47M9/+Pzff/jMv3/4zL9/+MyfT/
- j8z3/5fO9f9EoPX/jMT9/2mv/ldGoPn4Q6Hx/zag6P8Zk+f/GJLn/xiS5/8bler/IJju/yCY7v88p/D/
- jMv3/5DP9/+EyPf/Pqjw/zKj8P85pvD/QKjw/4XI8v+Sz/f/js33/4zL9/+Oy/f/jMv3/4zL9/+MyvX/
- i8nz/43L9v+Dxvb/Q5/z/3G1+fi42/5XAAAAAHO3/lJDn/roRaXx/zah6P8Yk+f/FpLn/xiS5/8Ykuf/
- GJLn/x2U6P9quvH/jcz3/3XA9/8imu3/H5jt/x+Y7f8fl+r/dcHy/2y99P9lufP/icr2/4bH9f9/xPX/
- icn1/4DE9f9uuu7/icbz/1Gq9/9psProzeb+UgAAAAAAAAAAAAAAAHO0/lZGofnwQKPw/zeh6f8Yk+f/
- FZLn/xiS5/8Ykuf/GZLn/z+m7/+Iyvf/isz3/zei6/8pmuv/HZXp/x2W6/85pO7/J5rp/xuV5/95wvX/
- XLLu/zqi6f9yvO3/YLXx/0Wn7f8+nfL/arP58Mzn/lYAAAAAAAAAAAAAAAAAAAAAAAAAAGuy/lNLo/r/
- RKTw/z6i7f8SkOf/GJLn/xSS5/8Xkuf/LZ3q/3fB9P+My/f/e8P1/2u68v8yn+r/GJLn/xiS5/8Ykuf/
- GJLn/zGf6/8imOj/FpLl/y6d6f9WsO7/Mprv/3S2+v++3f5TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- f3//Amy0/lJFnvnuS6fy/zag6P8Vkef/EJLn/xKS5v8mmOj/a7ry/4zL9/+FxfD/Z7bu/y6c6v8Xkuf/
- GJLn/xeS5/8Ykuf/FpHn/xGS5/8clej/Tqvt/zic8v9rsvnux9/+Uv///wIAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAHK1/ldDn/roSabx/z6h6f8ZkuX/FY7f/x+T4f9fs+v/jMr1/2K27v8Tkef/
- E5Hn/xGP5/8Vkef/E4/n/xSQ5/8Rjuf/H5Xn/0io7P82m/L/a7L66M3n/lcAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK1/1BKofn7SKLw/0Ch5v8VkN//HZLh/1yx6/+MyPH/
- XrPt/xOO5P8Qjuf/EI7n/xCO5v8SjuL/EY7i/xuT5/9Ipun/N5rw/26z+fvV5f9QAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmv/ldKofn7Tabx/zyg5v8glOH/
- Z7Xr/4zH7/94vu7/QaXq/xuT5/8QjuH/EI7k/xGO3v8Xj97/Tajn/zab8f9rs/n7u9v+VwAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK1/1BDnfro
- UKby/1Sr6f95vez/isbv/4TD7/90u+z/Lpvi/xCO3v8Pjd7/H5Pg/1Kq6/86nPL/abL66NXl/1AAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAHK1/ldFnvnuX67z/5nM8/+IxPD/Q6Xo/zGd5f8UjuD/DIre/xyQ4P9Lpur/OJvy/3Cy+e7V5/5X
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAGy0/lJdqvv/j8X3/5DI8f8Qi9//Coje/wiG3v8QjN7/UKnm/zWZ7/9ztfr/
- x9/+UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf3//Am61/lNirvrwgMD3/z2g5/8NiN//FI7f/1Cp5v86nPH/
- b7L58MTd/lP///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO0/lZZqfrodr7y/0Ok5v9Lp+f/
- Oprx/2mw+ujV5/5WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO3/lJVqPb4
- QqDu/zSZ8P9xs/n41ub+UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAGmv/ldDnvn/cbT5/8Hb/lcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAP/+f////D////g////wH///4Af//8AH//+AA///AAD//gAAf/wAAH/4AAA/
- 8AAAD+AAAA/AAAAHgAAAAQAAAAAAAAAAgAAAAcAAAAPgAAAH8AAAD/gAAB/8AAA//gAAf/8AAP//gAH/
- /8AD///gB///8A////gf///8P////n//KAAAACAAAABAAAAAAQAIAAAAAAAACAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAP8Iht7/Coje/wyJ3v8Pjd7/EIvf/xCN3v8Vjt7/FZDf/xGO4f8UjuD/EY7m/xGR5v8Vkeb/
- HZLg/xiS5v8blef/H5Xn/xuV6v8dlen/Hpbs/x+Y7f8xiuf/OY7n/zCM6f8glOH/Lpvi/yGW6/8hlu7/
- Ipjo/yaZ6P8gmO3/KZrr/y2d6f8rnu3/LZ/v/zGd5f8xn+r/Mprv/zWZ7/8vmPL/LZr3/y2a+P8xl/f/
- OJPx/zyW8/8ymfL/Npnx/zCa9/80nPf/OZrx/zmc8f8+nfL/OZr3/zqd9f8+nvb/MJj4/zyg5v82oOj/
- NKDu/zqi6f8+oen/PqLt/zmk7v8/pe7/LKHw/ymi9v8so/b/L6X3/y+g+P8yo/D/NKbz/zeg9P8xpvb/
- Oabw/zyn8P87qfP/Pqjx/zuo9f82qfj/Qp7v/0Of8/9Bnfb/Sp73/0Oe+v9Gn/r/Rp/8/0Ch5v9DpOb/
- S6fn/02o5/9Cpen/QqDu/0Om7v9Fp+3/Sabp/0io7P9Oq+3/UKnm/1Kq6/9Uq+n/VrDu/12y6/9dsu3/
- QaLw/0Sk8P9Boff/RaD2/0ii8P9KpvH/Tabx/0mh9/9Ipfb/QKjw/0ap8f9Eq/f/Qa73/0as9f9MrvH/
- RqH6/0ek+P9Kovr/SqT4/06k+P9Frvn/UKby/1Gq9/9Vqff/X67z/1mp+/9cqfr/Xqv8/0ux9v9Hsfn/
- TbP+/1Gx8/9XsvX/V7T1/1m39/9ft/X/ULf7/1C2/v9Yuf3/Xrz+/2e16/9itu7/Z7bu/2667v90u+z/
- crzt/3i97f9jrvv/aa/7/2C18f9isPf/aLb3/2229/9lufL/YLj0/2S79f9quvH/bL30/2mx+v9tsvr/
- arT6/220+v9psf7/bLP+/2+0/v9ivP7/aLz4/3a+8v9wv/b/cLP6/3G0+v90tvr/c7b//326+/91wfL/
- csH2/3bA9f93xPf/e8Ly/3rC9f94xPf/f8T1/3LD+f92xfj/e8j//3zK/v+Ew+//isbv/4zH7/+FxfD/
- gMD3/4HE9v+Fx/X/iMXx/4nH9/+Pxff/hcjy/4LJ9v+Eyfb/i8nz/4zI8f+Jyvb/jMr2/4rM9/+NzPb/
- gcb4/4bH+f+Kx/v/jMT9/4LJ+P+Eyfj/icr9/4/L/P+LzP3/js///5DI8f+Rzvf/lM72/5nM8/+az/f/
- lM/4/5LM/f+Uzv7/i9D//43Q//+T0fb/lNH3/5nR9/+U0vr/k9H9/5TT/v+W1P//mdL6/53S+v+d1Pj/
- mdP+/5nV/v+c1v//osz9/6DW9/+h1///pdf//7nc/v+93P7/wNz+/8Te/v/C4P7/x+D+/8jg/v/O5///
- 1uf//wAAAAD////////////////////2//////////////////////////////////////////pJ////
- //////////////////////////////////9Fqv3/////////////////////////////////////9IyP
- 8Or/////////////////////////////////qkKPver09OP2///////////////////////////////2
- hYzj9PTx8eSE////////////////////////////RYVPT+Px8fHx9P7/////////////////////////
- //qFSYy98PHx8fHx9Or///////////////////////9FdElJhb3x8fHx8fDw9PH9////////////////
- /////opJQkJJjvDw8fHx6+vw7df//////////////////6HuikJCQ3S18Ovr8Ovr6+bq8f7/////////
- //////7q88+JQUFPhLvq6uvs6uXo6OLg59h1////////////Psnl5cmenrpMRMnq6Oro5uXd6uDl6Ov9
- //////////pMRnS25eXQu0dMyeXl5ejm3ebd5t3l5s7///////9BdBUVFSGf5eWfInS7yeXm5ebo3Nzc
- 5eXl5f3///+kQ0wdDBASFUGfz8mHdk120OXl3OXl5eXQz8/P5eWE//CMTBISEgwVFSKz5cnKs4fJz+Xo
- 5eXl0OXPz8/9/vTx///+9nQMEBUVFUzP5clNRkpMyOXQz9DQz8/P5eWp//////+PTBAMDBAQHaDPsxUV
- FR2yoZ3PycnIyfH+/v/////////+vQwQEAwQTM/PPCEQFT8eELVmPLKKdHH///////////aPdAwQDAwk
- stC4oCUQDRAMRx0Mj/39/v/////////////+9k8MDCKfz8iQIQ0QDRAMDBWHjv////////////////+P
- dBAIGZHQkQwMDAwMDAyM/f7////////////////////++k8QZsiRCAwMDAQMDHaO////////////////
- //////+pcRmQwJVbEAQMBIz9/v/////////////////////////+9uvPyJUaBAQOZY7/////////////
- //////////////+288hMGgQEEOv+//////////////////////////////7+/owEBAxljP7/////////
- ///////////////////////xTAyF/f7////////////////////////////////////+8Y+M////////
- //////////////////////////////+9/v///////////////////////////////////////72s////
- //////////////////5////8P///+D////Af///gB///wAf//4AD//8AAP/+AAB//AAAf/gAAD/wAAAP
- 4AAAD8AAAAeAAAABAAAAAAAAAACAAAABwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//wAA//+AAf//wAP/
- /+AH///wD///+B////w////+f/8oAAAAEAAAACAAAAABACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2OX/FFqq+tM2lO+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwtr+FWOx+ctRsfv/er/4/jeY8HwAf/8CAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0Of+FmOw+s9Jrvz/jdD//6HX//9+xf3/QqD1ggAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudz+FmWv+s09p/f/TrX7/5jV//+c1///nNb//4DD/P1IoPp/
- f3//AgAAAAAAAAAAAAAAAAAAAAAAAAAA0Of+FnS4+s0+p/b/LaT3/1O2+/+a1v//nNf//5nW//+Z1f//
- gMH7/0ig+n8AAAAAAAAAAAAAAAAAAAAAwtr+FXu8+s+Oy/f/Qqv0/y2k9f9euvf/ltT+/5bU/v+U0/z/
- lNL6/5bQ/f9+wfn9SKL3gn9//wIAAAAAzOX/FGSv98tOqvL/ecL0/4LH9v93w/f/Nqb0/4zO+f+U0vn/
- lNP4/5TR9/+Uz/n/ldD3/37B+P9BoPZ8AAAAAGGw99M1nu7/HJTq/yKY7P9iuPL/g8j2/0Oq8v9gufT/
- kdD3/5TQ9/+U0Pf/k8/3/5DN9/+PzPf/fcD2/kui94REoPfTM57q/xiS5/8alOn/Ipnu/3PA9f+Hyvb/
- Ta/y/2K58/+Pzvb/kM33/4/M9/+Ny/f/jMr1/3vA9f9ytvrTcrL/FEqk98sxnur/F5Ln/xiS5/84ouz/
- hcj3/yib7P8eluv/UK/v/2G28f9muPD/d8Dy/16x8P9ttvnLzOX/FAAAAABttv4VS6P3zzSe6/8Ukuf/
- H5bo/3/E9f91vvH/JJjo/xiS5/8elej/GZTn/0Kl7f9lsffPwtr+FQAAAAAAAAAAAAAAAHO5/hZLpPfN
- N57p/xqR4P91vu//OaLp/xGP5/8Sj+X/FJDm/zmf6/9nsPfN0Of+FgAAAAAAAAAAAAAAAAAAAAAAAAAA
- aK3+Fk2k981Aoej/fcDt/2y47f8ak+L/FI/g/zyf6f9ksPfNudz+FgAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAABzuf4WWKj4z5DH8/8jleL/Dovf/zue6P9nsPfP0Of+FgAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAG22/hVqsvnLQaLn/zqe5/9osffLwtr+FQAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrL/FEyk9tNmsPbT2OX/FAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAP5/AAD8fwAA+B8AAPAfAADgDwAAwAMAAIADAAAAAAAAAAAAAIABAADAAwAA4AcAAPAPAAD4HwAA
- /D8AAP5/AAAoAAAAEAAAACAAAAABAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAA/w6L3/8Uj+D/
- EY/n/xKP5f8UkOb/FJLn/xeS5/8akeD/GpPi/xiS5/8ZlOf/GpTp/xyU6v8elej/Hpbr/x+W6P8jleL/
- JJjo/yKY7f8om+z/Op7n/zGe6v8znur/NJ7r/zee6f81nu7/OZ/r/zue6P88n+n/NpTw/ziY8P85mvf/
- OaLp/zii7P8tpPb/Nqb0/z2n9/8+p/b/Sp73/0Gi5/9Aoej/QqXt/1Cv7/9CoPf/Q6H1/0qi9/9MpPb/
- Q6ry/0Kr9P9OqvL/Ta/y/0Wh+P9IoPr/SKL4/0yj+P9KpPj/S6T4/0yk+P9NpPj/Sa78/1mp+f9bqvr/
- TrX7/16x8P9euvf/UbH7/1O2+/9suO3/db7v/2av+v9htvH/ZbH3/2ew9/9iuPL/Zrjw/2C59P9isPj/
- Y7H6/2Sw+v9lsPj/Z7H4/2iw+P9rs/r/bbb6/2mx/v9rsv7/b7T+/3W+8f9zt/r/c7b//3W4+v97vPr/
- fcDt/3fA8v9zwPX/d8P3/3vA9f95wvT/fcH3/3/E9f96wPn/fsH4/3/C+v9+xf3/gsf2/4PI9v+FyPf/
- h8r2/4zK9f+Ny/f/jsv3/4/M9/+Pzvb/gMH7/4DE/f+Mzvn/kMfz/5DN9/+Tz/f/lM/5/43Q//+R0Pf/
- lND3/5XQ9/+U0vn/ltD9/5TT/P+W1P7/mNX//5nV//+Z1v//mtb//5zW//+h1///vNz+/8De/v/E3v7/
- xd7+/87n///W5///AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
- AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAP//////////
- ////////////////////i///////////////////P3+LjP//////////////iz+Dg4P/////////////
- MSM/g4ODi4z/////////jD8jQX9/fX19////////MWBqYCR6fX16f4uM////gz8jQWoxQXp6enp6ff//
- /z8LBhNfbDNMenp0i4yM////jIM/I3QUCz9BQWxo//////8/CwtqXxQLP4OM/////////4yDgyQGBgtD
- ////////////QWxBP4OM//////////////+Mgz8//////////////////4uM////////////////////
- ///////////+fwAA/H8AAPgfAADwHwAA4A8AAMADAACAAwAAAAAAAAAAAACAAQAAwAMAAOAHAADwDwAA
- +B8AAPw/AAD+fwAA
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ AAABAAYAKSkAAAEAIAC5GwAAZgAAACkpAAABAAgAgQwAAB8cAAAgIAAAAQAgAKgQAACgKAAAICAAAAEA
+ CACoCAAASDkAABAQAAABACAAaAQAAPBBAAAQEAAAAQAIAGgFAABYRgAAKAAAACkAAABSAAAAAQAgAAAA
+ AACINAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKv/v/UKH4/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA1uf//wh99/8Igvf/MYrn/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
+ //8Ifff/Qqb3/5TT//8plvf/MYrn/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///CH33/zmi9/9Ssvf/lNP3/5zT
+ 9/8plvf/OY7n/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA1uf//wh99/8xqvf/Urb//zmu//+Ey///pdf//6XX//8povf/OZLv/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
+ //8Ifff/OaL3/2vD//9rw///c8P//6XX//+l1///pdf//5zX//8xlvf/OZr3/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///CIL3/zmi9/9Stv//c8P//5zX
+ //+c1///pdf//6XX//+c1///nNf//6XX//8xpvf/Qp7v/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA1uf//xCC9/85ovf/Urb//zmq9/85rv//e8v//6XX//+c1///nNf//5zX
+ //+c1///pdf//6XX//8xlvf/Qp73/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
+ //8Qgvf/OaL3/1Ky9/8xqvf/Mab3/zmq9/+U0///nNf//5zX//+c1///nNf//5zX//+U0///pdf//6XX
+ //8plvf/Sp73/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///EIL3/zma9/9Ssvf/Mab3/zGq
+ 9/9rw///e8f//5zX//+c1///nNf//5zX//+c1///nNf//5zX//+c1///pdf//6XX//8xlvf/SqL//wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAzuf//wiC9/85ovf/UrL3/zGm9/8xpvf/Mab3/3vL//+c1///nNf//5zX
+ //+c1///nNf//5zX//+c1///nNf//5TT//+c1///nNf//6XX//8xlvf/Sp73/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
+ //8Qgvf/OaL3/1Ky9/8xpvf/KaL3/ymi9/8xpvf/Mab3/2vD//+c1///nNf//5zX//+c1///nNf//5zX
+ //+c1///lNP//5zX//+c1///nM/3/6XX//8xlvf/SqL//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///GIb3/4zH9/+My/f/KaLv/ymi
+ 9/8povf/KaL3/zGm9/8xpvf/Y77//5zX//+U0///nNf//5zX//+c1///nNf//5TT//+U0///lNP//5TT
+ //+cz/f/nNf//6XX//8xlvf/SqL3/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAzuf//xiG9/+Mx/f/rdv3/3vH//8pou//KaL3/ymi9/8povf/KaL3/1q6
+ 9/+Ey/f/nNf//5TT//+c1///lNP//5TT//+U0///lNP//5TT//+U0///lNP3/5TP//+Uz///nNP3/6XX
+ //8xlvf/SqL3/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANbn
+ //8Yhvf/hMv3/63b9/+U0/f/Y7b3/yme7/8pou//KaLv/ymi9/8povf/hMv3/5zT9/+U0///lNP//5TT
+ //+U0///nNP3/5TT//+U0/f/lNP3/5TT9/+U0/f/lM///5TP//+Uz/f/nNP3/6XX//8xlvf/SqL3/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADW5///EIL3/4zH9/+t2/f/lM/3/5TP
+ 9/+My/f/UrL3/yme7/8xou//a8P//zGi7/8povf/Mab3/5TP9/+U0///lNP//5TT//+U0///lNP//5TT
+ 9/+U0/f/lNP3/5TP9/+Uz///lM///5TP9/+Uz/f/nNP3/6XX//8plvf/SqL3/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAzuf//xCC9/85nu//Y7b3/2u29/+Uz/f/lM/3/5TP9/+Uz/f/e8P3/4zL
+ 9/+U0/f/a773/ymi7/8povf/c8P3/5TT9/+U0/f/lNP3/5TT9/+U0/f/lNP3/5TT9/+U0/f/lM/3/5TP
+ //+Uz/f/lM/3/5TP9/+Uz/f/nNP3/6XX9/8plvf/SqL3/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM7n
+ //8Qgvf/OZ7v/1Ku7/8hmuf/IZbv/zGe7/9ruu//lM/3/5TP9/+Uz/f/lM/3/4zL9/8xpvf/KZ7v/0qu
+ 9/+My/f/lNP//5TT9/+Uz/f/lNP3/5TT9/+U0/f/lM/3/5TP9/+U0/f/lM/3/5TP9/+Uz/f/lM/3/5TP
+ 9/+My/f/pc/3/6XX9/8plvf/SqL3/wAAAAAAAAAAAAAAAAAAAADO5///EIL3/zme7/9Sru//IZbv/yGW
+ 7/8hlu//IZbv/yGa5/9Ssu//lM/3/5TP9/+Uz/f/c8P3/yme7/8pnu//Wrb3/4TL9/+Ey/f/lNP3/5TT
+ 9/+Uz/f/lM/3/5TP9/+Uz/f/lNP3/5TP9/+Uz/f/lM/3/5TP9/+Uz/f/lM/3/4zL9/+My/f/nNP3/6XX
+ 9/8plvf/SqL3/wAAAAAAAAAAzuf//xCC9/85nu//Uq7v/yGW7/8Ykuf/GJLn/xiS5/8hlu//IZbv/yGa
+ 7/9Sru//lM/3/5TP9/+Uz/f/UrL3/yme7/8pnu//KZ7v/zGi7/+Mx+//lNP3/5TP9/+U0/f/lM/3/5TP
+ 9/+Uz/f/lM/3/5TP9/+Uz/f/lM/3/4zL9/+My/f/jMv3/4zL9/+My/f/nM/3/6XX9/8plvf/Sp73/wAA
+ AAAQgvf/MZ7v/1qy7/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/IZrv/yGa7/9Ssu//jMv3/5TP
+ 9/+My/f/WrLv/3vD9/9rvvf/IZrv/2vD//+U0/f/jMv3/5TP9/+Uz/f/lM/3/5TP9/+Uz/f/lM/3/4zL
+ 9/+Uz/f/lM/3/4zL9/+My/f/jMv3/4zL9/+My/f/nM/3/6XX9/8Yivf/e7r//3O2//8Yhvf/UrLv/zmi
+ 5/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/yGa7/8hmu//GJLn/yGa7/9rvvf/lM/3/5TP9/+My/f/lNP3/4zL
+ 9/85pu//lNP3/3vD7/+My/f/lNP3/5TT9/+My/f/lNP3/4zL9/+cz/f/jMv3/4zL9/+My/f/jMv3/4zL
+ 9/+My/f/jMfv/4zL9/+l1/f/a7bv/xCC9//O5///AAAAAHO2//8Yhvf/Wq7v/zmi5/8Ykuf/GJLn/xiS
+ 5/8Ykuf/GJLn/yGa7/8hlu//IZrv/zGi7/+My/f/jMv3/5TT9/97w/f/MaLv/yGa7/85pu//IZrv/zGi
+ 7/97w+//lM/3/5TP9/+My/f/jMv3/4zL9/+My/f/jMv3/4zL9/+My/f/jMfv/4zL9/+My/f/jMv3/0Ke
+ 7/8Qgvf/zuf//wAAAAAAAAAAAAAAAHO2//8Yivf/WrLv/zmi5/8Qkuf/GJLn/xiS5/8Ykuf/GJLn/xiS
+ 5/8Ykuf/GJLn/2u67/+My/f/jMv3/2O29/8hmu//IZrv/yGa7/8hmu//GJLn/3vD7/+My/f/c8P3/4TH
+ 9/+My/f/jMv3/4zL9/+My/f/jMv3/4zL9/+Mx+//c77v/63X9/9jtvf/EIL3/87n//8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAHO2//8Yivf/WrLv/zmi5/8Qjuf/EJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/MZ7v/4zL
+ 9/+Uz/f/hMv3/xiS5/8Ykuf/GJLn/xiS5/8hmu//Wrb3/1Ky7/8Ykuf/IZrn/4zL9/+Ew+//WrLv/1qy
+ 7/+Mx+//c773/yGa5/9aru//Wq7v/wiC9//O5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
+ //8Yivf/Y7bv/zmi5/8Ykuf/EJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/c8P3/4zL9/+My/f/UrLv/0Ki
+ 7/8xou//GJLn/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/e8P3/1qy7/8Ykuf/GJLe/3O+7/9jtu//WrLv/0Ki
+ 7/8Qgvf/zuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yivf/Y7bv/0Ki
+ 7/8Qjuf/GJLn/xiS5/8Qkuf/GJLn/xiS5/9asu//jMv3/4zL9/+My/f/jMv3/2u67/8Ykuf/GJLn/xiS
+ 5/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/xCS5/8Ykuf/GJLn/1qy7/85ouf/EIL3/9bn//8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yhvf/Y7bv/zmi5/8Qjuf/EJLn/xCS
+ 5/8Qkuf/GJLn/0qq7/+My/f/jMv3/4zH7/+Ew+//Wq7v/xiS5/8Ykuf/GJLn/xiS5/8Ykuf/GJLn/xiS
+ 5/8Qkuf/EJLn/xiS5/9jtu//QqLv/wiC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yivf/Y7bv/0Ki5/8Qjuf/EJLn/xiO3v8Yjt7/OaLn/4zH
+ 7/+My/f/c77v/xiS5/8Qkuf/GJLn/xCO5/8Ykuf/GJLn/xCO5/8Ykuf/EI7n/xCO5/8Ykuf/Y7bv/0Ki
+ 7/8Qgvf/zuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAHO2//8Yivf/a7bv/0Ki5/8Yjt7/EI7e/xiO3v8hluf/jMfv/4zL9/9ruu//EI7n/xCO
+ 5/8Qjuf/EI7n/xCO5/8Qjuf/EI7n/xCO5/8Qjuf/GJLn/2Oy5/9Cou//CIL3/9bn//8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
+ //8Yhvf/a7bv/0Ki5/8Qjt7/GI7e/zGe5/+Mx+//jMfv/2u67/8Yjt7/EI7n/xCO5/8Qjuf/EI7n/xCO
+ 3v8Yjt7/EI7e/xiS5/9jsuf/QqLv/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yivf/a7bv/0Ki
+ 5/8Qjt7/QqLn/4zH7/+Mx+//hMPv/1qy7/8xnuf/EI7n/xCO3v8Qjuf/EI7e/xCO3v8Yjt7/Y7Ln/0Ki
+ 7/8Igvf/zuf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yhvf/a7bv/0Ki5/9aruf/jMfv/4zH
+ 7/+Mx+//jMfv/2u25/8Qjt7/EI7e/xCO3v8Qjt7/GI7e/2u27/9Cou//CIL3/9bn//8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//8Yhvf/a7bv/4zH7/+Ew+//hMPv/2u27/9asu//QqLn/wiK
+ 3v8Qjt7/CIbe/xiO3v9rtu//QqLv/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAHO2//8Yhvf/tdv3/6XP9/+Ew+//EI7e/xCO3v8Iit7/CIbe/wiG3v8Yjt7/a7bv/0Ki
+ 7/8Qgvf/1uf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
+ //9Knvf/tdv3/4TD7/8Iht7/CIbe/wiG3v8Iht7/EI7e/2u25/9Couf/CH33/9bn//8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//9Kovf/nM/3/zme
+ 5/8Iht7/CIbe/xCO3v9rtuf/QqLv/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//9Cnvf/pdf3/0Ki5/8Qjt7/a7bn/0Ke
+ 7/8Igvf/1uf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2//85nu//a7bn/2u27/9Cnu//EIL3/9bn//8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAHO2//8Yhvf/MZ7n/xCC9//W5///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO2
+ //8Qgvf/1uf//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//+f//4AAAP//w///gAAA//+B//+AAAD//wD//4AAAP/+
+ AH//gAAA//wAP/+AAAD/+AAf/4AAAP/wAA//gAAA/+AAB/+AAAD/wAAD/4AAAP+AAAH/gAAA/wAAAP+A
+ AAD+AAAAf4AAAPwAAAA/gAAA+AAAAB+AAADwAAAAD4AAAOAAAAAHgAAAwAAAAAOAAACAAAAAAYAAAAAA
+ AAAAgAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAwAAAAAGAAADgAAAAA4AAAPAAAAAHgAAA+AAAAA+A
+ AAD8AAAAH4AAAP4AAAA/gAAA/wAAAH+AAAD/gAAA/4AAAP/AAAH/gAAA/+AAA/+AAAD/8AAH/4AAAP/4
+ AA//gAAA//wAH/+AAAD//gA//4AAAP//AH//gAAA//+A//+AAAD//8H//4AAAP//4///gAAAAAAAAAAo
+ AAAAKQAAAFIAAAABAAgAAAAAACINAAAAAAAAAAAAAAAAAAAAAAAACH33/wiG3v8Iit7/EI7e/xiO3v8Y
+ kt7/EI7n/xCS5/8Ykuf/CIL3/xCC9/8Yhvf/GIr3/zGK5/85juf/IZbn/yGa5/8hlu//IZrv/yme7/8x
+ nuf/OZ7n/zmS7/8xnu//OZ7v/ymW9/8xlvf/OZr3/ymi7/85ouf/MaLv/zmm7/8povf/Mab3/zmi9/8x
+ qvf/Oar3/zmu//9Cnu//Qp73/0qe9/9Couf/QqLv/0qq7/9aruf/Uq7v/1qu7/9Ssu//WrLv/0Km9/9K
+ ovf/Sq73/0qi//9Qofj/UrL3/1q29/9auvf/Urb//2Oy5/9rtuf/Y7bv/2u27/9ruu//c77v/2O29/9r
+ tvf/a773/2O+//9zvvf/c7b//3u6//97w+//a8P//3PD9/97w/f/c8P//3vH//97y///ir/7/4TD7/+M
+ x+//hMf3/4zH9/+Ey/f/jMv3/4TL//+Uz/f/nM/3/5TP//+U0/f/nNP3/5TT//+c1///pc/3/6XX9/+t
+ 1/f/rdv3/6XX//+12/f/zuf//9bn////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8A
+ AAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAP//////////////////////
+ //9lNf//////////////////////////AAAA////////////////////////ZAkJY///////////////
+ //////////8AAAD//////////////////////2UAMVsZDf///////////////////////wAAAP//////
+ //////////////9kACI2WVogZP//////////////////////AAAA////////////////////ZQAjOSVV
+ YWEgFv////////////////////8AAAD//////////////////2QAIkhIS2FhYVwhZP//////////////
+ /////wAAAP////////////////9lCSI5S1xcYWFcXGEhJv//////////////////AAAA////////////
+ ////ZAoiOSQlTWFcXFxcYWEXZP////////////////8AAAD//////////////2UKIjYjISRbXFxcXFxb
+ YWEZKP///////////////wAAAP////////////9kChs2ISNITFxcXFxcXFxcYWEZZf//////////////
+ AAAA////////////ZQkiNiEhIU1cXFxcXFxcXFtcXGEaKP////////////8AAAD//////////2QKIjYh
+ ICAhIUhcXFxcXFxcW1xcV2EZZf///////////wAAAP////////9lC1JUHCAgICEhQ1xbXFxcXFtbW1tX
+ XGEaMv//////////AAAA////////YwtSYEwcICAgIDhTXFtcW1tbW1tbWVhYWmEZZf////////8AAAD/
+ /////2ULU2BZQBMcHCAgU1pbW1tbWltZWVlZWFhWWmEaMv///////wAAAP////9kClJgVlZUNhMeSB4g
+ IVZbW1tbW1lZWVZYWFZWWmERZf//////AAAA////ZQoYQEFWVlZWSlRZQhwgSVlZWVlZWVlZVlhWVlZW
+ Wl4ZMv////8AAAD//2MKGC0QERc+VlZWVlQhEzNUW1lWWVlZVlZZVlZWVlZUXV4SZf///wAAAP9lChgt
+ ERISERAvVlZWSRMTN1NTWVlWVlZWWVZWVlZWVlRUWl4ZMf//AAAAYwofLxIICAgRERItVlZWNhMTEx5Q
+ WVZZVlZWVlZWVlRUVFRUWlwSY/8AAAAKHi8HBxAHCAgIEhIvVFZUMEpCEkhZVFZWVlZWVlRWVlRUVFNU
+ WV4STQAAAE0SLx0QBwgICBISCBJCVlZUWVQfWUdUWVlUWVRXVFRUWVNZUFlgXEhkAAAA/2VcWyMFBxAH
+ EBIREh5UVFlKHhIfEh5HVlZUVFRUVFRUUFRTUyQHZP8AAAD//1UHOB0HCAgHCAgICD5UVEASEhISCEdU
+ SVNUVFNZVFNQP2BcXGX//wAAAP///2VcWx8HBwgIEAgIHlRWUwgICAgQNy8IEFRPMDBQPxAvOAdk////
+ AAAA/////1USOB0FBwgHCAgISVRULyoeCAgICAgISjAIBT84OE1cZf////8AAAD//////2VcXCQHBxAH
+ BwgwVFRUVD4ICAgICAgICAcHBzgdB2T//////wAAAP///////00SOB0DBwMHCCtUVFBPLggICAgICAcH
+ BxA4TVxl////////AAAA/////////2VcXB8HBwUFHVBUPwgHCAYICAYIBgcQPB8HZP////////8AAAD/
+ /////////1USQikFAwUQUFQ+BgYGBgYGBgcHBThNXGX//////////wAAAP///////////2VcXB8FBRRQ
+ UD4FBgYGBgMFAwg6Hwdk////////////AAAA/////////////00SQh0DKVBQTzAUBgMHAwMFOE1cZf//
+ //////////8AAAD//////////////2VcXCssUFBQUDsDAwMDBT4fB2T//////////////wAAAP//////
+ /////////1UMP1BPTz4wHQIDAgVCTVxl////////////////AAAA/////////////////2VcZGBPAwMC
+ AgIFPCQHZP////////////////8AAAD//////////////////1UzYE8CAgICAz5NXGX/////////////
+ /////wAAAP///////////////////2VjYx0CAgM+Hwdk////////////////////AAAA////////////
+ /////////1UkXh0DPk1cZf////////////////////8AAAD//////////////////////2VjXEIfB2T/
+ /////////////////////wAAAP///////////////////////1UMSFxl////////////////////////
+ AAAA/////////////////////////2QMZP////////////////////////8AAAD//+f//4AAAP//w///
+ gAAA//+B//+AAAD//wD//4AAAP/+AH//gAAA//wAP/+AAAD/+AAf/4AAAP/wAA//gAAA/+AAB/+AAAD/
+ wAAD/4AAAP+AAAH/gAAA/wAAAP+AAAD+AAAAf4AAAPwAAAA/gAAA+AAAAB+AAADwAAAAD4AAAOAAAAAH
+ gAAAwAAAAAOAAACAAAAAAYAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAgAAAwAAAAAGAAADg
+ AAAAA4AAAPAAAAAHgAAA+AAAAA+AAAD8AAAAH4AAAP4AAAA/gAAA/wAAAH+AAAD/gAAA/4AAAP/AAAH/
+ gAAA/+AAA/+AAAD/8AAH/4AAAP/4AA//gAAA//wAH/+AAAD//gA//4AAAP//AH//gAAA//+A//+AAAD/
+ /8H//4AAAP//4///gAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChzfxX
+ XKj5/zyW84Yzf+UKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ 1ub+Um6x+vgwmPj/N5jz/zCM6YMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAANXn/lZprvroMJr3/2i8+P+Bxvj/OJnx+zeM5nsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAP///wLE3f5TbLH68C+g+P9Ns/7/Xrz+/5nT/v+Uzv7/NqDz9ziS8H9Ikf4HAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAx9/+UnC1+/8tmfj/Yrz+/3vJ//+Oz///pdf//6LX//+Jy/7/R6T4/zue84RVqv8G
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAANXn/ldvsvruLZv4/0Wu+/9Qtv7/i9D//6HX//+g1///ndf//57X//+LzP3/
+ SaX2/0Gd9n0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAADV5f9QbbL66DSc9/9Grvj/Nqr4/zeq+P+N0P//ndf//5zX//+c1///
+ m9b//57V//+RzP7/OZv29kme9noAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAu9v+V2+z+vsxl/f/R6z3/zKn9/9Qt/v/e8j//5rW//+c1///
+ nNf//5zX//+c1///m9f//6HX//+Uzv7/RqL5/UWe+4RMmf8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANXl/1Bss/r7LZr3/0Sr9/8xpvf/L6X3/0ex+f98yv7/
+ m9f//5zX//+c1///nNf//5zX//+Y1f//mtb//53X//+Kx/v/TqT4/0We+4QAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV5/5XcrT66GKw9/9XtPX/MKX1/ymi9/8ro/f/
+ Mab3/1i5/f+Y1f//mdX//5zX//+c1///m9b//5XU//+W1P//mNT+/53S+v+Kyf3/RqL5/Umj9noAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8CwN/+UnK3+u5ttvf/ndT4/1m39/8povT/
+ KaL2/ymi9/9Brvf/dsX4/5nV//+X1P//mNX//5bU//+V0///lNP+/5TT/v+U0vn/lc/+/5rS+/+Tzfz/
+ P5z29keh9n1Vqv8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTd/lN9uvv/aLb3/6DW9/+Nzvf/
+ V7L1/y2i8P8so/D/N6n4/0ux9v94xPf/k9H9/5TT//+U0///mNP7/5TT/f+U0/f/lNP3/5TS+P+Uz///
+ lM/6/5nR9/+Py/z/SqT4/0Og94RIkf4HAAAAAAAAAAAAAAAAAAAAAAAAAADM5/5WbrL58D+f9P+CxPf/
+ ks33/5PP9/+EyPf/X7f1/2C49P9yw/n/O6nz/yyj9v+Cyfj/lNP7/5TT+/+U0/v/lNP6/5TT9/+U0/f/
+ lM/4/5TP/v+Uz/n/lM/3/5rS+P+Gx/n/SKX3/0ag9n8AAAAAAAAAAAAAAAAAAAAAzeb+Ummw+ugzmfL/
+ Q6fu/zSg7v9GqPH/e8Ly/5TP9/+Qzff/kc73/3fE9/80pvP/O6j1/4TJ+P+U0/v/lNH3/5TT9/+U0/f/
+ lNL3/5TQ9/+U0ff/lM/4/5TP9/+Uz/f/k8/3/5rP9/+Oyff/O57290qh9nsAAAAAAAAAALjb/ldss/n4
+ Mpny/0Om7/8hlu7/H5Xt/yGW7/8sn+r/Zrry/5DN9/+Szvf/ZLv1/y2g8P9GrPT/c8P2/4LJ9v+T0vb/
+ lND3/5TQ9/+Uz/f/lNH3/5TP9/+Uz/f/lM/3/5PO9/+Rzvf/jcv3/5bQ9/+SzPf/QaD2+0Sf94NMmf8K
+ bbT6/y+Y8v8/pO3/IZbr/xiS5/8Ykuf/HJTr/x6W7P8tn+//Zbny/47M9/+Hyff/UrHz/0ar8f8/qfL/
+ TK7x/4zO9v+Sz/f/lNH3/5TP9/+Uz/f/lM/3/5PO9/+Tzvf/kM33/4zL9/+My/f/jMv3/5bO9/+Jx/f/
+ RqH3/12r+4ZDnvr/OJ/y/zqj6v8ak+f/GJLn/xiS5/8Ykuf/Hpfs/x+Y7f8rnu3/cL/2/5PP9/+Ex/X/
+ hcr2/3LA9v9RsvP/hMv1/4vL9v+U0ff/ks/3/5PQ9/+Rzff/lM73/47M9/+Pzff/jMv3/4zL9/+MyfT/
+ j8z3/5fO9f9EoPX/jMT9/2mv/ldGoPn4Q6Hx/zag6P8Zk+f/GJLn/xiS5/8bler/IJju/yCY7v88p/D/
+ jMv3/5DP9/+EyPf/Pqjw/zKj8P85pvD/QKjw/4XI8v+Sz/f/js33/4zL9/+Oy/f/jMv3/4zL9/+MyvX/
+ i8nz/43L9v+Dxvb/Q5/z/3G1+fi42/5XAAAAAHO3/lJDn/roRaXx/zah6P8Yk+f/FpLn/xiS5/8Ykuf/
+ GJLn/x2U6P9quvH/jcz3/3XA9/8imu3/H5jt/x+Y7f8fl+r/dcHy/2y99P9lufP/icr2/4bH9f9/xPX/
+ icn1/4DE9f9uuu7/icbz/1Gq9/9psProzeb+UgAAAAAAAAAAAAAAAHO0/lZGofnwQKPw/zeh6f8Yk+f/
+ FZLn/xiS5/8Ykuf/GZLn/z+m7/+Iyvf/isz3/zei6/8pmuv/HZXp/x2W6/85pO7/J5rp/xuV5/95wvX/
+ XLLu/zqi6f9yvO3/YLXx/0Wn7f8+nfL/arP58Mzn/lYAAAAAAAAAAAAAAAAAAAAAAAAAAGuy/lNLo/r/
+ RKTw/z6i7f8SkOf/GJLn/xSS5/8Xkuf/LZ3q/3fB9P+My/f/e8P1/2u68v8yn+r/GJLn/xiS5/8Ykuf/
+ GJLn/zGf6/8imOj/FpLl/y6d6f9WsO7/Mprv/3S2+v++3f5TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ f3//Amy0/lJFnvnuS6fy/zag6P8Vkef/EJLn/xKS5v8mmOj/a7ry/4zL9/+FxfD/Z7bu/y6c6v8Xkuf/
+ GJLn/xeS5/8Ykuf/FpHn/xGS5/8clej/Tqvt/zic8v9rsvnux9/+Uv///wIAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAHK1/ldDn/roSabx/z6h6f8ZkuX/FY7f/x+T4f9fs+v/jMr1/2K27v8Tkef/
+ E5Hn/xGP5/8Vkef/E4/n/xSQ5/8Rjuf/H5Xn/0io7P82m/L/a7L66M3n/lcAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK1/1BKofn7SKLw/0Ch5v8VkN//HZLh/1yx6/+MyPH/
+ XrPt/xOO5P8Qjuf/EI7n/xCO5v8SjuL/EY7i/xuT5/9Ipun/N5rw/26z+fvV5f9QAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmv/ldKofn7Tabx/zyg5v8glOH/
+ Z7Xr/4zH7/94vu7/QaXq/xuT5/8QjuH/EI7k/xGO3v8Xj97/Tajn/zab8f9rs/n7u9v+VwAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK1/1BDnfro
+ UKby/1Sr6f95vez/isbv/4TD7/90u+z/Lpvi/xCO3v8Pjd7/H5Pg/1Kq6/86nPL/abL66NXl/1AAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAHK1/ldFnvnuX67z/5nM8/+IxPD/Q6Xo/zGd5f8UjuD/DIre/xyQ4P9Lpur/OJvy/3Cy+e7V5/5X
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAGy0/lJdqvv/j8X3/5DI8f8Qi9//Coje/wiG3v8QjN7/UKnm/zWZ7/9ztfr/
+ x9/+UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf3//Am61/lNirvrwgMD3/z2g5/8NiN//FI7f/1Cp5v86nPH/
+ b7L58MTd/lP///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO0/lZZqfrodr7y/0Ok5v9Lp+f/
+ Oprx/2mw+ujV5/5WAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHO3/lJVqPb4
+ QqDu/zSZ8P9xs/n41ub+UgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAGmv/ldDnvn/cbT5/8Hb/lcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAP/+f////D////g////wH///4Af//8AH//+AA///AAD//gAAf/wAAH/4AAA/
+ 8AAAD+AAAA/AAAAHgAAAAQAAAAAAAAAAgAAAAcAAAAPgAAAH8AAAD/gAAB/8AAA//gAAf/8AAP//gAH/
+ /8AD///gB///8A////gf///8P////n//KAAAACAAAABAAAAAAQAIAAAAAAAACAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAP8Iht7/Coje/wyJ3v8Pjd7/EIvf/xCN3v8Vjt7/FZDf/xGO4f8UjuD/EY7m/xGR5v8Vkeb/
+ HZLg/xiS5v8blef/H5Xn/xuV6v8dlen/Hpbs/x+Y7f8xiuf/OY7n/zCM6f8glOH/Lpvi/yGW6/8hlu7/
+ Ipjo/yaZ6P8gmO3/KZrr/y2d6f8rnu3/LZ/v/zGd5f8xn+r/Mprv/zWZ7/8vmPL/LZr3/y2a+P8xl/f/
+ OJPx/zyW8/8ymfL/Npnx/zCa9/80nPf/OZrx/zmc8f8+nfL/OZr3/zqd9f8+nvb/MJj4/zyg5v82oOj/
+ NKDu/zqi6f8+oen/PqLt/zmk7v8/pe7/LKHw/ymi9v8so/b/L6X3/y+g+P8yo/D/NKbz/zeg9P8xpvb/
+ Oabw/zyn8P87qfP/Pqjx/zuo9f82qfj/Qp7v/0Of8/9Bnfb/Sp73/0Oe+v9Gn/r/Rp/8/0Ch5v9DpOb/
+ S6fn/02o5/9Cpen/QqDu/0Om7v9Fp+3/Sabp/0io7P9Oq+3/UKnm/1Kq6/9Uq+n/VrDu/12y6/9dsu3/
+ QaLw/0Sk8P9Boff/RaD2/0ii8P9KpvH/Tabx/0mh9/9Ipfb/QKjw/0ap8f9Eq/f/Qa73/0as9f9MrvH/
+ RqH6/0ek+P9Kovr/SqT4/06k+P9Frvn/UKby/1Gq9/9Vqff/X67z/1mp+/9cqfr/Xqv8/0ux9v9Hsfn/
+ TbP+/1Gx8/9XsvX/V7T1/1m39/9ft/X/ULf7/1C2/v9Yuf3/Xrz+/2e16/9itu7/Z7bu/2667v90u+z/
+ crzt/3i97f9jrvv/aa/7/2C18f9isPf/aLb3/2229/9lufL/YLj0/2S79f9quvH/bL30/2mx+v9tsvr/
+ arT6/220+v9psf7/bLP+/2+0/v9ivP7/aLz4/3a+8v9wv/b/cLP6/3G0+v90tvr/c7b//326+/91wfL/
+ csH2/3bA9f93xPf/e8Ly/3rC9f94xPf/f8T1/3LD+f92xfj/e8j//3zK/v+Ew+//isbv/4zH7/+FxfD/
+ gMD3/4HE9v+Fx/X/iMXx/4nH9/+Pxff/hcjy/4LJ9v+Eyfb/i8nz/4zI8f+Jyvb/jMr2/4rM9/+NzPb/
+ gcb4/4bH+f+Kx/v/jMT9/4LJ+P+Eyfj/icr9/4/L/P+LzP3/js///5DI8f+Rzvf/lM72/5nM8/+az/f/
+ lM/4/5LM/f+Uzv7/i9D//43Q//+T0fb/lNH3/5nR9/+U0vr/k9H9/5TT/v+W1P//mdL6/53S+v+d1Pj/
+ mdP+/5nV/v+c1v//osz9/6DW9/+h1///pdf//7nc/v+93P7/wNz+/8Te/v/C4P7/x+D+/8jg/v/O5///
+ 1uf//wAAAAD////////////////////2//////////////////////////////////////////pJ////
+ //////////////////////////////////9Fqv3/////////////////////////////////////9IyP
+ 8Or/////////////////////////////////qkKPver09OP2///////////////////////////////2
+ hYzj9PTx8eSE////////////////////////////RYVPT+Px8fHx9P7/////////////////////////
+ //qFSYy98PHx8fHx9Or///////////////////////9FdElJhb3x8fHx8fDw9PH9////////////////
+ /////opJQkJJjvDw8fHx6+vw7df//////////////////6HuikJCQ3S18Ovr8Ovr6+bq8f7/////////
+ //////7q88+JQUFPhLvq6uvs6uXo6OLg59h1////////////Psnl5cmenrpMRMnq6Oro5uXd6uDl6Ov9
+ //////////pMRnS25eXQu0dMyeXl5ejm3ebd5t3l5s7///////9BdBUVFSGf5eWfInS7yeXm5ebo3Nzc
+ 5eXl5f3///+kQ0wdDBASFUGfz8mHdk120OXl3OXl5eXQz8/P5eWE//CMTBISEgwVFSKz5cnKs4fJz+Xo
+ 5eXl0OXPz8/9/vTx///+9nQMEBUVFUzP5clNRkpMyOXQz9DQz8/P5eWp//////+PTBAMDBAQHaDPsxUV
+ FR2yoZ3PycnIyfH+/v/////////+vQwQEAwQTM/PPCEQFT8eELVmPLKKdHH///////////aPdAwQDAwk
+ stC4oCUQDRAMRx0Mj/39/v/////////////+9k8MDCKfz8iQIQ0QDRAMDBWHjv////////////////+P
+ dBAIGZHQkQwMDAwMDAyM/f7////////////////////++k8QZsiRCAwMDAQMDHaO////////////////
+ //////+pcRmQwJVbEAQMBIz9/v/////////////////////////+9uvPyJUaBAQOZY7/////////////
+ //////////////+288hMGgQEEOv+//////////////////////////////7+/owEBAxljP7/////////
+ ///////////////////////xTAyF/f7////////////////////////////////////+8Y+M////////
+ //////////////////////////////+9/v///////////////////////////////////////72s////
+ //////////////////5////8P///+D////Af///gB///wAf//4AD//8AAP/+AAB//AAAf/gAAD/wAAAP
+ 4AAAD8AAAAeAAAABAAAAAAAAAACAAAABwAAAA+AAAAfwAAAP+AAAH/wAAD/+AAB//wAA//+AAf//wAP/
+ /+AH///wD///+B////w////+f/8oAAAAEAAAACAAAAABACAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2OX/FFqq+tM2lO+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwtr+FWOx+ctRsfv/er/4/jeY8HwAf/8CAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0Of+FmOw+s9Jrvz/jdD//6HX//9+xf3/QqD1ggAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudz+FmWv+s09p/f/TrX7/5jV//+c1///nNb//4DD/P1IoPp/
+ f3//AgAAAAAAAAAAAAAAAAAAAAAAAAAA0Of+FnS4+s0+p/b/LaT3/1O2+/+a1v//nNf//5nW//+Z1f//
+ gMH7/0ig+n8AAAAAAAAAAAAAAAAAAAAAwtr+FXu8+s+Oy/f/Qqv0/y2k9f9euvf/ltT+/5bU/v+U0/z/
+ lNL6/5bQ/f9+wfn9SKL3gn9//wIAAAAAzOX/FGSv98tOqvL/ecL0/4LH9v93w/f/Nqb0/4zO+f+U0vn/
+ lNP4/5TR9/+Uz/n/ldD3/37B+P9BoPZ8AAAAAGGw99M1nu7/HJTq/yKY7P9iuPL/g8j2/0Oq8v9gufT/
+ kdD3/5TQ9/+U0Pf/k8/3/5DN9/+PzPf/fcD2/kui94REoPfTM57q/xiS5/8alOn/Ipnu/3PA9f+Hyvb/
+ Ta/y/2K58/+Pzvb/kM33/4/M9/+Ny/f/jMr1/3vA9f9ytvrTcrL/FEqk98sxnur/F5Ln/xiS5/84ouz/
+ hcj3/yib7P8eluv/UK/v/2G28f9muPD/d8Dy/16x8P9ttvnLzOX/FAAAAABttv4VS6P3zzSe6/8Ukuf/
+ H5bo/3/E9f91vvH/JJjo/xiS5/8elej/GZTn/0Kl7f9lsffPwtr+FQAAAAAAAAAAAAAAAHO5/hZLpPfN
+ N57p/xqR4P91vu//OaLp/xGP5/8Sj+X/FJDm/zmf6/9nsPfN0Of+FgAAAAAAAAAAAAAAAAAAAAAAAAAA
+ aK3+Fk2k981Aoej/fcDt/2y47f8ak+L/FI/g/zyf6f9ksPfNudz+FgAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAABzuf4WWKj4z5DH8/8jleL/Dovf/zue6P9nsPfP0Of+FgAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAG22/hVqsvnLQaLn/zqe5/9osffLwtr+FQAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcrL/FEyk9tNmsPbT2OX/FAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAP5/AAD8fwAA+B8AAPAfAADgDwAAwAMAAIADAAAAAAAAAAAAAIABAADAAwAA4AcAAPAPAAD4HwAA
+ /D8AAP5/AAAoAAAAEAAAACAAAAABAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAA/w6L3/8Uj+D/
+ EY/n/xKP5f8UkOb/FJLn/xeS5/8akeD/GpPi/xiS5/8ZlOf/GpTp/xyU6v8elej/Hpbr/x+W6P8jleL/
+ JJjo/yKY7f8om+z/Op7n/zGe6v8znur/NJ7r/zee6f81nu7/OZ/r/zue6P88n+n/NpTw/ziY8P85mvf/
+ OaLp/zii7P8tpPb/Nqb0/z2n9/8+p/b/Sp73/0Gi5/9Aoej/QqXt/1Cv7/9CoPf/Q6H1/0qi9/9MpPb/
+ Q6ry/0Kr9P9OqvL/Ta/y/0Wh+P9IoPr/SKL4/0yj+P9KpPj/S6T4/0yk+P9NpPj/Sa78/1mp+f9bqvr/
+ TrX7/16x8P9euvf/UbH7/1O2+/9suO3/db7v/2av+v9htvH/ZbH3/2ew9/9iuPL/Zrjw/2C59P9isPj/
+ Y7H6/2Sw+v9lsPj/Z7H4/2iw+P9rs/r/bbb6/2mx/v9rsv7/b7T+/3W+8f9zt/r/c7b//3W4+v97vPr/
+ fcDt/3fA8v9zwPX/d8P3/3vA9f95wvT/fcH3/3/E9f96wPn/fsH4/3/C+v9+xf3/gsf2/4PI9v+FyPf/
+ h8r2/4zK9f+Ny/f/jsv3/4/M9/+Pzvb/gMH7/4DE/f+Mzvn/kMfz/5DN9/+Tz/f/lM/5/43Q//+R0Pf/
+ lND3/5XQ9/+U0vn/ltD9/5TT/P+W1P7/mNX//5nV//+Z1v//mtb//5zW//+h1///vNz+/8De/v/E3v7/
+ xd7+/87n///W5///AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/
+ AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAP//////////
+ ////////////////////i///////////////////P3+LjP//////////////iz+Dg4P/////////////
+ MSM/g4ODi4z/////////jD8jQX9/fX19////////MWBqYCR6fX16f4uM////gz8jQWoxQXp6enp6ff//
+ /z8LBhNfbDNMenp0i4yM////jIM/I3QUCz9BQWxo//////8/CwtqXxQLP4OM/////////4yDgyQGBgtD
+ ////////////QWxBP4OM//////////////+Mgz8//////////////////4uM////////////////////
+ ///////////+fwAA/H8AAPgfAADwHwAA4A8AAMADAACAAwAAAAAAAAAAAACAAQAAwAMAAOAHAADwDwAA
+ +B8AAPw/AAD+fwAA
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/NotificationSettingsControl.Designer.cs b/JenkinsTray/UI/Controls/NotificationSettingsControl.Designer.cs
similarity index 97%
rename from HudsonTrayTracker/UI/Controls/NotificationSettingsControl.Designer.cs
rename to JenkinsTray/UI/Controls/NotificationSettingsControl.Designer.cs
index a5c166a..cf9d979 100644
--- a/HudsonTrayTracker/UI/Controls/NotificationSettingsControl.Designer.cs
+++ b/JenkinsTray/UI/Controls/NotificationSettingsControl.Designer.cs
@@ -1,117 +1,117 @@
-namespace Hudson.TrayTracker.UI.Controls
-{
- partial class NotificationSettingsControl
- {
- ///
- /// 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 Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.pathEdit = new DevExpress.XtraEditors.ButtonEdit();
- this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
- this.statusLabel = new DevExpress.XtraEditors.LabelControl();
- this.testSoundButton = new DevExpress.XtraEditors.SimpleButton();
- ((System.ComponentModel.ISupportInitialize)(this.pathEdit.Properties)).BeginInit();
- this.tableLayoutPanel.SuspendLayout();
- this.SuspendLayout();
- //
- // pathEdit
- //
- this.pathEdit.Dock = System.Windows.Forms.DockStyle.Fill;
- this.pathEdit.Location = new System.Drawing.Point(3, 28);
- this.pathEdit.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.pathEdit.Name = "pathEdit";
- this.pathEdit.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
- new DevExpress.XtraEditors.Controls.EditorButton(),
- new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Close)});
- this.pathEdit.Size = new System.Drawing.Size(117, 22);
- this.pathEdit.TabIndex = 1;
- this.pathEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.pathEdit_ButtonClick);
- this.pathEdit.EditValueChanged += new System.EventHandler(this.pathEdit_EditValueChanged);
- //
- // tableLayoutPanel
- //
- this.tableLayoutPanel.AutoSize = true;
- this.tableLayoutPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel.ColumnCount = 2;
- this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel.Controls.Add(this.pathEdit, 0, 1);
- this.tableLayoutPanel.Controls.Add(this.statusLabel, 0, 0);
- this.tableLayoutPanel.Controls.Add(this.testSoundButton, 1, 1);
- this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
- this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.tableLayoutPanel.Name = "tableLayoutPanel";
- this.tableLayoutPanel.RowCount = 2;
- this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel.Size = new System.Drawing.Size(216, 60);
- this.tableLayoutPanel.TabIndex = 2;
- //
- // statusLabel
- //
- this.statusLabel.Location = new System.Drawing.Point(3, 4);
- this.statusLabel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.statusLabel.Name = "statusLabel";
- this.statusLabel.Size = new System.Drawing.Size(36, 16);
- this.statusLabel.TabIndex = 2;
- this.statusLabel.Text = "Sound";
- //
- // testSoundButton
- //
- this.testSoundButton.Location = new System.Drawing.Point(126, 28);
- this.testSoundButton.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.testSoundButton.Name = "testSoundButton";
- this.testSoundButton.Size = new System.Drawing.Size(87, 28);
- this.testSoundButton.TabIndex = 3;
- this.testSoundButton.Text = "Test";
- this.testSoundButton.Click += new System.EventHandler(this.testSoundButton_Click);
- //
- // NotificationSettingsControl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 16F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.AutoSize = true;
- this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.Controls.Add(this.tableLayoutPanel);
- this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.Name = "NotificationSettingsControl";
- this.Size = new System.Drawing.Size(216, 60);
- ((System.ComponentModel.ISupportInitialize)(this.pathEdit.Properties)).EndInit();
- this.tableLayoutPanel.ResumeLayout(false);
- this.tableLayoutPanel.PerformLayout();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private DevExpress.XtraEditors.ButtonEdit pathEdit;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
- private DevExpress.XtraEditors.LabelControl statusLabel;
- private DevExpress.XtraEditors.SimpleButton testSoundButton;
- }
-}
+namespace Jenkins.Tray.UI.Controls
+{
+ partial class NotificationSettingsControl
+ {
+ ///
+ /// 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 Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.pathEdit = new DevExpress.XtraEditors.ButtonEdit();
+ this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+ this.statusLabel = new DevExpress.XtraEditors.LabelControl();
+ this.testSoundButton = new DevExpress.XtraEditors.SimpleButton();
+ ((System.ComponentModel.ISupportInitialize)(this.pathEdit.Properties)).BeginInit();
+ this.tableLayoutPanel.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // pathEdit
+ //
+ this.pathEdit.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.pathEdit.Location = new System.Drawing.Point(3, 28);
+ this.pathEdit.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.pathEdit.Name = "pathEdit";
+ this.pathEdit.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton(),
+ new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Close)});
+ this.pathEdit.Size = new System.Drawing.Size(117, 22);
+ this.pathEdit.TabIndex = 1;
+ this.pathEdit.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(this.pathEdit_ButtonClick);
+ this.pathEdit.EditValueChanged += new System.EventHandler(this.pathEdit_EditValueChanged);
+ //
+ // tableLayoutPanel
+ //
+ this.tableLayoutPanel.AutoSize = true;
+ this.tableLayoutPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel.ColumnCount = 2;
+ this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel.Controls.Add(this.pathEdit, 0, 1);
+ this.tableLayoutPanel.Controls.Add(this.statusLabel, 0, 0);
+ this.tableLayoutPanel.Controls.Add(this.testSoundButton, 1, 1);
+ this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.tableLayoutPanel.Name = "tableLayoutPanel";
+ this.tableLayoutPanel.RowCount = 2;
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel.Size = new System.Drawing.Size(216, 60);
+ this.tableLayoutPanel.TabIndex = 2;
+ //
+ // statusLabel
+ //
+ this.statusLabel.Location = new System.Drawing.Point(3, 4);
+ this.statusLabel.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.statusLabel.Name = "statusLabel";
+ this.statusLabel.Size = new System.Drawing.Size(36, 16);
+ this.statusLabel.TabIndex = 2;
+ this.statusLabel.Text = "Sound";
+ //
+ // testSoundButton
+ //
+ this.testSoundButton.Location = new System.Drawing.Point(126, 28);
+ this.testSoundButton.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.testSoundButton.Name = "testSoundButton";
+ this.testSoundButton.Size = new System.Drawing.Size(87, 28);
+ this.testSoundButton.TabIndex = 3;
+ this.testSoundButton.Text = "Test";
+ this.testSoundButton.Click += new System.EventHandler(this.testSoundButton_Click);
+ //
+ // NotificationSettingsControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.AutoSize = true;
+ this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.Controls.Add(this.tableLayoutPanel);
+ this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.Name = "NotificationSettingsControl";
+ this.Size = new System.Drawing.Size(216, 60);
+ ((System.ComponentModel.ISupportInitialize)(this.pathEdit.Properties)).EndInit();
+ this.tableLayoutPanel.ResumeLayout(false);
+ this.tableLayoutPanel.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraEditors.ButtonEdit pathEdit;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+ private DevExpress.XtraEditors.LabelControl statusLabel;
+ private DevExpress.XtraEditors.SimpleButton testSoundButton;
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/NotificationSettingsControl.cs b/JenkinsTray/UI/Controls/NotificationSettingsControl.cs
similarity index 91%
rename from HudsonTrayTracker/UI/Controls/NotificationSettingsControl.cs
rename to JenkinsTray/UI/Controls/NotificationSettingsControl.cs
index 5d73ab2..6cd2e65 100644
--- a/HudsonTrayTracker/UI/Controls/NotificationSettingsControl.cs
+++ b/JenkinsTray/UI/Controls/NotificationSettingsControl.cs
@@ -1,117 +1,117 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.BusinessComponents;
-using DevExpress.XtraEditors.Controls;
-using Spring.Context.Support;
-using System.Diagnostics;
-
-namespace Hudson.TrayTracker.UI.Controls
-{
- public partial class NotificationSettingsControl : DevExpress.XtraEditors.XtraUserControl
- {
- ConfigurationService configurationService;
-
- public string Status { get; set; }
-
- public string SoundPath
- {
- get { return pathEdit.Text; }
- set
- {
- pathEdit.Text = value;
- testSoundButton.Enabled = string.IsNullOrEmpty(value) == false;
- }
- }
-
- public NotificationSettingsControl()
- {
- InitializeComponent();
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- // designer mode (workaround: DesignMode is not chained to child controls)
- if (DesignMode || Process.GetCurrentProcess().ProcessName == "devenv")
- return;
-
- if (configurationService == null)
- {
- configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
- }
-
- statusLabel.Text = HudsonTrayTrackerResources.ResourceManager.GetString("NotificationSettings_" + Status);
- }
-
- public void Initialize()
- {
- if (configurationService == null)
- {
- configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
- }
- SoundPath = configurationService.GetSoundPath(Status);
- }
-
- private void pathEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
- {
- if (e.Button.Kind == ButtonPredefines.Close)
- SetPath(null);
- else if (e.Button.Kind == ButtonPredefines.Ellipsis)
- ChooseFile();
- }
-
- private void ChooseFile()
- {
- OpenFileDialog fileDialog = new OpenFileDialog();
- fileDialog.CheckFileExists = true;
- fileDialog.Filter = "Sound file (*.wav)|*.wav";
-
- DialogResult res = fileDialog.ShowDialog();
- if (res == DialogResult.OK)
- {
- SetPath(fileDialog.FileName);
- }
- }
-
- private void SetPath(string path)
- {
- if (configurationService == null)
- {
- configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
- }
-
- configurationService.SetSoundPath(Status, path);
- SoundPath = path;
- }
-
- private void testSoundButton_Click(object sender, EventArgs e)
- {
- SoundPlayer.PlayFile(SoundPath);
- }
-
- private void pathEdit_EditValueChanged(object sender, EventArgs e)
- {
- if (!String.IsNullOrEmpty(pathEdit.Text))
- {
- SetPath(pathEdit.Text);
- }
- }
-
- public void InvalidateData()
- {
- if (String.IsNullOrEmpty(pathEdit.Text) ||
- !pathEdit.Text.EndsWith(".wav", true, System.Globalization.CultureInfo.CurrentCulture) ||
- !System.IO.File.Exists(pathEdit.Text))
- {
- SetPath(String.Empty);
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.BusinessComponents;
+using DevExpress.XtraEditors.Controls;
+using Spring.Context.Support;
+using System.Diagnostics;
+
+namespace Jenkins.Tray.UI.Controls
+{
+ public partial class NotificationSettingsControl : DevExpress.XtraEditors.XtraUserControl
+ {
+ ConfigurationService configurationService;
+
+ public string Status { get; set; }
+
+ public string SoundPath
+ {
+ get { return pathEdit.Text; }
+ set
+ {
+ pathEdit.Text = value;
+ testSoundButton.Enabled = string.IsNullOrEmpty(value) == false;
+ }
+ }
+
+ public NotificationSettingsControl()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ // designer mode (workaround: DesignMode is not chained to child controls)
+ if (DesignMode || Process.GetCurrentProcess().ProcessName == "devenv")
+ return;
+
+ if (configurationService == null)
+ {
+ configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
+ }
+
+ statusLabel.Text = JenkinsTrayResources.ResourceManager.GetString("NotificationSettings_" + Status);
+ }
+
+ public void Initialize()
+ {
+ if (configurationService == null)
+ {
+ configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
+ }
+ SoundPath = configurationService.GetSoundPath(Status);
+ }
+
+ private void pathEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
+ {
+ if (e.Button.Kind == ButtonPredefines.Close)
+ SetPath(null);
+ else if (e.Button.Kind == ButtonPredefines.Ellipsis)
+ ChooseFile();
+ }
+
+ private void ChooseFile()
+ {
+ OpenFileDialog fileDialog = new OpenFileDialog();
+ fileDialog.CheckFileExists = true;
+ fileDialog.Filter = "Sound file (*.wav)|*.wav";
+
+ DialogResult res = fileDialog.ShowDialog();
+ if (res == DialogResult.OK)
+ {
+ SetPath(fileDialog.FileName);
+ }
+ }
+
+ private void SetPath(string path)
+ {
+ if (configurationService == null)
+ {
+ configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
+ }
+
+ configurationService.SetSoundPath(Status, path);
+ SoundPath = path;
+ }
+
+ private void testSoundButton_Click(object sender, EventArgs e)
+ {
+ SoundPlayer.PlayFile(SoundPath);
+ }
+
+ private void pathEdit_EditValueChanged(object sender, EventArgs e)
+ {
+ if (!String.IsNullOrEmpty(pathEdit.Text))
+ {
+ SetPath(pathEdit.Text);
+ }
+ }
+
+ public void InvalidateData()
+ {
+ if (String.IsNullOrEmpty(pathEdit.Text) ||
+ !pathEdit.Text.EndsWith(".wav", true, System.Globalization.CultureInfo.CurrentCulture) ||
+ !System.IO.File.Exists(pathEdit.Text))
+ {
+ SetPath(String.Empty);
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/NotificationSettingsControl.resx b/JenkinsTray/UI/Controls/NotificationSettingsControl.resx
similarity index 97%
rename from HudsonTrayTracker/UI/Controls/NotificationSettingsControl.resx
rename to JenkinsTray/UI/Controls/NotificationSettingsControl.resx
index ff31a6d..19dc0dd 100644
--- a/HudsonTrayTracker/UI/Controls/NotificationSettingsControl.resx
+++ b/JenkinsTray/UI/Controls/NotificationSettingsControl.resx
@@ -1,120 +1,120 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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/HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.Designer.cs b/JenkinsTray/UI/Controls/NotificationsSettingsControl.Designer.cs
similarity index 94%
rename from HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.Designer.cs
rename to JenkinsTray/UI/Controls/NotificationsSettingsControl.Designer.cs
index 234ff63..ec6c263 100644
--- a/HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.Designer.cs
+++ b/JenkinsTray/UI/Controls/NotificationsSettingsControl.Designer.cs
@@ -1,186 +1,186 @@
-namespace Hudson.TrayTracker.UI.Controls
-{
- partial class NotificationsSettingsControl
- {
- ///
- /// 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 Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.notificationSettingsControl1 = new Hudson.TrayTracker.UI.Controls.NotificationSettingsControl();
- this.notificationSettingsControl2 = new Hudson.TrayTracker.UI.Controls.NotificationSettingsControl();
- this.notificationSettingsControl3 = new Hudson.TrayTracker.UI.Controls.NotificationSettingsControl();
- this.notificationSettingsControl4 = new Hudson.TrayTracker.UI.Controls.NotificationSettingsControl();
- this.enableSoundCheckBox = new DevExpress.XtraEditors.CheckEdit();
- this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
- this.treatUnstableAsFailedCheckBox = new DevExpress.XtraEditors.CheckEdit();
- this.tableLayoutPanel1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.enableSoundCheckBox.Properties)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
- this.groupControl1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.treatUnstableAsFailedCheckBox.Properties)).BeginInit();
- this.SuspendLayout();
- //
- // tableLayoutPanel1
- //
- this.tableLayoutPanel1.ColumnCount = 1;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl1, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl2, 0, 2);
- this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl3, 0, 3);
- this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl4, 0, 4);
- this.tableLayoutPanel1.Controls.Add(this.enableSoundCheckBox, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.treatUnstableAsFailedCheckBox, 0, 6);
- this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(2, 25);
- this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RowCount = 8;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(552, 391);
- this.tableLayoutPanel1.TabIndex = 0;
- //
- // notificationSettingsControl1
- //
- this.notificationSettingsControl1.AutoSize = true;
- this.notificationSettingsControl1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.notificationSettingsControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.notificationSettingsControl1.Location = new System.Drawing.Point(3, 34);
- this.notificationSettingsControl1.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.notificationSettingsControl1.Name = "notificationSettingsControl1";
- this.notificationSettingsControl1.Size = new System.Drawing.Size(546, 60);
- this.notificationSettingsControl1.SoundPath = "";
- this.notificationSettingsControl1.Status = "Failed";
- this.notificationSettingsControl1.TabIndex = 1;
- //
- // notificationSettingsControl2
- //
- this.notificationSettingsControl2.AutoSize = true;
- this.notificationSettingsControl2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.notificationSettingsControl2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.notificationSettingsControl2.Location = new System.Drawing.Point(3, 104);
- this.notificationSettingsControl2.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.notificationSettingsControl2.Name = "notificationSettingsControl2";
- this.notificationSettingsControl2.Size = new System.Drawing.Size(546, 60);
- this.notificationSettingsControl2.SoundPath = "";
- this.notificationSettingsControl2.Status = "Fixed";
- this.notificationSettingsControl2.TabIndex = 2;
- //
- // notificationSettingsControl3
- //
- this.notificationSettingsControl3.AutoSize = true;
- this.notificationSettingsControl3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.notificationSettingsControl3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.notificationSettingsControl3.Location = new System.Drawing.Point(3, 174);
- this.notificationSettingsControl3.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.notificationSettingsControl3.Name = "notificationSettingsControl3";
- this.notificationSettingsControl3.Size = new System.Drawing.Size(546, 60);
- this.notificationSettingsControl3.SoundPath = "";
- this.notificationSettingsControl3.Status = "StillFailing";
- this.notificationSettingsControl3.TabIndex = 3;
- //
- // notificationSettingsControl4
- //
- this.notificationSettingsControl4.AutoSize = true;
- this.notificationSettingsControl4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.notificationSettingsControl4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.notificationSettingsControl4.Location = new System.Drawing.Point(3, 244);
- this.notificationSettingsControl4.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
- this.notificationSettingsControl4.Name = "notificationSettingsControl4";
- this.notificationSettingsControl4.Size = new System.Drawing.Size(546, 60);
- this.notificationSettingsControl4.SoundPath = "";
- this.notificationSettingsControl4.Status = "Succeeded";
- this.notificationSettingsControl4.TabIndex = 3;
- //
- // enableSoundCheckBox
- //
- this.enableSoundCheckBox.Location = new System.Drawing.Point(3, 4);
- this.enableSoundCheckBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.enableSoundCheckBox.Name = "enableSoundCheckBox";
- this.enableSoundCheckBox.Properties.Caption = "&Enable sound notifications";
- this.enableSoundCheckBox.Size = new System.Drawing.Size(175, 21);
- this.enableSoundCheckBox.TabIndex = 0;
- this.enableSoundCheckBox.CheckedChanged += new System.EventHandler(this.enableSoundCheckBox_CheckedChanged);
- //
- // groupControl1
- //
- this.groupControl1.AppearanceCaption.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.groupControl1.AppearanceCaption.Options.UseFont = true;
- this.groupControl1.Controls.Add(this.tableLayoutPanel1);
- this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.groupControl1.Location = new System.Drawing.Point(0, 0);
- this.groupControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.groupControl1.Name = "groupControl1";
- this.groupControl1.Size = new System.Drawing.Size(556, 418);
- this.groupControl1.TabIndex = 1;
- this.groupControl1.Text = "Configure sound notifications";
- //
- // treatUnstableAsFailedCheckBox
- //
- this.treatUnstableAsFailedCheckBox.Location = new System.Drawing.Point(3, 313);
- this.treatUnstableAsFailedCheckBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.treatUnstableAsFailedCheckBox.Name = "treatUnstableAsFailedCheckBox";
- this.treatUnstableAsFailedCheckBox.Properties.Caption = "&Treat unstable as failed";
- this.treatUnstableAsFailedCheckBox.Size = new System.Drawing.Size(162, 21);
- this.treatUnstableAsFailedCheckBox.TabIndex = 9;
- this.treatUnstableAsFailedCheckBox.CheckedChanged += new System.EventHandler(this.treatUnstableAsFailedCheckBox_CheckedChanged);
- //
- // NotificationsSettingsControl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 16F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.groupControl1);
- this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.Name = "NotificationsSettingsControl";
- this.Size = new System.Drawing.Size(556, 418);
- this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.enableSoundCheckBox.Properties)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
- this.groupControl1.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.treatUnstableAsFailedCheckBox.Properties)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private NotificationSettingsControl notificationSettingsControl1;
- private NotificationSettingsControl notificationSettingsControl2;
- private NotificationSettingsControl notificationSettingsControl3;
- private NotificationSettingsControl notificationSettingsControl4;
- private DevExpress.XtraEditors.GroupControl groupControl1;
- private DevExpress.XtraEditors.CheckEdit enableSoundCheckBox;
- private DevExpress.XtraEditors.CheckEdit treatUnstableAsFailedCheckBox;
- }
-}
+namespace Jenkins.Tray.UI.Controls
+{
+ partial class NotificationsSettingsControl
+ {
+ ///
+ /// 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 Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.notificationSettingsControl1 = new Jenkins.Tray.UI.Controls.NotificationSettingsControl();
+ this.notificationSettingsControl2 = new Jenkins.Tray.UI.Controls.NotificationSettingsControl();
+ this.notificationSettingsControl3 = new Jenkins.Tray.UI.Controls.NotificationSettingsControl();
+ this.notificationSettingsControl4 = new Jenkins.Tray.UI.Controls.NotificationSettingsControl();
+ this.enableSoundCheckBox = new DevExpress.XtraEditors.CheckEdit();
+ this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
+ this.treatUnstableAsFailedCheckBox = new DevExpress.XtraEditors.CheckEdit();
+ this.tableLayoutPanel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.enableSoundCheckBox.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
+ this.groupControl1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.treatUnstableAsFailedCheckBox.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 1;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl1, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl2, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl3, 0, 3);
+ this.tableLayoutPanel1.Controls.Add(this.notificationSettingsControl4, 0, 4);
+ this.tableLayoutPanel1.Controls.Add(this.enableSoundCheckBox, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.treatUnstableAsFailedCheckBox, 0, 6);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(2, 25);
+ this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 8;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(552, 391);
+ this.tableLayoutPanel1.TabIndex = 0;
+ //
+ // notificationSettingsControl1
+ //
+ this.notificationSettingsControl1.AutoSize = true;
+ this.notificationSettingsControl1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.notificationSettingsControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.notificationSettingsControl1.Location = new System.Drawing.Point(3, 34);
+ this.notificationSettingsControl1.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.notificationSettingsControl1.Name = "notificationSettingsControl1";
+ this.notificationSettingsControl1.Size = new System.Drawing.Size(546, 60);
+ this.notificationSettingsControl1.SoundPath = "";
+ this.notificationSettingsControl1.Status = "Failed";
+ this.notificationSettingsControl1.TabIndex = 1;
+ //
+ // notificationSettingsControl2
+ //
+ this.notificationSettingsControl2.AutoSize = true;
+ this.notificationSettingsControl2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.notificationSettingsControl2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.notificationSettingsControl2.Location = new System.Drawing.Point(3, 104);
+ this.notificationSettingsControl2.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.notificationSettingsControl2.Name = "notificationSettingsControl2";
+ this.notificationSettingsControl2.Size = new System.Drawing.Size(546, 60);
+ this.notificationSettingsControl2.SoundPath = "";
+ this.notificationSettingsControl2.Status = "Fixed";
+ this.notificationSettingsControl2.TabIndex = 2;
+ //
+ // notificationSettingsControl3
+ //
+ this.notificationSettingsControl3.AutoSize = true;
+ this.notificationSettingsControl3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.notificationSettingsControl3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.notificationSettingsControl3.Location = new System.Drawing.Point(3, 174);
+ this.notificationSettingsControl3.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.notificationSettingsControl3.Name = "notificationSettingsControl3";
+ this.notificationSettingsControl3.Size = new System.Drawing.Size(546, 60);
+ this.notificationSettingsControl3.SoundPath = "";
+ this.notificationSettingsControl3.Status = "StillFailing";
+ this.notificationSettingsControl3.TabIndex = 3;
+ //
+ // notificationSettingsControl4
+ //
+ this.notificationSettingsControl4.AutoSize = true;
+ this.notificationSettingsControl4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.notificationSettingsControl4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.notificationSettingsControl4.Location = new System.Drawing.Point(3, 244);
+ this.notificationSettingsControl4.Margin = new System.Windows.Forms.Padding(3, 5, 3, 5);
+ this.notificationSettingsControl4.Name = "notificationSettingsControl4";
+ this.notificationSettingsControl4.Size = new System.Drawing.Size(546, 60);
+ this.notificationSettingsControl4.SoundPath = "";
+ this.notificationSettingsControl4.Status = "Succeeded";
+ this.notificationSettingsControl4.TabIndex = 3;
+ //
+ // enableSoundCheckBox
+ //
+ this.enableSoundCheckBox.Location = new System.Drawing.Point(3, 4);
+ this.enableSoundCheckBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.enableSoundCheckBox.Name = "enableSoundCheckBox";
+ this.enableSoundCheckBox.Properties.Caption = "&Enable sound notifications";
+ this.enableSoundCheckBox.Size = new System.Drawing.Size(175, 21);
+ this.enableSoundCheckBox.TabIndex = 0;
+ this.enableSoundCheckBox.CheckedChanged += new System.EventHandler(this.enableSoundCheckBox_CheckedChanged);
+ //
+ // groupControl1
+ //
+ this.groupControl1.AppearanceCaption.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.groupControl1.AppearanceCaption.Options.UseFont = true;
+ this.groupControl1.Controls.Add(this.tableLayoutPanel1);
+ this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupControl1.Location = new System.Drawing.Point(0, 0);
+ this.groupControl1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.groupControl1.Name = "groupControl1";
+ this.groupControl1.Size = new System.Drawing.Size(556, 418);
+ this.groupControl1.TabIndex = 1;
+ this.groupControl1.Text = "Configure sound notifications";
+ //
+ // treatUnstableAsFailedCheckBox
+ //
+ this.treatUnstableAsFailedCheckBox.Location = new System.Drawing.Point(3, 313);
+ this.treatUnstableAsFailedCheckBox.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.treatUnstableAsFailedCheckBox.Name = "treatUnstableAsFailedCheckBox";
+ this.treatUnstableAsFailedCheckBox.Properties.Caption = "&Treat unstable as failed";
+ this.treatUnstableAsFailedCheckBox.Size = new System.Drawing.Size(162, 21);
+ this.treatUnstableAsFailedCheckBox.TabIndex = 9;
+ this.treatUnstableAsFailedCheckBox.CheckedChanged += new System.EventHandler(this.treatUnstableAsFailedCheckBox_CheckedChanged);
+ //
+ // NotificationsSettingsControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.groupControl1);
+ this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.Name = "NotificationsSettingsControl";
+ this.Size = new System.Drawing.Size(556, 418);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.enableSoundCheckBox.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
+ this.groupControl1.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.treatUnstableAsFailedCheckBox.Properties)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private NotificationSettingsControl notificationSettingsControl1;
+ private NotificationSettingsControl notificationSettingsControl2;
+ private NotificationSettingsControl notificationSettingsControl3;
+ private NotificationSettingsControl notificationSettingsControl4;
+ private DevExpress.XtraEditors.GroupControl groupControl1;
+ private DevExpress.XtraEditors.CheckEdit enableSoundCheckBox;
+ private DevExpress.XtraEditors.CheckEdit treatUnstableAsFailedCheckBox;
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.cs b/JenkinsTray/UI/Controls/NotificationsSettingsControl.cs
similarity index 93%
rename from HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.cs
rename to JenkinsTray/UI/Controls/NotificationsSettingsControl.cs
index fbf52ce..4533586 100644
--- a/HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.cs
+++ b/JenkinsTray/UI/Controls/NotificationsSettingsControl.cs
@@ -1,79 +1,79 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.BusinessComponents;
-using Spring.Context.Support;
-
-namespace Hudson.TrayTracker.UI.Controls
-{
- public partial class NotificationsSettingsControl : DevExpress.XtraEditors.XtraUserControl
- {
- ConfigurationService configurationService;
-
- public NotificationsSettingsControl()
- {
- InitializeComponent();
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- // designer mode
- if (DesignMode)
- return;
-
- configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
- treatUnstableAsFailedCheckBox.Checked = configurationService.IsTreadUnstableAsFailed();
- enableSoundCheckBox.Checked = configurationService.IsSoundNotificationsEnabled();
- enableSoundCheckBox_CheckedChanged(null, null);
- }
-
- public void InitializeValues()
- {
- notificationSettingsControl1.Initialize();
- notificationSettingsControl2.Initialize();
- notificationSettingsControl3.Initialize();
- notificationSettingsControl4.Initialize();
- }
-
- public bool SoundNotificationsEnabled()
- {
- return enableSoundCheckBox.Checked;
- }
-
- private void enableSoundCheckBox_CheckedChanged(object sender, EventArgs e)
- {
- notificationSettingsControl1.Enabled =
- notificationSettingsControl2.Enabled =
- notificationSettingsControl3.Enabled =
- notificationSettingsControl4.Enabled =
- treatUnstableAsFailedCheckBox.Enabled =
- enableSoundCheckBox.Checked;
- configurationService.SetSoundNotifications(enableSoundCheckBox.Checked);
- }
-
- public bool TreadUnstableAsFailed()
- {
- return treatUnstableAsFailedCheckBox.Checked;
- }
-
- public void InvalidateData()
- {
- notificationSettingsControl1.InvalidateData();
- notificationSettingsControl2.InvalidateData();
- notificationSettingsControl3.InvalidateData();
- notificationSettingsControl4.InvalidateData();
- }
-
- private void treatUnstableAsFailedCheckBox_CheckedChanged(object sender, EventArgs e)
- {
- configurationService.SetTreadUnstableAsFailed(treatUnstableAsFailedCheckBox.Checked);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.BusinessComponents;
+using Spring.Context.Support;
+
+namespace Jenkins.Tray.UI.Controls
+{
+ public partial class NotificationsSettingsControl : DevExpress.XtraEditors.XtraUserControl
+ {
+ ConfigurationService configurationService;
+
+ public NotificationsSettingsControl()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ // designer mode
+ if (DesignMode)
+ return;
+
+ configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
+ treatUnstableAsFailedCheckBox.Checked = configurationService.IsTreadUnstableAsFailed();
+ enableSoundCheckBox.Checked = configurationService.IsSoundNotificationsEnabled();
+ enableSoundCheckBox_CheckedChanged(null, null);
+ }
+
+ public void InitializeValues()
+ {
+ notificationSettingsControl1.Initialize();
+ notificationSettingsControl2.Initialize();
+ notificationSettingsControl3.Initialize();
+ notificationSettingsControl4.Initialize();
+ }
+
+ public bool SoundNotificationsEnabled()
+ {
+ return enableSoundCheckBox.Checked;
+ }
+
+ private void enableSoundCheckBox_CheckedChanged(object sender, EventArgs e)
+ {
+ notificationSettingsControl1.Enabled =
+ notificationSettingsControl2.Enabled =
+ notificationSettingsControl3.Enabled =
+ notificationSettingsControl4.Enabled =
+ treatUnstableAsFailedCheckBox.Enabled =
+ enableSoundCheckBox.Checked;
+ configurationService.SetSoundNotifications(enableSoundCheckBox.Checked);
+ }
+
+ public bool TreadUnstableAsFailed()
+ {
+ return treatUnstableAsFailedCheckBox.Checked;
+ }
+
+ public void InvalidateData()
+ {
+ notificationSettingsControl1.InvalidateData();
+ notificationSettingsControl2.InvalidateData();
+ notificationSettingsControl3.InvalidateData();
+ notificationSettingsControl4.InvalidateData();
+ }
+
+ private void treatUnstableAsFailedCheckBox_CheckedChanged(object sender, EventArgs e)
+ {
+ configurationService.SetTreadUnstableAsFailed(treatUnstableAsFailedCheckBox.Checked);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.resx b/JenkinsTray/UI/Controls/NotificationsSettingsControl.resx
similarity index 97%
rename from HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.resx
rename to JenkinsTray/UI/Controls/NotificationsSettingsControl.resx
index ff31a6d..19dc0dd 100644
--- a/HudsonTrayTracker/UI/Controls/NotificationsSettingsControl.resx
+++ b/JenkinsTray/UI/Controls/NotificationsSettingsControl.resx
@@ -1,120 +1,120 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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/HudsonTrayTracker/UI/Controls/ProjectListControl.Designer.cs b/JenkinsTray/UI/Controls/ProjectListControl.Designer.cs
similarity index 98%
rename from HudsonTrayTracker/UI/Controls/ProjectListControl.Designer.cs
rename to JenkinsTray/UI/Controls/ProjectListControl.Designer.cs
index 30d650a..388c729 100644
--- a/HudsonTrayTracker/UI/Controls/ProjectListControl.Designer.cs
+++ b/JenkinsTray/UI/Controls/ProjectListControl.Designer.cs
@@ -1,221 +1,221 @@
-namespace Hudson.TrayTracker.UI.Controls
-{
- partial class ProjectListControl
- {
- ///
- /// 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.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProjectListControl));
- this.projectsGridControl = new DevExpress.XtraGrid.GridControl();
- this.projectContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.selectAllProjectsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.unselectAllProjectsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.projectsGridView = new DevExpress.XtraGrid.Views.Grid.GridView();
- this.projectSelectedGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.projectSelectedCheckEdit = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
- this.projectNameGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
- this.bar2 = new DevExpress.XtraBars.Bar();
- this.toggleSelectionButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
- this.repositoryItemMarqueeProgressBar1 = new DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar();
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).BeginInit();
- this.projectContextMenuStrip.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.projectSelectedCheckEdit)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).BeginInit();
- this.SuspendLayout();
- //
- // projectsGridControl
- //
- this.projectsGridControl.ContextMenuStrip = this.projectContextMenuStrip;
- this.projectsGridControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.projectsGridControl.Location = new System.Drawing.Point(0, 26);
- this.projectsGridControl.MainView = this.projectsGridView;
- this.projectsGridControl.Name = "projectsGridControl";
- this.projectsGridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
- this.projectSelectedCheckEdit});
- this.projectsGridControl.Size = new System.Drawing.Size(680, 314);
- this.projectsGridControl.TabIndex = 1;
- this.projectsGridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
- this.projectsGridView});
- this.projectsGridControl.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ProjectListControl_KeyPress);
- this.projectsGridControl.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.projectsGridControl_MouseDoubleClick);
- //
- // projectContextMenuStrip
- //
- this.projectContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.selectAllProjectsMenuItem,
- this.unselectAllProjectsMenuItem});
- this.projectContextMenuStrip.Name = "projectContextMenuStrip";
- this.projectContextMenuStrip.Size = new System.Drawing.Size(182, 48);
- //
- // selectAllProjectsMenuItem
- //
- this.selectAllProjectsMenuItem.Name = "selectAllProjectsMenuItem";
- this.selectAllProjectsMenuItem.Size = new System.Drawing.Size(181, 22);
- this.selectAllProjectsMenuItem.Text = "Select all projects";
- this.selectAllProjectsMenuItem.Click += new System.EventHandler(this.selectAllProjectsMenuItem_Click);
- //
- // unselectAllProjectsMenuItem
- //
- this.unselectAllProjectsMenuItem.Name = "unselectAllProjectsMenuItem";
- this.unselectAllProjectsMenuItem.Size = new System.Drawing.Size(181, 22);
- this.unselectAllProjectsMenuItem.Text = "Unselect all projects";
- this.unselectAllProjectsMenuItem.Click += new System.EventHandler(this.deselectAllProjectsMenuItem_Click);
- //
- // projectsGridView
- //
- this.projectsGridView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
- this.projectSelectedGridColumn,
- this.projectNameGridColumn});
- this.projectsGridView.GridControl = this.projectsGridControl;
- this.projectsGridView.Name = "projectsGridView";
- this.projectsGridView.OptionsCustomization.AllowGroup = false;
- this.projectsGridView.OptionsSelection.EnableAppearanceFocusedCell = false;
- this.projectsGridView.OptionsView.ShowGroupPanel = false;
- this.projectsGridView.OptionsView.ShowIndicator = false;
- this.projectsGridView.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {
- new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.projectNameGridColumn, DevExpress.Data.ColumnSortOrder.Ascending)});
- this.projectsGridView.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(this.projectsGridView_CustomUnboundColumnData);
- //
- // projectSelectedGridColumn
- //
- this.projectSelectedGridColumn.ColumnEdit = this.projectSelectedCheckEdit;
- this.projectSelectedGridColumn.FieldName = "Selected";
- this.projectSelectedGridColumn.Name = "projectSelectedGridColumn";
- this.projectSelectedGridColumn.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
- this.projectSelectedGridColumn.Visible = true;
- this.projectSelectedGridColumn.VisibleIndex = 0;
- this.projectSelectedGridColumn.Width = 28;
- //
- // projectSelectedCheckEdit
- //
- this.projectSelectedCheckEdit.AutoHeight = false;
- this.projectSelectedCheckEdit.Name = "projectSelectedCheckEdit";
- this.projectSelectedCheckEdit.EditValueChanged += new System.EventHandler(this.projectSelectedCheckEdit_EditValueChanged);
- //
- // projectNameGridColumn
- //
- this.projectNameGridColumn.Caption = "Projects";
- this.projectNameGridColumn.FieldName = "Name";
- this.projectNameGridColumn.Name = "projectNameGridColumn";
- this.projectNameGridColumn.OptionsColumn.AllowEdit = false;
- this.projectNameGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
- this.projectNameGridColumn.Visible = true;
- this.projectNameGridColumn.VisibleIndex = 1;
- this.projectNameGridColumn.Width = 302;
- //
- // barManager1
- //
- this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
- this.bar2});
- this.barManager1.DockControls.Add(this.barDockControlTop);
- this.barManager1.DockControls.Add(this.barDockControlBottom);
- this.barManager1.DockControls.Add(this.barDockControlLeft);
- this.barManager1.DockControls.Add(this.barDockControlRight);
- this.barManager1.Form = this;
- this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
- this.toggleSelectionButtonItem});
- this.barManager1.MainMenu = this.bar2;
- this.barManager1.MaxItemId = 7;
- this.barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
- this.repositoryItemMarqueeProgressBar1});
- //
- // bar2
- //
- this.bar2.BarName = "Main menu";
- this.bar2.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top;
- this.bar2.DockCol = 0;
- this.bar2.DockRow = 0;
- this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
- this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(this.toggleSelectionButtonItem)});
- this.bar2.OptionsBar.AllowQuickCustomization = false;
- this.bar2.OptionsBar.DrawDragBorder = false;
- this.bar2.OptionsBar.MultiLine = true;
- this.bar2.OptionsBar.UseWholeRow = true;
- this.bar2.Text = "Main menu";
- //
- // toggleSelectionButtonItem
- //
- this.toggleSelectionButtonItem.Caption = "Select/unselect all projects";
- this.toggleSelectionButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("toggleSelectionButtonItem.Glyph")));
- this.toggleSelectionButtonItem.Id = 5;
- this.toggleSelectionButtonItem.Name = "toggleSelectionButtonItem";
- this.toggleSelectionButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.toggleSelectionButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.toggleSelectionButtonItem_ItemClick);
- //
- // repositoryItemMarqueeProgressBar1
- //
- this.repositoryItemMarqueeProgressBar1.Name = "repositoryItemMarqueeProgressBar1";
- //
- // ProjectListControl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.projectsGridControl);
- this.Controls.Add(this.barDockControlLeft);
- this.Controls.Add(this.barDockControlRight);
- this.Controls.Add(this.barDockControlBottom);
- this.Controls.Add(this.barDockControlTop);
- this.Name = "ProjectListControl";
- this.Size = new System.Drawing.Size(680, 340);
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).EndInit();
- this.projectContextMenuStrip.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.projectSelectedCheckEdit)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private DevExpress.XtraGrid.GridControl projectsGridControl;
- private DevExpress.XtraGrid.Views.Grid.GridView projectsGridView;
- private DevExpress.XtraBars.BarManager barManager1;
- private DevExpress.XtraBars.Bar bar2;
- private DevExpress.XtraBars.BarDockControl barDockControlTop;
- private DevExpress.XtraBars.BarDockControl barDockControlBottom;
- private DevExpress.XtraBars.BarDockControl barDockControlLeft;
- private DevExpress.XtraBars.BarDockControl barDockControlRight;
- private DevExpress.XtraGrid.Columns.GridColumn projectNameGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn projectSelectedGridColumn;
- private DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit projectSelectedCheckEdit;
- private DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar repositoryItemMarqueeProgressBar1;
- private System.Windows.Forms.ContextMenuStrip projectContextMenuStrip;
- private System.Windows.Forms.ToolStripMenuItem selectAllProjectsMenuItem;
- private System.Windows.Forms.ToolStripMenuItem unselectAllProjectsMenuItem;
- private DevExpress.XtraBars.BarButtonItem toggleSelectionButtonItem;
- }
+namespace Jenkins.Tray.UI.Controls
+{
+ partial class ProjectListControl
+ {
+ ///
+ /// 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.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProjectListControl));
+ this.projectsGridControl = new DevExpress.XtraGrid.GridControl();
+ this.projectContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.selectAllProjectsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.unselectAllProjectsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.projectsGridView = new DevExpress.XtraGrid.Views.Grid.GridView();
+ this.projectSelectedGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.projectSelectedCheckEdit = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
+ this.projectNameGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+ this.bar2 = new DevExpress.XtraBars.Bar();
+ this.toggleSelectionButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.repositoryItemMarqueeProgressBar1 = new DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar();
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).BeginInit();
+ this.projectContextMenuStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.projectSelectedCheckEdit)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // projectsGridControl
+ //
+ this.projectsGridControl.ContextMenuStrip = this.projectContextMenuStrip;
+ this.projectsGridControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.projectsGridControl.Location = new System.Drawing.Point(0, 26);
+ this.projectsGridControl.MainView = this.projectsGridView;
+ this.projectsGridControl.Name = "projectsGridControl";
+ this.projectsGridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
+ this.projectSelectedCheckEdit});
+ this.projectsGridControl.Size = new System.Drawing.Size(680, 314);
+ this.projectsGridControl.TabIndex = 1;
+ this.projectsGridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+ this.projectsGridView});
+ this.projectsGridControl.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ProjectListControl_KeyPress);
+ this.projectsGridControl.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.projectsGridControl_MouseDoubleClick);
+ //
+ // projectContextMenuStrip
+ //
+ this.projectContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.selectAllProjectsMenuItem,
+ this.unselectAllProjectsMenuItem});
+ this.projectContextMenuStrip.Name = "projectContextMenuStrip";
+ this.projectContextMenuStrip.Size = new System.Drawing.Size(182, 48);
+ //
+ // selectAllProjectsMenuItem
+ //
+ this.selectAllProjectsMenuItem.Name = "selectAllProjectsMenuItem";
+ this.selectAllProjectsMenuItem.Size = new System.Drawing.Size(181, 22);
+ this.selectAllProjectsMenuItem.Text = "Select all projects";
+ this.selectAllProjectsMenuItem.Click += new System.EventHandler(this.selectAllProjectsMenuItem_Click);
+ //
+ // unselectAllProjectsMenuItem
+ //
+ this.unselectAllProjectsMenuItem.Name = "unselectAllProjectsMenuItem";
+ this.unselectAllProjectsMenuItem.Size = new System.Drawing.Size(181, 22);
+ this.unselectAllProjectsMenuItem.Text = "Unselect all projects";
+ this.unselectAllProjectsMenuItem.Click += new System.EventHandler(this.deselectAllProjectsMenuItem_Click);
+ //
+ // projectsGridView
+ //
+ this.projectsGridView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
+ this.projectSelectedGridColumn,
+ this.projectNameGridColumn});
+ this.projectsGridView.GridControl = this.projectsGridControl;
+ this.projectsGridView.Name = "projectsGridView";
+ this.projectsGridView.OptionsCustomization.AllowGroup = false;
+ this.projectsGridView.OptionsSelection.EnableAppearanceFocusedCell = false;
+ this.projectsGridView.OptionsView.ShowGroupPanel = false;
+ this.projectsGridView.OptionsView.ShowIndicator = false;
+ this.projectsGridView.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {
+ new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.projectNameGridColumn, DevExpress.Data.ColumnSortOrder.Ascending)});
+ this.projectsGridView.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(this.projectsGridView_CustomUnboundColumnData);
+ //
+ // projectSelectedGridColumn
+ //
+ this.projectSelectedGridColumn.ColumnEdit = this.projectSelectedCheckEdit;
+ this.projectSelectedGridColumn.FieldName = "Selected";
+ this.projectSelectedGridColumn.Name = "projectSelectedGridColumn";
+ this.projectSelectedGridColumn.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
+ this.projectSelectedGridColumn.Visible = true;
+ this.projectSelectedGridColumn.VisibleIndex = 0;
+ this.projectSelectedGridColumn.Width = 28;
+ //
+ // projectSelectedCheckEdit
+ //
+ this.projectSelectedCheckEdit.AutoHeight = false;
+ this.projectSelectedCheckEdit.Name = "projectSelectedCheckEdit";
+ this.projectSelectedCheckEdit.EditValueChanged += new System.EventHandler(this.projectSelectedCheckEdit_EditValueChanged);
+ //
+ // projectNameGridColumn
+ //
+ this.projectNameGridColumn.Caption = "Projects";
+ this.projectNameGridColumn.FieldName = "Name";
+ this.projectNameGridColumn.Name = "projectNameGridColumn";
+ this.projectNameGridColumn.OptionsColumn.AllowEdit = false;
+ this.projectNameGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
+ this.projectNameGridColumn.Visible = true;
+ this.projectNameGridColumn.VisibleIndex = 1;
+ this.projectNameGridColumn.Width = 302;
+ //
+ // barManager1
+ //
+ this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+ this.bar2});
+ this.barManager1.DockControls.Add(this.barDockControlTop);
+ this.barManager1.DockControls.Add(this.barDockControlBottom);
+ this.barManager1.DockControls.Add(this.barDockControlLeft);
+ this.barManager1.DockControls.Add(this.barDockControlRight);
+ this.barManager1.Form = this;
+ this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.toggleSelectionButtonItem});
+ this.barManager1.MainMenu = this.bar2;
+ this.barManager1.MaxItemId = 7;
+ this.barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
+ this.repositoryItemMarqueeProgressBar1});
+ //
+ // bar2
+ //
+ this.bar2.BarName = "Main menu";
+ this.bar2.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top;
+ this.bar2.DockCol = 0;
+ this.bar2.DockRow = 0;
+ this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(this.toggleSelectionButtonItem)});
+ this.bar2.OptionsBar.AllowQuickCustomization = false;
+ this.bar2.OptionsBar.DrawDragBorder = false;
+ this.bar2.OptionsBar.MultiLine = true;
+ this.bar2.OptionsBar.UseWholeRow = true;
+ this.bar2.Text = "Main menu";
+ //
+ // toggleSelectionButtonItem
+ //
+ this.toggleSelectionButtonItem.Caption = "Select/unselect all projects";
+ this.toggleSelectionButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("toggleSelectionButtonItem.Glyph")));
+ this.toggleSelectionButtonItem.Id = 5;
+ this.toggleSelectionButtonItem.Name = "toggleSelectionButtonItem";
+ this.toggleSelectionButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.toggleSelectionButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.toggleSelectionButtonItem_ItemClick);
+ //
+ // repositoryItemMarqueeProgressBar1
+ //
+ this.repositoryItemMarqueeProgressBar1.Name = "repositoryItemMarqueeProgressBar1";
+ //
+ // ProjectListControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.projectsGridControl);
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Name = "ProjectListControl";
+ this.Size = new System.Drawing.Size(680, 340);
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).EndInit();
+ this.projectContextMenuStrip.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.projectSelectedCheckEdit)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraGrid.GridControl projectsGridControl;
+ private DevExpress.XtraGrid.Views.Grid.GridView projectsGridView;
+ private DevExpress.XtraBars.BarManager barManager1;
+ private DevExpress.XtraBars.Bar bar2;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ private DevExpress.XtraGrid.Columns.GridColumn projectNameGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn projectSelectedGridColumn;
+ private DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit projectSelectedCheckEdit;
+ private DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar repositoryItemMarqueeProgressBar1;
+ private System.Windows.Forms.ContextMenuStrip projectContextMenuStrip;
+ private System.Windows.Forms.ToolStripMenuItem selectAllProjectsMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem unselectAllProjectsMenuItem;
+ private DevExpress.XtraBars.BarButtonItem toggleSelectionButtonItem;
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/ProjectListControl.cs b/JenkinsTray/UI/Controls/ProjectListControl.cs
similarity index 87%
rename from HudsonTrayTracker/UI/Controls/ProjectListControl.cs
rename to JenkinsTray/UI/Controls/ProjectListControl.cs
index 5e3907c..756896e 100644
--- a/HudsonTrayTracker/UI/Controls/ProjectListControl.cs
+++ b/JenkinsTray/UI/Controls/ProjectListControl.cs
@@ -1,190 +1,190 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.BusinessComponents;
-using Hudson.TrayTracker.Entities;
-using DevExpress.XtraBars;
-using Hudson.TrayTracker.Utils.BackgroundProcessing;
-using Spring.Context.Support;
-
-namespace Hudson.TrayTracker.UI.Controls
-{
- public partial class ProjectListControl : DevExpress.XtraEditors.XtraUserControl
- {
- Server server;
- List projectsDataSource;
-
- public ServersSettingsController Controller { get; set; }
- public ConfigurationService ConfigurationService { get; set; }
- public HudsonService HudsonService { get; set; }
-
- public ProjectListControl()
- {
- InitializeComponent();
- }
-
- public void Initialize()
- {
- }
-
- public void UpdateProjectList(Server server)
- {
- this.server = server;
-#if SYNCRHONOUS
- List dataSource = new List();
-
- if (server != null)
- {
- IList projects = hudsonService.LoadProjects(server);
- foreach (Project project in projects)
- dataSource.Add(project);
- }
-
- SetProjectsDataSource(dataSource);
-#else
- // clear the view
- projectsGridControl.DataSource = null;
-
- if (server == null)
- return;
-
- // disable the window, change the cursor, update the status
- Cursor.Current = Cursors.WaitCursor;
- Enabled = false;
- string status = string.Format(HudsonTrayTrackerResources.LoadingProjects_FormatString, server.Url);
- Controller.SetStatus(status, true);
-
- // run the process in background
- Process process = new Process("Loading project " + server.Url);
- IList projects = null;
- process.DoWork += delegate
- {
- projects = HudsonService.LoadProjects(server);
- };
- process.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
- {
- string endStatus = "";
-
- if (e.Error == null)
- {
- var dataSource = new List();
- foreach (Project project in projects)
- dataSource.Add(project);
- SetProjectsDataSource(dataSource);
- }
- else
- {
- endStatus = string.Format(HudsonTrayTrackerResources.FailedLoadingProjects_FormatString, server.Url);
- }
-
- // enable the window, change the cursor, update the status
- Enabled = true;
- Cursor.Current = Cursors.Default;
- Controller.SetStatus(endStatus, false);
- };
- BackgroundProcessExecutor.Execute(process);
-#endif
- }
-
- private void SetProjectsDataSource(List dataSource)
- {
- projectsDataSource = dataSource;
- projectsGridControl.DataSource = projectsDataSource;
- }
-
- private void projectsGridView_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
- {
- if (e.IsGetData)
- {
- Project project = projectsDataSource[e.ListSourceRowIndex];
- bool selected = project.Server.Projects.Contains(project);
- e.Value = selected;
- }
- else if (e.IsSetData)
- {
- Project project = projectsDataSource[e.ListSourceRowIndex];
- bool selected = (bool)e.Value;
- if (selected)
- ConfigurationService.AddProject(project);
- else
- ConfigurationService.RemoveProject(project);
- }
- }
-
- private void projectSelectedCheckEdit_EditValueChanged(object sender, EventArgs e)
- {
- // validate the check box value as soon as it is clicked
- ((CheckEdit)sender).DoValidate();
- projectsGridView.CloseEditor();
- }
-
- private void selectAllProjectsMenuItem_Click(object sender, EventArgs e)
- {
- if (projectsDataSource == null)
- return;
- SelectAllProjects();
- }
-
- private void deselectAllProjectsMenuItem_Click(object sender, EventArgs e)
- {
- if (projectsDataSource == null)
- return;
- UnselectAllProjects();
- }
-
- private void toggleSelectionButtonItem_ItemClick(object sender, ItemClickEventArgs e)
- {
- if (projectsDataSource == null)
- return;
- if (server.Projects.Count < projectsDataSource.Count)
- SelectAllProjects();
- else
- UnselectAllProjects();
- }
-
- private void SelectAllProjects()
- {
- ConfigurationService.AddProjects(projectsDataSource);
- projectsGridView.RefreshData();
- }
-
- private void UnselectAllProjects()
- {
- ConfigurationService.RemoveProjects(projectsDataSource);
- projectsGridView.RefreshData();
- }
-
- private void ProjectListControl_KeyPress(object sender, KeyPressEventArgs e)
- {
- switch (char.ToUpper(e.KeyChar))
- {
- case (char)Keys.Space:
- CheckSelectedProject();
- e.Handled = true;
- break;
- default:
- break;
- }
- }
-
- private void CheckSelectedProject()
- {
- int[] selected = projectsGridView.GetSelectedRows();
- if (selected.Length == 1 && selected[0] <= projectsGridView.RowCount)
- {
- bool isChecked = (bool)projectsGridView.GetRowCellValue(selected[0], projectSelectedGridColumn);
- projectsGridView.SetRowCellValue(selected[0], projectSelectedGridColumn, !isChecked);
- }
- }
-
- private void projectsGridControl_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- CheckSelectedProject();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.BusinessComponents;
+using Jenkins.Tray.Entities;
+using DevExpress.XtraBars;
+using Jenkins.Tray.Utils.BackgroundProcessing;
+using Spring.Context.Support;
+
+namespace Jenkins.Tray.UI.Controls
+{
+ public partial class ProjectListControl : DevExpress.XtraEditors.XtraUserControl
+ {
+ Server server;
+ List projectsDataSource;
+
+ public ServersSettingsController Controller { get; set; }
+ public ConfigurationService ConfigurationService { get; set; }
+ public JenkinsService JenkinsService { get; set; }
+
+ public ProjectListControl()
+ {
+ InitializeComponent();
+ }
+
+ public void Initialize()
+ {
+ }
+
+ public void UpdateProjectList(Server server)
+ {
+ this.server = server;
+#if SYNCRHONOUS
+ List dataSource = new List();
+
+ if (server != null)
+ {
+ IList projects = jenkinsService.LoadProjects(server);
+ foreach (Project project in projects)
+ dataSource.Add(project);
+ }
+
+ SetProjectsDataSource(dataSource);
+#else
+ // clear the view
+ projectsGridControl.DataSource = null;
+
+ if (server == null)
+ return;
+
+ // disable the window, change the cursor, update the status
+ Cursor.Current = Cursors.WaitCursor;
+ Enabled = false;
+ string status = string.Format(JenkinsTrayResources.LoadingProjects_FormatString, server.Url);
+ Controller.SetStatus(status, true);
+
+ // run the process in background
+ Process process = new Process("Loading project " + server.Url);
+ IList projects = null;
+ process.DoWork += delegate
+ {
+ projects = JenkinsService.LoadProjects(server);
+ };
+ process.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
+ {
+ string endStatus = "";
+
+ if (e.Error == null)
+ {
+ var dataSource = new List();
+ foreach (Project project in projects)
+ dataSource.Add(project);
+ SetProjectsDataSource(dataSource);
+ }
+ else
+ {
+ endStatus = string.Format(JenkinsTrayResources.FailedLoadingProjects_FormatString, server.Url);
+ }
+
+ // enable the window, change the cursor, update the status
+ Enabled = true;
+ Cursor.Current = Cursors.Default;
+ Controller.SetStatus(endStatus, false);
+ };
+ BackgroundProcessExecutor.Execute(process);
+#endif
+ }
+
+ private void SetProjectsDataSource(List dataSource)
+ {
+ projectsDataSource = dataSource;
+ projectsGridControl.DataSource = projectsDataSource;
+ }
+
+ private void projectsGridView_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
+ {
+ if (e.IsGetData)
+ {
+ Project project = projectsDataSource[e.ListSourceRowIndex];
+ bool selected = project.Server.Projects.Contains(project);
+ e.Value = selected;
+ }
+ else if (e.IsSetData)
+ {
+ Project project = projectsDataSource[e.ListSourceRowIndex];
+ bool selected = (bool)e.Value;
+ if (selected)
+ ConfigurationService.AddProject(project);
+ else
+ ConfigurationService.RemoveProject(project);
+ }
+ }
+
+ private void projectSelectedCheckEdit_EditValueChanged(object sender, EventArgs e)
+ {
+ // validate the check box value as soon as it is clicked
+ ((CheckEdit)sender).DoValidate();
+ projectsGridView.CloseEditor();
+ }
+
+ private void selectAllProjectsMenuItem_Click(object sender, EventArgs e)
+ {
+ if (projectsDataSource == null)
+ return;
+ SelectAllProjects();
+ }
+
+ private void deselectAllProjectsMenuItem_Click(object sender, EventArgs e)
+ {
+ if (projectsDataSource == null)
+ return;
+ UnselectAllProjects();
+ }
+
+ private void toggleSelectionButtonItem_ItemClick(object sender, ItemClickEventArgs e)
+ {
+ if (projectsDataSource == null)
+ return;
+ if (server.Projects.Count < projectsDataSource.Count)
+ SelectAllProjects();
+ else
+ UnselectAllProjects();
+ }
+
+ private void SelectAllProjects()
+ {
+ ConfigurationService.AddProjects(projectsDataSource);
+ projectsGridView.RefreshData();
+ }
+
+ private void UnselectAllProjects()
+ {
+ ConfigurationService.RemoveProjects(projectsDataSource);
+ projectsGridView.RefreshData();
+ }
+
+ private void ProjectListControl_KeyPress(object sender, KeyPressEventArgs e)
+ {
+ switch (char.ToUpper(e.KeyChar))
+ {
+ case (char)Keys.Space:
+ CheckSelectedProject();
+ e.Handled = true;
+ break;
+ default:
+ break;
+ }
+ }
+
+ private void CheckSelectedProject()
+ {
+ int[] selected = projectsGridView.GetSelectedRows();
+ if (selected.Length == 1 && selected[0] <= projectsGridView.RowCount)
+ {
+ bool isChecked = (bool)projectsGridView.GetRowCellValue(selected[0], projectSelectedGridColumn);
+ projectsGridView.SetRowCellValue(selected[0], projectSelectedGridColumn, !isChecked);
+ }
+ }
+
+ private void projectsGridControl_MouseDoubleClick(object sender, MouseEventArgs e)
+ {
+ CheckSelectedProject();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/ProjectListControl.resx b/JenkinsTray/UI/Controls/ProjectListControl.resx
similarity index 98%
rename from HudsonTrayTracker/UI/Controls/ProjectListControl.resx
rename to JenkinsTray/UI/Controls/ProjectListControl.resx
index d29fb82..056413a 100644
--- a/HudsonTrayTracker/UI/Controls/ProjectListControl.resx
+++ b/JenkinsTray/UI/Controls/ProjectListControl.resx
@@ -1,142 +1,142 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- 142, 17
-
-
- 17, 17
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
- CxEBf2RfkQAAAeBJREFUOE+lk99LWmEYx9tf00W3ghcGgm2ti60RLJgMuhEMxn7A2EXddLWLiHCNXYw1
- 29iIzNTKbWxppufo/NHQ+WM6XcyWU6kw0WQXY5jffJ5xgreoizrwcHgP5/t53vf7fd5LADou9BDgnT8H
- KqecxZIvA8faN9hWk7C6vsLyMYrZD+t46wzj9dJnzNj9eLnga8vQwc0VwO2HT6B/MInBu+MYGH6M64Yx
- 9A2NoufWI2hv3ofmxh2orxkxNmWBFNsUAcvSdxY3W80z6++/JhbcCfjjv0TAojfNnc8CbP0uofHnPyCY
- LIgAuyfF2z4NsOJy42q/HhOmZ+xLJF0UAVZXnM9MgHqjLoAkOQCVSs3iUvkAlk9RRLNlEUBOk2EkNhjv
- 8c+1/RpsNgc03dojcT7faifyBYmNbREw+36d3aYdkPiy7gpMpinodL2COJNpcZyZzV0R8GY5xFEpHhCk
- s7PrhDgWa/Es/ChURMArR4BzJgBFRW4rZ6ZtU2cSh0OA2S4jX6qKALNN4iFRxHvVAzbsuFiWgGmrF1vb
- NRHwYt4L48hTzpiKR7jtNhmmjDB1JvHzOQ+Ku/sigD6uBHPwRDYgx/KIpAqI58ps1s9iFYWdOsqVhlDC
- XVAW53nzZbpIHQI+X/wERE0BJQAAAABJRU5ErkJggg==
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 142, 17
+
+
+ 17, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
+ CxEBf2RfkQAAAeBJREFUOE+lk99LWmEYx9tf00W3ghcGgm2ti60RLJgMuhEMxn7A2EXddLWLiHCNXYw1
+ 29iIzNTKbWxppufo/NHQ+WM6XcyWU6kw0WQXY5jffJ5xgreoizrwcHgP5/t53vf7fd5LADou9BDgnT8H
+ KqecxZIvA8faN9hWk7C6vsLyMYrZD+t46wzj9dJnzNj9eLnga8vQwc0VwO2HT6B/MInBu+MYGH6M64Yx
+ 9A2NoufWI2hv3ofmxh2orxkxNmWBFNsUAcvSdxY3W80z6++/JhbcCfjjv0TAojfNnc8CbP0uofHnPyCY
+ LIgAuyfF2z4NsOJy42q/HhOmZ+xLJF0UAVZXnM9MgHqjLoAkOQCVSs3iUvkAlk9RRLNlEUBOk2EkNhjv
+ 8c+1/RpsNgc03dojcT7faifyBYmNbREw+36d3aYdkPiy7gpMpinodL2COJNpcZyZzV0R8GY5xFEpHhCk
+ s7PrhDgWa/Es/ChURMArR4BzJgBFRW4rZ6ZtU2cSh0OA2S4jX6qKALNN4iFRxHvVAzbsuFiWgGmrF1vb
+ NRHwYt4L48hTzpiKR7jtNhmmjDB1JvHzOQ+Ku/sigD6uBHPwRDYgx/KIpAqI58ps1s9iFYWdOsqVhlDC
+ XVAW53nzZbpIHQI+X/wERE0BJQAAAABJRU5ErkJggg==
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/ServerListControl.Designer.cs b/JenkinsTray/UI/Controls/ServerListControl.Designer.cs
similarity index 98%
rename from HudsonTrayTracker/UI/Controls/ServerListControl.Designer.cs
rename to JenkinsTray/UI/Controls/ServerListControl.Designer.cs
index d20daf9..2d748b7 100644
--- a/HudsonTrayTracker/UI/Controls/ServerListControl.Designer.cs
+++ b/JenkinsTray/UI/Controls/ServerListControl.Designer.cs
@@ -1,265 +1,265 @@
-namespace Hudson.TrayTracker.UI.Controls
-{
- partial class ServerListControl
- {
- ///
- /// 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.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerListControl));
- this.serversGridControl = new DevExpress.XtraGrid.GridControl();
- this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.editServerMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.removeServerMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.serversGridView = new DevExpress.XtraGrid.Views.Grid.GridView();
- this.serverGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
- this.bar2 = new DevExpress.XtraBars.Bar();
- this.addServerButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.editServerButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.removeServerButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
- this.statusTextItem = new DevExpress.XtraBars.BarStaticItem();
- this.statusProgressItem = new DevExpress.XtraBars.BarEditItem();
- this.repositoryItemMarqueeProgressBar1 = new DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar();
- ((System.ComponentModel.ISupportInitialize)(this.serversGridControl)).BeginInit();
- this.contextMenuStrip.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.serversGridView)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).BeginInit();
- this.SuspendLayout();
- //
- // serversGridControl
- //
- this.serversGridControl.ContextMenuStrip = this.contextMenuStrip;
- this.serversGridControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.serversGridControl.Location = new System.Drawing.Point(0, 26);
- this.serversGridControl.MainView = this.serversGridView;
- this.serversGridControl.Name = "serversGridControl";
- this.serversGridControl.Size = new System.Drawing.Size(680, 314);
- this.serversGridControl.TabIndex = 0;
- this.serversGridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
- this.serversGridView});
- //
- // contextMenuStrip
- //
- this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.editServerMenuItem,
- this.removeServerMenuItem});
- this.contextMenuStrip.Name = "contextMenuStrip";
- this.contextMenuStrip.Size = new System.Drawing.Size(152, 48);
- this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
- //
- // editServerMenuItem
- //
- this.editServerMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("editServerMenuItem.Image")));
- this.editServerMenuItem.Name = "editServerMenuItem";
- this.editServerMenuItem.Size = new System.Drawing.Size(151, 22);
- this.editServerMenuItem.Text = "Edit server";
- this.editServerMenuItem.Click += new System.EventHandler(this.editServerMenuItem_Click);
- //
- // removeServerMenuItem
- //
- this.removeServerMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("removeServerMenuItem.Image")));
- this.removeServerMenuItem.Name = "removeServerMenuItem";
- this.removeServerMenuItem.Size = new System.Drawing.Size(151, 22);
- this.removeServerMenuItem.Text = "Remove server";
- this.removeServerMenuItem.Click += new System.EventHandler(this.removeServerMenuItem_Click);
- //
- // serversGridView
- //
- this.serversGridView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
- this.serverGridColumn});
- this.serversGridView.GridControl = this.serversGridControl;
- this.serversGridView.Name = "serversGridView";
- this.serversGridView.OptionsCustomization.AllowGroup = false;
- this.serversGridView.OptionsSelection.EnableAppearanceFocusedCell = false;
- this.serversGridView.OptionsView.ShowGroupPanel = false;
- this.serversGridView.OptionsView.ShowIndicator = false;
- this.serversGridView.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {
- new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.serverGridColumn, DevExpress.Data.ColumnSortOrder.Ascending)});
- this.serversGridView.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(this.serversGridView_FocusedRowChanged);
- //
- // serverGridColumn
- //
- this.serverGridColumn.Caption = "Servers";
- this.serverGridColumn.FieldName = "DisplayText";
- this.serverGridColumn.Name = "serverGridColumn";
- this.serverGridColumn.OptionsColumn.AllowEdit = false;
- this.serverGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
- this.serverGridColumn.Visible = true;
- this.serverGridColumn.VisibleIndex = 0;
- //
- // barManager1
- //
- this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
- this.bar2});
- this.barManager1.DockControls.Add(this.barDockControlTop);
- this.barManager1.DockControls.Add(this.barDockControlBottom);
- this.barManager1.DockControls.Add(this.barDockControlLeft);
- this.barManager1.DockControls.Add(this.barDockControlRight);
- this.barManager1.Form = this;
- this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
- this.addServerButtonItem,
- this.removeServerButtonItem,
- this.statusTextItem,
- this.statusProgressItem,
- this.editServerButtonItem});
- this.barManager1.MainMenu = this.bar2;
- this.barManager1.MaxItemId = 5;
- this.barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
- this.repositoryItemMarqueeProgressBar1});
- //
- // bar2
- //
- this.bar2.BarName = "Main menu";
- this.bar2.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top;
- this.bar2.DockCol = 0;
- this.bar2.DockRow = 0;
- this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
- this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.addServerButtonItem, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
- new DevExpress.XtraBars.LinkPersistInfo(this.editServerButtonItem),
- new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.removeServerButtonItem, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph)});
- this.bar2.OptionsBar.AllowQuickCustomization = false;
- this.bar2.OptionsBar.DrawDragBorder = false;
- this.bar2.OptionsBar.MultiLine = true;
- this.bar2.OptionsBar.UseWholeRow = true;
- this.bar2.Text = "Main menu";
- //
- // addServerButtonItem
- //
- this.addServerButtonItem.Caption = "Add server";
- this.addServerButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("addServerButtonItem.Glyph")));
- this.addServerButtonItem.Id = 0;
- this.addServerButtonItem.Name = "addServerButtonItem";
- this.addServerButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.addServerButtonItem_ItemClick);
- //
- // editServerButtonItem
- //
- this.editServerButtonItem.Caption = "Edit server";
- this.editServerButtonItem.Enabled = false;
- this.editServerButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("editServerButtonItem.Glyph")));
- this.editServerButtonItem.Id = 4;
- this.editServerButtonItem.Name = "editServerButtonItem";
- this.editServerButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.editServerButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.editServerButtonItem_ItemClick);
- //
- // removeServerButtonItem
- //
- this.removeServerButtonItem.Caption = "Remove server";
- this.removeServerButtonItem.Enabled = false;
- this.removeServerButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("removeServerButtonItem.Glyph")));
- this.removeServerButtonItem.Id = 1;
- this.removeServerButtonItem.Name = "removeServerButtonItem";
- this.removeServerButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.removeServerButtonItem_ItemClick);
- //
- // barDockControlTop
- //
- this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
- this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
- this.barDockControlTop.Size = new System.Drawing.Size(680, 26);
- //
- // barDockControlBottom
- //
- this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.barDockControlBottom.Location = new System.Drawing.Point(0, 340);
- this.barDockControlBottom.Size = new System.Drawing.Size(680, 0);
- //
- // barDockControlLeft
- //
- this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
- this.barDockControlLeft.Location = new System.Drawing.Point(0, 26);
- this.barDockControlLeft.Size = new System.Drawing.Size(0, 314);
- //
- // barDockControlRight
- //
- this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
- this.barDockControlRight.Location = new System.Drawing.Point(680, 26);
- this.barDockControlRight.Size = new System.Drawing.Size(0, 314);
- //
- // statusTextItem
- //
- this.statusTextItem.Id = 2;
- this.statusTextItem.Name = "statusTextItem";
- this.statusTextItem.TextAlignment = System.Drawing.StringAlignment.Near;
- //
- // statusProgressItem
- //
- this.statusProgressItem.Edit = this.repositoryItemMarqueeProgressBar1;
- this.statusProgressItem.Id = 3;
- this.statusProgressItem.Name = "statusProgressItem";
- //
- // repositoryItemMarqueeProgressBar1
- //
- this.repositoryItemMarqueeProgressBar1.Name = "repositoryItemMarqueeProgressBar1";
- //
- // ServerListControl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.Controls.Add(this.serversGridControl);
- this.Controls.Add(this.barDockControlLeft);
- this.Controls.Add(this.barDockControlRight);
- this.Controls.Add(this.barDockControlBottom);
- this.Controls.Add(this.barDockControlTop);
- this.Name = "ServerListControl";
- this.Size = new System.Drawing.Size(680, 340);
- ((System.ComponentModel.ISupportInitialize)(this.serversGridControl)).EndInit();
- this.contextMenuStrip.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.serversGridView)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private DevExpress.XtraGrid.GridControl serversGridControl;
- private DevExpress.XtraGrid.Views.Grid.GridView serversGridView;
- private DevExpress.XtraBars.BarManager barManager1;
- private DevExpress.XtraBars.Bar bar2;
- private DevExpress.XtraBars.BarButtonItem addServerButtonItem;
- private DevExpress.XtraBars.BarButtonItem removeServerButtonItem;
- private DevExpress.XtraBars.BarDockControl barDockControlTop;
- private DevExpress.XtraBars.BarDockControl barDockControlBottom;
- private DevExpress.XtraBars.BarDockControl barDockControlLeft;
- private DevExpress.XtraBars.BarDockControl barDockControlRight;
- private DevExpress.XtraGrid.Columns.GridColumn serverGridColumn;
- private DevExpress.XtraBars.BarStaticItem statusTextItem;
- private DevExpress.XtraBars.BarEditItem statusProgressItem;
- private DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar repositoryItemMarqueeProgressBar1;
- private DevExpress.XtraBars.BarButtonItem editServerButtonItem;
- private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
- private System.Windows.Forms.ToolStripMenuItem editServerMenuItem;
- private System.Windows.Forms.ToolStripMenuItem removeServerMenuItem;
- }
+namespace Jenkins.Tray.UI.Controls
+{
+ partial class ServerListControl
+ {
+ ///
+ /// 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.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ServerListControl));
+ this.serversGridControl = new DevExpress.XtraGrid.GridControl();
+ this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.editServerMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.removeServerMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.serversGridView = new DevExpress.XtraGrid.Views.Grid.GridView();
+ this.serverGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+ this.bar2 = new DevExpress.XtraBars.Bar();
+ this.addServerButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.editServerButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.removeServerButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.statusTextItem = new DevExpress.XtraBars.BarStaticItem();
+ this.statusProgressItem = new DevExpress.XtraBars.BarEditItem();
+ this.repositoryItemMarqueeProgressBar1 = new DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar();
+ ((System.ComponentModel.ISupportInitialize)(this.serversGridControl)).BeginInit();
+ this.contextMenuStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.serversGridView)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // serversGridControl
+ //
+ this.serversGridControl.ContextMenuStrip = this.contextMenuStrip;
+ this.serversGridControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.serversGridControl.Location = new System.Drawing.Point(0, 26);
+ this.serversGridControl.MainView = this.serversGridView;
+ this.serversGridControl.Name = "serversGridControl";
+ this.serversGridControl.Size = new System.Drawing.Size(680, 314);
+ this.serversGridControl.TabIndex = 0;
+ this.serversGridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+ this.serversGridView});
+ //
+ // contextMenuStrip
+ //
+ this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.editServerMenuItem,
+ this.removeServerMenuItem});
+ this.contextMenuStrip.Name = "contextMenuStrip";
+ this.contextMenuStrip.Size = new System.Drawing.Size(152, 48);
+ this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
+ //
+ // editServerMenuItem
+ //
+ this.editServerMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("editServerMenuItem.Image")));
+ this.editServerMenuItem.Name = "editServerMenuItem";
+ this.editServerMenuItem.Size = new System.Drawing.Size(151, 22);
+ this.editServerMenuItem.Text = "Edit server";
+ this.editServerMenuItem.Click += new System.EventHandler(this.editServerMenuItem_Click);
+ //
+ // removeServerMenuItem
+ //
+ this.removeServerMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("removeServerMenuItem.Image")));
+ this.removeServerMenuItem.Name = "removeServerMenuItem";
+ this.removeServerMenuItem.Size = new System.Drawing.Size(151, 22);
+ this.removeServerMenuItem.Text = "Remove server";
+ this.removeServerMenuItem.Click += new System.EventHandler(this.removeServerMenuItem_Click);
+ //
+ // serversGridView
+ //
+ this.serversGridView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
+ this.serverGridColumn});
+ this.serversGridView.GridControl = this.serversGridControl;
+ this.serversGridView.Name = "serversGridView";
+ this.serversGridView.OptionsCustomization.AllowGroup = false;
+ this.serversGridView.OptionsSelection.EnableAppearanceFocusedCell = false;
+ this.serversGridView.OptionsView.ShowGroupPanel = false;
+ this.serversGridView.OptionsView.ShowIndicator = false;
+ this.serversGridView.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {
+ new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.serverGridColumn, DevExpress.Data.ColumnSortOrder.Ascending)});
+ this.serversGridView.FocusedRowChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventHandler(this.serversGridView_FocusedRowChanged);
+ //
+ // serverGridColumn
+ //
+ this.serverGridColumn.Caption = "Servers";
+ this.serverGridColumn.FieldName = "DisplayText";
+ this.serverGridColumn.Name = "serverGridColumn";
+ this.serverGridColumn.OptionsColumn.AllowEdit = false;
+ this.serverGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
+ this.serverGridColumn.Visible = true;
+ this.serverGridColumn.VisibleIndex = 0;
+ //
+ // barManager1
+ //
+ this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+ this.bar2});
+ this.barManager1.DockControls.Add(this.barDockControlTop);
+ this.barManager1.DockControls.Add(this.barDockControlBottom);
+ this.barManager1.DockControls.Add(this.barDockControlLeft);
+ this.barManager1.DockControls.Add(this.barDockControlRight);
+ this.barManager1.Form = this;
+ this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.addServerButtonItem,
+ this.removeServerButtonItem,
+ this.statusTextItem,
+ this.statusProgressItem,
+ this.editServerButtonItem});
+ this.barManager1.MainMenu = this.bar2;
+ this.barManager1.MaxItemId = 5;
+ this.barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
+ this.repositoryItemMarqueeProgressBar1});
+ //
+ // bar2
+ //
+ this.bar2.BarName = "Main menu";
+ this.bar2.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Top;
+ this.bar2.DockCol = 0;
+ this.bar2.DockRow = 0;
+ this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.addServerButtonItem, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph),
+ new DevExpress.XtraBars.LinkPersistInfo(this.editServerButtonItem),
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, this.removeServerButtonItem, DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph)});
+ this.bar2.OptionsBar.AllowQuickCustomization = false;
+ this.bar2.OptionsBar.DrawDragBorder = false;
+ this.bar2.OptionsBar.MultiLine = true;
+ this.bar2.OptionsBar.UseWholeRow = true;
+ this.bar2.Text = "Main menu";
+ //
+ // addServerButtonItem
+ //
+ this.addServerButtonItem.Caption = "Add server";
+ this.addServerButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("addServerButtonItem.Glyph")));
+ this.addServerButtonItem.Id = 0;
+ this.addServerButtonItem.Name = "addServerButtonItem";
+ this.addServerButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.addServerButtonItem_ItemClick);
+ //
+ // editServerButtonItem
+ //
+ this.editServerButtonItem.Caption = "Edit server";
+ this.editServerButtonItem.Enabled = false;
+ this.editServerButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("editServerButtonItem.Glyph")));
+ this.editServerButtonItem.Id = 4;
+ this.editServerButtonItem.Name = "editServerButtonItem";
+ this.editServerButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.editServerButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.editServerButtonItem_ItemClick);
+ //
+ // removeServerButtonItem
+ //
+ this.removeServerButtonItem.Caption = "Remove server";
+ this.removeServerButtonItem.Enabled = false;
+ this.removeServerButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("removeServerButtonItem.Glyph")));
+ this.removeServerButtonItem.Id = 1;
+ this.removeServerButtonItem.Name = "removeServerButtonItem";
+ this.removeServerButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.removeServerButtonItem_ItemClick);
+ //
+ // barDockControlTop
+ //
+ this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+ this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
+ this.barDockControlTop.Size = new System.Drawing.Size(680, 26);
+ //
+ // barDockControlBottom
+ //
+ this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.barDockControlBottom.Location = new System.Drawing.Point(0, 340);
+ this.barDockControlBottom.Size = new System.Drawing.Size(680, 0);
+ //
+ // barDockControlLeft
+ //
+ this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+ this.barDockControlLeft.Location = new System.Drawing.Point(0, 26);
+ this.barDockControlLeft.Size = new System.Drawing.Size(0, 314);
+ //
+ // barDockControlRight
+ //
+ this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+ this.barDockControlRight.Location = new System.Drawing.Point(680, 26);
+ this.barDockControlRight.Size = new System.Drawing.Size(0, 314);
+ //
+ // statusTextItem
+ //
+ this.statusTextItem.Id = 2;
+ this.statusTextItem.Name = "statusTextItem";
+ this.statusTextItem.TextAlignment = System.Drawing.StringAlignment.Near;
+ //
+ // statusProgressItem
+ //
+ this.statusProgressItem.Edit = this.repositoryItemMarqueeProgressBar1;
+ this.statusProgressItem.Id = 3;
+ this.statusProgressItem.Name = "statusProgressItem";
+ //
+ // repositoryItemMarqueeProgressBar1
+ //
+ this.repositoryItemMarqueeProgressBar1.Name = "repositoryItemMarqueeProgressBar1";
+ //
+ // ServerListControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.Controls.Add(this.serversGridControl);
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Name = "ServerListControl";
+ this.Size = new System.Drawing.Size(680, 340);
+ ((System.ComponentModel.ISupportInitialize)(this.serversGridControl)).EndInit();
+ this.contextMenuStrip.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.serversGridView)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraGrid.GridControl serversGridControl;
+ private DevExpress.XtraGrid.Views.Grid.GridView serversGridView;
+ private DevExpress.XtraBars.BarManager barManager1;
+ private DevExpress.XtraBars.Bar bar2;
+ private DevExpress.XtraBars.BarButtonItem addServerButtonItem;
+ private DevExpress.XtraBars.BarButtonItem removeServerButtonItem;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ private DevExpress.XtraGrid.Columns.GridColumn serverGridColumn;
+ private DevExpress.XtraBars.BarStaticItem statusTextItem;
+ private DevExpress.XtraBars.BarEditItem statusProgressItem;
+ private DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar repositoryItemMarqueeProgressBar1;
+ private DevExpress.XtraBars.BarButtonItem editServerButtonItem;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
+ private System.Windows.Forms.ToolStripMenuItem editServerMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem removeServerMenuItem;
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/ServerListControl.cs b/JenkinsTray/UI/Controls/ServerListControl.cs
similarity index 93%
rename from HudsonTrayTracker/UI/Controls/ServerListControl.cs
rename to JenkinsTray/UI/Controls/ServerListControl.cs
index ef8b827..e49e092 100644
--- a/HudsonTrayTracker/UI/Controls/ServerListControl.cs
+++ b/JenkinsTray/UI/Controls/ServerListControl.cs
@@ -1,135 +1,135 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.BusinessComponents;
-using Hudson.TrayTracker.Entities;
-using DevExpress.XtraBars;
-using Hudson.TrayTracker.Utils.BackgroundProcessing;
-using Spring.Context.Support;
-
-namespace Hudson.TrayTracker.UI.Controls
-{
- public partial class ServerListControl : DevExpress.XtraEditors.XtraUserControl
- {
- BindingList serversDataSource;
-
- bool initialized;
-
- public ServersSettingsController Controller { get; set; }
- public ConfigurationService ConfigurationService { get; set; }
-
- public ServerListControl()
- {
- InitializeComponent();
- }
-
- public void Initialize()
- {
- serversDataSource = new BindingList();
- foreach (Server server in ConfigurationService.Servers)
- serversDataSource.Add(server);
- serversGridControl.DataSource = serversDataSource;
-
- initialized = true;
-
- serversGridView_FocusedRowChanged(null, null);
- }
-
- private void addServerButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- EditServerForm namingForm = new EditServerForm();
- if (namingForm.ShowDialog() != DialogResult.OK)
- return;
-
- Server server = ConfigurationService.AddServer(
- namingForm.ServerAddress, namingForm.ServerName,
- namingForm.Username, namingForm.Password,
- namingForm.IgnoreUntrustedCertificate);
- if (server == null)
- return;
-
- serversDataSource.Add(server);
- }
-
- private void editServerButtonItem_ItemClick(object sender, ItemClickEventArgs e)
- {
- EditSelectedServer();
- }
- private void editServerMenuItem_Click(object sender, EventArgs e)
- {
- EditSelectedServer();
- }
- private void EditSelectedServer()
- {
- Server server = GetSelectedServer();
- if (server == null)
- return;
-
- EditServerForm namingForm = new EditServerForm(server);
- if (namingForm.ShowDialog() != DialogResult.OK)
- return;
-
- ConfigurationService.UpdateServer(server,
- namingForm.ServerAddress, namingForm.ServerName,
- namingForm.Username, namingForm.Password,
- namingForm.IgnoreUntrustedCertificate);
-
- serversGridView.RefreshData();
- Controller.UpdateProjectList(server);
- }
-
- private void removeServerButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- RemoveSelectedServer();
- }
- private void removeServerMenuItem_Click(object sender, EventArgs e)
- {
- RemoveSelectedServer();
- }
- private void RemoveSelectedServer()
- {
- Server server = GetSelectedServer();
- if (server == null)
- return;
-
- serversDataSource.Remove(server);
- ConfigurationService.RemoveServer(server);
- }
-
- private void serversGridView_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
- {
- if (initialized == false)
- return;
-
- Server server = GetSelectedServer();
-
- // update the toolbar
- editServerButtonItem.Enabled
- = removeServerButtonItem.Enabled
- = server != null;
-
- // update the project list
- Controller.UpdateProjectList(server);
- }
-
- private Server GetSelectedServer()
- {
- object row = serversGridView.GetFocusedRow();
- Server server = row as Server;
- return server;
- }
-
- private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
- {
- Server server = GetSelectedServer();
- editServerMenuItem.Enabled
- = removeServerMenuItem.Enabled
- = (server != null);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.BusinessComponents;
+using Jenkins.Tray.Entities;
+using DevExpress.XtraBars;
+using Jenkins.Tray.Utils.BackgroundProcessing;
+using Spring.Context.Support;
+
+namespace Jenkins.Tray.UI.Controls
+{
+ public partial class ServerListControl : DevExpress.XtraEditors.XtraUserControl
+ {
+ BindingList serversDataSource;
+
+ bool initialized;
+
+ public ServersSettingsController Controller { get; set; }
+ public ConfigurationService ConfigurationService { get; set; }
+
+ public ServerListControl()
+ {
+ InitializeComponent();
+ }
+
+ public void Initialize()
+ {
+ serversDataSource = new BindingList();
+ foreach (Server server in ConfigurationService.Servers)
+ serversDataSource.Add(server);
+ serversGridControl.DataSource = serversDataSource;
+
+ initialized = true;
+
+ serversGridView_FocusedRowChanged(null, null);
+ }
+
+ private void addServerButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ EditServerForm namingForm = new EditServerForm();
+ if (namingForm.ShowDialog() != DialogResult.OK)
+ return;
+
+ Server server = ConfigurationService.AddServer(
+ namingForm.ServerAddress, namingForm.ServerName,
+ namingForm.Username, namingForm.Password,
+ namingForm.IgnoreUntrustedCertificate);
+ if (server == null)
+ return;
+
+ serversDataSource.Add(server);
+ }
+
+ private void editServerButtonItem_ItemClick(object sender, ItemClickEventArgs e)
+ {
+ EditSelectedServer();
+ }
+ private void editServerMenuItem_Click(object sender, EventArgs e)
+ {
+ EditSelectedServer();
+ }
+ private void EditSelectedServer()
+ {
+ Server server = GetSelectedServer();
+ if (server == null)
+ return;
+
+ EditServerForm namingForm = new EditServerForm(server);
+ if (namingForm.ShowDialog() != DialogResult.OK)
+ return;
+
+ ConfigurationService.UpdateServer(server,
+ namingForm.ServerAddress, namingForm.ServerName,
+ namingForm.Username, namingForm.Password,
+ namingForm.IgnoreUntrustedCertificate);
+
+ serversGridView.RefreshData();
+ Controller.UpdateProjectList(server);
+ }
+
+ private void removeServerButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ RemoveSelectedServer();
+ }
+ private void removeServerMenuItem_Click(object sender, EventArgs e)
+ {
+ RemoveSelectedServer();
+ }
+ private void RemoveSelectedServer()
+ {
+ Server server = GetSelectedServer();
+ if (server == null)
+ return;
+
+ serversDataSource.Remove(server);
+ ConfigurationService.RemoveServer(server);
+ }
+
+ private void serversGridView_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
+ {
+ if (initialized == false)
+ return;
+
+ Server server = GetSelectedServer();
+
+ // update the toolbar
+ editServerButtonItem.Enabled
+ = removeServerButtonItem.Enabled
+ = server != null;
+
+ // update the project list
+ Controller.UpdateProjectList(server);
+ }
+
+ private Server GetSelectedServer()
+ {
+ object row = serversGridView.GetFocusedRow();
+ Server server = row as Server;
+ return server;
+ }
+
+ private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
+ {
+ Server server = GetSelectedServer();
+ editServerMenuItem.Enabled
+ = removeServerMenuItem.Enabled
+ = (server != null);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/ServerListControl.resx b/JenkinsTray/UI/Controls/ServerListControl.resx
similarity index 98%
rename from HudsonTrayTracker/UI/Controls/ServerListControl.resx
rename to JenkinsTray/UI/Controls/ServerListControl.resx
index c4c5ce0..3455835 100644
--- a/HudsonTrayTracker/UI/Controls/ServerListControl.resx
+++ b/JenkinsTray/UI/Controls/ServerListControl.resx
@@ -1,204 +1,204 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- 134, 17
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
- CxEBf2RfkQAAAd9JREFUOE+lk89L02Ecx7/RvYOH/oYukQg7VHdhBwUhsVMNZSEkkZlZ4I+iWoUTQwu2
- 0MyFa7OJU5vbUFGX5ZimZWWlgjLdd7YgD5KNbe3VnkesZGbJDu/Tw+v1+fE8jwIomWTPsK+2VNtVdgqR
- wSv67P8WNDi+7O9qq8sV4GLjeV5f2pQoqQPqOyMyd2wRrlk+U9Wyytl7YXRGlUJDiNMNKnXmAAPOGhye
- AG9uVkj4rkazKbA8h9bhJKaBBE39ceqdMW48jVJtjXLVus5D5wxeRwVfl4x8GivDYKiR8PWjR/KlwCiq
- 2yPUpqqXm1cpaVQ5eSuEvknlvv0Vbqtewh+Gi+l9oOVg1gHOFB7KFstXnvRPkkgm0rIejeOfeo/rUVEa
- XFl8+PjWzf0SjATm2YoQPvOO0teStyu8awem1seMu28TnLr4u+0L1UzMhvb9+W62dTDkn8M79pHvsThC
- kEz+wN5cIGe29XjI011OsdsfXtoOBLz2Lc658koKThSltqTg8s3Q3jvBsfzSdEG786VcoKjsGpmle/At
- 6lqMjr5p2ronZfzzG5g6x3cWmG1DUrCihlkIhnm3oIo5GZ1ewRNYpufFMg5f8O+CZoubnFwdGm3JP7Pj
- CJn8RHmNmQp+AtlH74dZMIHrAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
- CxEBf2RfkQAAAitJREFUOE9j+P//P4OXp6eBh5fnHg9PTycvL08mkBixmMHR0YXZ2cU1HUj/d3J2/ubt
- 5R3o7ePNjM0AK1sHlqDAACV3d7c8mDzIABYgTrKzd9pmbmn7397B5Y+Hh2eVrzeqISqahhzW9k5O3l5e
- 3x0cnObADQAxgAZIArGFg6PLNisb+/929g7//X29N/r6+nCD5E0tbDndPT1X2No7/TY1Ne/W0jPhQTEA
- xgEawgbEBfYOzr/t7Jz++/j6LrO0stezsrKbbGtj81/P0GSympYBP7L3MALL2taW0d7eSRPopfNm5tb/
- jYzNvhsaG71X09Jdp6yuy4keNjhDW9/AxEFP3+SnpZXtfz19o3sKyppC2AIWqwHGJiYKauo6l3T1DP8B
- DfpvYmrxX0tb9xZRBhgamcqraWhfBRrwR0NTe42ImKSJnLzKNgND4/+q6tqZeL2goa0rIaugfEpOUfU/
- 0PZDkhJSQjx8fNz8QiLc8kpq0w0MjL+oahnIYg1EDQMLDjlFtUUS0oofdXQNn2jr6mvBFPIICHBwcnLz
- 6eobnpWUUZgko6gGT2jwMJCSVfAWk1D4r6qm/V9FTaOVk5sXnAZgmIWFmQkorqKionqfV0BQXl3XBJzk
- wQoEBITYRETEWoWExf/LKyjv4uDiUePhE8DIEwICgsxmZpaTuXm5TNX1zBEGgAyRkVc1YmVjn8jAyGTH
- zMLCiyszMTAwsDAxMXFhTYnE5kC8KZFUQwAsbBHh5aTRYwAAAABJRU5ErkJggg==
-
-
-
- 17, 17
-
-
-
- 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
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 134, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
+ CxEBf2RfkQAAAd9JREFUOE+lk89L02Ecx7/RvYOH/oYukQg7VHdhBwUhsVMNZSEkkZlZ4I+iWoUTQwu2
+ 0MyFa7OJU5vbUFGX5ZimZWWlgjLdd7YgD5KNbe3VnkesZGbJDu/Tw+v1+fE8jwIomWTPsK+2VNtVdgqR
+ wSv67P8WNDi+7O9qq8sV4GLjeV5f2pQoqQPqOyMyd2wRrlk+U9Wyytl7YXRGlUJDiNMNKnXmAAPOGhye
+ AG9uVkj4rkazKbA8h9bhJKaBBE39ceqdMW48jVJtjXLVus5D5wxeRwVfl4x8GivDYKiR8PWjR/KlwCiq
+ 2yPUpqqXm1cpaVQ5eSuEvknlvv0Vbqtewh+Gi+l9oOVg1gHOFB7KFstXnvRPkkgm0rIejeOfeo/rUVEa
+ XFl8+PjWzf0SjATm2YoQPvOO0teStyu8awem1seMu28TnLr4u+0L1UzMhvb9+W62dTDkn8M79pHvsThC
+ kEz+wN5cIGe29XjI011OsdsfXtoOBLz2Lc658koKThSltqTg8s3Q3jvBsfzSdEG786VcoKjsGpmle/At
+ 6lqMjr5p2ronZfzzG5g6x3cWmG1DUrCihlkIhnm3oIo5GZ1ewRNYpufFMg5f8O+CZoubnFwdGm3JP7Pj
+ CJn8RHmNmQp+AtlH74dZMIHrAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALEQAA
+ CxEBf2RfkQAAAitJREFUOE9j+P//P4OXp6eBh5fnHg9PTycvL08mkBixmMHR0YXZ2cU1HUj/d3J2/ubt
+ 5R3o7ePNjM0AK1sHlqDAACV3d7c8mDzIABYgTrKzd9pmbmn7397B5Y+Hh2eVrzeqISqahhzW9k5O3l5e
+ 3x0cnObADQAxgAZIArGFg6PLNisb+/929g7//X29N/r6+nCD5E0tbDndPT1X2No7/TY1Ne/W0jPhQTEA
+ xgEawgbEBfYOzr/t7Jz++/j6LrO0stezsrKbbGtj81/P0GSympYBP7L3MALL2taW0d7eSRPopfNm5tb/
+ jYzNvhsaG71X09Jdp6yuy4keNjhDW9/AxEFP3+SnpZXtfz19o3sKyppC2AIWqwHGJiYKauo6l3T1DP8B
+ DfpvYmrxX0tb9xZRBhgamcqraWhfBRrwR0NTe42ImKSJnLzKNgND4/+q6tqZeL2goa0rIaugfEpOUfU/
+ 0PZDkhJSQjx8fNz8QiLc8kpq0w0MjL+oahnIYg1EDQMLDjlFtUUS0oofdXQNn2jr6mvBFPIICHBwcnLz
+ 6eobnpWUUZgko6gGT2jwMJCSVfAWk1D4r6qm/V9FTaOVk5sXnAZgmIWFmQkorqKionqfV0BQXl3XBJzk
+ wQoEBITYRETEWoWExf/LKyjv4uDiUePhE8DIEwICgsxmZpaTuXm5TNX1zBEGgAyRkVc1YmVjn8jAyGTH
+ zMLCiyszMTAwsDAxMXFhTYnE5kC8KZFUQwAsbBHh5aTRYwAAAABJRU5ErkJggg==
+
+
+
+ 17, 17
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/ServersSettingsControl.Designer.cs b/JenkinsTray/UI/Controls/ServersSettingsControl.Designer.cs
similarity index 95%
rename from HudsonTrayTracker/UI/Controls/ServersSettingsControl.Designer.cs
rename to JenkinsTray/UI/Controls/ServersSettingsControl.Designer.cs
index 94b89a5..02a8fd1 100644
--- a/HudsonTrayTracker/UI/Controls/ServersSettingsControl.Designer.cs
+++ b/JenkinsTray/UI/Controls/ServersSettingsControl.Designer.cs
@@ -1,166 +1,166 @@
-namespace Hudson.TrayTracker.UI.Controls
-{
- partial class ServersSettingsControl
- {
- ///
- /// 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.components = new System.ComponentModel.Container();
- this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
- this.bar1 = new DevExpress.XtraBars.Bar();
- this.statusProgressItem = new DevExpress.XtraBars.BarEditItem();
- this.repositoryItemMarqueeProgressBar1 = new DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar();
- this.statusTextItem = new DevExpress.XtraBars.BarStaticItem();
- this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
- this.splitContainerControl1 = new DevExpress.XtraEditors.SplitContainerControl();
- this.serverListControl = new Hudson.TrayTracker.UI.Controls.ServerListControl();
- this.projectListControl = new Hudson.TrayTracker.UI.Controls.ProjectListControl();
- ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit();
- this.splitContainerControl1.SuspendLayout();
- this.SuspendLayout();
- //
- // barManager1
- //
- this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
- this.bar1});
- this.barManager1.DockControls.Add(this.barDockControlTop);
- this.barManager1.DockControls.Add(this.barDockControlBottom);
- this.barManager1.DockControls.Add(this.barDockControlLeft);
- this.barManager1.DockControls.Add(this.barDockControlRight);
- this.barManager1.Form = this;
- this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
- this.statusTextItem,
- this.statusProgressItem});
- this.barManager1.MaxItemId = 5;
- this.barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
- this.repositoryItemMarqueeProgressBar1});
- this.barManager1.StatusBar = this.bar1;
- //
- // bar1
- //
- this.bar1.BarName = "Status bar";
- this.bar1.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
- this.bar1.DockCol = 0;
- this.bar1.DockRow = 0;
- this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
- this.bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.Width, this.statusProgressItem, "", false, true, true, 50),
- new DevExpress.XtraBars.LinkPersistInfo(this.statusTextItem)});
- this.bar1.OptionsBar.AllowQuickCustomization = false;
- this.bar1.OptionsBar.AllowRename = true;
- this.bar1.OptionsBar.DrawDragBorder = false;
- this.bar1.OptionsBar.UseWholeRow = true;
- this.bar1.Text = "Status bar";
- //
- // statusProgressItem
- //
- this.statusProgressItem.Edit = this.repositoryItemMarqueeProgressBar1;
- this.statusProgressItem.Id = 3;
- this.statusProgressItem.Name = "statusProgressItem";
- //
- // repositoryItemMarqueeProgressBar1
- //
- this.repositoryItemMarqueeProgressBar1.Name = "repositoryItemMarqueeProgressBar1";
- //
- // statusTextItem
- //
- this.statusTextItem.Id = 2;
- this.statusTextItem.Name = "statusTextItem";
- this.statusTextItem.TextAlignment = System.Drawing.StringAlignment.Near;
- //
- // splitContainerControl1
- //
- this.splitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.splitContainerControl1.Location = new System.Drawing.Point(0, 0);
- this.splitContainerControl1.Name = "splitContainerControl1";
- this.splitContainerControl1.Panel1.Controls.Add(this.serverListControl);
- this.splitContainerControl1.Panel1.Text = "Panel1";
- this.splitContainerControl1.Panel2.Controls.Add(this.projectListControl);
- this.splitContainerControl1.Panel2.Text = "Panel2";
- this.splitContainerControl1.Size = new System.Drawing.Size(680, 317);
- this.splitContainerControl1.SplitterPosition = 307;
- this.splitContainerControl1.TabIndex = 5;
- this.splitContainerControl1.Text = "splitContainerControl1";
- //
- // serverListControl
- //
- this.serverListControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.serverListControl.Controller = null;
- this.serverListControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.serverListControl.Location = new System.Drawing.Point(0, 0);
- this.serverListControl.Name = "serverListControl";
- this.serverListControl.Size = new System.Drawing.Size(303, 313);
- this.serverListControl.TabIndex = 0;
- //
- // projectListControl
- //
- this.projectListControl.Controller = null;
- this.projectListControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.projectListControl.Location = new System.Drawing.Point(0, 0);
- this.projectListControl.Name = "projectListControl";
- this.projectListControl.Size = new System.Drawing.Size(363, 313);
- this.projectListControl.TabIndex = 0;
- //
- // ServersSettingsControl
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.Controls.Add(this.splitContainerControl1);
- this.Controls.Add(this.barDockControlLeft);
- this.Controls.Add(this.barDockControlRight);
- this.Controls.Add(this.barDockControlBottom);
- this.Controls.Add(this.barDockControlTop);
- this.Name = "ServersSettingsControl";
- this.Size = new System.Drawing.Size(680, 340);
- ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).EndInit();
- this.splitContainerControl1.ResumeLayout(false);
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private DevExpress.XtraBars.BarManager barManager1;
- private DevExpress.XtraBars.BarDockControl barDockControlTop;
- private DevExpress.XtraBars.BarDockControl barDockControlBottom;
- private DevExpress.XtraBars.BarDockControl barDockControlLeft;
- private DevExpress.XtraBars.BarDockControl barDockControlRight;
- private DevExpress.XtraBars.Bar bar1;
- private DevExpress.XtraBars.BarStaticItem statusTextItem;
- private DevExpress.XtraBars.BarEditItem statusProgressItem;
- private DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar repositoryItemMarqueeProgressBar1;
- private DevExpress.XtraEditors.SplitContainerControl splitContainerControl1;
- private ServerListControl serverListControl;
- private ProjectListControl projectListControl;
- }
+namespace Jenkins.Tray.UI.Controls
+{
+ partial class ServersSettingsControl
+ {
+ ///
+ /// 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.components = new System.ComponentModel.Container();
+ this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
+ this.bar1 = new DevExpress.XtraBars.Bar();
+ this.statusProgressItem = new DevExpress.XtraBars.BarEditItem();
+ this.repositoryItemMarqueeProgressBar1 = new DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar();
+ this.statusTextItem = new DevExpress.XtraBars.BarStaticItem();
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.splitContainerControl1 = new DevExpress.XtraEditors.SplitContainerControl();
+ this.serverListControl = new Jenkins.Tray.UI.Controls.ServerListControl();
+ this.projectListControl = new Jenkins.Tray.UI.Controls.ProjectListControl();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).BeginInit();
+ this.splitContainerControl1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // barManager1
+ //
+ this.barManager1.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+ this.bar1});
+ this.barManager1.DockControls.Add(this.barDockControlTop);
+ this.barManager1.DockControls.Add(this.barDockControlBottom);
+ this.barManager1.DockControls.Add(this.barDockControlLeft);
+ this.barManager1.DockControls.Add(this.barDockControlRight);
+ this.barManager1.Form = this;
+ this.barManager1.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.statusTextItem,
+ this.statusProgressItem});
+ this.barManager1.MaxItemId = 5;
+ this.barManager1.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
+ this.repositoryItemMarqueeProgressBar1});
+ this.barManager1.StatusBar = this.bar1;
+ //
+ // bar1
+ //
+ this.bar1.BarName = "Status bar";
+ this.bar1.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+ this.bar1.DockCol = 0;
+ this.bar1.DockRow = 0;
+ this.bar1.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+ this.bar1.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.Width, this.statusProgressItem, "", false, true, true, 50),
+ new DevExpress.XtraBars.LinkPersistInfo(this.statusTextItem)});
+ this.bar1.OptionsBar.AllowQuickCustomization = false;
+ this.bar1.OptionsBar.AllowRename = true;
+ this.bar1.OptionsBar.DrawDragBorder = false;
+ this.bar1.OptionsBar.UseWholeRow = true;
+ this.bar1.Text = "Status bar";
+ //
+ // statusProgressItem
+ //
+ this.statusProgressItem.Edit = this.repositoryItemMarqueeProgressBar1;
+ this.statusProgressItem.Id = 3;
+ this.statusProgressItem.Name = "statusProgressItem";
+ //
+ // repositoryItemMarqueeProgressBar1
+ //
+ this.repositoryItemMarqueeProgressBar1.Name = "repositoryItemMarqueeProgressBar1";
+ //
+ // statusTextItem
+ //
+ this.statusTextItem.Id = 2;
+ this.statusTextItem.Name = "statusTextItem";
+ this.statusTextItem.TextAlignment = System.Drawing.StringAlignment.Near;
+ //
+ // splitContainerControl1
+ //
+ this.splitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainerControl1.Location = new System.Drawing.Point(0, 0);
+ this.splitContainerControl1.Name = "splitContainerControl1";
+ this.splitContainerControl1.Panel1.Controls.Add(this.serverListControl);
+ this.splitContainerControl1.Panel1.Text = "Panel1";
+ this.splitContainerControl1.Panel2.Controls.Add(this.projectListControl);
+ this.splitContainerControl1.Panel2.Text = "Panel2";
+ this.splitContainerControl1.Size = new System.Drawing.Size(680, 317);
+ this.splitContainerControl1.SplitterPosition = 307;
+ this.splitContainerControl1.TabIndex = 5;
+ this.splitContainerControl1.Text = "splitContainerControl1";
+ //
+ // serverListControl
+ //
+ this.serverListControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.serverListControl.Controller = null;
+ this.serverListControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.serverListControl.Location = new System.Drawing.Point(0, 0);
+ this.serverListControl.Name = "serverListControl";
+ this.serverListControl.Size = new System.Drawing.Size(303, 313);
+ this.serverListControl.TabIndex = 0;
+ //
+ // projectListControl
+ //
+ this.projectListControl.Controller = null;
+ this.projectListControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.projectListControl.Location = new System.Drawing.Point(0, 0);
+ this.projectListControl.Name = "projectListControl";
+ this.projectListControl.Size = new System.Drawing.Size(363, 313);
+ this.projectListControl.TabIndex = 0;
+ //
+ // ServersSettingsControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.splitContainerControl1);
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Name = "ServersSettingsControl";
+ this.Size = new System.Drawing.Size(680, 340);
+ ((System.ComponentModel.ISupportInitialize)(this.barManager1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemMarqueeProgressBar1)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.splitContainerControl1)).EndInit();
+ this.splitContainerControl1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraBars.BarManager barManager1;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ private DevExpress.XtraBars.Bar bar1;
+ private DevExpress.XtraBars.BarStaticItem statusTextItem;
+ private DevExpress.XtraBars.BarEditItem statusProgressItem;
+ private DevExpress.XtraEditors.Repository.RepositoryItemMarqueeProgressBar repositoryItemMarqueeProgressBar1;
+ private DevExpress.XtraEditors.SplitContainerControl splitContainerControl1;
+ private ServerListControl serverListControl;
+ private ProjectListControl projectListControl;
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/ServersSettingsControl.cs b/JenkinsTray/UI/Controls/ServersSettingsControl.cs
similarity index 92%
rename from HudsonTrayTracker/UI/Controls/ServersSettingsControl.cs
rename to JenkinsTray/UI/Controls/ServersSettingsControl.cs
index 16dff01..c626cac 100644
--- a/HudsonTrayTracker/UI/Controls/ServersSettingsControl.cs
+++ b/JenkinsTray/UI/Controls/ServersSettingsControl.cs
@@ -1,35 +1,35 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-
-namespace Hudson.TrayTracker.UI.Controls
-{
- public partial class ServersSettingsControl : DevExpress.XtraEditors.XtraUserControl
- {
- ServersSettingsController controller;
-
- public ServersSettingsControl()
- {
- InitializeComponent();
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
-
- // designer mode
- if (DesignMode)
- return;
-
- controller = new ServersSettingsController(serverListControl, projectListControl,
- statusTextItem, statusProgressItem);
- serverListControl.Controller = controller;
- projectListControl.Controller = controller;
- controller.Initialize();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Jenkins.Tray.UI.Controls
+{
+ public partial class ServersSettingsControl : DevExpress.XtraEditors.XtraUserControl
+ {
+ ServersSettingsController controller;
+
+ public ServersSettingsControl()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+
+ // designer mode
+ if (DesignMode)
+ return;
+
+ controller = new ServersSettingsController(serverListControl, projectListControl,
+ statusTextItem, statusProgressItem);
+ serverListControl.Controller = controller;
+ projectListControl.Controller = controller;
+ controller.Initialize();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/Controls/ServersSettingsControl.resx b/JenkinsTray/UI/Controls/ServersSettingsControl.resx
similarity index 97%
rename from HudsonTrayTracker/UI/Controls/ServersSettingsControl.resx
rename to JenkinsTray/UI/Controls/ServersSettingsControl.resx
index f0bafaa..14f7d9b 100644
--- a/HudsonTrayTracker/UI/Controls/ServersSettingsControl.resx
+++ b/JenkinsTray/UI/Controls/ServersSettingsControl.resx
@@ -1,123 +1,123 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- 17, 17
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 17, 17
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/Controls/ServersSettingsController.cs b/JenkinsTray/UI/Controls/ServersSettingsController.cs
similarity index 81%
rename from HudsonTrayTracker/UI/Controls/ServersSettingsController.cs
rename to JenkinsTray/UI/Controls/ServersSettingsController.cs
index 3e502a2..b268547 100644
--- a/HudsonTrayTracker/UI/Controls/ServersSettingsController.cs
+++ b/JenkinsTray/UI/Controls/ServersSettingsController.cs
@@ -1,56 +1,56 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Hudson.TrayTracker.BusinessComponents;
-using Spring.Context.Support;
-using Hudson.TrayTracker.Entities;
-using DevExpress.XtraBars;
-
-namespace Hudson.TrayTracker.UI.Controls
-{
- public class ServersSettingsController
- {
- ConfigurationService configurationService;
- HudsonService hudsonService;
-
- ServerListControl serverListControl;
- ProjectListControl projectListControl;
- BarStaticItem statusTextItem;
- BarEditItem statusProgressItem;
-
- public ServersSettingsController(ServerListControl serverListControl,
- ProjectListControl projectListControl,
- BarStaticItem statusTextItem,
- BarEditItem statusProgressItem)
- {
- this.serverListControl = serverListControl;
- this.projectListControl = projectListControl;
- this.statusTextItem = statusTextItem;
- this.statusProgressItem = statusProgressItem;
-
- configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
- hudsonService = (HudsonService)ContextRegistry.GetContext().GetObject("HudsonService");
- serverListControl.ConfigurationService = configurationService;
- projectListControl.ConfigurationService = configurationService;
- projectListControl.HudsonService = hudsonService;
- }
-
- public void Initialize()
- {
- serverListControl.Initialize();
- projectListControl.Initialize();
- }
-
- public void UpdateProjectList(Server server)
- {
- projectListControl.UpdateProjectList(server);
- }
-
- internal void SetStatus(string status, bool updating)
- {
- statusTextItem.Caption = status;
- statusProgressItem.Visibility = updating ? BarItemVisibility.Always : BarItemVisibility.Never;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Jenkins.Tray.BusinessComponents;
+using Spring.Context.Support;
+using Jenkins.Tray.Entities;
+using DevExpress.XtraBars;
+
+namespace Jenkins.Tray.UI.Controls
+{
+ public class ServersSettingsController
+ {
+ ConfigurationService configurationService;
+ JenkinsService jenkinsService;
+
+ ServerListControl serverListControl;
+ ProjectListControl projectListControl;
+ BarStaticItem statusTextItem;
+ BarEditItem statusProgressItem;
+
+ public ServersSettingsController(ServerListControl serverListControl,
+ ProjectListControl projectListControl,
+ BarStaticItem statusTextItem,
+ BarEditItem statusProgressItem)
+ {
+ this.serverListControl = serverListControl;
+ this.projectListControl = projectListControl;
+ this.statusTextItem = statusTextItem;
+ this.statusProgressItem = statusProgressItem;
+
+ configurationService = (ConfigurationService)ContextRegistry.GetContext().GetObject("ConfigurationService");
+ jenkinsService = (JenkinsService)ContextRegistry.GetContext().GetObject("JenkinsService");
+ serverListControl.ConfigurationService = configurationService;
+ projectListControl.ConfigurationService = configurationService;
+ projectListControl.JenkinsService = jenkinsService;
+ }
+
+ public void Initialize()
+ {
+ serverListControl.Initialize();
+ projectListControl.Initialize();
+ }
+
+ public void UpdateProjectList(Server server)
+ {
+ projectListControl.UpdateProjectList(server);
+ }
+
+ internal void SetStatus(string status, bool updating)
+ {
+ statusTextItem.Caption = status;
+ statusProgressItem.Visibility = updating ? BarItemVisibility.Always : BarItemVisibility.Never;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/EditServerForm.cs b/JenkinsTray/UI/EditServerForm.cs
similarity index 95%
rename from HudsonTrayTracker/UI/EditServerForm.cs
rename to JenkinsTray/UI/EditServerForm.cs
index 4031371..29aa422 100644
--- a/HudsonTrayTracker/UI/EditServerForm.cs
+++ b/JenkinsTray/UI/EditServerForm.cs
@@ -1,122 +1,122 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.Entities;
-
-namespace Hudson.TrayTracker.UI
-{
- public partial class EditServerForm : DevExpress.XtraEditors.XtraForm
- {
- public EditServerForm()
- {
- InitializeComponent();
- urlTextBox.TextChanged += delegate { ValidateForm(); };
- }
-
- public EditServerForm(Server server)
- : this()
- {
- ServerAddress = server.Url;
- ServerName = server.DisplayName;
- IgnoreUntrustedCertificate = server.IgnoreUntrustedCertificate;
- if (server.Credentials != null)
- {
- RequiresAuthentication = true;
- Username = server.Credentials.Username;
- Password = server.Credentials.Password;
- }
- }
-
- public string ServerAddress
- {
- get { return urlTextBox.Text; }
- set { urlTextBox.Text = value; }
- }
-
- public string ServerName
- {
- get { return displayNameTextEdit.Text; }
- set { displayNameTextEdit.Text = value; }
- }
-
- public bool RequiresAuthentication
- {
- get { return authenticationCheckBox.CheckState == CheckState.Checked; }
- set { authenticationCheckBox.CheckState = value ? CheckState.Checked : CheckState.Unchecked; }
- }
-
- public string Username
- {
- get
- {
- if (RequiresAuthentication == false)
- return null;
- return usernameTextBox.Text;
- }
- set { usernameTextBox.Text = value; }
- }
-
- public string Password
- {
- get
- {
- if (RequiresAuthentication == false)
- return null;
- return passwordTextBox.Text;
- }
- set { passwordTextBox.Text = value; }
- }
-
- public bool IgnoreUntrustedCertificate
- {
- get { return ignoreUntrustedCertificateCheckBox.CheckState == CheckState.Checked; }
- set { ignoreUntrustedCertificateCheckBox.CheckState = value ? CheckState.Checked : CheckState.Unchecked; }
- }
-
- protected virtual bool IsUrlValid(string url)
- {
- url = url.Trim();
- bool valid = String.IsNullOrEmpty(url) == false && url != "http://" && url != "https://";
- return valid;
- }
-
- private void ValidateForm()
- {
- string url = urlTextBox.Text;
- bool nameValid = IsUrlValid(url);
-
- validateButton.Enabled = nameValid;
- }
-
- private void authenticationCheckBox_CheckStateChanged(object sender, EventArgs e)
- {
- usernameLabel.Enabled
- = usernameTextBox.Enabled
- = passwordLabel.Enabled
- = passwordTextBox.Enabled
- = RequiresAuthentication;
- }
-
- private void urlTextBox_Leave(object sender, EventArgs e)
- {
- string url = ServerAddress;
- if (String.IsNullOrEmpty(url) == false
- && url.StartsWith("http://") == false
- && url.StartsWith("https://") == false)
- {
- ServerAddress = "http://" + url;
- }
- }
-
- private void EditServerForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- urlTextBox_Leave(null, null);
- }
- }
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+using DevExpress.XtraEditors;
+using Jenkins.Tray.Entities;
+
+namespace Jenkins.Tray.UI
+{
+ public partial class EditServerForm : DevExpress.XtraEditors.XtraForm
+ {
+ public EditServerForm()
+ {
+ InitializeComponent();
+ urlTextBox.TextChanged += delegate { ValidateForm(); };
+ }
+
+ public EditServerForm(Server server)
+ : this()
+ {
+ ServerAddress = server.Url;
+ ServerName = server.DisplayName;
+ IgnoreUntrustedCertificate = server.IgnoreUntrustedCertificate;
+ if (server.Credentials != null)
+ {
+ RequiresAuthentication = true;
+ Username = server.Credentials.Username;
+ Password = server.Credentials.Password;
+ }
+ }
+
+ public string ServerAddress
+ {
+ get { return urlTextBox.Text; }
+ set { urlTextBox.Text = value; }
+ }
+
+ public string ServerName
+ {
+ get { return displayNameTextEdit.Text; }
+ set { displayNameTextEdit.Text = value; }
+ }
+
+ public bool RequiresAuthentication
+ {
+ get { return authenticationCheckBox.CheckState == CheckState.Checked; }
+ set { authenticationCheckBox.CheckState = value ? CheckState.Checked : CheckState.Unchecked; }
+ }
+
+ public string Username
+ {
+ get
+ {
+ if (RequiresAuthentication == false)
+ return null;
+ return usernameTextBox.Text;
+ }
+ set { usernameTextBox.Text = value; }
+ }
+
+ public string Password
+ {
+ get
+ {
+ if (RequiresAuthentication == false)
+ return null;
+ return passwordTextBox.Text;
+ }
+ set { passwordTextBox.Text = value; }
+ }
+
+ public bool IgnoreUntrustedCertificate
+ {
+ get { return ignoreUntrustedCertificateCheckBox.CheckState == CheckState.Checked; }
+ set { ignoreUntrustedCertificateCheckBox.CheckState = value ? CheckState.Checked : CheckState.Unchecked; }
+ }
+
+ protected virtual bool IsUrlValid(string url)
+ {
+ url = url.Trim();
+ bool valid = String.IsNullOrEmpty(url) == false && url != "http://" && url != "https://";
+ return valid;
+ }
+
+ private void ValidateForm()
+ {
+ string url = urlTextBox.Text;
+ bool nameValid = IsUrlValid(url);
+
+ validateButton.Enabled = nameValid;
+ }
+
+ private void authenticationCheckBox_CheckStateChanged(object sender, EventArgs e)
+ {
+ usernameLabel.Enabled
+ = usernameTextBox.Enabled
+ = passwordLabel.Enabled
+ = passwordTextBox.Enabled
+ = RequiresAuthentication;
+ }
+
+ private void urlTextBox_Leave(object sender, EventArgs e)
+ {
+ string url = ServerAddress;
+ if (String.IsNullOrEmpty(url) == false
+ && url.StartsWith("http://") == false
+ && url.StartsWith("https://") == false)
+ {
+ ServerAddress = "http://" + url;
+ }
+ }
+
+ private void EditServerForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ urlTextBox_Leave(null, null);
+ }
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/EditServerForm.designer.cs b/JenkinsTray/UI/EditServerForm.designer.cs
similarity index 97%
rename from HudsonTrayTracker/UI/EditServerForm.designer.cs
rename to JenkinsTray/UI/EditServerForm.designer.cs
index 5652b91..e0329b1 100644
--- a/HudsonTrayTracker/UI/EditServerForm.designer.cs
+++ b/JenkinsTray/UI/EditServerForm.designer.cs
@@ -1,214 +1,214 @@
-namespace Hudson.TrayTracker.UI
-{
- partial class EditServerForm
- {
- ///
- /// 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()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditServerForm));
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.displayNameTextEdit = new DevExpress.XtraEditors.TextEdit();
- this.urlTextBox = new DevExpress.XtraEditors.TextEdit();
- this.displayNameLabel = new DevExpress.XtraEditors.LabelControl();
- this.urlLabel = new DevExpress.XtraEditors.LabelControl();
- this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
- this.validateButton = new DevExpress.XtraEditors.SimpleButton();
- this.cancelButton = new DevExpress.XtraEditors.SimpleButton();
- this.authenticationCheckBox = new DevExpress.XtraEditors.CheckEdit();
- this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
- this.usernameTextBox = new DevExpress.XtraEditors.TextEdit();
- this.passwordTextBox = new DevExpress.XtraEditors.TextEdit();
- this.passwordLabel = new DevExpress.XtraEditors.LabelControl();
- this.usernameLabel = new DevExpress.XtraEditors.LabelControl();
- this.ignoreUntrustedCertificateCheckBox = new DevExpress.XtraEditors.CheckEdit();
- this.tableLayoutPanel1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.displayNameTextEdit.Properties)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.urlTextBox.Properties)).BeginInit();
- this.tableLayoutPanel2.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.authenticationCheckBox.Properties)).BeginInit();
- this.tableLayoutPanel3.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.usernameTextBox.Properties)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.passwordTextBox.Properties)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.ignoreUntrustedCertificateCheckBox.Properties)).BeginInit();
- this.SuspendLayout();
- //
- // tableLayoutPanel1
- //
- resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
- this.tableLayoutPanel1.Controls.Add(this.displayNameTextEdit, 1, 1);
- this.tableLayoutPanel1.Controls.Add(this.urlTextBox, 1, 0);
- this.tableLayoutPanel1.Controls.Add(this.displayNameLabel, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.urlLabel, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 6);
- this.tableLayoutPanel1.Controls.Add(this.authenticationCheckBox, 0, 3);
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 4);
- this.tableLayoutPanel1.Controls.Add(this.ignoreUntrustedCertificateCheckBox, 0, 5);
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- //
- // displayNameTextEdit
- //
- resources.ApplyResources(this.displayNameTextEdit, "displayNameTextEdit");
- this.displayNameTextEdit.Name = "displayNameTextEdit";
- //
- // urlTextBox
- //
- resources.ApplyResources(this.urlTextBox, "urlTextBox");
- this.urlTextBox.Name = "urlTextBox";
- this.urlTextBox.Leave += new System.EventHandler(this.urlTextBox_Leave);
- //
- // displayNameLabel
- //
- this.displayNameLabel.Appearance.Options.UseTextOptions = true;
- this.displayNameLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
- resources.ApplyResources(this.displayNameLabel, "displayNameLabel");
- this.displayNameLabel.Name = "displayNameLabel";
- //
- // urlLabel
- //
- this.urlLabel.Appearance.Options.UseTextOptions = true;
- this.urlLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
- resources.ApplyResources(this.urlLabel, "urlLabel");
- this.urlLabel.Name = "urlLabel";
- //
- // tableLayoutPanel2
- //
- resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
- this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 2);
- this.tableLayoutPanel2.Controls.Add(this.validateButton, 1, 0);
- this.tableLayoutPanel2.Controls.Add(this.cancelButton, 2, 0);
- this.tableLayoutPanel2.Name = "tableLayoutPanel2";
- //
- // validateButton
- //
- this.validateButton.DialogResult = System.Windows.Forms.DialogResult.OK;
- resources.ApplyResources(this.validateButton, "validateButton");
- this.validateButton.Name = "validateButton";
- //
- // cancelButton
- //
- this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
- resources.ApplyResources(this.cancelButton, "cancelButton");
- this.cancelButton.Name = "cancelButton";
- //
- // authenticationCheckBox
- //
- this.tableLayoutPanel1.SetColumnSpan(this.authenticationCheckBox, 2);
- resources.ApplyResources(this.authenticationCheckBox, "authenticationCheckBox");
- this.authenticationCheckBox.Name = "authenticationCheckBox";
- this.authenticationCheckBox.Properties.AutoWidth = true;
- this.authenticationCheckBox.Properties.Caption = resources.GetString("authenticationCheckBox.Properties.Caption");
- this.authenticationCheckBox.CheckStateChanged += new System.EventHandler(this.authenticationCheckBox_CheckStateChanged);
- //
- // tableLayoutPanel3
- //
- resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
- this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel3, 2);
- this.tableLayoutPanel3.Controls.Add(this.usernameTextBox, 2, 0);
- this.tableLayoutPanel3.Controls.Add(this.passwordTextBox, 2, 1);
- this.tableLayoutPanel3.Controls.Add(this.passwordLabel, 1, 1);
- this.tableLayoutPanel3.Controls.Add(this.usernameLabel, 1, 0);
- this.tableLayoutPanel3.Name = "tableLayoutPanel3";
- //
- // usernameTextBox
- //
- resources.ApplyResources(this.usernameTextBox, "usernameTextBox");
- this.usernameTextBox.Name = "usernameTextBox";
- //
- // passwordTextBox
- //
- resources.ApplyResources(this.passwordTextBox, "passwordTextBox");
- this.passwordTextBox.Name = "passwordTextBox";
- this.passwordTextBox.Properties.PasswordChar = '*';
- //
- // passwordLabel
- //
- this.passwordLabel.Appearance.Options.UseTextOptions = true;
- this.passwordLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
- resources.ApplyResources(this.passwordLabel, "passwordLabel");
- this.passwordLabel.Name = "passwordLabel";
- //
- // usernameLabel
- //
- this.usernameLabel.Appearance.Options.UseTextOptions = true;
- this.usernameLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
- resources.ApplyResources(this.usernameLabel, "usernameLabel");
- this.usernameLabel.Name = "usernameLabel";
- //
- // ignoreUntrustedCertificateCheckBox
- //
- this.tableLayoutPanel1.SetColumnSpan(this.ignoreUntrustedCertificateCheckBox, 2);
- resources.ApplyResources(this.ignoreUntrustedCertificateCheckBox, "ignoreUntrustedCertificateCheckBox");
- this.ignoreUntrustedCertificateCheckBox.Name = "ignoreUntrustedCertificateCheckBox";
- this.ignoreUntrustedCertificateCheckBox.Properties.AutoWidth = true;
- this.ignoreUntrustedCertificateCheckBox.Properties.Caption = resources.GetString("ignoreUntrustedCertificateCheckBox.Properties.Caption");
- //
- // EditServerForm
- //
- this.AcceptButton = this.validateButton;
- resources.ApplyResources(this, "$this");
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.CancelButton = this.cancelButton;
- this.Controls.Add(this.tableLayoutPanel1);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "EditServerForm";
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.EditServerForm_FormClosing);
- this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.displayNameTextEdit.Properties)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.urlTextBox.Properties)).EndInit();
- this.tableLayoutPanel2.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.authenticationCheckBox.Properties)).EndInit();
- this.tableLayoutPanel3.ResumeLayout(false);
- this.tableLayoutPanel3.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.usernameTextBox.Properties)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.passwordTextBox.Properties)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.ignoreUntrustedCertificateCheckBox.Properties)).EndInit();
- this.ResumeLayout(false);
- this.PerformLayout();
-
- }
-
- #endregion
-
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private DevExpress.XtraEditors.TextEdit urlTextBox;
- private DevExpress.XtraEditors.LabelControl urlLabel;
- private DevExpress.XtraEditors.CheckEdit authenticationCheckBox;
- private DevExpress.XtraEditors.TextEdit usernameTextBox;
- private DevExpress.XtraEditors.TextEdit passwordTextBox;
- private DevExpress.XtraEditors.LabelControl usernameLabel;
- private DevExpress.XtraEditors.LabelControl passwordLabel;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
- private DevExpress.XtraEditors.SimpleButton validateButton;
- private DevExpress.XtraEditors.SimpleButton cancelButton;
- private DevExpress.XtraEditors.CheckEdit ignoreUntrustedCertificateCheckBox;
- private DevExpress.XtraEditors.TextEdit displayNameTextEdit;
- private DevExpress.XtraEditors.LabelControl displayNameLabel;
- }
+namespace Jenkins.Tray.UI
+{
+ partial class EditServerForm
+ {
+ ///
+ /// 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()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditServerForm));
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.displayNameTextEdit = new DevExpress.XtraEditors.TextEdit();
+ this.urlTextBox = new DevExpress.XtraEditors.TextEdit();
+ this.displayNameLabel = new DevExpress.XtraEditors.LabelControl();
+ this.urlLabel = new DevExpress.XtraEditors.LabelControl();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.validateButton = new DevExpress.XtraEditors.SimpleButton();
+ this.cancelButton = new DevExpress.XtraEditors.SimpleButton();
+ this.authenticationCheckBox = new DevExpress.XtraEditors.CheckEdit();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this.usernameTextBox = new DevExpress.XtraEditors.TextEdit();
+ this.passwordTextBox = new DevExpress.XtraEditors.TextEdit();
+ this.passwordLabel = new DevExpress.XtraEditors.LabelControl();
+ this.usernameLabel = new DevExpress.XtraEditors.LabelControl();
+ this.ignoreUntrustedCertificateCheckBox = new DevExpress.XtraEditors.CheckEdit();
+ this.tableLayoutPanel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.displayNameTextEdit.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.urlTextBox.Properties)).BeginInit();
+ this.tableLayoutPanel2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.authenticationCheckBox.Properties)).BeginInit();
+ this.tableLayoutPanel3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.usernameTextBox.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.passwordTextBox.Properties)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.ignoreUntrustedCertificateCheckBox.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel1
+ //
+ resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
+ this.tableLayoutPanel1.Controls.Add(this.displayNameTextEdit, 1, 1);
+ this.tableLayoutPanel1.Controls.Add(this.urlTextBox, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.displayNameLabel, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.urlLabel, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 6);
+ this.tableLayoutPanel1.Controls.Add(this.authenticationCheckBox, 0, 3);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 4);
+ this.tableLayoutPanel1.Controls.Add(this.ignoreUntrustedCertificateCheckBox, 0, 5);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ //
+ // displayNameTextEdit
+ //
+ resources.ApplyResources(this.displayNameTextEdit, "displayNameTextEdit");
+ this.displayNameTextEdit.Name = "displayNameTextEdit";
+ //
+ // urlTextBox
+ //
+ resources.ApplyResources(this.urlTextBox, "urlTextBox");
+ this.urlTextBox.Name = "urlTextBox";
+ this.urlTextBox.Leave += new System.EventHandler(this.urlTextBox_Leave);
+ //
+ // displayNameLabel
+ //
+ this.displayNameLabel.Appearance.Options.UseTextOptions = true;
+ this.displayNameLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
+ resources.ApplyResources(this.displayNameLabel, "displayNameLabel");
+ this.displayNameLabel.Name = "displayNameLabel";
+ //
+ // urlLabel
+ //
+ this.urlLabel.Appearance.Options.UseTextOptions = true;
+ this.urlLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
+ resources.ApplyResources(this.urlLabel, "urlLabel");
+ this.urlLabel.Name = "urlLabel";
+ //
+ // tableLayoutPanel2
+ //
+ resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
+ this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel2, 2);
+ this.tableLayoutPanel2.Controls.Add(this.validateButton, 1, 0);
+ this.tableLayoutPanel2.Controls.Add(this.cancelButton, 2, 0);
+ this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+ //
+ // validateButton
+ //
+ this.validateButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+ resources.ApplyResources(this.validateButton, "validateButton");
+ this.validateButton.Name = "validateButton";
+ //
+ // cancelButton
+ //
+ this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ resources.ApplyResources(this.cancelButton, "cancelButton");
+ this.cancelButton.Name = "cancelButton";
+ //
+ // authenticationCheckBox
+ //
+ this.tableLayoutPanel1.SetColumnSpan(this.authenticationCheckBox, 2);
+ resources.ApplyResources(this.authenticationCheckBox, "authenticationCheckBox");
+ this.authenticationCheckBox.Name = "authenticationCheckBox";
+ this.authenticationCheckBox.Properties.AutoWidth = true;
+ this.authenticationCheckBox.Properties.Caption = resources.GetString("authenticationCheckBox.Properties.Caption");
+ this.authenticationCheckBox.CheckStateChanged += new System.EventHandler(this.authenticationCheckBox_CheckStateChanged);
+ //
+ // tableLayoutPanel3
+ //
+ resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
+ this.tableLayoutPanel1.SetColumnSpan(this.tableLayoutPanel3, 2);
+ this.tableLayoutPanel3.Controls.Add(this.usernameTextBox, 2, 0);
+ this.tableLayoutPanel3.Controls.Add(this.passwordTextBox, 2, 1);
+ this.tableLayoutPanel3.Controls.Add(this.passwordLabel, 1, 1);
+ this.tableLayoutPanel3.Controls.Add(this.usernameLabel, 1, 0);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ //
+ // usernameTextBox
+ //
+ resources.ApplyResources(this.usernameTextBox, "usernameTextBox");
+ this.usernameTextBox.Name = "usernameTextBox";
+ //
+ // passwordTextBox
+ //
+ resources.ApplyResources(this.passwordTextBox, "passwordTextBox");
+ this.passwordTextBox.Name = "passwordTextBox";
+ this.passwordTextBox.Properties.PasswordChar = '*';
+ //
+ // passwordLabel
+ //
+ this.passwordLabel.Appearance.Options.UseTextOptions = true;
+ this.passwordLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
+ resources.ApplyResources(this.passwordLabel, "passwordLabel");
+ this.passwordLabel.Name = "passwordLabel";
+ //
+ // usernameLabel
+ //
+ this.usernameLabel.Appearance.Options.UseTextOptions = true;
+ this.usernameLabel.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center;
+ resources.ApplyResources(this.usernameLabel, "usernameLabel");
+ this.usernameLabel.Name = "usernameLabel";
+ //
+ // ignoreUntrustedCertificateCheckBox
+ //
+ this.tableLayoutPanel1.SetColumnSpan(this.ignoreUntrustedCertificateCheckBox, 2);
+ resources.ApplyResources(this.ignoreUntrustedCertificateCheckBox, "ignoreUntrustedCertificateCheckBox");
+ this.ignoreUntrustedCertificateCheckBox.Name = "ignoreUntrustedCertificateCheckBox";
+ this.ignoreUntrustedCertificateCheckBox.Properties.AutoWidth = true;
+ this.ignoreUntrustedCertificateCheckBox.Properties.Caption = resources.GetString("ignoreUntrustedCertificateCheckBox.Properties.Caption");
+ //
+ // EditServerForm
+ //
+ this.AcceptButton = this.validateButton;
+ resources.ApplyResources(this, "$this");
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.cancelButton;
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "EditServerForm";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.EditServerForm_FormClosing);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.displayNameTextEdit.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.urlTextBox.Properties)).EndInit();
+ this.tableLayoutPanel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.authenticationCheckBox.Properties)).EndInit();
+ this.tableLayoutPanel3.ResumeLayout(false);
+ this.tableLayoutPanel3.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.usernameTextBox.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.passwordTextBox.Properties)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.ignoreUntrustedCertificateCheckBox.Properties)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private DevExpress.XtraEditors.TextEdit urlTextBox;
+ private DevExpress.XtraEditors.LabelControl urlLabel;
+ private DevExpress.XtraEditors.CheckEdit authenticationCheckBox;
+ private DevExpress.XtraEditors.TextEdit usernameTextBox;
+ private DevExpress.XtraEditors.TextEdit passwordTextBox;
+ private DevExpress.XtraEditors.LabelControl usernameLabel;
+ private DevExpress.XtraEditors.LabelControl passwordLabel;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+ private DevExpress.XtraEditors.SimpleButton validateButton;
+ private DevExpress.XtraEditors.SimpleButton cancelButton;
+ private DevExpress.XtraEditors.CheckEdit ignoreUntrustedCertificateCheckBox;
+ private DevExpress.XtraEditors.TextEdit displayNameTextEdit;
+ private DevExpress.XtraEditors.LabelControl displayNameLabel;
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/EditServerForm.resx b/JenkinsTray/UI/EditServerForm.resx
similarity index 98%
rename from HudsonTrayTracker/UI/EditServerForm.resx
rename to JenkinsTray/UI/EditServerForm.resx
index ff5c404..294daae 100644
--- a/HudsonTrayTracker/UI/EditServerForm.resx
+++ b/JenkinsTray/UI/EditServerForm.resx
@@ -1,1128 +1,1128 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
- True
-
-
-
- GrowAndShrink
-
-
- 2
-
-
- Fill
-
-
-
- 125, 29
-
-
- 412, 20
-
-
- 3
-
-
- displayNameTextEdit
-
-
- DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel1
-
-
- 0
-
-
- Fill
-
-
- 125, 3
-
-
- 412, 20
-
-
- 1
-
-
- urlTextBox
-
-
- DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel1
-
-
- 1
-
-
-
- Horizontal
-
-
- 3, 29
-
-
- 116, 13
-
-
- 2
-
-
- Display name (optional):
-
-
- displayNameLabel
-
-
- DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel1
-
-
- 2
-
-
- Horizontal
-
-
- Fill
-
-
- 3, 6
-
-
- 3, 6, 3, 3
-
-
- 26, 13
-
-
- 0
-
-
- URL:
-
-
- urlLabel
-
-
- DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel1
-
-
- 3
-
-
- True
-
-
- GrowAndShrink
-
-
- 4
-
-
- 189, 3
-
-
- 75, 23
-
-
- 0
-
-
- OK
-
-
- validateButton
-
-
- DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel2
-
-
- 0
-
-
- 270, 3
-
-
- 75, 23
-
-
- 1
-
-
- Cancel
-
-
- cancelButton
-
-
- DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel2
-
-
- 1
-
-
- Fill
-
-
- 3, 163
-
-
- 1
-
-
- 534, 85
-
-
- 7
-
-
- tableLayoutPanel2
-
-
- System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tableLayoutPanel1
-
-
- 4
-
-
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="validateButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,AutoSize,0,AutoSize,0,Percent,50" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
-
-
- 3, 55
-
-
- Authentication
-
-
- 93, 19
-
-
- 4
-
-
- authenticationCheckBox
-
-
- DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel1
-
-
- 5
-
-
- True
-
-
- GrowAndShrink
-
-
- 3
-
-
- Fill
-
-
- False
-
-
- 84, 3
-
-
- 447, 20
-
-
- 1
-
-
- usernameTextBox
-
-
- DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel3
-
-
- 0
-
-
- Fill
-
-
- False
-
-
- 84, 29
-
-
- 447, 20
-
-
- 3
-
-
- passwordTextBox
-
-
- DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel3
-
-
- 1
-
-
- Horizontal
-
-
- Fill
-
-
- False
-
-
- 23, 29
-
-
- 50, 13
-
-
- 2
-
-
- Password:
-
-
- passwordLabel
-
-
- DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel3
-
-
- 2
-
-
- Horizontal
-
-
- Fill
-
-
- False
-
-
- 23, 3
-
-
- 55, 13
-
-
- 0
-
-
- User name:
-
-
- usernameLabel
-
-
- DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel3
-
-
- 3
-
-
- Fill
-
-
- 3, 80
-
-
- 2
-
-
- 534, 52
-
-
- 5
-
-
- tableLayoutPanel3
-
-
- System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- tableLayoutPanel1
-
-
- 6
-
-
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="usernameTextBox" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="passwordTextBox" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="passwordLabel" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="usernameLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0" /></TableLayoutSettings>
-
-
- 3, 138
-
-
- Ignore untrusted certificate (SSL)
-
-
- 184, 19
-
-
- 6
-
-
- ignoreUntrustedCertificateCheckBox
-
-
- DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
-
- tableLayoutPanel1
-
-
- 7
-
-
- Fill
-
-
- 10, 10
-
-
- 7
-
-
- 448, 251
-
-
- 0
-
-
- tableLayoutPanel1
-
-
- System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 0
-
-
- <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="displayNameTextEdit" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="urlTextBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="displayNameLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="urlLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="authenticationCheckBox" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel3" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ignoreUntrustedCertificateCheckBox" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings>
-
-
- True
-
-
- 6, 13
-
-
- True
-
-
- GrowAndShrink
-
-
- 468, 271
-
-
-
- AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
- CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
- AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
- g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
- 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
- ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
- /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
- l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
- wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
- /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
- //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
- l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
- z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
- //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
- //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
- 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
- /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
- //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
- kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
- 7P//////////////////////////////////////////////////////////////////////////////
- /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
- iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
- tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
- ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
- /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
- 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
- pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
- xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
- sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
- zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
- /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
- //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
- q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
- 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
- //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
- 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
- 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
- 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
- nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
- sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
- +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
- zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
- //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
- sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
- v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
- AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
- iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
- n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
- t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
- wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
- 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
- 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
- wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
- 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
- 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- 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
- MTEoJyQkJCQhISEfHx8dHR0aGhoYFxcWFRRQUE9PTU1NTEtJSUhIRUVFRUNDQUFBPz4+PDw7Ojk5NzY2
- NDMzMjExMScnJyQkJCEhIR8fHx0dHRoaGhgYFxYVUlBQT09NTU1MS0lJSEhFRkVDQ0NCQUE/Pj48PDs6
- OTk3NjY2MzMzMTEoJycnJSQkISEhHx8fHR0eGhoaGBgWFlJSUFBPT01NTUxLSUlISEVFRENDQkJBQT4+
- Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
- QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
- RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
- SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
- TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
- UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
- VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
- HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
- ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
- JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
- MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
- NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
- OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
- Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
- QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
- RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
- S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
- TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
- UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
- VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
- WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
- WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
- nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
- pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
- rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
- hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
- tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
- jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
- vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
- oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
- xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
- ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
- zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
- pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
- f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
- rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
- hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
- tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
- //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
- vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
- w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
- xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
- 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
- zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
- //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
- 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
- ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
- 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
- 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
- jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
- vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
- lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
- xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
- tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
- zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
- ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
- 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
- rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
- 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
- tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
- 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
- vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
- 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
- xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
- 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
- zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
- pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
- 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
- rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
- 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
- tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
- 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
- vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
- 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
- xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
- 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
- zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
- /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
- 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
- //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
- 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
- tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
- 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
- vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
- 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
- xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
- 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
- zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
- AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
- jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
- q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
- pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
- xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
- 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
- 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
- y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
- 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
- FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
- IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
- NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
- AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
- fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
- cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
- fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
- JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
- PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
- R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
- UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
- GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
- ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
- ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
- QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
- TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
- VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
- f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
- iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
- k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
- 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
- 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
- sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
- vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
- x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
- 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
- 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
- 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
- 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
- /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
- rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
- uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
- w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
- zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
- f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
- sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
- 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
- zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
- 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
- BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
- FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
- IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
- EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-
-
-
- 10, 10, 10, 10
-
-
- CenterParent
-
-
- Server settings
-
-
- EditServerForm
-
-
- DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ True
+
+
+
+ GrowAndShrink
+
+
+ 2
+
+
+ Fill
+
+
+
+ 125, 29
+
+
+ 412, 20
+
+
+ 3
+
+
+ displayNameTextEdit
+
+
+ DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel1
+
+
+ 0
+
+
+ Fill
+
+
+ 125, 3
+
+
+ 412, 20
+
+
+ 1
+
+
+ urlTextBox
+
+
+ DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel1
+
+
+ 1
+
+
+
+ Horizontal
+
+
+ 3, 29
+
+
+ 116, 13
+
+
+ 2
+
+
+ Display name (optional):
+
+
+ displayNameLabel
+
+
+ DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel1
+
+
+ 2
+
+
+ Horizontal
+
+
+ Fill
+
+
+ 3, 6
+
+
+ 3, 6, 3, 3
+
+
+ 26, 13
+
+
+ 0
+
+
+ URL:
+
+
+ urlLabel
+
+
+ DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel1
+
+
+ 3
+
+
+ True
+
+
+ GrowAndShrink
+
+
+ 4
+
+
+ 189, 3
+
+
+ 75, 23
+
+
+ 0
+
+
+ OK
+
+
+ validateButton
+
+
+ DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel2
+
+
+ 0
+
+
+ 270, 3
+
+
+ 75, 23
+
+
+ 1
+
+
+ Cancel
+
+
+ cancelButton
+
+
+ DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel2
+
+
+ 1
+
+
+ Fill
+
+
+ 3, 163
+
+
+ 1
+
+
+ 534, 85
+
+
+ 7
+
+
+ tableLayoutPanel2
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 4
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="validateButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="cancelButton" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /></Controls><Columns Styles="Percent,50,AutoSize,0,AutoSize,0,Percent,50" /><Rows Styles="AutoSize,0" /></TableLayoutSettings>
+
+
+ 3, 55
+
+
+ Authentication
+
+
+ 93, 19
+
+
+ 4
+
+
+ authenticationCheckBox
+
+
+ DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel1
+
+
+ 5
+
+
+ True
+
+
+ GrowAndShrink
+
+
+ 3
+
+
+ Fill
+
+
+ False
+
+
+ 84, 3
+
+
+ 447, 20
+
+
+ 1
+
+
+ usernameTextBox
+
+
+ DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel3
+
+
+ 0
+
+
+ Fill
+
+
+ False
+
+
+ 84, 29
+
+
+ 447, 20
+
+
+ 3
+
+
+ passwordTextBox
+
+
+ DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel3
+
+
+ 1
+
+
+ Horizontal
+
+
+ Fill
+
+
+ False
+
+
+ 23, 29
+
+
+ 50, 13
+
+
+ 2
+
+
+ Password:
+
+
+ passwordLabel
+
+
+ DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel3
+
+
+ 2
+
+
+ Horizontal
+
+
+ Fill
+
+
+ False
+
+
+ 23, 3
+
+
+ 55, 13
+
+
+ 0
+
+
+ User name:
+
+
+ usernameLabel
+
+
+ DevExpress.XtraEditors.LabelControl, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel3
+
+
+ 3
+
+
+ Fill
+
+
+ 3, 80
+
+
+ 2
+
+
+ 534, 52
+
+
+ 5
+
+
+ tableLayoutPanel3
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ tableLayoutPanel1
+
+
+ 6
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="usernameTextBox" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="passwordTextBox" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /><Control Name="passwordLabel" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="usernameLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /></Controls><Columns Styles="Absolute,20,AutoSize,0,Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0" /></TableLayoutSettings>
+
+
+ 3, 138
+
+
+ Ignore untrusted certificate (SSL)
+
+
+ 184, 19
+
+
+ 6
+
+
+ ignoreUntrustedCertificateCheckBox
+
+
+ DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
+
+ tableLayoutPanel1
+
+
+ 7
+
+
+ Fill
+
+
+ 10, 10
+
+
+ 7
+
+
+ 448, 251
+
+
+ 0
+
+
+ tableLayoutPanel1
+
+
+ System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ $this
+
+
+ 0
+
+
+ <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="displayNameTextEdit" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="urlTextBox" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /><Control Name="displayNameLabel" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="urlLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="tableLayoutPanel2" Row="6" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="authenticationCheckBox" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="tableLayoutPanel3" Row="4" RowSpan="1" Column="0" ColumnSpan="2" /><Control Name="ignoreUntrustedCertificateCheckBox" Row="5" RowSpan="1" Column="0" ColumnSpan="2" /></Controls><Columns Styles="AutoSize,0,AutoSize,0" /><Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,20" /></TableLayoutSettings>
+
+
+ True
+
+
+ 6, 13
+
+
+ True
+
+
+ GrowAndShrink
+
+
+ 468, 271
+
+
+
+ AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
+ CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
+ AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
+ g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
+ 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
+ ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
+ /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
+ l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
+ wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
+ /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
+ //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
+ l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
+ z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
+ //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
+ //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
+ 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
+ kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
+ 7P//////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
+ iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
+ tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
+ ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
+ /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
+ 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
+ pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
+ xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
+ sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
+ zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
+ /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
+ //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
+ q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
+ 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
+ //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
+ 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
+ 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
+ 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
+ nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
+ sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
+ +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
+ //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
+ sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
+ v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
+ AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
+ iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
+ n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
+ t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
+ wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
+ 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
+ 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
+ wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
+ 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
+ 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ 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
+ MTEoJyQkJCQhISEfHx8dHR0aGhoYFxcWFRRQUE9PTU1NTEtJSUhIRUVFRUNDQUFBPz4+PDw7Ojk5NzY2
+ NDMzMjExMScnJyQkJCEhIR8fHx0dHRoaGhgYFxYVUlBQT09NTU1MS0lJSEhFRkVDQ0NCQUE/Pj48PDs6
+ OTk3NjY2MzMzMTEoJycnJSQkISEhHx8fHR0eGhoaGBgWFlJSUFBPT01NTUxLSUlISEVFRENDQkJBQT4+
+ Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
+ QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
+ RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
+ SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
+ TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
+ UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
+ VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
+ HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
+ ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
+ JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
+ MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
+ NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
+ OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
+ Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
+ QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
+ RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
+ S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
+ TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
+ UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
+ VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
+ WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
+ WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
+ nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
+ pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
+ rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
+ hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
+ tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
+ jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
+ vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
+ oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
+ xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
+ ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
+ zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
+ pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
+ f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
+ rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
+ hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
+ tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
+ //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
+ vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
+ w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
+ xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
+ 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
+ zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
+ //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
+ 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
+ ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
+ 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
+ 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
+ jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
+ vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
+ lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
+ xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
+ tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
+ zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
+ ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
+ 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
+ rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
+ 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
+ tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
+ vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
+ 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
+ xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
+ 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
+ zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
+ pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
+ 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
+ rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
+ 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
+ tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
+ vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
+ 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
+ xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
+ 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
+ zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
+ /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
+ 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
+ //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
+ 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
+ tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
+ 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
+ vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
+ 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
+ xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
+ 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
+ zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
+ AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
+ jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
+ q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
+ pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
+ xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
+ 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
+ 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
+ y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
+ 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
+ FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
+ IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
+ NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
+ AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
+ fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
+ cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
+ fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
+ JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
+ PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
+ R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
+ UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
+ GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
+ ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
+ ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
+ QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
+ TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
+ VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
+ f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
+ iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
+ k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
+ 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
+ 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
+ sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
+ vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
+ x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
+ 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
+ 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
+ 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
+ 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
+ /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
+ rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
+ uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
+ w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
+ zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
+ f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
+ sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
+ 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
+ zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
+ 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
+ BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
+ FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
+ IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
+ EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+
+
+
+ 10, 10, 10, 10
+
+
+ CenterParent
+
+
+ Server settings
+
+
+ EditServerForm
+
+
+ DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v10.1, Version=10.1.12.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/MainForm.Designer.cs b/JenkinsTray/UI/MainForm.Designer.cs
similarity index 98%
rename from HudsonTrayTracker/UI/MainForm.Designer.cs
rename to JenkinsTray/UI/MainForm.Designer.cs
index 567f017..9d5d185 100644
--- a/HudsonTrayTracker/UI/MainForm.Designer.cs
+++ b/JenkinsTray/UI/MainForm.Designer.cs
@@ -1,556 +1,556 @@
-namespace Hudson.TrayTracker.UI
-{
- partial class MainForm
- {
- ///
- /// 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.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
- this.barManager = new DevExpress.XtraBars.BarManager(this.components);
- this.bar2 = new DevExpress.XtraBars.Bar();
- this.settingsButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.refreshButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.exitButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.checkUpdatesButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.aboutButtonItem = new DevExpress.XtraBars.BarButtonItem();
- this.bar3 = new DevExpress.XtraBars.Bar();
- this.lastCheckBarStaticItem = new DevExpress.XtraBars.BarStaticItem();
- this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
- this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
- this.projectsGridControl = new DevExpress.XtraGrid.GridControl();
- this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.openProjectPageMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.openConsolePageMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.runBuildMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
- this.acknowledgeStatusMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.acknowledgeProjectMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
- this.claimBuildMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
- this.removeProjectMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.projectsGridView = new DevExpress.XtraGrid.Views.Grid.GridView();
- this.setAuthenticationTokenMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.serverGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.statusGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.repositoryItemPictureEdit3 = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit();
- this.nameGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.urlGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.buildDetailsGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.lastBuildGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.lastSuccessGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.lastSuccessUserGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.lastFailureGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.lastFailureUserGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.claimedByGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.claimReasonGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
- this.toolTip = new System.Windows.Forms.ToolTip(this.components);
- this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
- ((System.ComponentModel.ISupportInitialize)(this.barManager)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).BeginInit();
- this.contextMenuStrip.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemPictureEdit3)).BeginInit();
- this.SuspendLayout();
- //
- // barManager
- //
- this.barManager.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
- this.bar2,
- this.bar3});
- this.barManager.DockControls.Add(this.barDockControlTop);
- this.barManager.DockControls.Add(this.barDockControlBottom);
- this.barManager.DockControls.Add(this.barDockControlLeft);
- this.barManager.DockControls.Add(this.barDockControlRight);
- this.barManager.Form = this;
- this.barManager.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
- this.settingsButtonItem,
- this.aboutButtonItem,
- this.refreshButtonItem,
- this.exitButtonItem,
- this.lastCheckBarStaticItem,
- this.checkUpdatesButtonItem});
- this.barManager.MainMenu = this.bar2;
- this.barManager.MaxItemId = 6;
- this.barManager.StatusBar = this.bar3;
- //
- // bar2
- //
- this.bar2.BarName = "Main menu";
- this.bar2.DockCol = 0;
- this.bar2.DockRow = 0;
- this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
- this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(this.settingsButtonItem),
- new DevExpress.XtraBars.LinkPersistInfo(this.refreshButtonItem),
- new DevExpress.XtraBars.LinkPersistInfo(this.exitButtonItem),
- new DevExpress.XtraBars.LinkPersistInfo(this.checkUpdatesButtonItem),
- new DevExpress.XtraBars.LinkPersistInfo(this.aboutButtonItem)});
- this.bar2.OptionsBar.AllowQuickCustomization = false;
- this.bar2.OptionsBar.DrawDragBorder = false;
- this.bar2.OptionsBar.MultiLine = true;
- this.bar2.OptionsBar.UseWholeRow = true;
- this.bar2.Text = "Main menu";
- //
- // settingsButtonItem
- //
- this.settingsButtonItem.Caption = "Settings";
- this.settingsButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("settingsButtonItem.Glyph")));
- this.settingsButtonItem.Id = 0;
- this.settingsButtonItem.Name = "settingsButtonItem";
- this.settingsButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.settingsButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.settingsButtonItem_ItemClick);
- //
- // refreshButtonItem
- //
- this.refreshButtonItem.Caption = "Refresh";
- this.refreshButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("refreshButtonItem.Glyph")));
- this.refreshButtonItem.Id = 2;
- this.refreshButtonItem.Name = "refreshButtonItem";
- this.refreshButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.refreshButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.refreshButtonItem_ItemClick);
- //
- // exitButtonItem
- //
- this.exitButtonItem.Caption = "Exit";
- this.exitButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("exitButtonItem.Glyph")));
- this.exitButtonItem.Id = 3;
- this.exitButtonItem.Name = "exitButtonItem";
- this.exitButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.exitButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.exitButtonItem_ItemClick);
- //
- // checkUpdatesButtonItem
- //
- this.checkUpdatesButtonItem.Caption = "Check for updates";
- this.checkUpdatesButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("checkUpdatesButtonItem.Glyph")));
- this.checkUpdatesButtonItem.Id = 5;
- this.checkUpdatesButtonItem.Name = "checkUpdatesButtonItem";
- this.checkUpdatesButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.checkUpdatesButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.checkUpdatesButtonItem_ItemClick);
- //
- // aboutButtonItem
- //
- this.aboutButtonItem.Caption = "About";
- this.aboutButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("aboutButtonItem.Glyph")));
- this.aboutButtonItem.Id = 1;
- this.aboutButtonItem.Name = "aboutButtonItem";
- this.aboutButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
- this.aboutButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.aboutButtonItem_ItemClick);
- //
- // bar3
- //
- this.bar3.BarName = "Status bar";
- this.bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
- this.bar3.DockCol = 0;
- this.bar3.DockRow = 0;
- this.bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
- this.bar3.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
- new DevExpress.XtraBars.LinkPersistInfo(this.lastCheckBarStaticItem)});
- this.bar3.OptionsBar.AllowQuickCustomization = false;
- this.bar3.OptionsBar.DrawDragBorder = false;
- this.bar3.OptionsBar.UseWholeRow = true;
- this.bar3.Text = "Status bar";
- //
- // lastCheckBarStaticItem
- //
- this.lastCheckBarStaticItem.Caption = "Last check: -";
- this.lastCheckBarStaticItem.Id = 4;
- this.lastCheckBarStaticItem.Name = "lastCheckBarStaticItem";
- this.lastCheckBarStaticItem.TextAlignment = System.Drawing.StringAlignment.Near;
- //
- // barDockControlTop
- //
- this.barDockControlTop.CausesValidation = false;
- this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
- this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
- this.barDockControlTop.Size = new System.Drawing.Size(879, 26);
- //
- // barDockControlBottom
- //
- this.barDockControlBottom.CausesValidation = false;
- this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
- this.barDockControlBottom.Location = new System.Drawing.Point(0, 384);
- this.barDockControlBottom.Size = new System.Drawing.Size(879, 28);
- //
- // barDockControlLeft
- //
- this.barDockControlLeft.CausesValidation = false;
- this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
- this.barDockControlLeft.Location = new System.Drawing.Point(0, 26);
- this.barDockControlLeft.Size = new System.Drawing.Size(0, 358);
- //
- // barDockControlRight
- //
- this.barDockControlRight.CausesValidation = false;
- this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
- this.barDockControlRight.Location = new System.Drawing.Point(879, 26);
- this.barDockControlRight.Size = new System.Drawing.Size(0, 358);
- //
- // projectsGridControl
- //
- this.projectsGridControl.ContextMenuStrip = this.contextMenuStrip;
- this.projectsGridControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.projectsGridControl.Location = new System.Drawing.Point(0, 26);
- this.projectsGridControl.MainView = this.projectsGridView;
- this.projectsGridControl.Name = "projectsGridControl";
- this.projectsGridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
- this.repositoryItemPictureEdit3});
- this.projectsGridControl.Size = new System.Drawing.Size(879, 358);
- this.projectsGridControl.TabIndex = 4;
- this.projectsGridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
- this.projectsGridView});
- //
- // contextMenuStrip
- //
- this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.openProjectPageMenuItem,
- this.openConsolePageMenuItem,
- this.runBuildMenuItem,
- this.toolStripSeparator1,
- this.acknowledgeStatusMenuItem,
- this.acknowledgeProjectMenuItem,
- this.toolStripSeparator4,
- this.setAuthenticationTokenMenuItem,
- this.toolStripSeparator2,
- this.claimBuildMenuItem,
- this.toolStripSeparator3,
- this.removeProjectMenuItem});
- this.contextMenuStrip.Name = "contextMenuStrip";
- this.contextMenuStrip.Size = new System.Drawing.Size(230, 176);
- this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
- //
- // openProjectPageMenuItem
- //
- this.openProjectPageMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openProjectPageMenuItem.Image")));
- this.openProjectPageMenuItem.Name = "openProjectPageMenuItem";
- this.openProjectPageMenuItem.Size = new System.Drawing.Size(229, 22);
- this.openProjectPageMenuItem.Text = "Open project page";
- this.openProjectPageMenuItem.Click += new System.EventHandler(this.openProjectPageMenuItem_Click);
- //
- // openConsolePageMenuItem
- //
- this.openConsolePageMenuItem.Name = "openConsolePageMenuItem";
- this.openConsolePageMenuItem.Size = new System.Drawing.Size(229, 22);
- this.openConsolePageMenuItem.Text = "View console output";
- this.openConsolePageMenuItem.Click += new System.EventHandler(this.openConsolePageMenuItem_Click);
- //
- // runBuildMenuItem
- //
- this.runBuildMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("runBuildMenuItem.Image")));
- this.runBuildMenuItem.Name = "runBuildMenuItem";
- this.runBuildMenuItem.Size = new System.Drawing.Size(229, 22);
- this.runBuildMenuItem.Text = "Run build";
- this.runBuildMenuItem.Click += new System.EventHandler(this.runBuildMenuItem_Click);
- //
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(226, 6);
- //
- // acknowledgeStatusMenuItem
- //
- this.acknowledgeStatusMenuItem.Name = "acknowledgeStatusMenuItem";
- this.acknowledgeStatusMenuItem.Size = new System.Drawing.Size(229, 22);
- this.acknowledgeStatusMenuItem.Text = "Acknowledge status";
- this.acknowledgeStatusMenuItem.Click += new System.EventHandler(this.acknowledgeMenuItem_Click);
- //
- // acknowledgeProjectMenuItem
- //
- this.acknowledgeProjectMenuItem.Name = "acknowledgeProjectMenuItem";
- this.acknowledgeProjectMenuItem.Size = new System.Drawing.Size(229, 22);
- this.acknowledgeProjectMenuItem.Text = "Acknowledge project";
- this.acknowledgeProjectMenuItem.Click += new System.EventHandler(this.acknowledgeProjectMenuItem_Click);
- //
- // toolStripSeparator2
- //
- this.toolStripSeparator2.Name = "toolStripSeparator2";
- this.toolStripSeparator2.Size = new System.Drawing.Size(226, 6);
- //
- // claimBuildMenuItem
- //
- this.claimBuildMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("claimBuildMenuItem.Image")));
- this.claimBuildMenuItem.Name = "claimBuildMenuItem";
- this.claimBuildMenuItem.Size = new System.Drawing.Size(229, 22);
- this.claimBuildMenuItem.Text = "Claim this build";
- this.claimBuildMenuItem.Click += new System.EventHandler(this.claimBuildMenuItem_Click);
- //
- // toolStripSeparator3
- //
- this.toolStripSeparator3.Name = "toolStripSeparator3";
- this.toolStripSeparator3.Size = new System.Drawing.Size(226, 6);
- //
- // removeProjectMenuItem
- //
- this.removeProjectMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("removeProjectMenuItem.Image")));
- this.removeProjectMenuItem.Name = "removeProjectMenuItem";
- this.removeProjectMenuItem.Size = new System.Drawing.Size(229, 22);
- this.removeProjectMenuItem.Text = "Remove project";
- this.removeProjectMenuItem.Click += new System.EventHandler(this.removeProjectMenuItem_Click);
- //
- // projectsGridView
- //
- this.projectsGridView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
- this.serverGridColumn,
- this.statusGridColumn,
- this.nameGridColumn,
- this.urlGridColumn,
- this.buildDetailsGridColumn,
- this.lastBuildGridColumn,
- this.lastSuccessGridColumn,
- this.lastSuccessUserGridColumn,
- this.lastFailureGridColumn,
- this.lastFailureUserGridColumn,
- this.claimedByGridColumn,
- this.claimReasonGridColumn});
- this.projectsGridView.GridControl = this.projectsGridControl;
- this.projectsGridView.GroupCount = 1;
- this.projectsGridView.Name = "projectsGridView";
- this.projectsGridView.OptionsBehavior.AutoExpandAllGroups = true;
- this.projectsGridView.OptionsCustomization.AllowGroup = false;
- this.projectsGridView.OptionsSelection.EnableAppearanceFocusedCell = false;
- this.projectsGridView.OptionsView.AnimationType = DevExpress.XtraGrid.Views.Base.GridAnimationType.AnimateAllContent;
- this.projectsGridView.OptionsView.ShowGroupPanel = false;
- this.projectsGridView.OptionsView.ShowIndicator = false;
- this.projectsGridView.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {
- new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.serverGridColumn, DevExpress.Data.ColumnSortOrder.Ascending),
- new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.nameGridColumn, DevExpress.Data.ColumnSortOrder.Ascending)});
- this.projectsGridView.CustomColumnSort += new DevExpress.XtraGrid.Views.Base.CustomColumnSortEventHandler(this.projectsGridView_CustomColumnSort);
- this.projectsGridView.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(this.projectsGridView_CustomUnboundColumnData);
- this.projectsGridView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.projectsGridView_MouseMove);
- this.projectsGridView.DoubleClick += new System.EventHandler(this.projectsGridView_DoubleClick);
- //
- // setAuthenticationTokenMenuItem
- //
- this.setAuthenticationTokenMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("setAuthenticationTokenMenuItem.Image")));
- this.setAuthenticationTokenMenuItem.Name = "setAuthenticationTokenMenuItem";
- this.setAuthenticationTokenMenuItem.Size = new System.Drawing.Size(203, 22);
- this.setAuthenticationTokenMenuItem.Text = "Set authentication token";
- this.setAuthenticationTokenMenuItem.Click += new System.EventHandler(this.setAuthenticationTokenMenuItem_Click);
- //
- // serverGridColumn
- //
- this.serverGridColumn.Caption = "Server";
- this.serverGridColumn.FieldName = "Server";
- this.serverGridColumn.Name = "serverGridColumn";
- this.serverGridColumn.OptionsColumn.AllowEdit = false;
- //
- // statusGridColumn
- //
- this.statusGridColumn.Caption = " ";
- this.statusGridColumn.ColumnEdit = this.repositoryItemPictureEdit3;
- this.statusGridColumn.FieldName = "statusGridColumn";
- this.statusGridColumn.ImageIndex = 0;
- this.statusGridColumn.Name = "statusGridColumn";
- this.statusGridColumn.UnboundType = DevExpress.Data.UnboundColumnType.Object;
- this.statusGridColumn.Visible = true;
- this.statusGridColumn.VisibleIndex = 0;
- this.statusGridColumn.Width = 50;
- //
- // repositoryItemPictureEdit3
- //
- this.repositoryItemPictureEdit3.Name = "repositoryItemPictureEdit3";
- //
- // nameGridColumn
- //
- this.nameGridColumn.AppearanceCell.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.nameGridColumn.AppearanceCell.Options.UseFont = true;
- this.nameGridColumn.AppearanceHeader.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.nameGridColumn.AppearanceHeader.Options.UseFont = true;
- this.nameGridColumn.Caption = "Project";
- this.nameGridColumn.FieldName = "Name";
- this.nameGridColumn.Name = "nameGridColumn";
- this.nameGridColumn.OptionsColumn.AllowEdit = false;
- this.nameGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
- this.nameGridColumn.Visible = true;
- this.nameGridColumn.VisibleIndex = 1;
- this.nameGridColumn.Width = 137;
- //
- // urlGridColumn
- //
- this.urlGridColumn.Caption = "URL";
- this.urlGridColumn.FieldName = "Url";
- this.urlGridColumn.Name = "urlGridColumn";
- this.urlGridColumn.OptionsColumn.AllowEdit = false;
- this.urlGridColumn.Width = 157;
- //
- // buildDetailsGridColumn
- //
- this.buildDetailsGridColumn.AppearanceCell.Options.UseTextOptions = true;
- this.buildDetailsGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
- this.buildDetailsGridColumn.Caption = "Details";
- this.buildDetailsGridColumn.FieldName = "buildDetailsStr";
- this.buildDetailsGridColumn.Name = "buildDetailsGridColumn";
- this.buildDetailsGridColumn.OptionsColumn.AllowEdit = false;
- this.buildDetailsGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
- this.buildDetailsGridColumn.Visible = true;
- this.buildDetailsGridColumn.VisibleIndex = 2;
- this.buildDetailsGridColumn.Width = 200;
- //
- // lastBuildGridColumn
- //
- this.lastBuildGridColumn.AppearanceCell.Options.UseTextOptions = true;
- this.lastBuildGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
- this.lastBuildGridColumn.Caption = "Last build";
- this.lastBuildGridColumn.FieldName = "lastBuildStr";
- this.lastBuildGridColumn.Name = "lastBuildGridColumn";
- this.lastBuildGridColumn.OptionsColumn.AllowEdit = false;
- this.lastBuildGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
- this.lastBuildGridColumn.Visible = true;
- this.lastBuildGridColumn.VisibleIndex = 3;
- this.lastBuildGridColumn.Width = 121;
- //
- // lastSuccessGridColumn
- //
- this.lastSuccessGridColumn.AppearanceCell.Options.UseTextOptions = true;
- this.lastSuccessGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
- this.lastSuccessGridColumn.Caption = "Last success";
- this.lastSuccessGridColumn.FieldName = "LastSuccessBuildStr";
- this.lastSuccessGridColumn.Name = "lastSuccessGridColumn";
- this.lastSuccessGridColumn.OptionsColumn.AllowEdit = false;
- this.lastSuccessGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
- this.lastSuccessGridColumn.Visible = true;
- this.lastSuccessGridColumn.VisibleIndex = 4;
- this.lastSuccessGridColumn.Width = 121;
- //
- // lastSuccessUserGridColumn
- //
- this.lastSuccessUserGridColumn.Caption = "Last success user";
- this.lastSuccessUserGridColumn.FieldName = "LastSuccessUsers";
- this.lastSuccessUserGridColumn.Name = "lastSuccessUserGridColumn";
- this.lastSuccessUserGridColumn.OptionsColumn.AllowEdit = false;
- this.lastSuccessUserGridColumn.Width = 57;
- //
- // lastFailureGridColumn
- //
- this.lastFailureGridColumn.AppearanceCell.Options.UseTextOptions = true;
- this.lastFailureGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
- this.lastFailureGridColumn.Caption = "Last failure";
- this.lastFailureGridColumn.FieldName = "LastFailureBuildStr";
- this.lastFailureGridColumn.Name = "lastFailureGridColumn";
- this.lastFailureGridColumn.OptionsColumn.AllowEdit = false;
- this.lastFailureGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
- this.lastFailureGridColumn.Visible = true;
- this.lastFailureGridColumn.VisibleIndex = 5;
- this.lastFailureGridColumn.Width = 124;
- //
- // lastFailureUserGridColumn
- //
- this.lastFailureUserGridColumn.Caption = "Last failure user";
- this.lastFailureUserGridColumn.FieldName = "LastFailureUsers";
- this.lastFailureUserGridColumn.Name = "lastFailureUserGridColumn";
- this.lastFailureUserGridColumn.OptionsColumn.AllowEdit = false;
- this.lastFailureUserGridColumn.Visible = true;
- this.lastFailureUserGridColumn.VisibleIndex = 6;
- this.lastFailureUserGridColumn.Width = 65;
- //
- // claimedByGridColumn
- //
- this.claimedByGridColumn.Caption = "Claimed by";
- this.claimedByGridColumn.FieldName = "ClaimedBy";
- this.claimedByGridColumn.Name = "claimedByGridColumn";
- this.claimedByGridColumn.OptionsColumn.AllowEdit = false;
- //
- // claimReasonGridColumn
- //
- this.claimReasonGridColumn.Caption = "Claim reason";
- this.claimReasonGridColumn.FieldName = "ClaimReason";
- this.claimReasonGridColumn.Name = "claimReasonGridColumn";
- this.claimReasonGridColumn.OptionsColumn.AllowEdit = false;
- //
- // MainForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(879, 412);
- this.Controls.Add(this.projectsGridControl);
- this.Controls.Add(this.barDockControlLeft);
- this.Controls.Add(this.barDockControlRight);
- this.Controls.Add(this.barDockControlBottom);
- this.Controls.Add(this.barDockControlTop);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.KeyPreview = true;
- this.Name = "MainForm";
- this.Text = "Jenkins Tray";
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.HudsonTrayTrackerForm_FormClosing);
- this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp);
- ((System.ComponentModel.ISupportInitialize)(this.barManager)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).EndInit();
- this.contextMenuStrip.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.repositoryItemPictureEdit3)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private DevExpress.XtraBars.BarManager barManager;
- private DevExpress.XtraBars.Bar bar2;
- private DevExpress.XtraBars.Bar bar3;
- private DevExpress.XtraBars.BarDockControl barDockControlTop;
- private DevExpress.XtraBars.BarDockControl barDockControlBottom;
- private DevExpress.XtraBars.BarDockControl barDockControlLeft;
- private DevExpress.XtraBars.BarDockControl barDockControlRight;
- private DevExpress.XtraBars.BarButtonItem settingsButtonItem;
- private DevExpress.XtraBars.BarButtonItem aboutButtonItem;
- private DevExpress.XtraGrid.GridControl projectsGridControl;
- private DevExpress.XtraGrid.Views.Grid.GridView projectsGridView;
- private DevExpress.XtraGrid.Columns.GridColumn nameGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn urlGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn buildDetailsGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn lastBuildGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn lastSuccessGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn lastFailureGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn serverGridColumn;
- private DevExpress.XtraBars.BarButtonItem refreshButtonItem;
- private DevExpress.XtraBars.BarButtonItem exitButtonItem;
- private DevExpress.XtraBars.BarStaticItem lastCheckBarStaticItem;
- private DevExpress.XtraGrid.Columns.GridColumn statusGridColumn;
- private DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit repositoryItemPictureEdit3;
- private System.Windows.Forms.ToolTip toolTip;
- private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
- private System.Windows.Forms.ToolStripMenuItem openProjectPageMenuItem;
- private System.Windows.Forms.ToolStripMenuItem runBuildMenuItem;
- private DevExpress.XtraBars.BarButtonItem checkUpdatesButtonItem;
- private System.Windows.Forms.ToolStripMenuItem acknowledgeStatusMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
- private System.Windows.Forms.ToolStripMenuItem removeProjectMenuItem;
- private DevExpress.XtraGrid.Columns.GridColumn lastSuccessUserGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn lastFailureUserGridColumn;
- private System.Windows.Forms.ToolStripMenuItem openConsolePageMenuItem;
- private DevExpress.XtraGrid.Columns.GridColumn claimedByGridColumn;
- private DevExpress.XtraGrid.Columns.GridColumn claimReasonGridColumn;
- private System.Windows.Forms.ToolStripMenuItem claimBuildMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
- private System.Windows.Forms.ToolStripMenuItem acknowledgeProjectMenuItem;
- private System.Windows.Forms.ToolStripMenuItem setAuthenticationTokenMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
- }
+namespace Jenkins.Tray.UI
+{
+ partial class MainForm
+ {
+ ///
+ /// 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.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+ this.barManager = new DevExpress.XtraBars.BarManager(this.components);
+ this.bar2 = new DevExpress.XtraBars.Bar();
+ this.settingsButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.refreshButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.exitButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.checkUpdatesButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.aboutButtonItem = new DevExpress.XtraBars.BarButtonItem();
+ this.bar3 = new DevExpress.XtraBars.Bar();
+ this.lastCheckBarStaticItem = new DevExpress.XtraBars.BarStaticItem();
+ this.barDockControlTop = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlBottom = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlLeft = new DevExpress.XtraBars.BarDockControl();
+ this.barDockControlRight = new DevExpress.XtraBars.BarDockControl();
+ this.projectsGridControl = new DevExpress.XtraGrid.GridControl();
+ this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.openProjectPageMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.openConsolePageMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.runBuildMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.acknowledgeStatusMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.acknowledgeProjectMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.claimBuildMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
+ this.removeProjectMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.projectsGridView = new DevExpress.XtraGrid.Views.Grid.GridView();
+ this.setAuthenticationTokenMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.serverGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.statusGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.repositoryItemPictureEdit3 = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit();
+ this.nameGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.urlGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.buildDetailsGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.lastBuildGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.lastSuccessGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.lastSuccessUserGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.lastFailureGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.lastFailureUserGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.claimedByGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.claimReasonGridColumn = new DevExpress.XtraGrid.Columns.GridColumn();
+ this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+ this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
+ ((System.ComponentModel.ISupportInitialize)(this.barManager)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).BeginInit();
+ this.contextMenuStrip.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemPictureEdit3)).BeginInit();
+ this.SuspendLayout();
+ //
+ // barManager
+ //
+ this.barManager.Bars.AddRange(new DevExpress.XtraBars.Bar[] {
+ this.bar2,
+ this.bar3});
+ this.barManager.DockControls.Add(this.barDockControlTop);
+ this.barManager.DockControls.Add(this.barDockControlBottom);
+ this.barManager.DockControls.Add(this.barDockControlLeft);
+ this.barManager.DockControls.Add(this.barDockControlRight);
+ this.barManager.Form = this;
+ this.barManager.Items.AddRange(new DevExpress.XtraBars.BarItem[] {
+ this.settingsButtonItem,
+ this.aboutButtonItem,
+ this.refreshButtonItem,
+ this.exitButtonItem,
+ this.lastCheckBarStaticItem,
+ this.checkUpdatesButtonItem});
+ this.barManager.MainMenu = this.bar2;
+ this.barManager.MaxItemId = 6;
+ this.barManager.StatusBar = this.bar3;
+ //
+ // bar2
+ //
+ this.bar2.BarName = "Main menu";
+ this.bar2.DockCol = 0;
+ this.bar2.DockRow = 0;
+ this.bar2.DockStyle = DevExpress.XtraBars.BarDockStyle.Top;
+ this.bar2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(this.settingsButtonItem),
+ new DevExpress.XtraBars.LinkPersistInfo(this.refreshButtonItem),
+ new DevExpress.XtraBars.LinkPersistInfo(this.exitButtonItem),
+ new DevExpress.XtraBars.LinkPersistInfo(this.checkUpdatesButtonItem),
+ new DevExpress.XtraBars.LinkPersistInfo(this.aboutButtonItem)});
+ this.bar2.OptionsBar.AllowQuickCustomization = false;
+ this.bar2.OptionsBar.DrawDragBorder = false;
+ this.bar2.OptionsBar.MultiLine = true;
+ this.bar2.OptionsBar.UseWholeRow = true;
+ this.bar2.Text = "Main menu";
+ //
+ // settingsButtonItem
+ //
+ this.settingsButtonItem.Caption = "Settings";
+ this.settingsButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("settingsButtonItem.Glyph")));
+ this.settingsButtonItem.Id = 0;
+ this.settingsButtonItem.Name = "settingsButtonItem";
+ this.settingsButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.settingsButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.settingsButtonItem_ItemClick);
+ //
+ // refreshButtonItem
+ //
+ this.refreshButtonItem.Caption = "Refresh";
+ this.refreshButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("refreshButtonItem.Glyph")));
+ this.refreshButtonItem.Id = 2;
+ this.refreshButtonItem.Name = "refreshButtonItem";
+ this.refreshButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.refreshButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.refreshButtonItem_ItemClick);
+ //
+ // exitButtonItem
+ //
+ this.exitButtonItem.Caption = "Exit";
+ this.exitButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("exitButtonItem.Glyph")));
+ this.exitButtonItem.Id = 3;
+ this.exitButtonItem.Name = "exitButtonItem";
+ this.exitButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.exitButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.exitButtonItem_ItemClick);
+ //
+ // checkUpdatesButtonItem
+ //
+ this.checkUpdatesButtonItem.Caption = "Check for updates";
+ this.checkUpdatesButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("checkUpdatesButtonItem.Glyph")));
+ this.checkUpdatesButtonItem.Id = 5;
+ this.checkUpdatesButtonItem.Name = "checkUpdatesButtonItem";
+ this.checkUpdatesButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.checkUpdatesButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.checkUpdatesButtonItem_ItemClick);
+ //
+ // aboutButtonItem
+ //
+ this.aboutButtonItem.Caption = "About";
+ this.aboutButtonItem.Glyph = ((System.Drawing.Image)(resources.GetObject("aboutButtonItem.Glyph")));
+ this.aboutButtonItem.Id = 1;
+ this.aboutButtonItem.Name = "aboutButtonItem";
+ this.aboutButtonItem.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph;
+ this.aboutButtonItem.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.aboutButtonItem_ItemClick);
+ //
+ // bar3
+ //
+ this.bar3.BarName = "Status bar";
+ this.bar3.CanDockStyle = DevExpress.XtraBars.BarCanDockStyle.Bottom;
+ this.bar3.DockCol = 0;
+ this.bar3.DockRow = 0;
+ this.bar3.DockStyle = DevExpress.XtraBars.BarDockStyle.Bottom;
+ this.bar3.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
+ new DevExpress.XtraBars.LinkPersistInfo(this.lastCheckBarStaticItem)});
+ this.bar3.OptionsBar.AllowQuickCustomization = false;
+ this.bar3.OptionsBar.DrawDragBorder = false;
+ this.bar3.OptionsBar.UseWholeRow = true;
+ this.bar3.Text = "Status bar";
+ //
+ // lastCheckBarStaticItem
+ //
+ this.lastCheckBarStaticItem.Caption = "Last check: -";
+ this.lastCheckBarStaticItem.Id = 4;
+ this.lastCheckBarStaticItem.Name = "lastCheckBarStaticItem";
+ this.lastCheckBarStaticItem.TextAlignment = System.Drawing.StringAlignment.Near;
+ //
+ // barDockControlTop
+ //
+ this.barDockControlTop.CausesValidation = false;
+ this.barDockControlTop.Dock = System.Windows.Forms.DockStyle.Top;
+ this.barDockControlTop.Location = new System.Drawing.Point(0, 0);
+ this.barDockControlTop.Size = new System.Drawing.Size(879, 26);
+ //
+ // barDockControlBottom
+ //
+ this.barDockControlBottom.CausesValidation = false;
+ this.barDockControlBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.barDockControlBottom.Location = new System.Drawing.Point(0, 384);
+ this.barDockControlBottom.Size = new System.Drawing.Size(879, 28);
+ //
+ // barDockControlLeft
+ //
+ this.barDockControlLeft.CausesValidation = false;
+ this.barDockControlLeft.Dock = System.Windows.Forms.DockStyle.Left;
+ this.barDockControlLeft.Location = new System.Drawing.Point(0, 26);
+ this.barDockControlLeft.Size = new System.Drawing.Size(0, 358);
+ //
+ // barDockControlRight
+ //
+ this.barDockControlRight.CausesValidation = false;
+ this.barDockControlRight.Dock = System.Windows.Forms.DockStyle.Right;
+ this.barDockControlRight.Location = new System.Drawing.Point(879, 26);
+ this.barDockControlRight.Size = new System.Drawing.Size(0, 358);
+ //
+ // projectsGridControl
+ //
+ this.projectsGridControl.ContextMenuStrip = this.contextMenuStrip;
+ this.projectsGridControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.projectsGridControl.Location = new System.Drawing.Point(0, 26);
+ this.projectsGridControl.MainView = this.projectsGridView;
+ this.projectsGridControl.Name = "projectsGridControl";
+ this.projectsGridControl.RepositoryItems.AddRange(new DevExpress.XtraEditors.Repository.RepositoryItem[] {
+ this.repositoryItemPictureEdit3});
+ this.projectsGridControl.Size = new System.Drawing.Size(879, 358);
+ this.projectsGridControl.TabIndex = 4;
+ this.projectsGridControl.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+ this.projectsGridView});
+ //
+ // contextMenuStrip
+ //
+ this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.openProjectPageMenuItem,
+ this.openConsolePageMenuItem,
+ this.runBuildMenuItem,
+ this.toolStripSeparator1,
+ this.acknowledgeStatusMenuItem,
+ this.acknowledgeProjectMenuItem,
+ this.toolStripSeparator4,
+ this.setAuthenticationTokenMenuItem,
+ this.toolStripSeparator2,
+ this.claimBuildMenuItem,
+ this.toolStripSeparator3,
+ this.removeProjectMenuItem});
+ this.contextMenuStrip.Name = "contextMenuStrip";
+ this.contextMenuStrip.Size = new System.Drawing.Size(230, 176);
+ this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
+ //
+ // openProjectPageMenuItem
+ //
+ this.openProjectPageMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openProjectPageMenuItem.Image")));
+ this.openProjectPageMenuItem.Name = "openProjectPageMenuItem";
+ this.openProjectPageMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.openProjectPageMenuItem.Text = "Open project page";
+ this.openProjectPageMenuItem.Click += new System.EventHandler(this.openProjectPageMenuItem_Click);
+ //
+ // openConsolePageMenuItem
+ //
+ this.openConsolePageMenuItem.Name = "openConsolePageMenuItem";
+ this.openConsolePageMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.openConsolePageMenuItem.Text = "View console output";
+ this.openConsolePageMenuItem.Click += new System.EventHandler(this.openConsolePageMenuItem_Click);
+ //
+ // runBuildMenuItem
+ //
+ this.runBuildMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("runBuildMenuItem.Image")));
+ this.runBuildMenuItem.Name = "runBuildMenuItem";
+ this.runBuildMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.runBuildMenuItem.Text = "Run build";
+ this.runBuildMenuItem.Click += new System.EventHandler(this.runBuildMenuItem_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(226, 6);
+ //
+ // acknowledgeStatusMenuItem
+ //
+ this.acknowledgeStatusMenuItem.Name = "acknowledgeStatusMenuItem";
+ this.acknowledgeStatusMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.acknowledgeStatusMenuItem.Text = "Acknowledge status";
+ this.acknowledgeStatusMenuItem.Click += new System.EventHandler(this.acknowledgeMenuItem_Click);
+ //
+ // acknowledgeProjectMenuItem
+ //
+ this.acknowledgeProjectMenuItem.Name = "acknowledgeProjectMenuItem";
+ this.acknowledgeProjectMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.acknowledgeProjectMenuItem.Text = "Acknowledge project";
+ this.acknowledgeProjectMenuItem.Click += new System.EventHandler(this.acknowledgeProjectMenuItem_Click);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(226, 6);
+ //
+ // claimBuildMenuItem
+ //
+ this.claimBuildMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("claimBuildMenuItem.Image")));
+ this.claimBuildMenuItem.Name = "claimBuildMenuItem";
+ this.claimBuildMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.claimBuildMenuItem.Text = "Claim this build";
+ this.claimBuildMenuItem.Click += new System.EventHandler(this.claimBuildMenuItem_Click);
+ //
+ // toolStripSeparator3
+ //
+ this.toolStripSeparator3.Name = "toolStripSeparator3";
+ this.toolStripSeparator3.Size = new System.Drawing.Size(226, 6);
+ //
+ // removeProjectMenuItem
+ //
+ this.removeProjectMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("removeProjectMenuItem.Image")));
+ this.removeProjectMenuItem.Name = "removeProjectMenuItem";
+ this.removeProjectMenuItem.Size = new System.Drawing.Size(229, 22);
+ this.removeProjectMenuItem.Text = "Remove project";
+ this.removeProjectMenuItem.Click += new System.EventHandler(this.removeProjectMenuItem_Click);
+ //
+ // projectsGridView
+ //
+ this.projectsGridView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
+ this.serverGridColumn,
+ this.statusGridColumn,
+ this.nameGridColumn,
+ this.urlGridColumn,
+ this.buildDetailsGridColumn,
+ this.lastBuildGridColumn,
+ this.lastSuccessGridColumn,
+ this.lastSuccessUserGridColumn,
+ this.lastFailureGridColumn,
+ this.lastFailureUserGridColumn,
+ this.claimedByGridColumn,
+ this.claimReasonGridColumn});
+ this.projectsGridView.GridControl = this.projectsGridControl;
+ this.projectsGridView.GroupCount = 1;
+ this.projectsGridView.Name = "projectsGridView";
+ this.projectsGridView.OptionsBehavior.AutoExpandAllGroups = true;
+ this.projectsGridView.OptionsCustomization.AllowGroup = false;
+ this.projectsGridView.OptionsSelection.EnableAppearanceFocusedCell = false;
+ this.projectsGridView.OptionsView.AnimationType = DevExpress.XtraGrid.Views.Base.GridAnimationType.AnimateAllContent;
+ this.projectsGridView.OptionsView.ShowGroupPanel = false;
+ this.projectsGridView.OptionsView.ShowIndicator = false;
+ this.projectsGridView.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {
+ new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.serverGridColumn, DevExpress.Data.ColumnSortOrder.Ascending),
+ new DevExpress.XtraGrid.Columns.GridColumnSortInfo(this.nameGridColumn, DevExpress.Data.ColumnSortOrder.Ascending)});
+ this.projectsGridView.CustomColumnSort += new DevExpress.XtraGrid.Views.Base.CustomColumnSortEventHandler(this.projectsGridView_CustomColumnSort);
+ this.projectsGridView.CustomUnboundColumnData += new DevExpress.XtraGrid.Views.Base.CustomColumnDataEventHandler(this.projectsGridView_CustomUnboundColumnData);
+ this.projectsGridView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.projectsGridView_MouseMove);
+ this.projectsGridView.DoubleClick += new System.EventHandler(this.projectsGridView_DoubleClick);
+ //
+ // setAuthenticationTokenMenuItem
+ //
+ this.setAuthenticationTokenMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("setAuthenticationTokenMenuItem.Image")));
+ this.setAuthenticationTokenMenuItem.Name = "setAuthenticationTokenMenuItem";
+ this.setAuthenticationTokenMenuItem.Size = new System.Drawing.Size(203, 22);
+ this.setAuthenticationTokenMenuItem.Text = "Set authentication token";
+ this.setAuthenticationTokenMenuItem.Click += new System.EventHandler(this.setAuthenticationTokenMenuItem_Click);
+ //
+ // serverGridColumn
+ //
+ this.serverGridColumn.Caption = "Server";
+ this.serverGridColumn.FieldName = "Server";
+ this.serverGridColumn.Name = "serverGridColumn";
+ this.serverGridColumn.OptionsColumn.AllowEdit = false;
+ //
+ // statusGridColumn
+ //
+ this.statusGridColumn.Caption = " ";
+ this.statusGridColumn.ColumnEdit = this.repositoryItemPictureEdit3;
+ this.statusGridColumn.FieldName = "statusGridColumn";
+ this.statusGridColumn.ImageIndex = 0;
+ this.statusGridColumn.Name = "statusGridColumn";
+ this.statusGridColumn.UnboundType = DevExpress.Data.UnboundColumnType.Object;
+ this.statusGridColumn.Visible = true;
+ this.statusGridColumn.VisibleIndex = 0;
+ this.statusGridColumn.Width = 50;
+ //
+ // repositoryItemPictureEdit3
+ //
+ this.repositoryItemPictureEdit3.Name = "repositoryItemPictureEdit3";
+ //
+ // nameGridColumn
+ //
+ this.nameGridColumn.AppearanceCell.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.nameGridColumn.AppearanceCell.Options.UseFont = true;
+ this.nameGridColumn.AppearanceHeader.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.nameGridColumn.AppearanceHeader.Options.UseFont = true;
+ this.nameGridColumn.Caption = "Project";
+ this.nameGridColumn.FieldName = "Name";
+ this.nameGridColumn.Name = "nameGridColumn";
+ this.nameGridColumn.OptionsColumn.AllowEdit = false;
+ this.nameGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
+ this.nameGridColumn.Visible = true;
+ this.nameGridColumn.VisibleIndex = 1;
+ this.nameGridColumn.Width = 137;
+ //
+ // urlGridColumn
+ //
+ this.urlGridColumn.Caption = "URL";
+ this.urlGridColumn.FieldName = "Url";
+ this.urlGridColumn.Name = "urlGridColumn";
+ this.urlGridColumn.OptionsColumn.AllowEdit = false;
+ this.urlGridColumn.Width = 157;
+ //
+ // buildDetailsGridColumn
+ //
+ this.buildDetailsGridColumn.AppearanceCell.Options.UseTextOptions = true;
+ this.buildDetailsGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
+ this.buildDetailsGridColumn.Caption = "Details";
+ this.buildDetailsGridColumn.FieldName = "buildDetailsStr";
+ this.buildDetailsGridColumn.Name = "buildDetailsGridColumn";
+ this.buildDetailsGridColumn.OptionsColumn.AllowEdit = false;
+ this.buildDetailsGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.DisplayText;
+ this.buildDetailsGridColumn.Visible = true;
+ this.buildDetailsGridColumn.VisibleIndex = 2;
+ this.buildDetailsGridColumn.Width = 200;
+ //
+ // lastBuildGridColumn
+ //
+ this.lastBuildGridColumn.AppearanceCell.Options.UseTextOptions = true;
+ this.lastBuildGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+ this.lastBuildGridColumn.Caption = "Last build";
+ this.lastBuildGridColumn.FieldName = "lastBuildStr";
+ this.lastBuildGridColumn.Name = "lastBuildGridColumn";
+ this.lastBuildGridColumn.OptionsColumn.AllowEdit = false;
+ this.lastBuildGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
+ this.lastBuildGridColumn.Visible = true;
+ this.lastBuildGridColumn.VisibleIndex = 3;
+ this.lastBuildGridColumn.Width = 121;
+ //
+ // lastSuccessGridColumn
+ //
+ this.lastSuccessGridColumn.AppearanceCell.Options.UseTextOptions = true;
+ this.lastSuccessGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+ this.lastSuccessGridColumn.Caption = "Last success";
+ this.lastSuccessGridColumn.FieldName = "LastSuccessBuildStr";
+ this.lastSuccessGridColumn.Name = "lastSuccessGridColumn";
+ this.lastSuccessGridColumn.OptionsColumn.AllowEdit = false;
+ this.lastSuccessGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
+ this.lastSuccessGridColumn.Visible = true;
+ this.lastSuccessGridColumn.VisibleIndex = 4;
+ this.lastSuccessGridColumn.Width = 121;
+ //
+ // lastSuccessUserGridColumn
+ //
+ this.lastSuccessUserGridColumn.Caption = "Last success user";
+ this.lastSuccessUserGridColumn.FieldName = "LastSuccessUsers";
+ this.lastSuccessUserGridColumn.Name = "lastSuccessUserGridColumn";
+ this.lastSuccessUserGridColumn.OptionsColumn.AllowEdit = false;
+ this.lastSuccessUserGridColumn.Width = 57;
+ //
+ // lastFailureGridColumn
+ //
+ this.lastFailureGridColumn.AppearanceCell.Options.UseTextOptions = true;
+ this.lastFailureGridColumn.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
+ this.lastFailureGridColumn.Caption = "Last failure";
+ this.lastFailureGridColumn.FieldName = "LastFailureBuildStr";
+ this.lastFailureGridColumn.Name = "lastFailureGridColumn";
+ this.lastFailureGridColumn.OptionsColumn.AllowEdit = false;
+ this.lastFailureGridColumn.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
+ this.lastFailureGridColumn.Visible = true;
+ this.lastFailureGridColumn.VisibleIndex = 5;
+ this.lastFailureGridColumn.Width = 124;
+ //
+ // lastFailureUserGridColumn
+ //
+ this.lastFailureUserGridColumn.Caption = "Last failure user";
+ this.lastFailureUserGridColumn.FieldName = "LastFailureUsers";
+ this.lastFailureUserGridColumn.Name = "lastFailureUserGridColumn";
+ this.lastFailureUserGridColumn.OptionsColumn.AllowEdit = false;
+ this.lastFailureUserGridColumn.Visible = true;
+ this.lastFailureUserGridColumn.VisibleIndex = 6;
+ this.lastFailureUserGridColumn.Width = 65;
+ //
+ // claimedByGridColumn
+ //
+ this.claimedByGridColumn.Caption = "Claimed by";
+ this.claimedByGridColumn.FieldName = "ClaimedBy";
+ this.claimedByGridColumn.Name = "claimedByGridColumn";
+ this.claimedByGridColumn.OptionsColumn.AllowEdit = false;
+ //
+ // claimReasonGridColumn
+ //
+ this.claimReasonGridColumn.Caption = "Claim reason";
+ this.claimReasonGridColumn.FieldName = "ClaimReason";
+ this.claimReasonGridColumn.Name = "claimReasonGridColumn";
+ this.claimReasonGridColumn.OptionsColumn.AllowEdit = false;
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(879, 412);
+ this.Controls.Add(this.projectsGridControl);
+ this.Controls.Add(this.barDockControlLeft);
+ this.Controls.Add(this.barDockControlRight);
+ this.Controls.Add(this.barDockControlBottom);
+ this.Controls.Add(this.barDockControlTop);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.KeyPreview = true;
+ this.Name = "MainForm";
+ this.Text = "Jenkins Tray";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.JenkinsTrayForm_FormClosing);
+ this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.MainForm_KeyUp);
+ ((System.ComponentModel.ISupportInitialize)(this.barManager)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridControl)).EndInit();
+ this.contextMenuStrip.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.projectsGridView)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.repositoryItemPictureEdit3)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraBars.BarManager barManager;
+ private DevExpress.XtraBars.Bar bar2;
+ private DevExpress.XtraBars.Bar bar3;
+ private DevExpress.XtraBars.BarDockControl barDockControlTop;
+ private DevExpress.XtraBars.BarDockControl barDockControlBottom;
+ private DevExpress.XtraBars.BarDockControl barDockControlLeft;
+ private DevExpress.XtraBars.BarDockControl barDockControlRight;
+ private DevExpress.XtraBars.BarButtonItem settingsButtonItem;
+ private DevExpress.XtraBars.BarButtonItem aboutButtonItem;
+ private DevExpress.XtraGrid.GridControl projectsGridControl;
+ private DevExpress.XtraGrid.Views.Grid.GridView projectsGridView;
+ private DevExpress.XtraGrid.Columns.GridColumn nameGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn urlGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn buildDetailsGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn lastBuildGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn lastSuccessGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn lastFailureGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn serverGridColumn;
+ private DevExpress.XtraBars.BarButtonItem refreshButtonItem;
+ private DevExpress.XtraBars.BarButtonItem exitButtonItem;
+ private DevExpress.XtraBars.BarStaticItem lastCheckBarStaticItem;
+ private DevExpress.XtraGrid.Columns.GridColumn statusGridColumn;
+ private DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit repositoryItemPictureEdit3;
+ private System.Windows.Forms.ToolTip toolTip;
+ private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
+ private System.Windows.Forms.ToolStripMenuItem openProjectPageMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem runBuildMenuItem;
+ private DevExpress.XtraBars.BarButtonItem checkUpdatesButtonItem;
+ private System.Windows.Forms.ToolStripMenuItem acknowledgeStatusMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripMenuItem removeProjectMenuItem;
+ private DevExpress.XtraGrid.Columns.GridColumn lastSuccessUserGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn lastFailureUserGridColumn;
+ private System.Windows.Forms.ToolStripMenuItem openConsolePageMenuItem;
+ private DevExpress.XtraGrid.Columns.GridColumn claimedByGridColumn;
+ private DevExpress.XtraGrid.Columns.GridColumn claimReasonGridColumn;
+ private System.Windows.Forms.ToolStripMenuItem claimBuildMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
+ private System.Windows.Forms.ToolStripMenuItem acknowledgeProjectMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem setAuthenticationTokenMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/MainForm.cs b/JenkinsTray/UI/MainForm.cs
similarity index 85%
rename from HudsonTrayTracker/UI/MainForm.cs
rename to JenkinsTray/UI/MainForm.cs
index a891e8b..d3d71a4 100644
--- a/HudsonTrayTracker/UI/MainForm.cs
+++ b/JenkinsTray/UI/MainForm.cs
@@ -1,875 +1,875 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.BusinessComponents;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.Properties;
-using DevExpress.XtraGrid.Views.Base;
-using System.Drawing.Imaging;
-using Common.Logging;
-using System.Reflection;
-using DevExpress.XtraGrid.Views.Grid.ViewInfo;
-using System.Diagnostics;
-using Hudson.TrayTracker.Utils.Logging;
-using DevExpress.Utils.Controls;
-using Hudson.TrayTracker.Utils;
-using DevExpress.XtraGrid.Columns;
-using Spring.Context.Support;
-using DevExpress.Utils;
-
-namespace Hudson.TrayTracker.UI
-{
- public partial class MainForm : DevExpress.XtraEditors.XtraForm
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- public static MainForm Instance
- {
- get
- {
- MainForm instance = (MainForm)ContextRegistry.GetContext().GetObject("MainForm");
- return instance;
- }
- }
-
- BindingList projectsDataSource;
- bool exiting;
- int lastHoveredDSRowIndex = -1;
- IDictionary iconsByKey;
- Font normalMenuItemFont;
- Font mainMenuItemFont;
-
- public ConfigurationService ConfigurationService { get; set; }
- public HudsonService HudsonService { get; set; }
- public ProjectsUpdateService ProjectsUpdateService { get; set; }
- public ApplicationUpdateService ApplicationUpdateService { get; set; }
-
- public MainForm()
- {
- InitializeComponent();
- normalMenuItemFont = openProjectPageMenuItem.Font;
- mainMenuItemFont = new Font(openProjectPageMenuItem.Font, FontStyle.Bold);
- }
-
- private void Initialize()
- {
- ConfigurationService.ConfigurationUpdated += configurationService_ConfigurationUpdated;
- ProjectsUpdateService.ProjectsUpdated += updateService_ProjectsUpdated;
-
- Disposed += delegate
- {
- ConfigurationService.ConfigurationUpdated -= configurationService_ConfigurationUpdated;
- ProjectsUpdateService.ProjectsUpdated -= updateService_ProjectsUpdated;
- };
- }
-
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- Initialize();
- UpdateClaimPluginIntegration();
- LoadIcons();
- LoadProjects();
- }
-
- void configurationService_ConfigurationUpdated()
- {
- UpdateClaimPluginIntegration();
- LoadProjects();
- if (ConfigurationService.GeneralSettings.UpdateMainWindowIcon == false)
- ResetIcon();
- }
-
- private delegate void ProjectsUpdatedDelegate();
- private void updateService_ProjectsUpdated()
- {
- Delegate del = new ProjectsUpdatedDelegate(OnProjectsUpdated);
- BeginInvoke(del);
- }
- private void OnProjectsUpdated()
- {
- UpdateProjects();
- }
-
- private void settingsButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- SettingsForm.Instance.ShowDialog();
- }
-
- private void LoadProjects()
- {
- projectsDataSource = new BindingList();
-
- foreach (Server server in ConfigurationService.Servers)
- {
- foreach (Project project in server.Projects)
- {
- ProjectWrapper wrapper = new ProjectWrapper(project);
- projectsDataSource.Add(wrapper);
- }
- }
-
- projectsGridControl.DataSource = projectsDataSource;
- projectsGridView.BestFitColumns();
-
- UpdateStatusBar();
- }
-
- private void UpdateProjects()
- {
- projectsGridView.RefreshData();
-
- UpdateStatusBar();
- }
-
- private void UpdateStatusBar()
- {
- lastCheckBarStaticItem.Caption = string.Format(HudsonTrayTrackerResources.LastCheck_Format, DateTime.Now);
- }
-
- private void refreshButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- ProjectsUpdateService.UpdateProjects();
- }
-
- private void HudsonTrayTrackerForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (exiting == false && e.CloseReason == CloseReason.UserClosing)
- {
- Hide();
- e.Cancel = true;
- }
- }
-
- public void Exit()
- {
- exiting = true;
- Close();
- Application.Exit();
- }
-
- private void exitButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- Exit();
- }
-
- private void projectsGridView_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
- {
- if (e.IsGetData)
- {
- if (e.Column == statusGridColumn)
- {
- ProjectWrapper projectWrapper = (ProjectWrapper)projectsDataSource[e.ListSourceRowIndex];
- byte[] imgBytes = iconsByKey[projectWrapper.Project.Status.Key];
- e.Value = imgBytes;
- }
- }
- }
-
- private void LoadIcons()
- {
- iconsByKey = new Dictionary();
-
- foreach (BuildStatusEnum statusValue in Enum.GetValues(typeof(BuildStatusEnum)))
- {
- LoadIcon(statusValue, false, false);
- LoadIcon(statusValue, false, true);
- LoadIcon(statusValue, true, false);
- }
- }
-
- private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
- {
- BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);
- if (iconsByKey.ContainsKey(status.Key))
- return;
-
- try
- {
- string resourceName = string.Format("Hudson.TrayTracker.Resources.StatusIcons.{0}.gif", status.Key);
- Image img = ResourceImageHelper.CreateImageFromResources(resourceName, GetType().Assembly);
- byte[] imgBytes = DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img, ImageFormat.Gif);
- iconsByKey.Add(status.Key, imgBytes);
- }
- catch (Exception ex)
- {
- XtraMessageBox.Show(HudsonTrayTrackerResources.FailedLoadingIcons_Text,
- HudsonTrayTrackerResources.FailedLoadingIcons_Caption,
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- LoggingHelper.LogError(logger, ex);
- throw new Exception("Failed loading icon: " + status, ex);
- }
- }
-
- private void aboutButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- AboutForm.Instance.ShowDialog();
- }
-
- private void projectsGridView_MouseMove(object sender, MouseEventArgs e)
- {
- Point pt = new Point(e.X, e.Y);
- GridHitInfo ghi = projectsGridView.CalcHitInfo(pt);
- if (ghi.InRow)
- {
- int dsRowIndex = projectsGridView.GetDataSourceRowIndex(ghi.RowHandle);
- if (lastHoveredDSRowIndex != dsRowIndex)
- {
- ProjectWrapper project = projectsDataSource[dsRowIndex];
- string message = HudsonTrayTrackerResources.ResourceManager
- .GetString("BuildStatus_" + project.Project.Status.Key);
- if (project.Project.Status.IsStuck && project.Project.Queue.InQueue)
- {
- message += string.Format(HudsonTrayTrackerResources.BuildDetails_InQueue_Since, project.Project.Queue.InQueueSince);
- }
- toolTip.SetToolTip(projectsGridControl, message);
- }
- lastHoveredDSRowIndex = dsRowIndex;
- }
- else
- {
- lastHoveredDSRowIndex = -1;
- }
- }
-
- private void projectsGridView_DoubleClick(object sender, EventArgs e)
- {
- Project project = GetSelectedProject();
- if (project == null)
- return;
- bool shouldOpenConsolePage = ShouldOpenConsolePage(project);
- if (shouldOpenConsolePage)
- OpenProjectConsolePage(project);
- else
- OpenProjectPage(project);
- }
-
- private bool ShouldOpenConsolePage(Project project)
- {
- if (project == null)
- return false;
- BuildStatus status = project.Status;
- bool res = BuildStatusUtils.IsErrorBuild(status) || status.IsInProgress;
- return res;
- }
-
- private void OpenSelectedProjectPage()
- {
- Project project = GetSelectedProject();
- OpenProjectPage(project);
- }
-
- private void OpenProjectPage(Project project)
- {
- if (project == null)
- return;
- UIUtils.OpenWebPage(project.Url, logger);
- }
-
- private void OpenSelectedProjectConsolePage()
- {
- Project project = GetSelectedProject();
- OpenProjectConsolePage(project);
- }
-
- private void OpenProjectConsolePage(Project project)
- {
- if (project == null)
- return;
- string url = HudsonService.GetConsolePage(project);
- UIUtils.OpenWebPage(url, logger);
- }
-
- private class ProjectWrapper
- {
- public ProjectWrapper(Project project)
- {
- this.Project = project;
- }
-
- public Project Project { get; private set; }
-
- public string Server
- {
- get { return Project.Server.DisplayText; }
- }
- public string Name
- {
- get { return Project.Name; }
- }
- public string Url
- {
- get { return Uri.UnescapeDataString(Project.Url); }
- }
-
- public string buildDetailsStr
- {
- get
- {
- string details = string.Empty;
- try
- {
- details = FormatBuildDetailsAndSummary();
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- XtraMessageBox.Show(string.Format(HudsonTrayTrackerResources.RunBuildFailed_Text, ex.Message),
- HudsonTrayTrackerResources.RunBuildFailed_Caption);
- }
- return details;
- }
- }
- public string lastBuildStr
- {
- get { return FormatBuildDetails(LastBuild); }
- }
-
- public BuildDetails LastBuild
- {
- get { return Project.LastBuild; }
- }
-
- public BuildDetails LastSuccessBuild
- {
- get { return Project.LastSuccessfulBuild; }
- }
- public string LastSuccessBuildStr
- {
- get { return FormatBuildDetails(LastSuccessBuild); }
- }
- public BuildDetails LastFailureBuild
- {
- get { return Project.LastFailedBuild; }
- }
- public string LastFailureBuildStr
- {
- get { return FormatBuildDetails(LastFailureBuild); }
- }
- public string LastSuccessUsers
- {
- get { return FormatUsers(Project.LastSuccessfulBuild); }
- }
- public string LastFailureUsers
- {
- get { return FormatUsers(Project.LastFailedBuild); }
- }
- public string ClaimedBy
- {
- get
- {
- // get a copy of the reference to avoid a race condition
- var lastFailedBuild = Project.LastFailedBuild;
- if (lastFailedBuild == null || lastFailedBuild.ClaimDetails == null)
- return "";
- return Project.LastFailedBuild.ClaimDetails.User;
- }
- }
- public string ClaimReason
- {
- get
- {
- // get a copy of the reference to avoid a race condition
- var lastFailedBuild = Project.LastFailedBuild;
- if (lastFailedBuild == null || lastFailedBuild.ClaimDetails == null)
- return "";
- return Project.LastFailedBuild.ClaimDetails.Reason;
- }
- }
-
- private string FormatBuildDetailsAndSummary()
- {
- string details = string.Empty;
- string buildCausesSummary = string.Empty;
-
- // get a copy of the reference to avoid a race condition
- BuildStatus projectStatus = Project.Status;
- BuildDetails lastBuild = Project.LastBuild;
-
- if (lastBuild != null)
- {
- // get a copy of the reference to avoid a race condition
- BuildCauses lastBuildCauses = lastBuild.Causes;
-
- if (lastBuildCauses != null)
- {
- if (projectStatus.IsInProgress)
- {
- TimeSpan progressts = lastBuild.EstimatedDuration;
- string timeleft = FormatEstimatedDuration(lastBuild);
-
- foreach (BuildCause cause in lastBuildCauses.Causes)
- {
- if (lastBuildCauses.HasUniqueCauses == false)
- {
- buildCausesSummary = HudsonTrayTrackerResources.BuildDetails_Cause_MultipleSources;
- break;
- }
-
- switch (cause.Cause)
- {
- case BuildCauseEnum.SCM:
- {
- if (lastBuild.Users.Count == 0)
- {
- buildCausesSummary = HudsonTrayTrackerResources.BuildDetails_Cause_SCM;
- }
- else if (lastBuild.Users.Count > 1)
- {
- buildCausesSummary = string.Format(HudsonTrayTrackerResources.BuildDetails_Cause_SCM_Multiple, lastBuild.Users.Count);
- }
- else
- {
- buildCausesSummary = string.Format(HudsonTrayTrackerResources.BuildDetails_Cause_SCM_Single, FormatUsers(lastBuild));
- }
- }
- break;
- case BuildCauseEnum.User:
- {
- buildCausesSummary = string.Format(HudsonTrayTrackerResources.BuildDetails_Cause_User, cause.Starter);
- }
- break;
- case BuildCauseEnum.RemoteHost:
- {
- buildCausesSummary = HudsonTrayTrackerResources.BuildDetails_Cause_RemoteHost;
- }
- break;
- case BuildCauseEnum.Timer:
- {
- buildCausesSummary = HudsonTrayTrackerResources.BuildDetails_Cause_Timer;
- }
- break;
- case BuildCauseEnum.UpstreamProject:
- {
- buildCausesSummary = HudsonTrayTrackerResources.BuildDetails_Cause_UpstreamProject;
- }
- break;
- }
- }
- details = timeleft + buildCausesSummary;
- }
- else
- {
- if (projectStatus.Value == BuildStatusEnum.Successful)
- {
- details = FormatDuration(lastBuild);
- }
- else if (projectStatus.Value == BuildStatusEnum.Disabled)
- {
- details = string.Format("{0}. ", HudsonTrayTrackerResources.BuildStatus_Disabled);
- }
- else
- {
- details = projectStatus.Value.ToString() + ". ";
- if (lastBuild.Users != null && !lastBuild.Users.IsEmpty)
- {
- details += string.Format(HudsonTrayTrackerResources.BuildDetails_BrokenBy, FormatUsers(lastBuild));
- }
- }
- }
- if (Project.Queue.InQueue)
- {
- if (!projectStatus.IsInProgress)
- {
- details += string.Format(HudsonTrayTrackerResources.BuildDetails_InQueue_Why, Project.Queue.Why);
- }
- }
- if (projectStatus.IsStuck)
- {
- details = "Queued, possibly stuck. " + string.Format(HudsonTrayTrackerResources.BuildDetails_InQueue_Why, Project.Queue.Why);
- }
- }
- }
-
- return details;
- }
-
- private string FormatBuildDetailsWithDisplayName(BuildDetails details)
- {
- if (details == null)
- return "-";
- string shortDisplayName = details.DisplayName.Replace(Project.Name, string.Empty).Trim();
-
- string res = string.Empty;
- if (shortDisplayName.Equals(string.Concat("#", details.Number.ToString())))
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_Format_NumberDate,
- details.Number.ToString(), details.Time.ToLocalTime());
- }
- else
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_Format_DisplayName_NumberDate,
- shortDisplayName, details.Number.ToString(), details.Time.ToLocalTime());
- }
- return res;
- }
-
- private string FormatBuildDetails(BuildDetails details)
- {
- if (details == null)
- return "-";
- string res = string.Format(HudsonTrayTrackerResources.BuildDetails_Format_NumberDate,
- details.Number, details.Time.ToLocalTime());
- return res;
- }
-
- private string FormatUsers(BuildDetails details)
- {
- if (details == null)
- return "-";
- string res = StringUtils.Join(details.Users, HudsonTrayTrackerResources.BuildDetails_UserSeparator);
- return res;
- }
-
- private string FormatDuration(BuildDetails details)
- {
- if (details == null)
- return string.Empty;
- string res = string.Empty;
- if (details.Duration.TotalHours > 1)
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_Duration_HHMM,
- details.Duration.Days * 24 + details.Duration.Hours, details.Duration.Minutes);
- }
- else if (details.Duration.TotalMinutes < 1)
- {
- res = HudsonTrayTrackerResources.BuildDetails_Duration_0M;
- }
- else
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_Duration_MM,
- Math.Max(details.Duration.Minutes + (details.Duration.Seconds >= 30 ? 1 : 0), 1));
- }
- return res;
- }
-
- private string FormatEstimatedDuration(BuildDetails details)
- {
- if (details == null)
- return string.Empty;
- string res = string.Empty;
- DateTime endtime = details.Time.Add(details.EstimatedDuration);
- TimeSpan timeleft = TimeSpan.FromTicks(endtime.Subtract(DateTime.UtcNow).Ticks);
-
- if (timeleft.TotalHours >= 1)
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_EstimatedDuration_HHMM_Remaining,
- timeleft.Days * 24 + timeleft.Hours, timeleft.Minutes);
- }
- else if (timeleft.TotalHours < -1)
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_EstimatedDuration_HHMM_LongerThanUsual,
- Math.Abs(timeleft.Days * 24 + timeleft.Hours), Math.Abs(timeleft.Minutes));
- }
- else if (timeleft.TotalHours < 0)
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_EstimatedDuration_MM_LongerThanUsual,
- Math.Abs(timeleft.Minutes));
- }
- else
- {
- res = string.Format(HudsonTrayTrackerResources.BuildDetails_EstimatedDuration_MM_Remaining,
- timeleft.Minutes);
- }
- return res;
- }
- }
-
- private void openProjectPageMenuItem_Click(object sender, EventArgs e)
- {
- OpenSelectedProjectPage();
- }
-
- private void openConsolePageMenuItem_Click(object sender, EventArgs e)
- {
- OpenSelectedProjectConsolePage();
- }
-
- private void runBuildMenuItem_Click(object sender, EventArgs e)
- {
- Project project = GetSelectedProject();
- if (project == null)
- return;
- try
- {
- HudsonService.SafeRunBuild(project);
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- XtraMessageBox.Show(string.Format(HudsonTrayTrackerResources.RunBuildFailed_Text, ex.Message),
- HudsonTrayTrackerResources.RunBuildFailed_Caption);
- }
- }
-
- private Project GetSelectedProject()
- {
- int[] rowHandles = projectsGridView.GetSelectedRows();
- if (rowHandles.Length != 1)
- return null;
- int rowHandle = rowHandles[0];
- int dsRowIndex = projectsGridView.GetDataSourceRowIndex(rowHandle);
- ProjectWrapper projectWrapper = projectsDataSource[dsRowIndex];
- return projectWrapper.Project;
- }
-
- public static void ShowOrFocus()
- {
- if (Instance.WindowState == FormWindowState.Minimized)
- PInvokeUtils.RestoreForm(Instance);
- else if (Instance.Visible)
- Instance.Activate();
- else
- Instance.Show();
- }
-
- private void checkUpdatesButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- bool hasUpdates;
- try
- {
- hasUpdates = ApplicationUpdateService.CheckForUpdates_Synchronous(
- ApplicationUpdateService.UpdateSource.User);
- }
- catch (Exception ex)
- {
- string errorMessage = String.Format(HudsonTrayTrackerResources.ErrorBoxMessage, ex.Message);
- XtraMessageBox.Show(errorMessage, HudsonTrayTrackerResources.ErrorBoxCaption,
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- return;
- }
- if (hasUpdates == false)
- {
- XtraMessageBox.Show(HudsonTrayTrackerResources.ApplicationUpdates_NoUpdate_Text,
- HudsonTrayTrackerResources.ApplicationUpdates_Caption,
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
-
- private void acknowledgeMenuItem_Click(object sender, EventArgs e)
- {
- ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
- Project project = GetSelectedProject();
- if (project == null)
- return;
-
- if (menuItem.Checked)
- {
- TrayNotifier.Instance.ClearAcknowledgedStatus(project);
- }
- else
- {
- BuildStatus projectStatus = project.Status;
- if (projectStatus.IsStuck || projectStatus.Value >= BuildStatusEnum.Indeterminate)
- TrayNotifier.Instance.AcknowledgeStatus(project, projectStatus);
- }
- menuItem.Checked = !menuItem.Checked;
- }
-
- private void stopAcknowledgingMenuItem_Click(object sender, EventArgs e)
- {
- Project project = GetSelectedProject();
- if (project == null)
- return;
- TrayNotifier.Instance.ClearAcknowledgedStatus(project);
- }
-
- private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
- {
- Project project = GetSelectedProject();
- bool isProjectSelected = project != null;
-
- if (project == null)
- {
- openProjectPageMenuItem.Enabled
- = openConsolePageMenuItem.Enabled
- = runBuildMenuItem.Enabled
- = acknowledgeStatusMenuItem.Enabled
- = claimBuildMenuItem.Enabled
- = acknowledgeProjectMenuItem.Enabled
- = false;
- return;
- }
-
- // get a copy of the reference to avoid a race condition
- BuildStatus projectStatus = project.Status;
-
- acknowledgeProjectMenuItem.Checked = project.IsAcknowledged;
- acknowledgeStatusMenuItem.Checked = TrayNotifier.Instance.IsStatusAcknowledged(project);
- if (acknowledgeProjectMenuItem.Checked)
- {
- acknowledgeStatusMenuItem.Enabled = false;
- }
- else
- {
- acknowledgeStatusMenuItem.Enabled = ( projectStatus.IsStuck || projectStatus.Value >= BuildStatusEnum.Indeterminate );
- }
-
- bool shouldOpenConsolePage = ShouldOpenConsolePage(project);
- if (shouldOpenConsolePage)
- {
- openProjectPageMenuItem.Font = normalMenuItemFont;
- openConsolePageMenuItem.Font = mainMenuItemFont;
- }
- else
- {
- openConsolePageMenuItem.Font = normalMenuItemFont;
- openProjectPageMenuItem.Font = mainMenuItemFont;
- }
-
- // Claim
- claimBuildMenuItem.Visible
- = toolStripSeparator2.Visible
- = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin;
- claimBuildMenuItem.Enabled
- = toolStripSeparator2.Enabled
- = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin && project.LastFailedBuild != null;
- }
-
- private void removeProjectMenuItem_Click(object sender, EventArgs e)
- {
- Project project = GetSelectedProject();
- if (project == null)
- return;
- ConfigurationService.RemoveProject(project);
- }
-
- private void claimBuildMenuItem_Click(object sender, EventArgs e)
- {
- Project project = GetSelectedProject();
- if (project == null)
- return;
- BuildDetails lastFailedBuild = project.LastFailedBuild;
- if (lastFailedBuild == null)
- return;
-
- var form = new ClaimBuildForm();
- form.Initialize(project, lastFailedBuild);
-
- var res = form.ShowDialog();
- if (res != DialogResult.OK)
- return;
- }
-
- private void projectsGridView_CustomColumnSort(object sender, CustomColumnSortEventArgs e)
- {
- int? res = DoCustomColumnSort(sender, e);
- if (res == null)
- return;
- e.Handled = true;
- e.Result = res.Value;
- }
-
- private int? DoCustomColumnSort(object sender, CustomColumnSortEventArgs e)
- {
- DateTime? date1 = GetBuildDate(e.Column, e.ListSourceRowIndex1);
- DateTime? date2 = GetBuildDate(e.Column, e.ListSourceRowIndex2);
- if (date1 == null && date2 == null)
- return null;
- if (date1 == null)
- return -1;
- if (date2 == null)
- return 1;
- int res = date1.Value.CompareTo(date2.Value);
- return res;
- }
-
- private DateTime? GetBuildDate(GridColumn column, int listSourceRowIndex)
- {
- BuildDetails buildDetails = GetBuildDetails(column, listSourceRowIndex);
- if (buildDetails == null)
- return null;
- return buildDetails.Time;
- }
-
- private BuildDetails GetBuildDetails(GridColumn column, int listSourceRowIndex)
- {
- ProjectWrapper projectWrapper = (ProjectWrapper)projectsDataSource[listSourceRowIndex];
- if (column == lastSuccessGridColumn)
- return projectWrapper.LastSuccessBuild;
- if (column == lastFailureGridColumn)
- return projectWrapper.LastFailureBuild;
- if (column == lastBuildGridColumn)
- return projectWrapper.LastBuild;
- throw new Exception("Column not supported: " + column.Caption);
- }
-
- private void MainForm_KeyUp(object sender, KeyEventArgs e)
- {
- if (e.KeyCode == Keys.F5)
- ProjectsUpdateService.UpdateProjects();
- }
-
- private delegate void UpdateIconDelegate(Icon icon);
- public void UpdateIcon(Icon icon)
- {
- if (ConfigurationService.GeneralSettings.UpdateMainWindowIcon == false)
- return;
-
- if (InvokeRequired)
- {
- Delegate del = new UpdateIconDelegate(UpdateIcon);
- MainForm.Instance.BeginInvoke(del, icon);
- return;
- }
-
- this.Icon = icon;
- }
-
- private void ResetIcon()
- {
- // copied from the designer code
- ComponentResourceManager resources = new ComponentResourceManager(typeof(MainForm));
- this.Icon = ((Icon)(resources.GetObject("$this.Icon")));
- }
-
- private void UpdateClaimPluginIntegration()
- {
- bool integrate = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin;
- if (integrate)
- {
- if (claimedByGridColumn.VisibleIndex == -1)
- {
- claimedByGridColumn.Visible = true;
- claimedByGridColumn.VisibleIndex = projectsGridView.Columns.Count - 2;
- }
- if (claimReasonGridColumn.VisibleIndex == -1)
- {
- claimReasonGridColumn.Visible = true;
- claimReasonGridColumn.VisibleIndex = 8;
- }
- }
- else
- {
- claimedByGridColumn.Visible = false;
- claimReasonGridColumn.Visible = false;
- }
- }
-
- private void acknowledgeProjectMenuItem_Click(object sender, EventArgs e)
- {
- ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
- Project project = GetSelectedProject();
- if (project == null)
- return;
-
- menuItem.Checked = project.IsAcknowledged = !menuItem.Checked;
- TrayNotifier.Instance.AcknowledgedProject();
- }
-
- private void setAuthenticationTokenMenuItem_Click(object sender, EventArgs e)
- {
- ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
- Project project = GetSelectedProject();
- if (project == null)
- return;
-
- AuthenticationTokenForm.ShowDialogOrFocus(project);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.BusinessComponents;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.Properties;
+using DevExpress.XtraGrid.Views.Base;
+using System.Drawing.Imaging;
+using Common.Logging;
+using System.Reflection;
+using DevExpress.XtraGrid.Views.Grid.ViewInfo;
+using System.Diagnostics;
+using Jenkins.Tray.Utils.Logging;
+using DevExpress.Utils.Controls;
+using Jenkins.Tray.Utils;
+using DevExpress.XtraGrid.Columns;
+using Spring.Context.Support;
+using DevExpress.Utils;
+
+namespace Jenkins.Tray.UI
+{
+ public partial class MainForm : DevExpress.XtraEditors.XtraForm
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ public static MainForm Instance
+ {
+ get
+ {
+ MainForm instance = (MainForm)ContextRegistry.GetContext().GetObject("MainForm");
+ return instance;
+ }
+ }
+
+ BindingList projectsDataSource;
+ bool exiting;
+ int lastHoveredDSRowIndex = -1;
+ IDictionary iconsByKey;
+ Font normalMenuItemFont;
+ Font mainMenuItemFont;
+
+ public ConfigurationService ConfigurationService { get; set; }
+ public JenkinsService JenkinsService { get; set; }
+ public ProjectsUpdateService ProjectsUpdateService { get; set; }
+ public ApplicationUpdateService ApplicationUpdateService { get; set; }
+
+ public MainForm()
+ {
+ InitializeComponent();
+ normalMenuItemFont = openProjectPageMenuItem.Font;
+ mainMenuItemFont = new Font(openProjectPageMenuItem.Font, FontStyle.Bold);
+ }
+
+ private void Initialize()
+ {
+ ConfigurationService.ConfigurationUpdated += configurationService_ConfigurationUpdated;
+ ProjectsUpdateService.ProjectsUpdated += updateService_ProjectsUpdated;
+
+ Disposed += delegate
+ {
+ ConfigurationService.ConfigurationUpdated -= configurationService_ConfigurationUpdated;
+ ProjectsUpdateService.ProjectsUpdated -= updateService_ProjectsUpdated;
+ };
+ }
+
+ protected override void OnLoad(EventArgs e)
+ {
+ base.OnLoad(e);
+ Initialize();
+ UpdateClaimPluginIntegration();
+ LoadIcons();
+ LoadProjects();
+ }
+
+ void configurationService_ConfigurationUpdated()
+ {
+ UpdateClaimPluginIntegration();
+ LoadProjects();
+ if (ConfigurationService.GeneralSettings.UpdateMainWindowIcon == false)
+ ResetIcon();
+ }
+
+ private delegate void ProjectsUpdatedDelegate();
+ private void updateService_ProjectsUpdated()
+ {
+ Delegate del = new ProjectsUpdatedDelegate(OnProjectsUpdated);
+ BeginInvoke(del);
+ }
+ private void OnProjectsUpdated()
+ {
+ UpdateProjects();
+ }
+
+ private void settingsButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ SettingsForm.Instance.ShowDialog();
+ }
+
+ private void LoadProjects()
+ {
+ projectsDataSource = new BindingList();
+
+ foreach (Server server in ConfigurationService.Servers)
+ {
+ foreach (Project project in server.Projects)
+ {
+ ProjectWrapper wrapper = new ProjectWrapper(project);
+ projectsDataSource.Add(wrapper);
+ }
+ }
+
+ projectsGridControl.DataSource = projectsDataSource;
+ projectsGridView.BestFitColumns();
+
+ UpdateStatusBar();
+ }
+
+ private void UpdateProjects()
+ {
+ projectsGridView.RefreshData();
+
+ UpdateStatusBar();
+ }
+
+ private void UpdateStatusBar()
+ {
+ lastCheckBarStaticItem.Caption = string.Format(JenkinsTrayResources.LastCheck_Format, DateTime.Now);
+ }
+
+ private void refreshButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ ProjectsUpdateService.UpdateProjects();
+ }
+
+ private void JenkinsTrayForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (exiting == false && e.CloseReason == CloseReason.UserClosing)
+ {
+ Hide();
+ e.Cancel = true;
+ }
+ }
+
+ public void Exit()
+ {
+ exiting = true;
+ Close();
+ Application.Exit();
+ }
+
+ private void exitButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ Exit();
+ }
+
+ private void projectsGridView_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
+ {
+ if (e.IsGetData)
+ {
+ if (e.Column == statusGridColumn)
+ {
+ ProjectWrapper projectWrapper = (ProjectWrapper)projectsDataSource[e.ListSourceRowIndex];
+ byte[] imgBytes = iconsByKey[projectWrapper.Project.Status.Key];
+ e.Value = imgBytes;
+ }
+ }
+ }
+
+ private void LoadIcons()
+ {
+ iconsByKey = new Dictionary();
+
+ foreach (BuildStatusEnum statusValue in Enum.GetValues(typeof(BuildStatusEnum)))
+ {
+ LoadIcon(statusValue, false, false);
+ LoadIcon(statusValue, false, true);
+ LoadIcon(statusValue, true, false);
+ }
+ }
+
+ private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
+ {
+ BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);
+ if (iconsByKey.ContainsKey(status.Key))
+ return;
+
+ try
+ {
+ string resourceName = string.Format("Jenkins.Tray.Resources.StatusIcons.{0}.gif", status.Key);
+ Image img = ResourceImageHelper.CreateImageFromResources(resourceName, GetType().Assembly);
+ byte[] imgBytes = DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img, ImageFormat.Gif);
+ iconsByKey.Add(status.Key, imgBytes);
+ }
+ catch (Exception ex)
+ {
+ XtraMessageBox.Show(JenkinsTrayResources.FailedLoadingIcons_Text,
+ JenkinsTrayResources.FailedLoadingIcons_Caption,
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ LoggingHelper.LogError(logger, ex);
+ throw new Exception("Failed loading icon: " + status, ex);
+ }
+ }
+
+ private void aboutButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ AboutForm.Instance.ShowDialog();
+ }
+
+ private void projectsGridView_MouseMove(object sender, MouseEventArgs e)
+ {
+ Point pt = new Point(e.X, e.Y);
+ GridHitInfo ghi = projectsGridView.CalcHitInfo(pt);
+ if (ghi.InRow)
+ {
+ int dsRowIndex = projectsGridView.GetDataSourceRowIndex(ghi.RowHandle);
+ if (lastHoveredDSRowIndex != dsRowIndex)
+ {
+ ProjectWrapper project = projectsDataSource[dsRowIndex];
+ string message = JenkinsTrayResources.ResourceManager
+ .GetString("BuildStatus_" + project.Project.Status.Key);
+ if (project.Project.Status.IsStuck && project.Project.Queue.InQueue)
+ {
+ message += string.Format(JenkinsTrayResources.BuildDetails_InQueue_Since, project.Project.Queue.InQueueSince);
+ }
+ toolTip.SetToolTip(projectsGridControl, message);
+ }
+ lastHoveredDSRowIndex = dsRowIndex;
+ }
+ else
+ {
+ lastHoveredDSRowIndex = -1;
+ }
+ }
+
+ private void projectsGridView_DoubleClick(object sender, EventArgs e)
+ {
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+ bool shouldOpenConsolePage = ShouldOpenConsolePage(project);
+ if (shouldOpenConsolePage)
+ OpenProjectConsolePage(project);
+ else
+ OpenProjectPage(project);
+ }
+
+ private bool ShouldOpenConsolePage(Project project)
+ {
+ if (project == null)
+ return false;
+ BuildStatus status = project.Status;
+ bool res = BuildStatusUtils.IsErrorBuild(status) || status.IsInProgress;
+ return res;
+ }
+
+ private void OpenSelectedProjectPage()
+ {
+ Project project = GetSelectedProject();
+ OpenProjectPage(project);
+ }
+
+ private void OpenProjectPage(Project project)
+ {
+ if (project == null)
+ return;
+ UIUtils.OpenWebPage(project.Url, logger);
+ }
+
+ private void OpenSelectedProjectConsolePage()
+ {
+ Project project = GetSelectedProject();
+ OpenProjectConsolePage(project);
+ }
+
+ private void OpenProjectConsolePage(Project project)
+ {
+ if (project == null)
+ return;
+ string url = JenkinsService.GetConsolePage(project);
+ UIUtils.OpenWebPage(url, logger);
+ }
+
+ private class ProjectWrapper
+ {
+ public ProjectWrapper(Project project)
+ {
+ this.Project = project;
+ }
+
+ public Project Project { get; private set; }
+
+ public string Server
+ {
+ get { return Project.Server.DisplayText; }
+ }
+ public string Name
+ {
+ get { return Project.Name; }
+ }
+ public string Url
+ {
+ get { return Uri.UnescapeDataString(Project.Url); }
+ }
+
+ public string buildDetailsStr
+ {
+ get
+ {
+ string details = string.Empty;
+ try
+ {
+ details = FormatBuildDetailsAndSummary();
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ XtraMessageBox.Show(string.Format(JenkinsTrayResources.RunBuildFailed_Text, ex.Message),
+ JenkinsTrayResources.RunBuildFailed_Caption);
+ }
+ return details;
+ }
+ }
+ public string lastBuildStr
+ {
+ get { return FormatBuildDetails(LastBuild); }
+ }
+
+ public BuildDetails LastBuild
+ {
+ get { return Project.LastBuild; }
+ }
+
+ public BuildDetails LastSuccessBuild
+ {
+ get { return Project.LastSuccessfulBuild; }
+ }
+ public string LastSuccessBuildStr
+ {
+ get { return FormatBuildDetails(LastSuccessBuild); }
+ }
+ public BuildDetails LastFailureBuild
+ {
+ get { return Project.LastFailedBuild; }
+ }
+ public string LastFailureBuildStr
+ {
+ get { return FormatBuildDetails(LastFailureBuild); }
+ }
+ public string LastSuccessUsers
+ {
+ get { return FormatUsers(Project.LastSuccessfulBuild); }
+ }
+ public string LastFailureUsers
+ {
+ get { return FormatUsers(Project.LastFailedBuild); }
+ }
+ public string ClaimedBy
+ {
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ var lastFailedBuild = Project.LastFailedBuild;
+ if (lastFailedBuild == null || lastFailedBuild.ClaimDetails == null)
+ return "";
+ return Project.LastFailedBuild.ClaimDetails.User;
+ }
+ }
+ public string ClaimReason
+ {
+ get
+ {
+ // get a copy of the reference to avoid a race condition
+ var lastFailedBuild = Project.LastFailedBuild;
+ if (lastFailedBuild == null || lastFailedBuild.ClaimDetails == null)
+ return "";
+ return Project.LastFailedBuild.ClaimDetails.Reason;
+ }
+ }
+
+ private string FormatBuildDetailsAndSummary()
+ {
+ string details = string.Empty;
+ string buildCausesSummary = string.Empty;
+
+ // get a copy of the reference to avoid a race condition
+ BuildStatus projectStatus = Project.Status;
+ BuildDetails lastBuild = Project.LastBuild;
+
+ if (lastBuild != null)
+ {
+ // get a copy of the reference to avoid a race condition
+ BuildCauses lastBuildCauses = lastBuild.Causes;
+
+ if (lastBuildCauses != null)
+ {
+ if (projectStatus.IsInProgress)
+ {
+ TimeSpan progressts = lastBuild.EstimatedDuration;
+ string timeleft = FormatEstimatedDuration(lastBuild);
+
+ foreach (BuildCause cause in lastBuildCauses.Causes)
+ {
+ if (lastBuildCauses.HasUniqueCauses == false)
+ {
+ buildCausesSummary = JenkinsTrayResources.BuildDetails_Cause_MultipleSources;
+ break;
+ }
+
+ switch (cause.Cause)
+ {
+ case BuildCauseEnum.SCM:
+ {
+ if (lastBuild.Users.Count == 0)
+ {
+ buildCausesSummary = JenkinsTrayResources.BuildDetails_Cause_SCM;
+ }
+ else if (lastBuild.Users.Count > 1)
+ {
+ buildCausesSummary = string.Format(JenkinsTrayResources.BuildDetails_Cause_SCM_Multiple, lastBuild.Users.Count);
+ }
+ else
+ {
+ buildCausesSummary = string.Format(JenkinsTrayResources.BuildDetails_Cause_SCM_Single, FormatUsers(lastBuild));
+ }
+ }
+ break;
+ case BuildCauseEnum.User:
+ {
+ buildCausesSummary = string.Format(JenkinsTrayResources.BuildDetails_Cause_User, cause.Starter);
+ }
+ break;
+ case BuildCauseEnum.RemoteHost:
+ {
+ buildCausesSummary = JenkinsTrayResources.BuildDetails_Cause_RemoteHost;
+ }
+ break;
+ case BuildCauseEnum.Timer:
+ {
+ buildCausesSummary = JenkinsTrayResources.BuildDetails_Cause_Timer;
+ }
+ break;
+ case BuildCauseEnum.UpstreamProject:
+ {
+ buildCausesSummary = JenkinsTrayResources.BuildDetails_Cause_UpstreamProject;
+ }
+ break;
+ }
+ }
+ details = timeleft + buildCausesSummary;
+ }
+ else
+ {
+ if (projectStatus.Value == BuildStatusEnum.Successful)
+ {
+ details = FormatDuration(lastBuild);
+ }
+ else if (projectStatus.Value == BuildStatusEnum.Disabled)
+ {
+ details = string.Format("{0}. ", JenkinsTrayResources.BuildStatus_Disabled);
+ }
+ else
+ {
+ details = projectStatus.Value.ToString() + ". ";
+ if (lastBuild.Users != null && !lastBuild.Users.IsEmpty)
+ {
+ details += string.Format(JenkinsTrayResources.BuildDetails_BrokenBy, FormatUsers(lastBuild));
+ }
+ }
+ }
+ if (Project.Queue.InQueue)
+ {
+ if (!projectStatus.IsInProgress)
+ {
+ details += string.Format(JenkinsTrayResources.BuildDetails_InQueue_Why, Project.Queue.Why);
+ }
+ }
+ if (projectStatus.IsStuck)
+ {
+ details = "Queued, possibly stuck. " + string.Format(JenkinsTrayResources.BuildDetails_InQueue_Why, Project.Queue.Why);
+ }
+ }
+ }
+
+ return details;
+ }
+
+ private string FormatBuildDetailsWithDisplayName(BuildDetails details)
+ {
+ if (details == null)
+ return "-";
+ string shortDisplayName = details.DisplayName.Replace(Project.Name, string.Empty).Trim();
+
+ string res = string.Empty;
+ if (shortDisplayName.Equals(string.Concat("#", details.Number.ToString())))
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_Format_NumberDate,
+ details.Number.ToString(), details.Time.ToLocalTime());
+ }
+ else
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_Format_DisplayName_NumberDate,
+ shortDisplayName, details.Number.ToString(), details.Time.ToLocalTime());
+ }
+ return res;
+ }
+
+ private string FormatBuildDetails(BuildDetails details)
+ {
+ if (details == null)
+ return "-";
+ string res = string.Format(JenkinsTrayResources.BuildDetails_Format_NumberDate,
+ details.Number, details.Time.ToLocalTime());
+ return res;
+ }
+
+ private string FormatUsers(BuildDetails details)
+ {
+ if (details == null)
+ return "-";
+ string res = StringUtils.Join(details.Users, JenkinsTrayResources.BuildDetails_UserSeparator);
+ return res;
+ }
+
+ private string FormatDuration(BuildDetails details)
+ {
+ if (details == null)
+ return string.Empty;
+ string res = string.Empty;
+ if (details.Duration.TotalHours > 1)
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_Duration_HHMM,
+ details.Duration.Days * 24 + details.Duration.Hours, details.Duration.Minutes);
+ }
+ else if (details.Duration.TotalMinutes < 1)
+ {
+ res = JenkinsTrayResources.BuildDetails_Duration_0M;
+ }
+ else
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_Duration_MM,
+ Math.Max(details.Duration.Minutes + (details.Duration.Seconds >= 30 ? 1 : 0), 1));
+ }
+ return res;
+ }
+
+ private string FormatEstimatedDuration(BuildDetails details)
+ {
+ if (details == null)
+ return string.Empty;
+ string res = string.Empty;
+ DateTime endtime = details.Time.Add(details.EstimatedDuration);
+ TimeSpan timeleft = TimeSpan.FromTicks(endtime.Subtract(DateTime.UtcNow).Ticks);
+
+ if (timeleft.TotalHours >= 1)
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_EstimatedDuration_HHMM_Remaining,
+ timeleft.Days * 24 + timeleft.Hours, timeleft.Minutes);
+ }
+ else if (timeleft.TotalHours < -1)
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_EstimatedDuration_HHMM_LongerThanUsual,
+ Math.Abs(timeleft.Days * 24 + timeleft.Hours), Math.Abs(timeleft.Minutes));
+ }
+ else if (timeleft.TotalHours < 0)
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_EstimatedDuration_MM_LongerThanUsual,
+ Math.Abs(timeleft.Minutes));
+ }
+ else
+ {
+ res = string.Format(JenkinsTrayResources.BuildDetails_EstimatedDuration_MM_Remaining,
+ timeleft.Minutes);
+ }
+ return res;
+ }
+ }
+
+ private void openProjectPageMenuItem_Click(object sender, EventArgs e)
+ {
+ OpenSelectedProjectPage();
+ }
+
+ private void openConsolePageMenuItem_Click(object sender, EventArgs e)
+ {
+ OpenSelectedProjectConsolePage();
+ }
+
+ private void runBuildMenuItem_Click(object sender, EventArgs e)
+ {
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+ try
+ {
+ JenkinsService.SafeRunBuild(project);
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ XtraMessageBox.Show(string.Format(JenkinsTrayResources.RunBuildFailed_Text, ex.Message),
+ JenkinsTrayResources.RunBuildFailed_Caption);
+ }
+ }
+
+ private Project GetSelectedProject()
+ {
+ int[] rowHandles = projectsGridView.GetSelectedRows();
+ if (rowHandles.Length != 1)
+ return null;
+ int rowHandle = rowHandles[0];
+ int dsRowIndex = projectsGridView.GetDataSourceRowIndex(rowHandle);
+ ProjectWrapper projectWrapper = projectsDataSource[dsRowIndex];
+ return projectWrapper.Project;
+ }
+
+ public static void ShowOrFocus()
+ {
+ if (Instance.WindowState == FormWindowState.Minimized)
+ PInvokeUtils.RestoreForm(Instance);
+ else if (Instance.Visible)
+ Instance.Activate();
+ else
+ Instance.Show();
+ }
+
+ private void checkUpdatesButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+ {
+ bool hasUpdates;
+ try
+ {
+ hasUpdates = ApplicationUpdateService.CheckForUpdates_Synchronous(
+ ApplicationUpdateService.UpdateSource.User);
+ }
+ catch (Exception ex)
+ {
+ string errorMessage = String.Format(JenkinsTrayResources.ErrorBoxMessage, ex.Message);
+ XtraMessageBox.Show(errorMessage, JenkinsTrayResources.ErrorBoxCaption,
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ if (hasUpdates == false)
+ {
+ XtraMessageBox.Show(JenkinsTrayResources.ApplicationUpdates_NoUpdate_Text,
+ JenkinsTrayResources.ApplicationUpdates_Caption,
+ MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ }
+
+ private void acknowledgeMenuItem_Click(object sender, EventArgs e)
+ {
+ ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+
+ if (menuItem.Checked)
+ {
+ TrayNotifier.Instance.ClearAcknowledgedStatus(project);
+ }
+ else
+ {
+ BuildStatus projectStatus = project.Status;
+ if (projectStatus.IsStuck || projectStatus.Value >= BuildStatusEnum.Indeterminate)
+ TrayNotifier.Instance.AcknowledgeStatus(project, projectStatus);
+ }
+ menuItem.Checked = !menuItem.Checked;
+ }
+
+ private void stopAcknowledgingMenuItem_Click(object sender, EventArgs e)
+ {
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+ TrayNotifier.Instance.ClearAcknowledgedStatus(project);
+ }
+
+ private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
+ {
+ Project project = GetSelectedProject();
+ bool isProjectSelected = project != null;
+
+ if (project == null)
+ {
+ openProjectPageMenuItem.Enabled
+ = openConsolePageMenuItem.Enabled
+ = runBuildMenuItem.Enabled
+ = acknowledgeStatusMenuItem.Enabled
+ = claimBuildMenuItem.Enabled
+ = acknowledgeProjectMenuItem.Enabled
+ = false;
+ return;
+ }
+
+ // get a copy of the reference to avoid a race condition
+ BuildStatus projectStatus = project.Status;
+
+ acknowledgeProjectMenuItem.Checked = project.IsAcknowledged;
+ acknowledgeStatusMenuItem.Checked = TrayNotifier.Instance.IsStatusAcknowledged(project);
+ if (acknowledgeProjectMenuItem.Checked)
+ {
+ acknowledgeStatusMenuItem.Enabled = false;
+ }
+ else
+ {
+ acknowledgeStatusMenuItem.Enabled = ( projectStatus.IsStuck || projectStatus.Value >= BuildStatusEnum.Indeterminate );
+ }
+
+ bool shouldOpenConsolePage = ShouldOpenConsolePage(project);
+ if (shouldOpenConsolePage)
+ {
+ openProjectPageMenuItem.Font = normalMenuItemFont;
+ openConsolePageMenuItem.Font = mainMenuItemFont;
+ }
+ else
+ {
+ openConsolePageMenuItem.Font = normalMenuItemFont;
+ openProjectPageMenuItem.Font = mainMenuItemFont;
+ }
+
+ // Claim
+ claimBuildMenuItem.Visible
+ = toolStripSeparator2.Visible
+ = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin;
+ claimBuildMenuItem.Enabled
+ = toolStripSeparator2.Enabled
+ = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin && project.LastFailedBuild != null;
+ }
+
+ private void removeProjectMenuItem_Click(object sender, EventArgs e)
+ {
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+ ConfigurationService.RemoveProject(project);
+ }
+
+ private void claimBuildMenuItem_Click(object sender, EventArgs e)
+ {
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+ BuildDetails lastFailedBuild = project.LastFailedBuild;
+ if (lastFailedBuild == null)
+ return;
+
+ var form = new ClaimBuildForm();
+ form.Initialize(project, lastFailedBuild);
+
+ var res = form.ShowDialog();
+ if (res != DialogResult.OK)
+ return;
+ }
+
+ private void projectsGridView_CustomColumnSort(object sender, CustomColumnSortEventArgs e)
+ {
+ int? res = DoCustomColumnSort(sender, e);
+ if (res == null)
+ return;
+ e.Handled = true;
+ e.Result = res.Value;
+ }
+
+ private int? DoCustomColumnSort(object sender, CustomColumnSortEventArgs e)
+ {
+ DateTime? date1 = GetBuildDate(e.Column, e.ListSourceRowIndex1);
+ DateTime? date2 = GetBuildDate(e.Column, e.ListSourceRowIndex2);
+ if (date1 == null && date2 == null)
+ return null;
+ if (date1 == null)
+ return -1;
+ if (date2 == null)
+ return 1;
+ int res = date1.Value.CompareTo(date2.Value);
+ return res;
+ }
+
+ private DateTime? GetBuildDate(GridColumn column, int listSourceRowIndex)
+ {
+ BuildDetails buildDetails = GetBuildDetails(column, listSourceRowIndex);
+ if (buildDetails == null)
+ return null;
+ return buildDetails.Time;
+ }
+
+ private BuildDetails GetBuildDetails(GridColumn column, int listSourceRowIndex)
+ {
+ ProjectWrapper projectWrapper = (ProjectWrapper)projectsDataSource[listSourceRowIndex];
+ if (column == lastSuccessGridColumn)
+ return projectWrapper.LastSuccessBuild;
+ if (column == lastFailureGridColumn)
+ return projectWrapper.LastFailureBuild;
+ if (column == lastBuildGridColumn)
+ return projectWrapper.LastBuild;
+ throw new Exception("Column not supported: " + column.Caption);
+ }
+
+ private void MainForm_KeyUp(object sender, KeyEventArgs e)
+ {
+ if (e.KeyCode == Keys.F5)
+ ProjectsUpdateService.UpdateProjects();
+ }
+
+ private delegate void UpdateIconDelegate(Icon icon);
+ public void UpdateIcon(Icon icon)
+ {
+ if (ConfigurationService.GeneralSettings.UpdateMainWindowIcon == false)
+ return;
+
+ if (InvokeRequired)
+ {
+ Delegate del = new UpdateIconDelegate(UpdateIcon);
+ MainForm.Instance.BeginInvoke(del, icon);
+ return;
+ }
+
+ this.Icon = icon;
+ }
+
+ private void ResetIcon()
+ {
+ // copied from the designer code
+ ComponentResourceManager resources = new ComponentResourceManager(typeof(MainForm));
+ this.Icon = ((Icon)(resources.GetObject("$this.Icon")));
+ }
+
+ private void UpdateClaimPluginIntegration()
+ {
+ bool integrate = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin;
+ if (integrate)
+ {
+ if (claimedByGridColumn.VisibleIndex == -1)
+ {
+ claimedByGridColumn.Visible = true;
+ claimedByGridColumn.VisibleIndex = projectsGridView.Columns.Count - 2;
+ }
+ if (claimReasonGridColumn.VisibleIndex == -1)
+ {
+ claimReasonGridColumn.Visible = true;
+ claimReasonGridColumn.VisibleIndex = 8;
+ }
+ }
+ else
+ {
+ claimedByGridColumn.Visible = false;
+ claimReasonGridColumn.Visible = false;
+ }
+ }
+
+ private void acknowledgeProjectMenuItem_Click(object sender, EventArgs e)
+ {
+ ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+
+ menuItem.Checked = project.IsAcknowledged = !menuItem.Checked;
+ TrayNotifier.Instance.AcknowledgedProject();
+ }
+
+ private void setAuthenticationTokenMenuItem_Click(object sender, EventArgs e)
+ {
+ ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
+ Project project = GetSelectedProject();
+ if (project == null)
+ return;
+
+ AuthenticationTokenForm.ShowDialogOrFocus(project);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/MainForm.resx b/JenkinsTray/UI/MainForm.resx
similarity index 98%
rename from HudsonTrayTracker/UI/MainForm.resx
rename to JenkinsTray/UI/MainForm.resx
index 99a396b..ece0e3f 100644
--- a/HudsonTrayTracker/UI/MainForm.resx
+++ b/JenkinsTray/UI/MainForm.resx
@@ -1,815 +1,815 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
- JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAAB3UlE
- QVQ4T6WQ3UuTURyAF9130UV/QzeRBLuo7oVdKAiJXdVQFkIimdoH+FFUq3BiaMEWmrpobjZxanMbKuqy
- HNO0rKxUKKZ7Zwv0QqqxzT3tHFGpva2ii+fiPec8z++cVwP8F6qL2fDXlep6yk4hGL5syFE9pEaj88ve
- nvb6XCF+bDrHywtbEbFBQ3dUctse5ar1MxdbVzl7N4LepFBoDHO6UaHeEmTIVYvTG+TVjUop39FqtwLW
- p9A2msI8lKR5MEGDK871xzFqbDGu2DZ44JrD56xk7ZOJDxNlGI21Ur529HC+DJjEdEeUuvT0CssqJU0K
- J2+GMTQr3HO8wGMzSPndaDH993Uc2L+PM4UHc8TTNF2D0yRTyQw2YgkCM29xdxRlyNXFh45v/5udwFhw
- cQfx/cQ3zkBrXlY56w3MbQ+Z9NwiNFO1e+3zNUzNh/eoBsTkkcACvon3fI8nZCCV2sTRUiBle5+XPP2l
- tLMr/xTYRsjrXxOUV1RTcKIofUKD2z9HZ/8Ux/JLMwOdrudSFJPdY/P0Dr9GWY/zaGCW9t5pSWDxG+bu
- SfWAxT4iAytKhKVQhDdLingn47MreIPL9D1bxukP/T7QYvVwJFePVlfyR1QDvy78K6qLfw+aH9lH74cB
- EBSlAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
- JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAACHElE
- QVQ4T2P4//8/RRirICkYqyAynr7zz38Q7t/07X/z8rf/y2Y9/p/VfwsoBZFHUVy38k9w+YKPq32brkrB
- xECaOzb8/1+26Nf/xL5n/z3Kzk1F1gNnVCz+rdOy+u+p1P4n/61St9yBifes//K/YN63/zF9H/+7Vdz+
- b5t7/Ih56iFNmDzcgMql3yZULP723zn/9H+doAXvYOK1C1/8D2u999+59OYni+wL/42T9v3Xi97cA5OH
- G1Cz9POFnOnv/5sm7/+vG7l+Lkw8d9Kd/w4Fp3NcSi9Ps807918vZtt/3bCl52HycAMal3/6nD717X/j
- hL3/9eN2WIHE8vJusyZ1XAEy/zOEtd6xDm66BzZAK2D2Z5g+uAH1Sz99Tpv67r9Z6n64Acg4Z9Z7m7Qp
- b/4bxu3CbkDFwo8XUqe8/W+fe/q/debRmTBxGK5d/mdexrQP//VjdvzXCV1yASYOV5A99WVffO/T/15V
- N/4H1t98mzbxxZz8me9syhd8s2lY/Xd+/Yrf74Ob7//XDV/1XydsxUQMA8KabmsH1l8/6lF25b9v7Z3/
- cb3P/2dOe/c/b+bH/zmzPv0HaQaGPsj209pha3UwDABh1+LzvnY5x44ax+/+rxuzFYxBgaYXswUY8suB
- mhed1gtdFoysB8UAEDaM36upG7GmTyd4wUUtvylfQFg7cO4l3bAlk7RCV+qiq0fhkIOxChKP/zMAAKH7
- vWcksHU/AAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
- JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAACLUlE
- QVQ4T52TvY/ScBjHuVIRKHA9JAgnL+VoC7TX0kLLS6EvFBTa0uj5J7gYF+PsfpOTMrg4ORgHY+LCYJwc
- TYyJiYuDLu7GxHgxd/Hnr5fA8TZcrsmnzfN9nufTNPnVBwDw2ZYljGzr3ciyTNu2EC87L75eb+DvD67f
- hU9g9vt/HNs5cMaOf9Owohro7YNbe8PhjfuzzBOgkDuabk6bbRXoxuBkNLIeus6yhKyIwY5umo5tHxmG
- +Wwu8G5QkIa0jN5gqnR1oOkGuOk6b1x3jHl9uaWGhpb1UtXNY1luPmJ4KbIkmAElAcgD3egfa5oJxq77
- oq3ovKJoE7XbBbwoTWhG2F7cWRJ4dFR1S9fNCvykT41mB9TqjSOxXvtJM9zrYokLrc4vFYtUBcngq9Lf
- tqICvlr7RhQr8U1za4FHXZIIurT/mePFf1AEJLkFGJb7uml2LRBrcp4us1+g4KRcYV8lkmkplyenglgH
- VIm9tzq/VJRZLpUlih9yBQrAt79Pp3bjkVgM244nsPwe/VQQ6r8pRsgu7pwtC61grkA/T10r/NrnxB8s
- V2VmvQiOB0MhLMZVxY/pDPEkU6DnZ2Qu2M0STjJFAIpmAUmXD0NY9PQMzEBRPwJzkiSp71F8J1/ipNMj
- f9rE8XggkUgexq9cBXmi+DYYjtCRGL72T+D4jr/RaE+waFgu8c0zgUcmT9UuBS4/9m0hmh9Fo7N8FXih
- CIKE5/Vi8yJsDM8P8P0HLGwR4Wl3ICYAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
- JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsDAAALAwFJjozSAAACpUlE
- QVQ4T32Se0hTURzH71/91Z/9XZT0sP7QHkqg9CDTlTWDiKyQFEtFA5HIFohlmr0U81Gr+cD5mM7Mx3TO
- 5pptPuZypqEiIYKS6cQHpuac895v5xzaxWj1x/fCvZzv53fO5x4OAFfVYoNK24tyjQWl9V0orjVBoW6H
- XNWGgopWsgRsXZJiWkIivtOIAAG8GF7gseYSsOQQ4HcmmhXc5csZI+zdHfag02lRYxzE29YBVGp6UVJr
- wdDoFAO4yxXmNcTnjiIiZw7Rr9d3iICKZqs4fX2Dx0+ngPkVAX0jUwi8eJsC8Eq3DFWnC08aXYjKW0BI
- 8gCNPwOUaSw2Wi5r+ISimm5ybjOyi43oGZx27+DwadkYbhU7cTLBiP1hCgTEGuAf2ZjJAMr6rrgNcm7H
- Oo/FVR4zPwRMzAKb5d4v/Jzhc6Mfe869QfzDmiRvqZw/GF5l445eU+4+HqefcLh45Co/4lmhARkvW5H6
- QssA7qPRjNsd8Lk5yOQeuiTXe0sV4HZdaHgsTaxPn19yYW5ZwPcFAWMzAkYmBTadFj3JPRByN3ZnUBa4
- bZKm6jvPNfELRFppnRVFaguSnzYg6VEd/id3X3CqiQCs3FZJt+p6mqlzYnYDUpkVVYZvaOu1Q9djB5HL
- yp7k0ukkR7gtoV/T91758MU3VHb1fMoQ/KO0OBb+IJrYtxG58CS3o99O/04cuweRWZO27KZVRGQOQ9m+
- Clmlk0HO3huOKXnXAU9y220MUM4AvuHVgUGJZuRrV5CqdiJSziMsbZxBcsmWlx38X3L1VgYg/d83kUBO
- +US8R0CMnpW9gnNwIrHPT6E2gspNK9AhJbtZlEv9/AGgIUK2e4XkueUE0m9ylQH2RYFIm4K5f1qU22Lx
- AKDZXKbJL9Oxhf8KAO4XJ//kwGbkeloAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
- JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACX0lEQVQ4T52RS2wSURSGZ+XSlW7duKkL
- dYcbXTSpceFrZdqktYsWErUxGN/GxEQTxTbVmkBtrDEatdTUUGKpQJqQPpECCqWRgVYKhjeFMraAUFv8
- PXeYpNRXjH9yMveee/7v3HOH+1mByCKE3FdUK19aw6TTD6nk94qnl1HIr0gWwO7yoa62Bfq3VikDfKfw
- BpO/gsKJDISlpUqVpGP196nwJGoO9kqZDeksns2QWCwqHnyjyK2JS3GtnV5FlrUlJQuAwJKSVD36CmT6
- YwhCvohVSmZodPa1z8VxS21Ab98IXgxOoES5SB4IZIE0QdZpP+wI4/yNHnAW2wxShTLSVBWnJxDKwHxc
- wI4DndRBgZ37O8XZF74AfBqYI0iMIPbgSgVgmnDjM7lYh6BAXaiQaWCcJ8AVyBq04g289EQzKWA2QxBq
- NObLoOnMHXCDo254EyWECMDTIYscGTT6DwS4CFl9H5Zp704Cjhh9FwEP3UTviBLgLrhnQ1bYPiXho86M
- 7koA7H90D7kJoMS+hpdgl7JT/h0B7ASwRtbR1qHD2csPwD03O0XAuD8LD43gphnDZGi5OUyAa9iypwtT
- sSKcRJ0kiMlXwGPLPLbtbqRzSf1Guwgx06Dv6XomvoTj58bQ2p1C070FXNeGRPMbPg+N0Yddhy5AoWzf
- ADA96R8Bi0fGWbxyJDAaLcNGj+ahFzTwBajNfsjbddi+txnNp29vNldLcUmNI/IOEWIIkJlCrtJja80J
- yOpO/d1crcNtD6EacGCqCNS2av7dWC0GUT514ejV1/8HYGLGRmXXH8wc9wNu1WL5n0tJ/wAAAABJRU5E
- rkJggg==
-
-
-
- 384, 17
-
-
-
- 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
- gg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
- JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAACLUlE
- QVQ4T52TvY/ScBjHuVIRKHA9JAgnL+VoC7TX0kLLS6EvFBTa0uj5J7gYF+PsfpOTMrg4ORgHY+LCYJwc
- TYyJiYuDLu7GxHgxd/Hnr5fA8TZcrsmnzfN9nufTNPnVBwDw2ZYljGzr3ciyTNu2EC87L75eb+DvD67f
- hU9g9vt/HNs5cMaOf9Owohro7YNbe8PhjfuzzBOgkDuabk6bbRXoxuBkNLIeus6yhKyIwY5umo5tHxmG
- +Wwu8G5QkIa0jN5gqnR1oOkGuOk6b1x3jHl9uaWGhpb1UtXNY1luPmJ4KbIkmAElAcgD3egfa5oJxq77
- oq3ovKJoE7XbBbwoTWhG2F7cWRJ4dFR1S9fNCvykT41mB9TqjSOxXvtJM9zrYokLrc4vFYtUBcngq9Lf
- tqICvlr7RhQr8U1za4FHXZIIurT/mePFf1AEJLkFGJb7uml2LRBrcp4us1+g4KRcYV8lkmkplyenglgH
- VIm9tzq/VJRZLpUlih9yBQrAt79Pp3bjkVgM244nsPwe/VQQ6r8pRsgu7pwtC61grkA/T10r/NrnxB8s
- V2VmvQiOB0MhLMZVxY/pDPEkU6DnZ2Qu2M0STjJFAIpmAUmXD0NY9PQMzEBRPwJzkiSp71F8J1/ipNMj
- f9rE8XggkUgexq9cBXmi+DYYjtCRGL72T+D4jr/RaE+waFgu8c0zgUcmT9UuBS4/9m0hmh9Fo7N8FXih
- CIKE5/Vi8yJsDM8P8P0HLGwR4Wl3ICYAAAAASUVORK5CYII=
-
-
-
-
- AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
- CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
- AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
- g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
- 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
- ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
- /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
- l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
- wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
- /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
- //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
- l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
- z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
- //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
- //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
- 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
- /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
- //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
- kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
- 7P//////////////////////////////////////////////////////////////////////////////
- /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
- iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
- tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
- ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
- /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
- 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
- pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
- xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
- sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
- zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
- /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
- //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
- q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
- 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
- //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
- 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
- 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
- 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
- nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
- sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
- +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
- zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
- //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
- sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
- v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
- AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
- iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
- n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
- t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
- wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
- 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
- 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
- wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
- 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
- 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAJyUkJCQhIiAgHx8eHR0bGhoY
- GBcWFRUTEhIQEA8ODQ0NCwwICAkGBQUFAwMDAQEBAQAAAAAAAAAAAAAAAAAAACgnJyUkJCEiIB8fHh4d
- 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
- Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
- QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
- RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
- SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
- TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
- UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
- VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
- HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
- ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
- JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
- MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
- NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
- OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
- Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
- QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
- RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
- S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
- TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
- UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
- VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
- WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
- WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
- nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
- pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
- rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
- hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
- tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
- jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
- vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
- oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
- xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
- ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
- zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
- pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
- f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
- rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
- hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
- tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
- //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
- vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
- w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
- xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
- 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
- zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
- //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
- 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
- ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
- 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
- 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
- jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
- vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
- lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
- xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
- tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
- zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
- ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
- 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
- rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
- 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
- tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
- 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
- vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
- 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
- xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
- 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
- zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
- pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
- 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
- rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
- 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
- tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
- 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
- vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
- 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
- xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
- 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
- zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
- /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
- 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
- //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
- 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
- tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
- 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
- vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
- 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
- xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
- 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
- zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
- AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
- jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
- q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
- pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
- xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
- 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
- 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
- y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
- 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
- FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
- IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
- NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
- AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
- fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
- cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
- fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
- JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
- PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
- R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
- UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
- GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
- ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
- ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
- QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
- TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
- VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
- f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
- iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
- k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
- 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
- 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
- sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
- vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
- x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
- 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
- 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
- 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
- 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
- /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
- rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
- uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
- w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
- zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
- f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
- sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
- 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
- zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
- 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
- BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
- FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
- IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
- EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-
-
-
- 294, 17
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
+ JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAAB3UlE
+ QVQ4T6WQ3UuTURyAF9130UV/QzeRBLuo7oVdKAiJXdVQFkIimdoH+FFUq3BiaMEWmrpobjZxanMbKuqy
+ HNO0rKxUKKZ7Zwv0QqqxzT3tHFGpva2ii+fiPec8z++cVwP8F6qL2fDXlep6yk4hGL5syFE9pEaj88ve
+ nvb6XCF+bDrHywtbEbFBQ3dUctse5ar1MxdbVzl7N4LepFBoDHO6UaHeEmTIVYvTG+TVjUop39FqtwLW
+ p9A2msI8lKR5MEGDK871xzFqbDGu2DZ44JrD56xk7ZOJDxNlGI21Ur529HC+DJjEdEeUuvT0CssqJU0K
+ J2+GMTQr3HO8wGMzSPndaDH993Uc2L+PM4UHc8TTNF2D0yRTyQw2YgkCM29xdxRlyNXFh45v/5udwFhw
+ cQfx/cQ3zkBrXlY56w3MbQ+Z9NwiNFO1e+3zNUzNh/eoBsTkkcACvon3fI8nZCCV2sTRUiBle5+XPP2l
+ tLMr/xTYRsjrXxOUV1RTcKIofUKD2z9HZ/8Ux/JLMwOdrudSFJPdY/P0Dr9GWY/zaGCW9t5pSWDxG+bu
+ SfWAxT4iAytKhKVQhDdLingn47MreIPL9D1bxukP/T7QYvVwJFePVlfyR1QDvy78K6qLfw+aH9lH74cB
+ EBSlAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
+ JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAACHElE
+ QVQ4T2P4//8/RRirICkYqyAynr7zz38Q7t/07X/z8rf/y2Y9/p/VfwsoBZFHUVy38k9w+YKPq32brkrB
+ xECaOzb8/1+26Nf/xL5n/z3Kzk1F1gNnVCz+rdOy+u+p1P4n/61St9yBifes//K/YN63/zF9H/+7Vdz+
+ b5t7/Ih56iFNmDzcgMql3yZULP723zn/9H+doAXvYOK1C1/8D2u999+59OYni+wL/42T9v3Xi97cA5OH
+ G1Cz9POFnOnv/5sm7/+vG7l+Lkw8d9Kd/w4Fp3NcSi9Ps807918vZtt/3bCl52HycAMal3/6nD717X/j
+ hL3/9eN2WIHE8vJusyZ1XAEy/zOEtd6xDm66BzZAK2D2Z5g+uAH1Sz99Tpv67r9Z6n64Acg4Z9Z7m7Qp
+ b/4bxu3CbkDFwo8XUqe8/W+fe/q/debRmTBxGK5d/mdexrQP//VjdvzXCV1yASYOV5A99WVffO/T/15V
+ N/4H1t98mzbxxZz8me9syhd8s2lY/Xd+/Yrf74Ob7//XDV/1XydsxUQMA8KabmsH1l8/6lF25b9v7Z3/
+ cb3P/2dOe/c/b+bH/zmzPv0HaQaGPsj209pha3UwDABh1+LzvnY5x44ax+/+rxuzFYxBgaYXswUY8suB
+ mhed1gtdFoysB8UAEDaM36upG7GmTyd4wUUtvylfQFg7cO4l3bAlk7RCV+qiq0fhkIOxChKP/zMAAKH7
+ vWcksHU/AAAAAElFTkSuQmCC
+
+
+
+
+ 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
+ rkJggg==
+
+
+
+ 384, 17
+
+
+
+ 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
+ gg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
+ JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAr6AAAK+gEZ2P90AAACLUlE
+ QVQ4T52TvY/ScBjHuVIRKHA9JAgnL+VoC7TX0kLLS6EvFBTa0uj5J7gYF+PsfpOTMrg4ORgHY+LCYJwc
+ TYyJiYuDLu7GxHgxd/Hnr5fA8TZcrsmnzfN9nufTNPnVBwDw2ZYljGzr3ciyTNu2EC87L75eb+DvD67f
+ hU9g9vt/HNs5cMaOf9Owohro7YNbe8PhjfuzzBOgkDuabk6bbRXoxuBkNLIeus6yhKyIwY5umo5tHxmG
+ +Wwu8G5QkIa0jN5gqnR1oOkGuOk6b1x3jHl9uaWGhpb1UtXNY1luPmJ4KbIkmAElAcgD3egfa5oJxq77
+ oq3ovKJoE7XbBbwoTWhG2F7cWRJ4dFR1S9fNCvykT41mB9TqjSOxXvtJM9zrYokLrc4vFYtUBcngq9Lf
+ tqICvlr7RhQr8U1za4FHXZIIurT/mePFf1AEJLkFGJb7uml2LRBrcp4us1+g4KRcYV8lkmkplyenglgH
+ VIm9tzq/VJRZLpUlih9yBQrAt79Pp3bjkVgM244nsPwe/VQQ6r8pRsgu7pwtC61grkA/T10r/NrnxB8s
+ V2VmvQiOB0MhLMZVxY/pDPEkU6DnZ2Qu2M0STjJFAIpmAUmXD0NY9PQMzEBRPwJzkiSp71F8J1/ipNMj
+ f9rE8XggkUgexq9cBXmi+DYYjtCRGL72T+D4jr/RaE+waFgu8c0zgUcmT9UuBS4/9m0hmh9Fo7N8FXih
+ CIKE5/Vi8yJsDM8P8P0HLGwR4Wl3ICYAAAAASUVORK5CYII=
+
+
+
+
+ AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
+ CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
+ AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
+ g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
+ 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
+ ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
+ /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
+ l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
+ wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
+ /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
+ //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
+ l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
+ z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
+ //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
+ //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
+ 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
+ kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
+ 7P//////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
+ iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
+ tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
+ ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
+ /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
+ 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
+ pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
+ xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
+ sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
+ zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
+ /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
+ //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
+ q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
+ 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
+ //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
+ 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
+ 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
+ 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
+ nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
+ sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
+ +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
+ //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
+ sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
+ v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
+ AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
+ iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
+ n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
+ t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
+ wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
+ 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
+ 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
+ wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
+ 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
+ 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAJyUkJCQhIiAgHx8eHR0bGhoY
+ GBcWFRUTEhIQEA8ODQ0NCwwICAkGBQUFAwMDAQEBAQAAAAAAAAAAAAAAAAAAACgnJyUkJCEiIB8fHh4d
+ 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
+ Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
+ QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
+ RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
+ SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
+ TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
+ UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
+ VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
+ HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
+ ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
+ JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
+ MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
+ NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
+ OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
+ Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
+ QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
+ RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
+ S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
+ TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
+ UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
+ VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
+ WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
+ WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
+ nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
+ pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
+ rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
+ hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
+ tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
+ jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
+ vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
+ oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
+ xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
+ ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
+ zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
+ pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
+ f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
+ rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
+ hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
+ tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
+ //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
+ vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
+ w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
+ xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
+ 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
+ zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
+ //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
+ 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
+ ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
+ 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
+ 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
+ jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
+ vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
+ lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
+ xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
+ tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
+ zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
+ ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
+ 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
+ rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
+ 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
+ tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
+ vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
+ 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
+ xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
+ 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
+ zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
+ pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
+ 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
+ rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
+ 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
+ tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
+ vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
+ 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
+ xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
+ 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
+ zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
+ /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
+ 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
+ //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
+ 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
+ tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
+ 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
+ vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
+ 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
+ xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
+ 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
+ zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
+ AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
+ jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
+ q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
+ pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
+ xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
+ 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
+ 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
+ y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
+ 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
+ FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
+ IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
+ NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
+ AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
+ fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
+ cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
+ fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
+ JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
+ PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
+ R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
+ UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
+ GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
+ ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
+ ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
+ QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
+ TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
+ VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
+ f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
+ iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
+ k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
+ 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
+ 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
+ sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
+ vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
+ x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
+ 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
+ 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
+ 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
+ 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
+ /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
+ rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
+ uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
+ w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
+ zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
+ f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
+ sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
+ 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
+ zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
+ 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
+ BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
+ FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
+ IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
+ EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+
+
+
+ 294, 17
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/SettingsForm.Designer.cs b/JenkinsTray/UI/SettingsForm.Designer.cs
similarity index 96%
rename from HudsonTrayTracker/UI/SettingsForm.Designer.cs
rename to JenkinsTray/UI/SettingsForm.Designer.cs
index da8aad8..21d16ed 100644
--- a/HudsonTrayTracker/UI/SettingsForm.Designer.cs
+++ b/JenkinsTray/UI/SettingsForm.Designer.cs
@@ -1,332 +1,332 @@
-namespace Hudson.TrayTracker.UI
-{
- partial class SettingsForm
- {
- ///
- /// Required designer variable.
- ///
- private System.ComponentModel.IContainer components = null;
-
- ///
- /// Clean up any resources being used.
- ///
- /// true if managed resources should be disposed; otherwise, false.
- protected override void Dispose(bool disposing)
- {
- if (disposing && (components != null))
- {
- components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- #region Windows Form Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
- this.tabControl = new DevExpress.XtraTab.XtraTabControl();
- this.serversTabPage = new DevExpress.XtraTab.XtraTabPage();
- this.serversSettingsControl = new Hudson.TrayTracker.UI.Controls.ServersSettingsControl();
- this.notificationsTabPage = new DevExpress.XtraTab.XtraTabPage();
- this.notificationsSettingsControl = new Hudson.TrayTracker.UI.Controls.NotificationsSettingsControl();
- this.generalTabPage = new DevExpress.XtraTab.XtraTabPage();
- this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
- this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
- this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
- this.checkForUpdatesCheckEdit = new DevExpress.XtraEditors.CheckEdit();
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.refreshLabel = new DevExpress.XtraEditors.LabelControl();
- this.refreshSpinEdit = new DevExpress.XtraEditors.SpinEdit();
- this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
- this.updateMainWindowIconCheckEdit = new DevExpress.XtraEditors.CheckEdit();
- this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
- this.integrateWithClaimPluginCheckEdit = new DevExpress.XtraEditors.CheckEdit();
- ((System.ComponentModel.ISupportInitialize)(this.tabControl)).BeginInit();
- this.tabControl.SuspendLayout();
- this.serversTabPage.SuspendLayout();
- this.notificationsTabPage.SuspendLayout();
- this.generalTabPage.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
- this.groupControl1.SuspendLayout();
- this.tableLayoutPanel2.SuspendLayout();
- this.tableLayoutPanel5.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.checkForUpdatesCheckEdit.Properties)).BeginInit();
- this.tableLayoutPanel1.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.refreshSpinEdit.Properties)).BeginInit();
- this.tableLayoutPanel3.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.updateMainWindowIconCheckEdit.Properties)).BeginInit();
- this.tableLayoutPanel4.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.integrateWithClaimPluginCheckEdit.Properties)).BeginInit();
- this.SuspendLayout();
- //
- // tabControl
- //
- this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tabControl.HeaderLocation = DevExpress.XtraTab.TabHeaderLocation.Left;
- this.tabControl.Location = new System.Drawing.Point(0, 0);
- this.tabControl.Name = "tabControl";
- this.tabControl.SelectedTabPage = this.serversTabPage;
- this.tabControl.Size = new System.Drawing.Size(746, 411);
- this.tabControl.TabIndex = 0;
- this.tabControl.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
- this.serversTabPage,
- this.notificationsTabPage,
- this.generalTabPage});
- //
- // serversTabPage
- //
- this.serversTabPage.Controls.Add(this.serversSettingsControl);
- this.serversTabPage.Name = "serversTabPage";
- this.serversTabPage.Size = new System.Drawing.Size(717, 404);
- this.serversTabPage.Text = "Servers and projects";
- //
- // serversSettingsControl
- //
- this.serversSettingsControl.AutoSize = true;
- this.serversSettingsControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.serversSettingsControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.serversSettingsControl.Location = new System.Drawing.Point(0, 0);
- this.serversSettingsControl.LookAndFeel.UseDefaultLookAndFeel = false;
- this.serversSettingsControl.LookAndFeel.UseWindowsXPTheme = true;
- this.serversSettingsControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.serversSettingsControl.Name = "serversSettingsControl";
- this.serversSettingsControl.Size = new System.Drawing.Size(717, 404);
- this.serversSettingsControl.TabIndex = 0;
- //
- // notificationsTabPage
- //
- this.notificationsTabPage.Controls.Add(this.notificationsSettingsControl);
- this.notificationsTabPage.Name = "notificationsTabPage";
- this.notificationsTabPage.Size = new System.Drawing.Size(717, 404);
- this.notificationsTabPage.Text = "Sound notifications";
- //
- // notificationsSettingsControl
- //
- this.notificationsSettingsControl.Dock = System.Windows.Forms.DockStyle.Fill;
- this.notificationsSettingsControl.Location = new System.Drawing.Point(0, 0);
- this.notificationsSettingsControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
- this.notificationsSettingsControl.Name = "notificationsSettingsControl";
- this.notificationsSettingsControl.Size = new System.Drawing.Size(717, 404);
- this.notificationsSettingsControl.TabIndex = 0;
- //
- // generalTabPage
- //
- this.generalTabPage.Controls.Add(this.groupControl1);
- this.generalTabPage.Name = "generalTabPage";
- this.generalTabPage.Size = new System.Drawing.Size(717, 404);
- this.generalTabPage.Text = "General";
- //
- // groupControl1
- //
- this.groupControl1.AppearanceCaption.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.groupControl1.AppearanceCaption.Options.UseFont = true;
- this.groupControl1.Controls.Add(this.tableLayoutPanel2);
- this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.groupControl1.Location = new System.Drawing.Point(0, 0);
- this.groupControl1.Name = "groupControl1";
- this.groupControl1.Size = new System.Drawing.Size(717, 404);
- this.groupControl1.TabIndex = 1;
- this.groupControl1.Text = "General options";
- //
- // tableLayoutPanel2
- //
- this.tableLayoutPanel2.ColumnCount = 1;
- this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel5, 0, 3);
- this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 0, 0);
- this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 1);
- this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel4, 0, 2);
- this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel2.Location = new System.Drawing.Point(2, 22);
- this.tableLayoutPanel2.Name = "tableLayoutPanel2";
- this.tableLayoutPanel2.RowCount = 5;
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 16F));
- this.tableLayoutPanel2.Size = new System.Drawing.Size(713, 380);
- this.tableLayoutPanel2.TabIndex = 4;
- //
- // tableLayoutPanel5
- //
- this.tableLayoutPanel5.AutoSize = true;
- this.tableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel5.ColumnCount = 1;
- this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel5.Controls.Add(this.checkForUpdatesCheckEdit, 0, 0);
- this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel5.Location = new System.Drawing.Point(3, 97);
- this.tableLayoutPanel5.Name = "tableLayoutPanel5";
- this.tableLayoutPanel5.RowCount = 1;
- this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel5.Size = new System.Drawing.Size(707, 25);
- this.tableLayoutPanel5.TabIndex = 6;
- //
- // checkForUpdatesCheckEdit
- //
- this.checkForUpdatesCheckEdit.Location = new System.Drawing.Point(3, 3);
- this.checkForUpdatesCheckEdit.Name = "checkForUpdatesCheckEdit";
- this.checkForUpdatesCheckEdit.Properties.AutoWidth = true;
- this.checkForUpdatesCheckEdit.Properties.Caption = "&Check for updates periodically";
- this.checkForUpdatesCheckEdit.Size = new System.Drawing.Size(167, 19);
- this.checkForUpdatesCheckEdit.TabIndex = 0;
- this.checkForUpdatesCheckEdit.CheckedChanged += new System.EventHandler(this.checkForUpdatesCheckEdit_CheckedChanged);
- //
- // tableLayoutPanel1
- //
- this.tableLayoutPanel1.AutoSize = true;
- this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel1.ColumnCount = 2;
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Controls.Add(this.refreshLabel, 0, 0);
- this.tableLayoutPanel1.Controls.Add(this.refreshSpinEdit, 1, 0);
- this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
- this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RowCount = 1;
- this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel1.Size = new System.Drawing.Size(707, 26);
- this.tableLayoutPanel1.TabIndex = 3;
- //
- // refreshLabel
- //
- this.refreshLabel.Location = new System.Drawing.Point(3, 6);
- this.refreshLabel.Margin = new System.Windows.Forms.Padding(3, 6, 3, 3);
- this.refreshLabel.Name = "refreshLabel";
- this.refreshLabel.Size = new System.Drawing.Size(97, 13);
- this.refreshLabel.TabIndex = 4;
- this.refreshLabel.Text = "&Refresh interval (s):";
- //
- // refreshSpinEdit
- //
- this.refreshSpinEdit.EditValue = new decimal(new int[] {
- 0,
- 0,
- 0,
- 0});
- this.refreshSpinEdit.Location = new System.Drawing.Point(106, 3);
- this.refreshSpinEdit.Name = "refreshSpinEdit";
- this.refreshSpinEdit.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
- new DevExpress.XtraEditors.Controls.EditorButton()});
- this.refreshSpinEdit.Properties.Mask.EditMask = "N0";
- this.refreshSpinEdit.Properties.MaxValue = new decimal(new int[] {
- 1000000,
- 0,
- 0,
- 0});
- this.refreshSpinEdit.Size = new System.Drawing.Size(100, 20);
- this.refreshSpinEdit.TabIndex = 1;
- //
- // tableLayoutPanel3
- //
- this.tableLayoutPanel3.AutoSize = true;
- this.tableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel3.ColumnCount = 1;
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
- this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel3.Controls.Add(this.updateMainWindowIconCheckEdit, 0, 0);
- this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 35);
- this.tableLayoutPanel3.Name = "tableLayoutPanel3";
- this.tableLayoutPanel3.RowCount = 1;
- this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel3.Size = new System.Drawing.Size(707, 25);
- this.tableLayoutPanel3.TabIndex = 4;
- //
- // updateMainWindowIconCheckEdit
- //
- this.updateMainWindowIconCheckEdit.Location = new System.Drawing.Point(3, 3);
- this.updateMainWindowIconCheckEdit.Name = "updateMainWindowIconCheckEdit";
- this.updateMainWindowIconCheckEdit.Properties.AutoWidth = true;
- this.updateMainWindowIconCheckEdit.Properties.Caption = "&Update the main window\'s icon";
- this.updateMainWindowIconCheckEdit.Size = new System.Drawing.Size(170, 19);
- this.updateMainWindowIconCheckEdit.TabIndex = 5;
- //
- // tableLayoutPanel4
- //
- this.tableLayoutPanel4.AutoSize = true;
- this.tableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
- this.tableLayoutPanel4.ColumnCount = 1;
- this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel4.Controls.Add(this.integrateWithClaimPluginCheckEdit, 0, 0);
- this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 66);
- this.tableLayoutPanel4.Name = "tableLayoutPanel4";
- this.tableLayoutPanel4.RowCount = 1;
- this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
- this.tableLayoutPanel4.Size = new System.Drawing.Size(707, 25);
- this.tableLayoutPanel4.TabIndex = 5;
- //
- // integrateWithClaimPluginCheckEdit
- //
- this.integrateWithClaimPluginCheckEdit.Location = new System.Drawing.Point(3, 3);
- this.integrateWithClaimPluginCheckEdit.Name = "integrateWithClaimPluginCheckEdit";
- this.integrateWithClaimPluginCheckEdit.Properties.AutoWidth = true;
- this.integrateWithClaimPluginCheckEdit.Properties.Caption = "Integrate with Clai&m plugin (experimental)";
- this.integrateWithClaimPluginCheckEdit.Size = new System.Drawing.Size(224, 19);
- this.integrateWithClaimPluginCheckEdit.TabIndex = 0;
- //
- // SettingsForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(746, 411);
- this.Controls.Add(this.tabControl);
- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "SettingsForm";
- this.Text = "Jenkins Tray - Settings";
- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsForm_FormClosing);
- this.Load += new System.EventHandler(this.SettingsForm_Load);
- ((System.ComponentModel.ISupportInitialize)(this.tabControl)).EndInit();
- this.tabControl.ResumeLayout(false);
- this.serversTabPage.ResumeLayout(false);
- this.serversTabPage.PerformLayout();
- this.notificationsTabPage.ResumeLayout(false);
- this.generalTabPage.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
- this.groupControl1.ResumeLayout(false);
- this.tableLayoutPanel2.ResumeLayout(false);
- this.tableLayoutPanel2.PerformLayout();
- this.tableLayoutPanel5.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.checkForUpdatesCheckEdit.Properties)).EndInit();
- this.tableLayoutPanel1.ResumeLayout(false);
- this.tableLayoutPanel1.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.refreshSpinEdit.Properties)).EndInit();
- this.tableLayoutPanel3.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.updateMainWindowIconCheckEdit.Properties)).EndInit();
- this.tableLayoutPanel4.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.integrateWithClaimPluginCheckEdit.Properties)).EndInit();
- this.ResumeLayout(false);
-
- }
-
- #endregion
-
- private DevExpress.XtraTab.XtraTabControl tabControl;
- private DevExpress.XtraTab.XtraTabPage serversTabPage;
- private DevExpress.XtraTab.XtraTabPage notificationsTabPage;
- private Hudson.TrayTracker.UI.Controls.ServersSettingsControl serversSettingsControl;
- private Hudson.TrayTracker.UI.Controls.NotificationsSettingsControl notificationsSettingsControl;
- private DevExpress.XtraTab.XtraTabPage generalTabPage;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private DevExpress.XtraEditors.SpinEdit refreshSpinEdit;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
- private DevExpress.XtraEditors.LabelControl refreshLabel;
- private DevExpress.XtraEditors.GroupControl groupControl1;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
- private DevExpress.XtraEditors.CheckEdit updateMainWindowIconCheckEdit;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
- private DevExpress.XtraEditors.CheckEdit integrateWithClaimPluginCheckEdit;
- private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
- private DevExpress.XtraEditors.CheckEdit checkForUpdatesCheckEdit;
-
- }
+namespace Jenkins.Tray.UI
+{
+ partial class SettingsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
+ this.tabControl = new DevExpress.XtraTab.XtraTabControl();
+ this.serversTabPage = new DevExpress.XtraTab.XtraTabPage();
+ this.serversSettingsControl = new Jenkins.Tray.UI.Controls.ServersSettingsControl();
+ this.notificationsTabPage = new DevExpress.XtraTab.XtraTabPage();
+ this.notificationsSettingsControl = new Jenkins.Tray.UI.Controls.NotificationsSettingsControl();
+ this.generalTabPage = new DevExpress.XtraTab.XtraTabPage();
+ this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
+ this.checkForUpdatesCheckEdit = new DevExpress.XtraEditors.CheckEdit();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.refreshLabel = new DevExpress.XtraEditors.LabelControl();
+ this.refreshSpinEdit = new DevExpress.XtraEditors.SpinEdit();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this.updateMainWindowIconCheckEdit = new DevExpress.XtraEditors.CheckEdit();
+ this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
+ this.integrateWithClaimPluginCheckEdit = new DevExpress.XtraEditors.CheckEdit();
+ ((System.ComponentModel.ISupportInitialize)(this.tabControl)).BeginInit();
+ this.tabControl.SuspendLayout();
+ this.serversTabPage.SuspendLayout();
+ this.notificationsTabPage.SuspendLayout();
+ this.generalTabPage.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
+ this.groupControl1.SuspendLayout();
+ this.tableLayoutPanel2.SuspendLayout();
+ this.tableLayoutPanel5.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.checkForUpdatesCheckEdit.Properties)).BeginInit();
+ this.tableLayoutPanel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.refreshSpinEdit.Properties)).BeginInit();
+ this.tableLayoutPanel3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.updateMainWindowIconCheckEdit.Properties)).BeginInit();
+ this.tableLayoutPanel4.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.integrateWithClaimPluginCheckEdit.Properties)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tabControl
+ //
+ this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabControl.HeaderLocation = DevExpress.XtraTab.TabHeaderLocation.Left;
+ this.tabControl.Location = new System.Drawing.Point(0, 0);
+ this.tabControl.Name = "tabControl";
+ this.tabControl.SelectedTabPage = this.serversTabPage;
+ this.tabControl.Size = new System.Drawing.Size(746, 411);
+ this.tabControl.TabIndex = 0;
+ this.tabControl.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[] {
+ this.serversTabPage,
+ this.notificationsTabPage,
+ this.generalTabPage});
+ //
+ // serversTabPage
+ //
+ this.serversTabPage.Controls.Add(this.serversSettingsControl);
+ this.serversTabPage.Name = "serversTabPage";
+ this.serversTabPage.Size = new System.Drawing.Size(717, 404);
+ this.serversTabPage.Text = "Servers and projects";
+ //
+ // serversSettingsControl
+ //
+ this.serversSettingsControl.AutoSize = true;
+ this.serversSettingsControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.serversSettingsControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.serversSettingsControl.Location = new System.Drawing.Point(0, 0);
+ this.serversSettingsControl.LookAndFeel.UseDefaultLookAndFeel = false;
+ this.serversSettingsControl.LookAndFeel.UseWindowsXPTheme = true;
+ this.serversSettingsControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.serversSettingsControl.Name = "serversSettingsControl";
+ this.serversSettingsControl.Size = new System.Drawing.Size(717, 404);
+ this.serversSettingsControl.TabIndex = 0;
+ //
+ // notificationsTabPage
+ //
+ this.notificationsTabPage.Controls.Add(this.notificationsSettingsControl);
+ this.notificationsTabPage.Name = "notificationsTabPage";
+ this.notificationsTabPage.Size = new System.Drawing.Size(717, 404);
+ this.notificationsTabPage.Text = "Sound notifications";
+ //
+ // notificationsSettingsControl
+ //
+ this.notificationsSettingsControl.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.notificationsSettingsControl.Location = new System.Drawing.Point(0, 0);
+ this.notificationsSettingsControl.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.notificationsSettingsControl.Name = "notificationsSettingsControl";
+ this.notificationsSettingsControl.Size = new System.Drawing.Size(717, 404);
+ this.notificationsSettingsControl.TabIndex = 0;
+ //
+ // generalTabPage
+ //
+ this.generalTabPage.Controls.Add(this.groupControl1);
+ this.generalTabPage.Name = "generalTabPage";
+ this.generalTabPage.Size = new System.Drawing.Size(717, 404);
+ this.generalTabPage.Text = "General";
+ //
+ // groupControl1
+ //
+ this.groupControl1.AppearanceCaption.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.groupControl1.AppearanceCaption.Options.UseFont = true;
+ this.groupControl1.Controls.Add(this.tableLayoutPanel2);
+ this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupControl1.Location = new System.Drawing.Point(0, 0);
+ this.groupControl1.Name = "groupControl1";
+ this.groupControl1.Size = new System.Drawing.Size(717, 404);
+ this.groupControl1.TabIndex = 1;
+ this.groupControl1.Text = "General options";
+ //
+ // tableLayoutPanel2
+ //
+ this.tableLayoutPanel2.ColumnCount = 1;
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel5, 0, 3);
+ this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 0, 0);
+ this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel3, 0, 1);
+ this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel4, 0, 2);
+ this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(2, 22);
+ this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+ this.tableLayoutPanel2.RowCount = 5;
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 16F));
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(713, 380);
+ this.tableLayoutPanel2.TabIndex = 4;
+ //
+ // tableLayoutPanel5
+ //
+ this.tableLayoutPanel5.AutoSize = true;
+ this.tableLayoutPanel5.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel5.ColumnCount = 1;
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel5.Controls.Add(this.checkForUpdatesCheckEdit, 0, 0);
+ this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel5.Location = new System.Drawing.Point(3, 97);
+ this.tableLayoutPanel5.Name = "tableLayoutPanel5";
+ this.tableLayoutPanel5.RowCount = 1;
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel5.Size = new System.Drawing.Size(707, 25);
+ this.tableLayoutPanel5.TabIndex = 6;
+ //
+ // checkForUpdatesCheckEdit
+ //
+ this.checkForUpdatesCheckEdit.Location = new System.Drawing.Point(3, 3);
+ this.checkForUpdatesCheckEdit.Name = "checkForUpdatesCheckEdit";
+ this.checkForUpdatesCheckEdit.Properties.AutoWidth = true;
+ this.checkForUpdatesCheckEdit.Properties.Caption = "&Check for updates periodically";
+ this.checkForUpdatesCheckEdit.Size = new System.Drawing.Size(167, 19);
+ this.checkForUpdatesCheckEdit.TabIndex = 0;
+ this.checkForUpdatesCheckEdit.CheckedChanged += new System.EventHandler(this.checkForUpdatesCheckEdit_CheckedChanged);
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.AutoSize = true;
+ this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel1.ColumnCount = 2;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.Controls.Add(this.refreshLabel, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.refreshSpinEdit, 1, 0);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 3);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 1;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(707, 26);
+ this.tableLayoutPanel1.TabIndex = 3;
+ //
+ // refreshLabel
+ //
+ this.refreshLabel.Location = new System.Drawing.Point(3, 6);
+ this.refreshLabel.Margin = new System.Windows.Forms.Padding(3, 6, 3, 3);
+ this.refreshLabel.Name = "refreshLabel";
+ this.refreshLabel.Size = new System.Drawing.Size(97, 13);
+ this.refreshLabel.TabIndex = 4;
+ this.refreshLabel.Text = "&Refresh interval (s):";
+ //
+ // refreshSpinEdit
+ //
+ this.refreshSpinEdit.EditValue = new decimal(new int[] {
+ 0,
+ 0,
+ 0,
+ 0});
+ this.refreshSpinEdit.Location = new System.Drawing.Point(106, 3);
+ this.refreshSpinEdit.Name = "refreshSpinEdit";
+ this.refreshSpinEdit.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+ new DevExpress.XtraEditors.Controls.EditorButton()});
+ this.refreshSpinEdit.Properties.Mask.EditMask = "N0";
+ this.refreshSpinEdit.Properties.MaxValue = new decimal(new int[] {
+ 1000000,
+ 0,
+ 0,
+ 0});
+ this.refreshSpinEdit.Size = new System.Drawing.Size(100, 20);
+ this.refreshSpinEdit.TabIndex = 1;
+ //
+ // tableLayoutPanel3
+ //
+ this.tableLayoutPanel3.AutoSize = true;
+ this.tableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel3.ColumnCount = 1;
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel3.Controls.Add(this.updateMainWindowIconCheckEdit, 0, 0);
+ this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 35);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ this.tableLayoutPanel3.RowCount = 1;
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel3.Size = new System.Drawing.Size(707, 25);
+ this.tableLayoutPanel3.TabIndex = 4;
+ //
+ // updateMainWindowIconCheckEdit
+ //
+ this.updateMainWindowIconCheckEdit.Location = new System.Drawing.Point(3, 3);
+ this.updateMainWindowIconCheckEdit.Name = "updateMainWindowIconCheckEdit";
+ this.updateMainWindowIconCheckEdit.Properties.AutoWidth = true;
+ this.updateMainWindowIconCheckEdit.Properties.Caption = "&Update the main window\'s icon";
+ this.updateMainWindowIconCheckEdit.Size = new System.Drawing.Size(170, 19);
+ this.updateMainWindowIconCheckEdit.TabIndex = 5;
+ //
+ // tableLayoutPanel4
+ //
+ this.tableLayoutPanel4.AutoSize = true;
+ this.tableLayoutPanel4.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.tableLayoutPanel4.ColumnCount = 1;
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel4.Controls.Add(this.integrateWithClaimPluginCheckEdit, 0, 0);
+ this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 66);
+ this.tableLayoutPanel4.Name = "tableLayoutPanel4";
+ this.tableLayoutPanel4.RowCount = 1;
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle());
+ this.tableLayoutPanel4.Size = new System.Drawing.Size(707, 25);
+ this.tableLayoutPanel4.TabIndex = 5;
+ //
+ // integrateWithClaimPluginCheckEdit
+ //
+ this.integrateWithClaimPluginCheckEdit.Location = new System.Drawing.Point(3, 3);
+ this.integrateWithClaimPluginCheckEdit.Name = "integrateWithClaimPluginCheckEdit";
+ this.integrateWithClaimPluginCheckEdit.Properties.AutoWidth = true;
+ this.integrateWithClaimPluginCheckEdit.Properties.Caption = "Integrate with Clai&m plugin (experimental)";
+ this.integrateWithClaimPluginCheckEdit.Size = new System.Drawing.Size(224, 19);
+ this.integrateWithClaimPluginCheckEdit.TabIndex = 0;
+ //
+ // SettingsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(746, 411);
+ this.Controls.Add(this.tabControl);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "SettingsForm";
+ this.Text = "Jenkins Tray - Settings";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsForm_FormClosing);
+ this.Load += new System.EventHandler(this.SettingsForm_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.tabControl)).EndInit();
+ this.tabControl.ResumeLayout(false);
+ this.serversTabPage.ResumeLayout(false);
+ this.serversTabPage.PerformLayout();
+ this.notificationsTabPage.ResumeLayout(false);
+ this.generalTabPage.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
+ this.groupControl1.ResumeLayout(false);
+ this.tableLayoutPanel2.ResumeLayout(false);
+ this.tableLayoutPanel2.PerformLayout();
+ this.tableLayoutPanel5.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.checkForUpdatesCheckEdit.Properties)).EndInit();
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.refreshSpinEdit.Properties)).EndInit();
+ this.tableLayoutPanel3.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.updateMainWindowIconCheckEdit.Properties)).EndInit();
+ this.tableLayoutPanel4.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.integrateWithClaimPluginCheckEdit.Properties)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private DevExpress.XtraTab.XtraTabControl tabControl;
+ private DevExpress.XtraTab.XtraTabPage serversTabPage;
+ private DevExpress.XtraTab.XtraTabPage notificationsTabPage;
+ private Jenkins.Tray.UI.Controls.ServersSettingsControl serversSettingsControl;
+ private Jenkins.Tray.UI.Controls.NotificationsSettingsControl notificationsSettingsControl;
+ private DevExpress.XtraTab.XtraTabPage generalTabPage;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private DevExpress.XtraEditors.SpinEdit refreshSpinEdit;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+ private DevExpress.XtraEditors.LabelControl refreshLabel;
+ private DevExpress.XtraEditors.GroupControl groupControl1;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private DevExpress.XtraEditors.CheckEdit updateMainWindowIconCheckEdit;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
+ private DevExpress.XtraEditors.CheckEdit integrateWithClaimPluginCheckEdit;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
+ private DevExpress.XtraEditors.CheckEdit checkForUpdatesCheckEdit;
+
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/SettingsForm.cs b/JenkinsTray/UI/SettingsForm.cs
similarity index 90%
rename from HudsonTrayTracker/UI/SettingsForm.cs
rename to JenkinsTray/UI/SettingsForm.cs
index e45ba18..7300a7c 100644
--- a/HudsonTrayTracker/UI/SettingsForm.cs
+++ b/JenkinsTray/UI/SettingsForm.cs
@@ -1,81 +1,81 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.BusinessComponents;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.Utils.BackgroundProcessing;
-using DevExpress.XtraBars;
-using Spring.Context.Support;
-
-namespace Hudson.TrayTracker.UI
-{
- public partial class SettingsForm : DevExpress.XtraEditors.XtraForm
- {
- public static SettingsForm Instance
- {
- get
- {
- SettingsForm instance = (SettingsForm)ContextRegistry.GetContext().GetObject("SettingsForm");
- return instance;
- }
- }
-
- public ConfigurationService ConfigurationService { get; set; }
- public HudsonService HudsonService { get; set; }
- private ApplicationUpdateService applicationUpdateService;
-
- public SettingsForm()
- {
- InitializeComponent();
- }
-
- public static void ShowDialogOrFocus()
- {
- if (Instance.Visible)
- Instance.Focus();
- else
- Instance.ShowDialog();
- }
-
- protected override void OnShown(EventArgs e)
- {
- base.OnShown(e);
- tabControl.SelectedTabPageIndex = 0;
- }
-
- private void SettingsForm_Load(object sender, EventArgs e)
- {
- refreshSpinEdit.Value = ConfigurationService.GeneralSettings.RefreshIntervalInSeconds;
- updateMainWindowIconCheckEdit.Checked = ConfigurationService.GeneralSettings.UpdateMainWindowIcon;
- integrateWithClaimPluginCheckEdit.Checked = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin;
- checkForUpdatesCheckEdit.Checked = ConfigurationService.GeneralSettings.CheckForUpdates;
- notificationsSettingsControl.InitializeValues();
- }
-
- private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- int refreshInterval = (int)refreshSpinEdit.Value;
- ConfigurationService.SetRefreshIntervalInSeconds(refreshInterval);
- ConfigurationService.SetUpdateMainWindowIcon(updateMainWindowIconCheckEdit.Checked);
- ConfigurationService.SetIntegrateWithClaimPlugin(integrateWithClaimPluginCheckEdit.Checked);
- ConfigurationService.SetCheckForUpdates(checkForUpdatesCheckEdit.Checked);
- ConfigurationService.SetTreadUnstableAsFailed(notificationsSettingsControl.TreadUnstableAsFailed());
- ConfigurationService.SetSoundNotifications(notificationsSettingsControl.SoundNotificationsEnabled());
- notificationsSettingsControl.InvalidateData();
- }
-
- private void checkForUpdatesCheckEdit_CheckedChanged(object sender, EventArgs e)
- {
- if (applicationUpdateService == null)
- {
- applicationUpdateService = (ApplicationUpdateService)ContextRegistry.GetContext().GetObject("ApplicationUpdateService");
- }
- applicationUpdateService.EnableTimer(checkForUpdatesCheckEdit.Checked);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.BusinessComponents;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.Utils.BackgroundProcessing;
+using DevExpress.XtraBars;
+using Spring.Context.Support;
+
+namespace Jenkins.Tray.UI
+{
+ public partial class SettingsForm : DevExpress.XtraEditors.XtraForm
+ {
+ public static SettingsForm Instance
+ {
+ get
+ {
+ SettingsForm instance = (SettingsForm)ContextRegistry.GetContext().GetObject("SettingsForm");
+ return instance;
+ }
+ }
+
+ public ConfigurationService ConfigurationService { get; set; }
+ public JenkinsService JenkinsService { get; set; }
+ private ApplicationUpdateService applicationUpdateService;
+
+ public SettingsForm()
+ {
+ InitializeComponent();
+ }
+
+ public static void ShowDialogOrFocus()
+ {
+ if (Instance.Visible)
+ Instance.Focus();
+ else
+ Instance.ShowDialog();
+ }
+
+ protected override void OnShown(EventArgs e)
+ {
+ base.OnShown(e);
+ tabControl.SelectedTabPageIndex = 0;
+ }
+
+ private void SettingsForm_Load(object sender, EventArgs e)
+ {
+ refreshSpinEdit.Value = ConfigurationService.GeneralSettings.RefreshIntervalInSeconds;
+ updateMainWindowIconCheckEdit.Checked = ConfigurationService.GeneralSettings.UpdateMainWindowIcon;
+ integrateWithClaimPluginCheckEdit.Checked = ConfigurationService.GeneralSettings.IntegrateWithClaimPlugin;
+ checkForUpdatesCheckEdit.Checked = ConfigurationService.GeneralSettings.CheckForUpdates;
+ notificationsSettingsControl.InitializeValues();
+ }
+
+ private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ int refreshInterval = (int)refreshSpinEdit.Value;
+ ConfigurationService.SetRefreshIntervalInSeconds(refreshInterval);
+ ConfigurationService.SetUpdateMainWindowIcon(updateMainWindowIconCheckEdit.Checked);
+ ConfigurationService.SetIntegrateWithClaimPlugin(integrateWithClaimPluginCheckEdit.Checked);
+ ConfigurationService.SetCheckForUpdates(checkForUpdatesCheckEdit.Checked);
+ ConfigurationService.SetTreadUnstableAsFailed(notificationsSettingsControl.TreadUnstableAsFailed());
+ ConfigurationService.SetSoundNotifications(notificationsSettingsControl.SoundNotificationsEnabled());
+ notificationsSettingsControl.InvalidateData();
+ }
+
+ private void checkForUpdatesCheckEdit_CheckedChanged(object sender, EventArgs e)
+ {
+ if (applicationUpdateService == null)
+ {
+ applicationUpdateService = (ApplicationUpdateService)ContextRegistry.GetContext().GetObject("ApplicationUpdateService");
+ }
+ applicationUpdateService.EnableTimer(checkForUpdatesCheckEdit.Checked);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/SettingsForm.resx b/JenkinsTray/UI/SettingsForm.resx
similarity index 98%
rename from HudsonTrayTracker/UI/SettingsForm.resx
rename to JenkinsTray/UI/SettingsForm.resx
index 15783ff..5fd21f4 100644
--- a/HudsonTrayTracker/UI/SettingsForm.resx
+++ b/JenkinsTray/UI/SettingsForm.resx
@@ -1,654 +1,654 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
-
-
- AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
- CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
- AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
- g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
- if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
- qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
- nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
- vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
- 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
- if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
- f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
- lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
- ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
- /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
- t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
- pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
- kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
- f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
- l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
- wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
- /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
- //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
- qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
- l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
- g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
- nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
- z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
- //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
- 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
- //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
- 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
- sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
- /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
- iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
- //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
- kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
- ////////////////////////////////////////////////////////////////////////////////
- ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
- 7P//////////////////////////////////////////////////////////////////////////////
- /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
- iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
- tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
- xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
- ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
- /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
- 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
- y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
- t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
- pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
- kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
- qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
- xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
- sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
- zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
- /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
- //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
- vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
- q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
- l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
- 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
- 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
- //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
- 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
- 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
- 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
- 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
- nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
- 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
- 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
- nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
- sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
- uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
- pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
- sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
- 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
- y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
- +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
- q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
- xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
- zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
- //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
- 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
- sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
- uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
- sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
- 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
- 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
- uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
- v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
- 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
- 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
- zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
- //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
- +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
- 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
- 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
- v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
- //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
- 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
- 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
- xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
- AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
- iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
- n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
- t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
- wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
- 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
- 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
- wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
- 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
- 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAJyUkJCQhIiAgHx8eHR0bGhoY
- GBcWFRUTEhIQEA8ODQ0NCwwICAkGBQUFAwMDAQEBAQAAAAAAAAAAAAAAAAAAACgnJyUkJCEiIB8fHh4d
- HRsaGhgYFxYVFRMSEg8QDw8NDQ0LCwsICAgGBQUEAwMBAQEAAAAAAAAAAAAAAAAAAAAxKCclJCQkISIh
- IB8eHh0dGxoaGBgXFxUVExISEA8PDg0NDQsLCQkIBQUFBQMDAwEBAQEAAAAAAAAAAAAAAAAAMTEnJyck
- JCQhISAgHx4dHR0bGhoYGBcVFRUTEhISEA8ODQ0NCwwICQgIBgUFAwMDAQEBAAAAAAAAAAAAAAAAADEx
- MSgnJyQkJCIhISAfHx0dHRsbGhgYFxYVFRUSEg8PDw4NDQsLCwsJCAUFBQUDAwMBAQAAAAAAAAAAAAAA
- AAAyMTExJycnJCQkJCIhIB8fHh0dGxsaGBcXFhUVExISEg8PDw0NDQsLCQkICAYFBQMDAwEBAAAAAAAA
- AAAAAAAAMzIxMTEnJyckJCQhIiEgHx4dHR0bGxoaFxcVFRUTEhISDw8ODQ0NCwsJCQgFBQYFAwMDAgEA
- AAAAAAAAAAAAADQzMzExKCcnJyUkJCEiISAfHx0dHRobGhcYFxYVFRUSEhIQDw8NDQ0MCwkJCAgGBQUD
- AwMCAQEBAAAAAAAAAAA2NDMyMTExJycnJCQkIiEgIR8fHR0dGxsaFxcXFxUVExISDxAPDQ0NDQwLCQkI
- BQUGBQQDAwIBAQAAAAAAAAAANjY0MzMyMTEnJyckJCQhIR8gHx8dHh0aHRoaFxcWFRUTb3R0dHRcDQ0N
- DAsJCQgIBnFzc3NzWQEBAAAAAAAAADY2NjQzMzExMScnJyQkJCQhISAfHx4dHRsbGhcYFxYVFXR+fn5+
- Yw8NDQ0MCwkJCAV6fn5+floBAQEBAAAAAAA5NjY2NDMzMTExJycnJCQhJCIhIB8eHh0dGxsaFxgXFhV1
- fn5+fmQPDg0NDQwLCQkIen5+fn5aAwIBAQAAAAAAOTk2NjYzMzMxMTExJycnJCQiIiEgIB8eHR0bGxoa
- GBcWdX5+fn5jEA8ODQ0NDAsJCXp+fn5+XgMCAgEBAQAAADk5OTY2NjQzMzExJygnJSckJCEiICAfHh4d
- HRsbFxoYF3V+fn5+ZhAQDw4NDQ0MCwl6fn5+fl4EAwIBAQEBAQA7OTk5NjY2NDMzMTEyJyclJSQkIiEh
- ICAfHh0dGh0XGhh1fn5+fmYSEBAPDg0NDQwLen5+fn5eBQUDAwIBAQEAOzs5OTk3NjY0MzMzMTEoJyck
- JCQkIiEgHx8eHR0aHRoadX5+fn5mEhEREA8ODQ0NDHp+fn5+XgYDBQMCAQEBATw7Ojk5NzY2NjQzMzEx
- MSgnJyQkIiIiISAfHx4eHRobGnV+fn5+ZhUTEREQDw4NDQ16fn5+fl8GBQUEAwMBAQE9PDs7OTk5NjY2
- NDMzMTExJycnJSQkIiIhIB8fHR0dGxp3fn5+fmYVExMSERAPDg0Ne35+fn5gCAgFBQQDAwEBPj48Ozo6
- OTk2NjY0MzMzMTExJycnJCQiIiEfHx8eHh0adn5+fn5nFRUTExIREA8PDXt+fn5+YAgIBgYFBAMDAT8+
- Pjw7Ozk5OTY2NjQzMTMxJygnJCclJCIiISAfHx0dHnZ+fn5+ZxYVFRMTEREQDw18fn5+fmAICAgGBQUE
- AwM/Pz4+PDs6OTk5NjY2NDMzMTEyJyclJSQkIiEhIB8gHR13fn5+fm0tLSwsKysqKikpe35+fn5gCwkI
- CAgGBQQDQT8+Pj47Ozs5OTk2NjY2MzMzMTEoJyckJSQkISEgHx8fdn5+fn5+fn5+fn5+fn5+fn5+fn5+
- YwsJCAgFBgUFBEJBQT4+Pjw7Ozk5OTY2NjMzMzExMTEnJyUlIiQhISAfH3d+fn5+fn5+fn5+fn5+fn5+
- fn5+fmELCwsJCAgFBQVCQkFBPj4+Ozs6OTk5NjY2NDMzMTEnMSgnJCciJCIhIB93fn5+fn5+fn5+fn5+
- fn5+fn5+fn5jDQwLCwkICAgFQ0JBQUE/Pj47PDo5OTk2NjY0MzMzMTEoJyckJyEiIiEgd35+fn5+fn5+
- fn5+fn5+fn5+fn5+Yw0OCwsLCQgGCENDQ0FBPz4+Pjw8Ojo5OTY2NjQzMTMxKCgnJyQnJCEhIXh+fn5+
- bjAwLy8tLS0sLSx8fn5+fmMNDQ0LCwsJCAZFQ0NDQUFBPz4+PDw6Ojk6NjY2NDMzMTIxKCgnJCUkJCJ4
- fn5+fmkdGxsaGhgXFxUVfH5+fn5jDw0NDQwLCwsIRUVDQ0NCQT8/Pj48PDs5OTk2NjY2MzMxMTEoJyck
- JCQieH5+fn5pHR0bGxoaGBcWFX1+fn5+ZhAPDQ0OCwsIC0ZFRUNDQkFBPz4+Pjw8Ozo5OTc2NDQzMzIx
- KCgoJyQlJHd+fn5+aR8eHRsbGhoYFxd9fn5+fmMQEA4NDQ0MCwtGRkVEQ0NDQkFBPj4+Ozs7OTk5NzY2
- NDQzMjExKCgnJSR5fn5+fmkfHh4dGxoaGhgXfX5+fn5mEhAQDw0NDgwLSEZGRUVEQ0JCQUE+Pj48Ozs6
- OTk5NjY0NDMyMTEnJycnd35+fn5qHx8eHR0dGhoaGH1+fn5+ZhISEBAPDQ0OC0hIRkZFRUNDQkFBQT4+
- Pjs7Ojk5Nzc2NjQzMzIxMSgnJ3l+fn5+ayEfHx8eHR0aGhp9fn5+fmYSEhIQEA4NDQ1LSEhIRUVFREND
- QUFBPj4+PDs7Ojk5NzY2NjQzMjEyJyd5fn5+fmshIR8fHh0dHRoafX5+fn5mFRMSEhAQDw0NS0tISEhF
- RUVEQ0NBQUE/Pj4+Ozs7OTg3NjY0NDMyMTEneX5+fn5rISEhHx8fHR0dGn1+fn5+ZhUTExISEBAODUtL
- S0hISEVFRUNDQ0FBQUE+Ozw8Ozk5OTc2NjQ0MzIxMXl+fn5+bCQhISAfHx8dHR19fn5+fmcWFRMSEhIQ
- EA5MS0tLSEhIRUVFQ0NDQUE/Pz4+PDs7Ojk5NjY2NDQzMjFweXh5d2gkISIhIR8fHx0dcnV3d3VdFhYV
- FRISERAQTUxLS0tJSEhFRUVDQ0RBQkFBPj48Ozs6OTk5NjY0NDMyMTExJygkJSQiISEhHx8fHR0dGhoa
- GBcXFhUVExIREE1NTEtLSUhISEVFRUNDQ0FBPz4+Pjw8Ojo5OTY2NjQzMzIxMTEnJyQnJCQiISEfHx8d
- HR0aGhoaGBcWFRQTEhFPTU1MS0tLSUhIRUVFQ0NDQkFCPj4+PDs7Ojk5OTY2NjQzMjExMScnJCQkIiIh
- IR8fHx0dHRoaGhcYFxUVFBMST09NTU1MS0lJSEhFRUVDQ0JCQUE/Pj4+PDs6OTk3NjY0MzMyMTExJycn
- JSQiISEhHx8fHR0dGhoaGBgXFhUVE1BPT01NTUtLSUlISEVFRUNDREFBQT8+Pjs8Ozo5OTc2NjY0MzIx
- MTEoJyQkJCQhISEfHx8dHR0aGhoYFxcWFRRQUE9PTU1NTEtJSUhIRUVFRUNDQUFBPz4+PDw7Ojk5NzY2
- NDMzMjExMScnJyQkJCEhIR8fHx0dHRoaGhgYFxYVUlBQT09NTU1MS0lJSEhFRkVDQ0NCQUE/Pj48PDs6
- OTk3NjY2MzMzMTEoJycnJSQkISEhHx8fHR0eGhoaGBgWFlJSUFBPT01NTUxLSUlISEVFRENDQkJBQT4+
- Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
- QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
- RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
- SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
- TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
- UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
- VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
- HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
- ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
- JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
- MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
- NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
- OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
- Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
- QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
- RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
- S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
- TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
- UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
- VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
- WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
- WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
- nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
- f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
- pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
- f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
- rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
- hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
- tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
- jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
- vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
- oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
- xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
- ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
- zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
- pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
- f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
- rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
- hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
- tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
- //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
- vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
- w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
- xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
- 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
- zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
- //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
- 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
- ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
- 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
- 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
- jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
- vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
- lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
- xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
- tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
- zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
- ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
- 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
- rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
- 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
- tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
- 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
- vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
- 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
- xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
- 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
- zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
- pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
- 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
- rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
- 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
- tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
- 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
- vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
- 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
- xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
- 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
- zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
- /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
- 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
- //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
- 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
- tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
- 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
- vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
- 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
- xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
- 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
- zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
- AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
- jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
- q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
- pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
- xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
- 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
- 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
- y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
- 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
- FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
- IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
- NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
- AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
- fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
- cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
- fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
- JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
- PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
- R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
- UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
- GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
- ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
- ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
- QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
- TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
- VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
- AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
- f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
- iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
- k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
- 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
- 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
- sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
- vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
- x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
- 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
- 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
- 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
- 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
- /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
- rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
- uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
- w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
- zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
- f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
- sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
- 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
- zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
- 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
- AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
- BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
- FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
- IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
- EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ AAABAAYAQEAAAAEAIAAoQgAAZgAAAEBAAAABAAgAKBYAAI5CAAAgIAAAAQAgAKgQAAC2WAAAICAAAAEA
+ CACoCAAAXmkAABAQAAABACAAaAQAAAZyAAAQEAAAAQAIAGgFAABudgAAKAAAAEAAAACAAAAAAQAgAAAA
+ AAAAgAAAAAAAAAAAAAAAAAAAAAAAAFEAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJf/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/OwCK/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SACo/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAm/9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI7/PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9IAKj/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCb/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Ajv89AI3/PACM/zwAi/87AIn/OgCI/zoAh/85AIX/OQCE/zgA
+ g/84AIH/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC1/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0gAqP9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJv/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCO/z0Ajf88AIz/PACL/zsA
+ if86AIj/OgCH/zkAhf85AIT/OACD/zgAgf83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALn/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zoAiP86AIf/OQCF/zkAhP84AIP/OACB/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAKz/SgCr/0kA
+ qv9JAKn/SACn/0cApv9HAKX/RgCj/0YAov9FAKH/RQCf/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Akv8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/85AIX/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArP9KAKv/SQCq/0kAqf9IAKf/RwCm/0cApf9GAKP/RgCi/0UAof9FAJ//RACe/0MA
+ nf9DAJz/QgCa/0IAmf9BAJj/QQCW/0AAlf9AAJT/PwCS/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if87AIj/OgCH/zkAhf85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/0oAq/9JAKr/SQCp/0gAp/9HAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAn/9EAJ7/QwCd/0MAnP9CAJr/QgCZ/0EAmP9BAJb/QACV/0AAlP8/AJL/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/OwCJ/zsAiP86AIf/OQCF/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1EA
+ vf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALD/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCj/0YAov9FAKH/RQCg/0QAnv9DAJ3/QwCc/0IAmv9CAJn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/zwAi/87AIn/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sP9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKP/RgCi/0UAof9FAKD/RACe/7ac
+ 2P/Sw+f/0sPn/9LD5//Sw+b/kGvC/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf88AIz/PACL/zsA
+ if/Artn/0MPi/9DD4v/Qw+L/0MPh/4trtv83AID/NwB//zcAf/83AH//NwB//zcAf/83AH//NwB//zcA
+ f/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9RAL3/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ o/9GAKL/RQCh/0UAoP/Tw+j//////////////////////5t6yf9BAJb/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//PQCN/zwAjP88AIv/4trt//////////////////////+Xer7/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwf9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/RgCk/0YAov9FAKH/08Po//////////////////////+cesn/QQCY/0EA
+ lv9AAJX/QACU/z8Ak/8+AJH/PgCQ/z0Aj/89AI3/PACM/+La7v//////////////////////l3q+/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/UAC6/08AuP9PALf/TgC2/04AtP9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKf/SACm/0cApf9GAKT/RgCi/9PD6P//////////////
+ ////////nHrK/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf8+AJD/PQCP/z0Ajf/i2u7/////////
+ /////////////5h6v/85AIT/OACD/zgAgv83AID/NwB//zcAf/83AH//NwB//zcAf/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IAv/9SAL7/UQC8/1AAu/9QALr/TwC4/08A
+ t/9OALb/TgC0/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAp/9IAKb/RwCl/0YA
+ pP/Tw+n//////////////////////5x6y/9CAJr/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/PgCR/z4A
+ kP89AI//4tru//////////////////////+YesD/OgCG/zkAhP84AIP/OACC/zcAgP83AH//NwB//zcA
+ f/83AH//WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9OALT/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/SACn/0gApv9HAKX/08Pp//////////////////////+desv/QwCc/0IAmv9CAJn/QQCY/0EA
+ l/9AAJX/QACU/z8Ak/8+AJH/PgCQ/+La7v//////////////////////mHrA/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCA/zcAf/83AH//NwB//1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/08AuP9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/0kAqf9IAKj/SACm/9PD6f//////////////////////nXrM/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf9AAJT/PwCT/z4Akf/i2u7//////////////////////5h6
+ wf87AIj/OgCH/zoAhv85AIT/OACD/zgAgv83AID/NwB//zcAf/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/TwC4/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oAq/9JAKr/SQCp/0gAqP/Tw+r/////////
+ /////////////516zf9EAJ7/RACd/0MAnP9DAJv/QgCZ/0EAmP9BAJf/QACV/0AAlP8/AJP/4trv////
+ //////////////////+ZesL/OwCK/zsAiP86AIf/OgCG/zkAhP84AIP/OACC/zcAgf83AH//WwDS/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxf9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9PALj/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/SgCr/0kA
+ qv9JAKn/08Pq//////////////////////+des3/RQCg/0QAnv9EAJ3/QwCc/0MAm/9CAJn/QQCY/0EA
+ l/9AAJX/QACU/+Pa7///////////////////////mXrD/zwAi/87AIr/OwCI/zoAh/86AIb/OQCE/zgA
+ g/84AIL/NwCB/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/0oArf9KAKv/SQCq/9TD6v//////////////////////nnrO/0UAof9FAKD/RACe/0QA
+ nf9DAJz/QwCb/0IAmf9BAJj/QQCX/0AAlf/j2u///////////////////////5l6xP88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv85AIT/OACD/zgAgv9cANX/WwDU/1sA0/9aANH/WQDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMn/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC8/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0sAr/9LAK7/SgCt/0oArP/Uw+v//////////////////////556
+ z/9GAKL/RQCh/0UAoP9EAJ//RACd/0MAnP9DAJv/QgCZ/0IAmP9BAJf/49rv////////////////////
+ //+ZesT/PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/OgCG/zkAhf84AIP/XADW/1wA1f9bANT/WwDT/1oA
+ 0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RALz/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/SwCv/0sArv9KAK3/1MPr////
+ //////////////////+ri9b/azO2/2sztP9qM7P/ajOz/2kzsv9pM7D/aDOv/2gzr/9nM63/ZzOs/+Pa
+ 7///////////////////////mnrF/z0Aj/89AI7/PACM/zwAi/87AIr/OwCI/zoAh/86AIb/OQCF/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1kA0P9ZAM//WADN/1gAzP9XAMv/VwDJ/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvP9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/0wA
+ sf9LAK//SwCu/9TD6///////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////5p6xv8+AJD/PQCP/z0Ajv88AIz/PACL/zsA
+ iv87AIj/OgCH/zoAhv9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9YAM3/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As/9NALL/TACx/0wAsP/Uw+v/////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////+aesb/PwCS/z4A
+ kP89AI//PQCO/zwAjP88AIv/OwCK/zsAiP86AIf/XgDa/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1gAzf9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMD/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/TQCz/00Asv9MALH/1MPs////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////m3rH/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/zwAi/87AIr/OwCJ/18A3P9eANr/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WADN/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwP9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/04Atf9NALP/TQCy/9TD
+ 7P//////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////5t6yP9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv88AIz/PACL/zsA
+ iv9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDA/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t/9OALb/TgC1/00As//Vw+z//////////////////////6yL2f9tM7v/bTO6/2wzuf9sM7f/azO3/2sz
+ tv9rM7X/ajOz/2ozs/9pM7L/49rw//////////////////////+besj/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//PQCO/zwAjP88AIv/YADe/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0f9aAND/WQDP/1kAzv9YAMz/VwDL/1cAyv9WAMj/VgDH/1UAxv9UAMT/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/TwC3/04Atv9OALX/1cPt//////////////////////+hetT/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/0YAo/9FAKH/RQCg/+Pa8f//////////////////////nHrJ/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/z4Aj/89AI7/PACM/2AA4P9gAN7/XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDR/1oA0P9ZAM//WQDO/1gAzP9XAMv/VwDK/1YAyP9WAMf/VQDG/1QA
+ xP9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/1AAuf9PALf/TgC2/9XD7f//////////////
+ ////////oXrU/0sArf9KAKz/SQCq/0kAqf9IAKj/SACn/0cApf9GAKT/RgCj/0UAof/k2vH/////////
+ /////////////5x6yv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv8+AJD/PgCP/z0Ajv9hAOH/YADg/2AA
+ 3v9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANH/WgDQ/1kAz/9ZAM7/WADM/1cA
+ y/9XAMr/VgDI/1YAx/9VAMb/VADE/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu/9QALr/UAC5/08A
+ t//Vw+3//////////////////////6F61f9LAK7/SwCt/0oArP9JAKr/SQCp/0gAqP9IAKf/RwCl/0YA
+ pP9GAKP/5Nrx//////////////////////+cesr/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/PwCS/z4A
+ kP8+AI//YQDi/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/UQC7/1AAuv9QALn/1cPu//////////////////////+hetb/TACw/0sArv9LAK3/SgCs/0kA
+ qv9JAKn/SACo/0gAp/9HAKX/RgCk/+Ta8f//////////////////////nHrL/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/z8Ak/8/AJL/PgCQ/2IA5P9hAOL/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADV/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyP9WAMf/VQDG/1UA
+ xf9UAMP/UwDC/1MAwf9SAL//UgC+/1EAvf9RALv/UAC6/9XD7v//////////////////////onrW/0wA
+ sf9MALD/SwCu/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf/k2vH//////////////////////516
+ zP9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9AAJT/PwCT/z8Akv9jAOX/YgDk/2EA4v9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANX/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDI/1YAx/9VAMb/VQDF/1QAw/9TAML/UwDB/1IAv/9SAL7/UQC9/1EAu//Vw+7/////////
+ /////////////6J61/9NALL/TACx/0wAsP9LAK7/SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/5Nrx////
+ //////////////////+desz/RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/QACW/0AAlP8/AJP/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1f9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMj/VgDH/1UAxv9VAMX/VADD/1MAwv9TAMH/UgC//1IA
+ vv9RAL3/1sPv//////////////////////+ietj/TQC0/00Asv9MALH/TACw/0sArv9LAK3/SgCs/0kA
+ q/9JAKn/SACo/+Ta8v//////////////////////nXrN/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/0EA
+ l/9AAJb/QACU/2QA6P9jAOb/YwDl/2IA5P9iAOP/YQDh/2AA4P9gAN//XwDd/18A3P9eANv/XgDZ/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzP9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/9bD7///////////////////////onrY/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf/k2vL//////////////////////516zf9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9CAJj/QQCX/0AAlv9kAOn/ZADo/2MA5v9jAOX/YgDk/2IA4/9hAOH/YADg/2AA
+ 3/9fAN3/XwDc/14A2/9eANn/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADM/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1IAv//Ww+///////////////////////6N6
+ 2f9OALb/TgC1/00AtP9NALL/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/5Nry////////////////////
+ //+ees//RgCi/0UAoP9EAJ//RACe/0MAnP9DAJv/QgCa/0IAmP9BAJf/ZQDq/2QA6f9kAOj/YwDm/2MA
+ 5f9iAOT/YgDj/2EA4f9gAOD/YADf/18A3f9fANz/XgDb/14A2f9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAMz/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/u5zm/9bD
+ 7//Ww+//1sPv/9XD7v+Za9b/TwC4/04Atv9OALX/TQC0/00Asv9MALH/TACw/0sAr/9LAK3/SgCs/8Wu
+ 5P/Uw+r/08Pq/9PD6v/Tw+n/lGvK/0YAo/9GAKL/RQCg/0QAn/9EAJ7/QwCc/0MAm/9CAJr/QgCY/2YA
+ 7P9lAOr/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9SAL//UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCy/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApf9HAKT/RgCj/0YAov9FAKD/RACf/0QA
+ nv9DAJz/QwCb/0IAmv9mAO3/ZgDs/2UA6v9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN3/XwDc/14A2/9eANr/XQDY/1wA1/9cANb/WwDU/1sA0/9aANL/WgDQ/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAw/9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//RACe/0MAnP9DAJv/ZwDu/2YA7f9mAOz/ZQDq/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3f9fANz/XgDb/14A2v9dANj/XADX/1wA1v9bANT/WwDT/1oA
+ 0v9aAND/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADD/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/04Atv9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKn/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/0UAn/9EAJ7/QwCc/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDd/18A3P9eANv/XgDa/10A
+ 2P9cANf/XADW/1sA1P9bANP/WgDS/1oA0P9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMP/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TgC2/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqf9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9FAKD/RQCf/0QA
+ nv9oAPH/ZwDw/2cA7v9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOH/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9OALb/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCp/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/RgCi/0UAoP9FAJ//aADy/2gA8f9nAPD/ZwDu/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4f9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9bANT/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDH/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAuv9QALn/TwC4/08At/9OALX/TQC0/00As/9MALH/TACw/0sAr/9LAK3/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/0YAo/9GAKL/RQCg/2kA9P9oAPL/aADx/2cA8P9nAO7/ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDh/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1sA1P9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMf/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC6/1AAuf9PALj/TwC3/04Atf9NALT/TQCz/0wA
+ sf9MALD/SwCv/0sArf9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9HAKT/RgCj/0YAov9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/WwDU/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAx/9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALr/UAC5/08A
+ uP9PALf/TgC1/00AtP9NALP/TACx/0wAsP9LAK//SwCt/0oArP9JAKv/SQCq/0gAqP9IAKf/RwCm/0cA
+ pP9GAKP/agD2/2oA9f9pAPT/aADy/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5f9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANj/XQDX/1wA1v9cANX/WwDT/1oA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/0gAp/9HAKb/RwCk/2sA+P9qAPb/agD1/2kA9P9oAPL/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDl/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2P9dANf/XADW/1wA1f9bANP/WgDS/1oA0f9ZAM//WQDO/1gAzf9YAMv/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC+/1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/0wA
+ sf9MALD/SwCv/0sArv9KAKz/SQCr/0kAqv9IAKj/SACn/0cApv9rAPn/awD4/2oA9v9qAPX/aQD0/2gA
+ 8v9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOX/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDY/10A1/9cANb/XADV/1sA0/9aANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ y/9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL7/UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TACx/0wAsP9LAK//SwCu/0oArP9JAKv/SQCq/0gAqP9IAKf/bAD6/2sA
+ +f9rAPj/agD2/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADL/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ vv9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9MALH/TACw/0sAr/9LAK7/SgCs/0kA
+ q/9JAKr/SACo/2wA/P9sAPr/awD5/2sA+P9qAPb/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZADp/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3P9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAM//WQDO/1gAzf9YAMz/VwDK/1YAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADC/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9KAKz/SgCr/0kAqv9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9v9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9kAOn/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDc/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kAz/9ZAM7/WADN/1gA
+ zP9XAMr/VgDJ/1YAyP9VAMb/VQDF/1QAxP9UAML/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC1/04AtP9NALP/TQCy/0wAsP9LAK//SwCu/0oArP9KAKv/bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2QA6f9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fANz/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDP/1kAzv9YAM3/WADM/1cAyv9WAMn/VgDI/1UAxv9VAMX/VADE/1QAwv9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALX/TgC0/00As/9NALL/TACw/0sAr/9LAK7/SgCs/24A
+ //9uAP//bQD9/2wA/P9sAPr/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDt/2YA
+ 7P9lAOv/ZQDq/2QA6P9jAOf/YwDm/2IA5P9iAOP/YQDi/2EA4P9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atf9OALT/TQCz/00A
+ sv9MALD/SwCv/0sArv9uAP//bgD//24A//9tAP3/bAD8/2wA+v9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO3/ZgDs/2UA6/9lAOr/ZADo/2MA5/9jAOb/YgDk/2IA4/9hAOL/YQDg/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA0/9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9VAMb/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC5/08A
+ uP9PALf/TgC2/04AtP9NALP/TQCy/0wAsP9LAK//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD6/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7f9mAOz/ZQDr/2UA6v9kAOj/YwDn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOD/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDT/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1UAxv9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALn/TwC4/08At/9OALb/TgC0/00As/9NALL/TACw/24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANP/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VQDG/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuf9PALj/TwC3/04Atv9OALT/TQCz/00A
+ sv9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPH/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YgDk/2IA4/9hAOL/YQDh/2AA
+ 3/9fAN7/XwDd/14A2/9eANr/XQDZ/10A1/9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/TgC2/04AtP9NALP/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8f9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9iAOT/YgDj/2EA4v9hAOH/YADf/18A3v9fAN3/XgDb/14A2v9dANn/XQDX/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAyv9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9RAL3/UQC8/1AAu/9QALr/TwC4/08At/9OALb/TgC0/24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADx/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2IA5P9iAOP/YQDi/2EA4f9gAN//XwDe/18A3f9eANv/XgDa/10A
+ 2f9dANf/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDK/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1EAvf9RALz/UAC7/1AAuv9PALj/TwC3/04Atv9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bAD8/2wA+/9rAPn/awD4/2oA9/9qAPX/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMr/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UQC9/1EAvP9QALv/UAC6/08A
+ uP9PALf/bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9sAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9f9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOj/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XgDb/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAzv9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAMH/UwDA/1IA
+ v/9SAL7/UQC8/1AAu/9QALr/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/2wA/P9sAPv/awD5/2sA+P9qAPf/agD1/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6P9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9eANv/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDO/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwf9TAMD/UgC//1IAvv9RALz/UAC7/1AAuv9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9tAP3/bQD8/2wA+/9rAPn/awD4/2oA9/9qAPb/aQD0/2kA
+ 8/9oAPL/ZwDw/2cA7/9mAO7/ZgDs/2UA6/9lAOr/ZADo/2QA5/9jAOb/YwDl/2IA4/9hAOL/YQDh/2AA
+ 3/9gAN7/XwDd/14A2/9eANr/XQDZ/10A2P9cANb/XADV/1sA1P9bANL/WgDR/1kA0P9ZAM7/WADN/1gA
+ zP9XAMv/VwDJ/1YAyP9WAMf/VQDF/1QAxP9UAMP/UwDB/1MAwP9SAL//UgC+/1EAvP9QALv/bgD//24A
+ //9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/f9tAPz/bAD7/2sA
+ +f9rAPj/agD3/2oA9v9pAPT/aQDz/2gA8v9nAPD/ZwDv/2YA7v9mAOz/ZQDr/2UA6v9kAOn/ZADn/2MA
+ 5v9jAOX/YgDj/2EA4v9hAOH/YADf/2AA3v9fAN3/XwDc/14A2v9dANn/XQDY/1wA1v9cANX/WwDU/1sA
+ 0v9aANH/WQDQ/1kAz/9YAM3/WADM/1cAy/9XAMn/VgDI/1YAx/9VAMX/VADE/1QAw/9TAML/UwDA/1IA
+ v/9SAL7/UQC8/24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A//9uAP//bgD//24A
+ //9uAP//bQD9/20A/P9sAPv/awD5/2sA+P9qAPf/agD2/2kA9P9pAPP/aADy/2cA8P9nAO//ZgDu/2YA
+ 7P9lAOv/ZQDq/2QA6f9kAOf/YwDm/2MA5f9iAOP/YQDi/2EA4f9gAN//YADe/18A3f9fANz/XgDa/10A
+ 2f9dANj/XADW/1wA1f9bANT/WwDS/1oA0f9ZAND/WQDP/1gAzf9YAMz/VwDL/1cAyf9WAMj/VgDH/1UA
+ xf9UAMT/VADD/1MAwv9TAMD/UgC//1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgA
+ AABAAAAAgAAAAAEACAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAgv85AIT/OgCG/zoA
+ iP87AIj/PACL/zwAjP89AI7/PgCP/z4AkP8/AJL/QACU/0EAlv9BAJj/QgCZ/0MAm/9DAJz/RACe/0UA
+ n/9FAKD/RgCi/0YApP9HAKX/SACm/0gAqP9JAKn/SgCr/0oArP9LAK7/TACw/00Asv9NALT/TgC1/08A
+ t/9PALj/UAC5/1EAu/9RALz/UgC+/2czrP9oM6//aTOx/2ozs/9rM7X/bDO3/2wzuf9tM7r/UwDA/1QA
+ wv9UAMT/VQDF/1YAx/9WAMj/VwDJ/1gAy/9YAMz/WQDO/1kA0P9aANH/WwDS/1sA1P9cANX/XQDX/10A
+ 2P9eANr/XwDc/2AA3v9gAOD/YQDh/2IA4/9iAOT/YwDl/2QA5/9kAOj/ZQDq/2YA7P9nAO7/ZwDw/2gA
+ 8f9pAPP/aQD0/2oA9f9rAPj/bAD6/2wA/P9tAPz/bgD//4trtv+Xer7/mHq//5Brwv+Ua8r/mHrA/5l6
+ wv+ZesT/mnrF/5t6x/+besj/nHrK/516y/+desz/nnrO/5lr1v+hetT/onrW/6J62P+jetn/q4vW/6yL
+ 2f+2nNj/u5zm/8Cu2f/FruT/0MPh/9LD5v/Tw+n/1MPq/9TD7P/Vw+3/1sPv/+La7v/j2u//49rw/+Ta
+ 8f//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ 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
+ MTEoJyQkJCQhISEfHx8dHR0aGhoYFxcWFRRQUE9PTU1NTEtJSUhIRUVFRUNDQUFBPz4+PDw7Ojk5NzY2
+ NDMzMjExMScnJyQkJCEhIR8fHx0dHRoaGhgYFxYVUlBQT09NTU1MS0lJSEhFRkVDQ0NCQUE/Pj48PDs6
+ OTk3NjY2MzMzMTEoJycnJSQkISEhHx8fHR0eGhoaGBgWFlJSUFBPT01NTUxLSUlISEVFRENDQkJBQT4+
+ Pjw8Ozo5OTc2NjYzMzExMTEnJyQkJCQhISEfHx8dHR0aGxoYFxdUUlJQUE9PTU1NTEtJSUhIRkVFQ0NC
+ QUFBPz8+PDw7Ojk5NzY2NjMzMzExKCcnJyQkJCEhIB8fHx0dHRoaGhoYVFRSUlBQT05NTU1MS0lJSEhI
+ RkVFRENBQUE/Pz48Ozs6OTk3NjY2MzMzMTEoJycnJCQkISIgHx8fHR0eGhoaGFRUVFJSUFBPTk1NTUxL
+ SUhISEVGRUNDQ0JBQT8/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCQhIiEfHx8dHR0aGhpVVFRUUlJSUE9O
+ TU1NTEtLSUhIRUZEQ0NEQUFBPz4+Ozw7Ojk5NzY2MzMzMzExMScnJyQkJCEhIR8fHx0dHRsaVlVUVFRS
+ UlJQT05NTU1MS0tISEhGRUVDQ0NDQUE+Pz49PDs6OTk3NjY2MzMzMTExJycnJSQkISEhIB8fHh0dG1dW
+ VVRUVFJSUlBPTk1NTUtLS0hISEhGRENDQ0FBQT8/Pj08Ojo5OTk2NjY0MzIxMTEnJyUkJCQhIiEfHx4e
+ HR1YV1ZVVFRUUlJSUE9OTU1NS0tLSEhIRUVFQ0NDQkFBPz8+PTw7Ojk5OTY2NDQzMjExMScnJyQkJCEh
+ ISAfHh0dWFhXVlVUVFRSUlJQT05NTU1LS0tISEhIRURDQ0RCQUE/Pj49PDs6OTk3NzY0MzMzMTExKCcn
+ JCQkISEgIB8fHVhYWFdWVVRUVFJSUlBPTk1NTU1LTEhIRkhFRUNDQ0FBQT4+Pj08Ozo5OTc2NjYzMzMx
+ MTEnJyclJCQiISEgHx9YWFhYV1ZVVFRUUlJSUE9PTU1LTEtLSEhGSEVFQ0VDQkFBQT4+PTw7Ojk5OTY2
+ NjMzMzExMScnJSQkJCQiISAfWFhYWFhXVlZUVFRSUlJQT09NTU1LS0tLSEZIRkVDQ0NBQz5BPj4+PDs6
+ OTk5NzY2NDMzMTExJycnJSUhIiIgIFhYWFhYWFdWVlRUVFJSUlBPT09NTUtLSEtIRkZGRUNFQ0FDQT4+
+ Pj08Ozo5OTc3NjY0MzIxMTEoJyUkJCQiISBYWFhYWFhYV1ZWVFRUUlJSUE9NT01NTEtLS0hIRkZFQ0ND
+ QUFBQT4+Pjw7Ojk5Nzc2NjQzMzExMScnJyckJCQhWFhYWFhYWFhXVlZUVFRSUlJQT01NTU5MS0hLSEhG
+ RkVDQ0NBQUE+Pj4+PDs6OTk3NzY2NDMzMTExKCclJCQkJFhYWFhYWFhYWFdWVlRUVFJSUlJPT01NTktL
+ S0lJSEZGRURDQ0NBQUE/Pj48Ozo5OTc2NjY0MzIxMTEnJyckJCJYWFhYWFhYWFhYV1ZWVFRUUlJQUk9P
+ TU1NTEtLSUlIRkZFRENDQUNBPz8+PTw7Ojk5OTY2NjQzMjExMSgnJyQkWFhYWFhYWFhYWFhXVlZUVFRS
+ UlBQT09NTU5LS0tJSUhGRkVEQ0NBQUE/Pz49PDs6OTk5NjY2NDMyMTEyJycnJ1hYWFhYWFhYWFhYWFdX
+ VlRUVFRSUlBPT01NTUxLS0lJSEZGRURDQ0JBQT8/Pj08Ozo5OTk3NjU0MzIxMTEoJyVYWFhYWFhYWFhY
+ WFhYV1dVVFRTVFJRUE9PTU1MTEtLSUlHRkZERENDQkFBPz8+PTw7Ojk5Nzc2NTQzMzExKCgnWFhYWFhY
+ WFhYWFhYWFhXV1VUVFNTUlFQT05NTUxMS0pJSUdGRkREQ0NCQUE/Pz49PDs6OTk3NzY1NDMyMTEoKAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAIAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MA
+ nf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcA
+ f/83AH//NwB//zcAf/83AH//UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oArP9JAKr/SACn/0cA
+ pf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OgCI/zkAhf84AIP/NwCA/zcA
+ f/83AH//NwB//zcAf/83AH//NwB//zcAf/9TAMH/UgC//1EAvP9QALn/TwC3/04AtP9NALL/SwCv/0oA
+ rP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0Ajf88AIv/OwCI/zkA
+ hf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//NwB//1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04A
+ tP9NALL/SwCv/0oArP9JAKr/SACn/0cApf9GAKL/RQCf/0MAnf9CAJr/QQCY/0AAlf8/AJL/PgCQ/z0A
+ jf88AIv/OwCI/zkAhf84AIP/NwCA/zcAf/83AH//NwB//zcAf/83AH//VgDH/1QAxP9TAMH/UgC//1EA
+ vP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/RQCg/2AnrP+KYsD/imK//1Qb
+ oP8/AJP/PgCQ/z0Ajf88AIv/XCyc/4VitP+EYrL/TBuN/zcAf/83AH//NwB//zcAf/9XAMn/VgDH/1QA
+ xP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cApf9GAKL/jGLE////
+ ////////bj2w/0AAlf8/AJP/PgCQ/z0Ajf+Pbb3///////////9oPaD/NwCA/zcAf/83AH//NwB//1gA
+ zP9XAMn/VgDH/1QAxP9TAMH/UgC//1EAvP9QALr/TwC3/04AtP9NALL/SwCv/0oArf9JAKr/SACn/0cA
+ pf+NYsb///////////9vPbL/QQCY/0AAlf8/AJP/PgCQ/5Btvv///////////2k9ov84AIP/NwCA/zcA
+ f/83AH//WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/0oA
+ rf9JAKr/SACo/41ix////////////3A9tP9DAJv/QQCY/0AAlf8/AJP/kG2/////////////aT2k/zoA
+ hv84AIP/NwCA/zcAf/9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EAvP9QALr/TwC3/04A
+ tf9NALL/SwCv/0oArf9JAKr/jmLJ////////////cT22/0QAnf9DAJv/QQCY/0AAlf+RbcH/////////
+ //9qPaf/OwCI/zoAhv84AIP/NwCB/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QAxP9TAML/UgC//1EA
+ vP9QALr/TwC3/04Atf9NALL/SwCv/0oArf+PYsv///////////9yPbj/RQCg/0QAnf9DAJv/QgCY/5Jt
+ w////////////2s9qf88AIv/OwCI/zoAhv84AIP/XADX/1sA1P9aANH/WQDP/1gAzP9XAMn/VgDH/1QA
+ xP9TAML/UgC//1EAvP9QALr/TwC3/04Atf9NALL/SwCv/49izP///////////8Wv4/+1mdn/tJnZ/7SZ
+ 1/+zmdf/0sPm////////////bD2r/z0Ajv88AIv/OwCI/zoAhv9eANn/XADX/1sA1P9aANH/WQDP/1gA
+ zP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf9NALL/kGLO////////////////////
+ //////////////////////////////////9tPa3/PgCQ/z0Ajv88AIv/OwCJ/18A3P9eANn/XADX/1sA
+ 1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/04Atf+RYs//////////
+ ///Gr+X/tpnc/7WZ2/+1mdr/tZnZ/9PD6P///////////249r/8/AJP/PgCQ/z0Ajv88AIv/YADe/18A
+ 3P9eANn/XADX/1sA1P9aANH/WQDP/1gAzP9XAMr/VgDH/1QAxP9TAML/UgC//1EAvf9QALr/TwC3/5Ji
+ 0f///////////3Y9wP9JAKr/SACo/0cApf9GAKP/lG3J////////////bz2x/0AAlv8/AJP/PgCQ/z0A
+ jv9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9TAML/UgC//1EA
+ vf9QALr/kmLT////////////dj3C/0sArf9JAKr/SACo/0cApf+Vbcr///////////9vPbP/QgCY/0AA
+ lv8/AJP/PgCQ/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UA
+ xf9TAML/UgC//1EAvf+TYtT///////////93PcT/TACw/0sArf9JAKv/SACo/5ZtzP///////////3A9
+ tf9DAJv/QgCY/0AAlv8/AJP/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA1P9aANL/WQDP/1gA
+ zP9XAMr/VgDH/1UAxf9UAML/UgC//5Ri1v///////////3g9xv9NALL/TACw/0sArf9JAKv/lm3N////
+ ////////cT22/0QAnv9DAJv/QgCY/0AAlv9kAOn/YwDm/2IA5P9hAOH/YADf/18A3P9eANn/XADX/1sA
+ 1P9aANL/WQDP/1gAzP9XAMr/VgDH/1UAxf9UAML/jljV/+vh9//q4ff/djnH/04Atf9NALL/TACw/0sA
+ rf+PYsv/6eH1/+nh9P9wObj/RQCg/0QAnv9DAJv/QgCY/2YA7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A
+ 3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04A
+ tf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9DAJv/ZwDu/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOH/YADf/18A3P9eANr/XADX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UAxf9UAML/UwDA/1EA
+ vf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/0QAnv9oAPH/ZwDu/2YA
+ 7P9kAOn/YwDn/2IA5P9hAOH/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gAzf9XAMr/VgDH/1UA
+ xf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cApv9GAKP/RQCg/2kA
+ 9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1sA1P9aANL/WQDP/1gA
+ zf9XAMr/VgDH/1UAxf9UAML/UwDA/1EAvf9QALr/TwC4/04Atf9NALP/TACw/0sArf9JAKv/SACo/0cA
+ pv9GAKP/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A3P9eANr/XQDX/1wA
+ 1f9aANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sA
+ rv9JAKv/SACo/0cApv9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA5P9hAOL/YADf/18A
+ 3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EAvf9QALv/TwC4/04A
+ tf9NALP/TACw/0sArv9JAKv/SACo/2wA/P9rAPn/agD2/2kA9P9oAPH/ZwDv/2YA7P9kAOn/YwDn/2IA
+ 5P9hAOL/YADf/18A3P9eANr/XQDX/1wA1f9bANL/WQDP/1gAzf9XAMr/VgDI/1UAxf9UAML/UwDA/1EA
+ vf9QALv/TwC4/04Atf9NALP/TACw/0sArv9KAKv/bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA
+ 7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UA
+ xf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atf9NALP/TACw/0sArv9uAP//bgD//2wA/P9rAPn/agD3/2kA
+ 9P9oAPH/ZwDv/2YA7P9lAOr/YwDn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gA
+ zf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/TACw/24A//9uAP//bgD//2wA
+ /P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A3f9eANr/XQDX/1wA
+ 1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04Atv9NALP/bgD//24A
+ //9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPH/ZwDv/2YA7P9lAOr/ZADn/2IA5P9hAOL/YADf/18A
+ 3f9eANr/XQDX/1wA1f9bANL/WQDQ/1gAzf9XAMr/VgDI/1UAxf9UAMP/UwDA/1EAvf9QALv/TwC4/04A
+ tv9uAP//bgD//24A//9uAP//bgD//2wA/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA
+ 5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IA
+ vv9QALv/TwC4/24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA9P9oAPL/ZwDv/2YA
+ 7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gAzf9XAMv/VgDI/1UA
+ xf9UAMP/UwDA/1IAvv9QALv/bgD//24A//9uAP//bgD//24A//9uAP//bgD//20A/P9rAPn/agD3/2kA
+ 9P9oAPL/ZwDv/2YA7P9lAOr/ZADn/2MA5f9hAOL/YADf/18A3f9eANr/XQDY/1wA1f9bANL/WQDQ/1gA
+ zf9XAMv/VgDI/1UAxf9UAMP/UwDA/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAAAgAAAAA
+ AAAAAAAAAAAAAAAAAAA3AH//NwCA/zgAg/85AIX/OgCG/zoAiP87AIj/PACL/z0Ajf8+AJD/PwCS/0wb
+ jf9AAJX/QQCY/0IAmP9DAJv/QwCd/0QAnf9FAJ//XCyc/0UAoP9GAKL/RwCl/0gAp/9IAKj/SQCq/0oA
+ q/9KAKz/SwCu/1QboP9MALD/TQCy/04AtP9PALf/TwC4/1AAuv9RALz/UgC+/2AnrP9oPaD/aT2i/2k9
+ pP9qPaf/az2p/2w9q/9tPa3/bj2v/249sP9vPbL/cD20/3E9tv9wObj/cj24/1MAwP9UAML/VADE/1UA
+ xf9WAMf/VgDI/1cAyf9YAMz/WQDP/1kA0P9aANH/WwDS/1sA1P9cANb/XQDX/10A2P9eANn/XwDc/2AA
+ 3v92PcH/djnH/3c9xP94Pcb/YQDh/2IA5P9jAOb/ZADn/2QA6f9lAOr/ZgDs/2cA7v9oAPH/aQD0/2oA
+ 9v9rAPn/bAD8/20A/P9uAP//hGKy/4VitP+KYr//j229/5Btvv+OWNX/imLA/4xixP+NYsb/jmLJ/49i
+ y/+PYsz/kW3B/5Jtw/+QYs7/kWLP/5Rtyf+Vbcr/lm3M/5Ji0v+TYtT/lGLW/7OZ1/+0mdf/tJnZ/7WZ
+ 2f+2mdz/xa/j/8av5f/Sw+b/08Po/+nh9P/q4ff/6+H3//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAAAJCIiIB8cGxkYFhUUEA0NDAwJCAcFAwIBAQAAAAAAAAA1JCIiICAcGxkY
+ FhUUEA0NDAoJCAcFAwIBAAAAAAAAADU1JCIiIB8eGxkYFhUUEA8NDAoJCAcGAwIBAAAAAAAANzU1JCIi
+ IB8cGxkYFhUUEA0NDAoJCAcGAwIBAAAAAAA5NzU1JCIiHx8eHBkYFhUUJmFdHQoJCAcTXFsLAAAAADs5
+ NzU1JCMiIB8cGxkYFhVifX0vDAoJCF59fScBAAAAPDs6NzU1JCMiHx8eGxkYFmN9fTANDAoJX319KAMB
+ AQA+PDo6NzUlJCMiIB8cGxkYY319MQ8NDApffX0pAwMBAT8+PDo6NzYlJCMiICAeGxlkfX0yEQ8NDGd9
+ fSoFAwIBQT4+PDo6NzclJCMiIB8eHGV9fTQUEA8NaH19KwcFAwJCQT4+PDo6NzYlJCMgIB8bZn19dnRz
+ cnF4fX0sCAcFBUVEQT4+PDo6Nzc1JCQiICBpfX19fX19fX19fS0KCAgGRkVEQT4+PDs6NzU1JCMiIGl9
+ fXZ1dXNzeX19LwoKCAZHRkREQT4+PDs6NzckJSMibn19SBkYFhVrfX0wDAoJCUxHR0REQT4+PDo6ODc1
+ JSJvfX1KGxkYFmt9fTANDAwJTUxHR0REQT8+PDo6ODU1JG99fUoeGxsYbX19MhANDAlOTUxHR0REQT89
+ PDs4ODY1cH19SiAeGxltfX0yEBANDVBOTUxHR0REQUE+PDw6ODZgfHtJICAeHGZ7ejMUEBAOUlBPTUxH
+ R0REQT4+PDs6ODY1JCQiICAeGxkYFhUUEA5TUlBPTUxHRkREQT8+PDs6ODY1JCMiICAeGxsYGBUVFFRT
+ UlBPTUxMRkREQT8+PDs6ODc1JCMiICAeGxkYGBQUVVRTUVBPTUxMRkREQT8+PDs6ODY1JCMiICAeHBkY
+ GBRWVVRUUVBPTUxMRkVEQj89PDs6Nzc1JCQiICAeHBkYGFdWVVRUUVBPTUxMRkVEQkA9PDs6ODc1JCQi
+ ICAeHBgYWFdWVVRUUVBPTUxHRkRCQkA9PDw6ODc1JCQiICAeHhtaWFdWVVRUUVFPTUxHRkZCQkA+PDs6
+ ODc1JCQiIB8eG1paWFdWVVRUUVBPTUxMRkZCQkA+PDs6ODc1JCQiIR4eWlpaWFdWVVRUUlFQTUxHRkZE
+ QkA+PDs6Nzc1JCQiIiBaWlpaWFdWVVRUUVFQTUxHRkRCQkA9PDs6Nzc1JCQiIFpaWlpaWFdWVVRUUVFP
+ TkxHRkZEQkA9PDw6ODY1JSMiWlpaWlpaWVdWVVRUUlFPTkxMRkVEQkA+PDw6ODY1JSNaWlpaWlpaWVdW
+ VVRTUlFPTkxHRkVEQkA+PDs6ODY1JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAACAAAAAAAAAAA
+ AAAAAAAAAAAAAFEAvP9PALf/TQCy/0oArP9IAKf/RgCi/0MAnf9BAJj/PwCS/z0Ajf86AIj/OACD/zcA
+ f/83AH//NwB//zcAf/9TAMH/UQC8/08At/9NALL/SgCs/0gAp/9GAKL/QwCd/0EAmP8/AJL/PQCN/zsA
+ iP84AIP/NwB//zcAf/83AH//VgDH/1MAwf9RALz/TwC3/00Asv9KAK3/SACn/0YAov+desz/k27D/z8A
+ k/89AI3/nH7D/45uuP83AH//NwB//1gAzP9WAMf/UwDC/1EAvP9PALf/TQCy/0oArf9IAKf/xrDj/7ee
+ 2f9BAJj/PwCT/8e23/+0ntH/OACD/zcAf/9aANH/WADM/1YAx/9TAML/UQC8/08At/9NALL/SgCt/8ew
+ 5f+4ntv/RACd/0EAmP/ItuD/tZ7T/zsAiP84AIP/XADX/1oA0f9YAMz/VgDH/1MAwv9RAL3/TwC3/00A
+ sv/HsOb/8ev4/9rM7P/ZzOv/9PD5/7ae1f89AI7/OwCI/18A3P9cANf/WgDR/1gAzP9WAMf/UwDC/1EA
+ vf9PALf/yLDo/8676f9/TcL/fk2//9nL7P+3ntf/PwCT/z0Ajv9hAOH/XwDc/1wA1/9aANL/WADM/1YA
+ x/9TAML/UQC9/8mw6f+7nuH/SwCt/0gAqP/KtuX/t57Z/0IAmP8/AJP/YwDm/2EA4f9fANz/XADX/1oA
+ 0v9YAMz/VgDH/1QAwv/Dpuj/tpbh/00Asv9LAK3/w6zj/7KW2P9EAJ7/QgCY/2YA7P9jAOf/YQDh/18A
+ 3P9cANf/WgDS/1gAzf9WAMf/VADC/1EAvf9PALj/TQCz/0sArf9IAKj/RgCj/0QAnv9oAPH/ZgDs/2MA
+ 5/9hAOH/XwDc/10A1/9aANL/WADN/1YAx/9UAML/UQC9/08AuP9NALP/SwCt/0gAqP9GAKP/agD2/2gA
+ 8f9mAOz/YwDn/2EA4v9fANz/XQDX/1oA0v9YAM3/VgDI/1QAwv9RAL3/TwC4/00As/9LAK7/SACo/2wA
+ /P9qAPf/aADx/2YA7P9jAOf/YQDi/18A3P9dANf/WwDS/1gAzf9WAMj/VADC/1EAvf9PALj/TQCz/0sA
+ rv9uAP//bAD8/2oA9/9oAPH/ZgDs/2QA5/9hAOL/XwDd/10A1/9bANL/WADN/1YAyP9UAMP/UQC9/08A
+ uP9NALP/bgD//24A//9sAPz/agD3/2gA8v9mAOz/ZADn/2EA4v9fAN3/XQDY/1sA0v9YAM3/VgDI/1QA
+ w/9RAL3/TwC4/24A//9uAP//bgD//20A/P9qAPf/aADy/2YA7P9kAOf/YQDi/18A3f9dANj/WwDS/1gA
+ zf9WAMj/VADD/1IAvv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAADcA
+ f/84AIP/OgCI/zsAiP89AI3/PwCS/0EAmP9CAJj/QwCd/0QAnf9GAKL/SACn/0gAqP9KAKz/SwCt/00A
+ sv9PALf/TwC4/1EAvP9SAL7/fk2//1MAwf9UAML/VgDH/1YAyP9YAMz/WgDR/1sA0v9cANf/XQDX/10A
+ 2P9fANz/YQDh/2MA5v9kAOf/ZgDs/2gA8f9qAPb/bAD8/20A/P9uAP//f03C/45uuP+TbsP/nH7D/516
+ zP+0ntH/tZ7T/7ae1f+3ntf/spbY/7ee2f+4ntv/tpbh/7ue4f/Htt//w6zj/8Om6P/GsOP/x7Dl/8i2
+ 4P/KtuX/yLDo/8mw6f/Ou+n/2czr/9nL7P/azOz/8ev4//Tw+f8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
+ AAASEA8NDAoIBgUEAgEAAAAAFRIRDw0MCggGBQQCAQAAABcVEhAPDQwKLSsFBCwqAAAZGBUTEQ8NDDoz
+ BgU3LgAAGhkYFRIRDw07NAkGNy8CARwaGRgVEhEPPkRDQUUwBQMfHBoZGBUTET5AKRRBMQUEIB8cGhkY
+ FRI/Ng4MPTMHBSEgHxwbGRgWOTUPDTgyCAYjIiAfHBoZGBYSERANDAoIJCMiIB8eGxkYFhIREA0MCyUk
+ IyIgHx4aGRgWEhEQDQwmJSQjIiAfHhsZGBYSERAOKCYlJCMiIB8eGxkYFhIRDygoJiUkIyIgHx4bGRgW
+ EhEoKCgnJSQjIiAfHhsZGBYTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/UI/TrayNotifier.Designer.cs b/JenkinsTray/UI/TrayNotifier.Designer.cs
similarity index 97%
rename from HudsonTrayTracker/UI/TrayNotifier.Designer.cs
rename to JenkinsTray/UI/TrayNotifier.Designer.cs
index ce7665d..fe2f51b 100644
--- a/HudsonTrayTracker/UI/TrayNotifier.Designer.cs
+++ b/JenkinsTray/UI/TrayNotifier.Designer.cs
@@ -1,114 +1,114 @@
-namespace Hudson.TrayTracker.UI
-{
- partial class TrayNotifier
- {
- ///
- /// 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 Component Designer generated code
-
- ///
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- ///
- private void InitializeComponent()
- {
- this.components = new System.ComponentModel.Container();
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TrayNotifier));
- this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
- this.notifyContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.openMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.settingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.refreshMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.aboutMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.exitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.notifyContextMenuStrip.SuspendLayout();
- //
- // notifyIcon
- //
- this.notifyIcon.ContextMenuStrip = this.notifyContextMenuStrip;
- this.notifyIcon.Text = "Jenkins Tray";
- this.notifyIcon.Visible = true;
- this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseDoubleClick);
- //
- // notifyContextMenuStrip
- //
- this.notifyContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.openMenuItem,
- this.settingsMenuItem,
- this.refreshMenuItem,
- this.aboutMenuItem,
- this.exitMenuItem});
- this.notifyContextMenuStrip.Name = "notifyContextMenuStrip";
- this.notifyContextMenuStrip.Size = new System.Drawing.Size(117, 114);
- //
- // openMenuItem
- //
- this.openMenuItem.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
- this.openMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openMenuItem.Image")));
- this.openMenuItem.Name = "openMenuItem";
- this.openMenuItem.Size = new System.Drawing.Size(116, 22);
- this.openMenuItem.Text = "Open";
- this.openMenuItem.Click += new System.EventHandler(this.openMenuItem_Click);
- //
- // settingsMenuItem
- //
- this.settingsMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("settingsMenuItem.Image")));
- this.settingsMenuItem.Name = "settingsMenuItem";
- this.settingsMenuItem.Size = new System.Drawing.Size(116, 22);
- this.settingsMenuItem.Text = "Settings";
- this.settingsMenuItem.Click += new System.EventHandler(this.settingsMenuItem_Click);
- //
- // refreshMenuItem
- //
- this.refreshMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("refreshMenuItem.Image")));
- this.refreshMenuItem.Name = "refreshMenuItem";
- this.refreshMenuItem.Size = new System.Drawing.Size(116, 22);
- this.refreshMenuItem.Text = "Refresh";
- this.refreshMenuItem.Click += new System.EventHandler(this.refreshMenuItem_Click);
- //
- // aboutMenuItem
- //
- this.aboutMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("aboutMenuItem.Image")));
- this.aboutMenuItem.Name = "aboutMenuItem";
- this.aboutMenuItem.Size = new System.Drawing.Size(116, 22);
- this.aboutMenuItem.Text = "About";
- this.aboutMenuItem.Click += new System.EventHandler(this.aboutMenuItem_Click);
- //
- // exitMenuItem
- //
- this.exitMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("exitMenuItem.Image")));
- this.exitMenuItem.Name = "exitMenuItem";
- this.exitMenuItem.Size = new System.Drawing.Size(116, 22);
- this.exitMenuItem.Text = "Exit";
- this.exitMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
- this.notifyContextMenuStrip.ResumeLayout(false);
-
- }
-
- #endregion
-
- private System.Windows.Forms.NotifyIcon notifyIcon;
- private System.Windows.Forms.ContextMenuStrip notifyContextMenuStrip;
- private System.Windows.Forms.ToolStripMenuItem openMenuItem;
- private System.Windows.Forms.ToolStripMenuItem refreshMenuItem;
- private System.Windows.Forms.ToolStripMenuItem exitMenuItem;
- private System.Windows.Forms.ToolStripMenuItem settingsMenuItem;
- private System.Windows.Forms.ToolStripMenuItem aboutMenuItem;
- }
-}
+namespace Jenkins.Tray.UI
+{
+ partial class TrayNotifier
+ {
+ ///
+ /// 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 Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TrayNotifier));
+ this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components);
+ this.notifyContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.openMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.settingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.refreshMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.aboutMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.exitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.notifyContextMenuStrip.SuspendLayout();
+ //
+ // notifyIcon
+ //
+ this.notifyIcon.ContextMenuStrip = this.notifyContextMenuStrip;
+ this.notifyIcon.Text = "Jenkins Tray";
+ this.notifyIcon.Visible = true;
+ this.notifyIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseDoubleClick);
+ //
+ // notifyContextMenuStrip
+ //
+ this.notifyContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.openMenuItem,
+ this.settingsMenuItem,
+ this.refreshMenuItem,
+ this.aboutMenuItem,
+ this.exitMenuItem});
+ this.notifyContextMenuStrip.Name = "notifyContextMenuStrip";
+ this.notifyContextMenuStrip.Size = new System.Drawing.Size(117, 114);
+ //
+ // openMenuItem
+ //
+ this.openMenuItem.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
+ this.openMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("openMenuItem.Image")));
+ this.openMenuItem.Name = "openMenuItem";
+ this.openMenuItem.Size = new System.Drawing.Size(116, 22);
+ this.openMenuItem.Text = "Open";
+ this.openMenuItem.Click += new System.EventHandler(this.openMenuItem_Click);
+ //
+ // settingsMenuItem
+ //
+ this.settingsMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("settingsMenuItem.Image")));
+ this.settingsMenuItem.Name = "settingsMenuItem";
+ this.settingsMenuItem.Size = new System.Drawing.Size(116, 22);
+ this.settingsMenuItem.Text = "Settings";
+ this.settingsMenuItem.Click += new System.EventHandler(this.settingsMenuItem_Click);
+ //
+ // refreshMenuItem
+ //
+ this.refreshMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("refreshMenuItem.Image")));
+ this.refreshMenuItem.Name = "refreshMenuItem";
+ this.refreshMenuItem.Size = new System.Drawing.Size(116, 22);
+ this.refreshMenuItem.Text = "Refresh";
+ this.refreshMenuItem.Click += new System.EventHandler(this.refreshMenuItem_Click);
+ //
+ // aboutMenuItem
+ //
+ this.aboutMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("aboutMenuItem.Image")));
+ this.aboutMenuItem.Name = "aboutMenuItem";
+ this.aboutMenuItem.Size = new System.Drawing.Size(116, 22);
+ this.aboutMenuItem.Text = "About";
+ this.aboutMenuItem.Click += new System.EventHandler(this.aboutMenuItem_Click);
+ //
+ // exitMenuItem
+ //
+ this.exitMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("exitMenuItem.Image")));
+ this.exitMenuItem.Name = "exitMenuItem";
+ this.exitMenuItem.Size = new System.Drawing.Size(116, 22);
+ this.exitMenuItem.Text = "Exit";
+ this.exitMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
+ this.notifyContextMenuStrip.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.NotifyIcon notifyIcon;
+ private System.Windows.Forms.ContextMenuStrip notifyContextMenuStrip;
+ private System.Windows.Forms.ToolStripMenuItem openMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem refreshMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem exitMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem settingsMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem aboutMenuItem;
+ }
+}
diff --git a/HudsonTrayTracker/UI/TrayNotifier.cs b/JenkinsTray/UI/TrayNotifier.cs
similarity index 90%
rename from HudsonTrayTracker/UI/TrayNotifier.cs
rename to JenkinsTray/UI/TrayNotifier.cs
index c0cc720..8d00352 100644
--- a/HudsonTrayTracker/UI/TrayNotifier.cs
+++ b/JenkinsTray/UI/TrayNotifier.cs
@@ -1,520 +1,520 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Diagnostics;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-using Hudson.TrayTracker.BusinessComponents;
-using Common.Logging;
-using System.Reflection;
-using Hudson.TrayTracker.Entities;
-using Hudson.TrayTracker.Utils.Logging;
-using Iesi.Collections.Generic;
-using DevExpress.XtraEditors;
-using Hudson.TrayTracker.Utils;
-using Spring.Context.Support;
-using DevExpress.Utils;
-
-namespace Hudson.TrayTracker.UI
-{
- public partial class TrayNotifier : Component
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public static readonly int MAX_TOOLTIP_LENGTH = 127;
- public static readonly int BALLOON_TOOLTIP_TIMEOUT = 5000;
-
- public static TrayNotifier Instance
- {
- get
- {
- TrayNotifier instance = (TrayNotifier)ContextRegistry.GetContext().GetObject("TrayNotifier");
- return instance;
- }
- }
-
- BuildStatus lastBuildStatus;
- IDictionary lastProjectsBuildDetails = new Dictionary();
- IDictionary acknowledgedStatusByProject = new Dictionary();
- IDictionary iconsByKey;
-
- public ConfigurationService ConfigurationService { get; set; }
- public HudsonService HudsonService { get; set; }
- public ProjectsUpdateService UpdateService { get; set; }
- public NotificationService NotificationService { get; set; }
-
- public TrayNotifier()
- {
- InitializeComponent();
- LoadIcons();
- }
-
- public void Initialize()
- {
- ConfigurationService.ConfigurationUpdated += configurationService_ConfigurationUpdated;
- UpdateService.ProjectsUpdated += updateService_ProjectsUpdated;
-
- Disposed += delegate
- {
- ConfigurationService.ConfigurationUpdated -= configurationService_ConfigurationUpdated;
- UpdateService.ProjectsUpdated -= updateService_ProjectsUpdated;
- };
- }
-
- void configurationService_ConfigurationUpdated()
- {
- UpdateNotifier();
- }
-
-#if false
- private delegate void ProjectsUpdatedDelegate();
- private void updateService_ProjectsUpdated()
- {
- Delegate del = new ProjectsUpdatedDelegate(OnProjectsUpdated);
- MainForm.Instance.BeginInvoke(del);
- }
- private void OnProjectsUpdated()
- {
- UpdateGlobalStatus();
- }
-#else
- private void updateService_ProjectsUpdated()
- {
- UpdateNotifier();
- }
-#endif
-
- // FIXME: the framework doesn't fire correctly MouseClick and MouseDoubleClick,
- // so this is deactivated
- private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
- {
- if (e.Button != MouseButtons.Left)
- return;
-
- try
- {
- // order the projects by build status
- var projectsByStatus = new Dictionary>();
- foreach (KeyValuePair pair in lastProjectsBuildDetails)
- {
- BuildStatusEnum status = BuildStatusEnum.Unknown;
- if (pair.Value != null)
- status = BuildStatusUtils.DegradeStatus(pair.Value.Status).Value;
- SortedSet projects = new SortedSet();
- if (projectsByStatus.TryGetValue(status, out projects) == false)
- {
- projects = new SortedSet();
- projectsByStatus.Add(status, projects);
- }
- projects.Add(pair.Key);
- }
-
- StringBuilder text = new StringBuilder();
- string prefix = null;
- foreach (KeyValuePair> pair in projectsByStatus)
- {
- // don't display successful projects unless this is the only status
- if (pair.Key == BuildStatusEnum.Successful || projectsByStatus.Count == 1)
- continue;
-
- if (prefix != null)
- text.Append(prefix);
- string statusText = HudsonTrayTrackerResources.ResourceManager
- .GetString("BuildStatus_" + pair.Key.ToString());
- text.Append(statusText);
- foreach (Project project in pair.Value)
- {
- text.Append("\n - ").Append(project.Name);
-
- BuildDetails lastFailedBuild = project.LastFailedBuild;
- if (lastFailedBuild != null && lastFailedBuild.Users != null && lastFailedBuild.Users.Count > 0)
- {
- string users = StringUtils.Join(lastFailedBuild.Users, ", ");
- text.Append(" (").Append(users).Append(")");
- }
- }
- prefix = "\n";
- }
-
- string textToDisplay = text.ToString();
- if (string.IsNullOrEmpty(textToDisplay))
- textToDisplay = HudsonTrayTrackerResources.DisplayBuildStatus_NoProjects;
- notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, HudsonTrayTrackerResources.DisplayBuildStatus_Caption,
- textToDisplay, ToolTipIcon.Info);
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- }
- }
-
- private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
- {
- if (e.Button != MouseButtons.Left)
- return;
-
- MainForm.ShowOrFocus();
- }
-
- private void openMenuItem_Click(object sender, EventArgs e)
- {
- MainForm.ShowOrFocus();
- }
-
- private void refreshMenuItem_Click(object sender, EventArgs e)
- {
- UpdateService.UpdateProjects();
- }
-
- private void settingsMenuItem_Click(object sender, EventArgs e)
- {
- MainForm.Instance.Show();
- SettingsForm.ShowDialogOrFocus();
- }
-
- private void exitToolStripMenuItem_Click(object sender, EventArgs e)
- {
- MainForm.Instance.Exit();
- }
-
- private void aboutMenuItem_Click(object sender, EventArgs e)
- {
- MainForm.Instance.Show();
- AboutForm.ShowDialogOrFocus();
- }
-
- public void UpdateNotifier()
- {
- try
- {
- DoUpdateNotifier();
- }
- catch (Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- UpdateIcon(BuildStatus.UNKNOWN_BUILD_STATUS);
- }
- }
-
- public void UpdateNotifierStartup()
- {
- UpdateIcon(BuildStatus.UNKNOWN_BUILD_STATUS);
- notifyIcon.Text = Assembly.GetExecutingAssembly().GetName().Name + " " +
- FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion;
- }
-
- private void DoUpdateNotifier()
- {
- BuildStatusEnum? worstBuildStatus = null;
- bool buildInProgress = false;
- bool buildIsStuck = false;
- var errorProjects = new HashedSet();
- var regressingProjects = new HashedSet();
- var progressingAndErrorProjects = new HashedSet();
- var interestingProjects = new HashedSet();
-
- foreach (Server server in ConfigurationService.Servers)
- {
- foreach (Project project in server.Projects)
- {
- BuildStatus status = GetProjectStatus(project);
- if (worstBuildStatus == null || status.Value > worstBuildStatus)
- worstBuildStatus = status.Value;
- if (status.Value >= BuildStatusEnum.Failed)
- errorProjects.Add(project);
- if (status.Value > BuildStatusEnum.Successful)
- progressingAndErrorProjects.Add(project);
- if (status.IsInProgress)
- {
- buildInProgress = true;
- progressingAndErrorProjects.Add(project);
- }
- if (status.IsStuck)
- buildIsStuck = true;
- if (IsRegressing(project))
- regressingProjects.Add(project);
- lastProjectsBuildDetails[project] = project.AllBuildDetails;
-
- if (project.Activity.HasBuildActivity)
- {
- interestingProjects.Add(project);
- }
- }
- }
-
- if (worstBuildStatus == null)
- worstBuildStatus = BuildStatusEnum.Unknown;
-
-#if false // tests
- lastBuildStatus++;
- if (lastBuildStatus > BuildStatus.Failed_BuildInProgress)
- lastBuildStatus = 0;
- worstBuildStatus = lastBuildStatus;
- Console.WriteLine("tray:"+lastBuildStatus);
-#endif
-
- BuildStatus buildStatus = new BuildStatus(worstBuildStatus.Value, buildInProgress, buildIsStuck);
-
- UpdateIcon(buildStatus);
- UpdateBalloonTip(errorProjects, regressingProjects);
- UpdateTrayTooltip(progressingAndErrorProjects);
- ShowBallowTip(interestingProjects);
-
- lastBuildStatus = buildStatus;
- }
-
- private BuildStatus GetProjectStatus(Project project)
- {
- BuildStatus status = project.Status;
- BuildStatus acknowledgedStatus = GetAcknowledgedStatus(project);
- if (project.IsAcknowledged || (acknowledgedStatus != null))
- {
- if (project.IsAcknowledged || (status.Value == acknowledgedStatus.Value))
- return new BuildStatus(BuildStatusEnum.Successful, false, false);
- else if (status.Value != BuildStatusEnum.Unknown && BuildStatusUtils.IsWorse(acknowledgedStatus, status))
- ClearAcknowledgedStatus(project);
- }
- return status;
- }
-
- private bool IsRegressing(Project project)
- {
- AllBuildDetails lastBuildDetails;
- if (lastProjectsBuildDetails.TryGetValue(project, out lastBuildDetails) == false
- || lastBuildDetails == null)
- return false;
- AllBuildDetails newBuildDetails = project.AllBuildDetails;
- if (newBuildDetails == null)
- return false;
-
- // moving from unknown/aborted to successful should not be considered as a regression
- if (newBuildDetails.Status.Value <= BuildStatusEnum.Successful)
- return false;
-
- bool res = BuildStatusUtils.IsWorse(newBuildDetails.Status, lastBuildDetails.Status);
- return res;
- }
-
- private void UpdateTrayTooltip(ICollection progressingAndErrorProjects)
- {
- StringBuilder tooltipText = new StringBuilder();
- string prefix = null;
-
- if (progressingAndErrorProjects != null && progressingAndErrorProjects.Count > 0)
- {
- foreach (Project project in progressingAndErrorProjects)
- {
- if (project.IsAcknowledged)
- continue;
- lock (acknowledgedStatusByProject)
- {
- if (acknowledgedStatusByProject.ContainsKey(project))
- continue;
- }
- if (prefix != null)
- tooltipText.Append(prefix);
- BuildStatus status = GetProjectStatus(project);
- BuildDetails buildDetails = project.LastBuild;
- if ((status.IsInProgress) && (status.Value == BuildStatusEnum.Failed))
- {
- tooltipText.Append(string.Format(HudsonTrayTrackerResources.Tooltip_Failed_And_InProgress, project.Name));
- }
- else if (status.IsInProgress)
- {
- tooltipText.Append(string.Format(HudsonTrayTrackerResources.Tooltip_InProgress, project.Name));
- }
- else
- {
- tooltipText.Append(string.Format(HudsonTrayTrackerResources.Tooltip_BuildStatus, project.Name, status.Value.ToString()));
- }
- prefix = "\n";
- if (tooltipText.ToString().Length > MAX_TOOLTIP_LENGTH)
- break;
- }
- }
- else
- {
- tooltipText.Append(HudsonTrayTrackerResources.Tooltip_AllGood);
- }
- prefix = tooltipText.ToString();
- SetNotifyIconText(notifyIcon, prefix);
- }
-
- public void ShowBallowTip(ICollection interestingProjects)
- {
- foreach (Project project in interestingProjects)
- {
- try
- {
- CaptionAndMessage info = project.Activity.ActivityDetails;
-
- // Need a queue so no events are skipped
- notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, info.Caption, info.Message, info.Icon);
- }
- catch(Exception ex)
- {
- LoggingHelper.LogError(logger, ex);
- }
- }
- }
-
- private void UpdateBalloonTip(ICollection errorProjects, ICollection regressingProjects)
- {
- if (lastBuildStatus != null && lastBuildStatus.Value < BuildStatusEnum.Failed
- && errorProjects != null && errorProjects.Count > 0)
- {
- StringBuilder errorProjectsText = new StringBuilder();
- string prefix = null;
- foreach (Project project in errorProjects)
- {
- if (prefix != null)
- errorProjectsText.Append(prefix);
- BuildDetails buildDetails = project.LastFailedBuild;
- if (buildDetails == null)
- logger.Warn("No details for the last failed build of project in error: " + project.Url);
- ISet users = buildDetails != null ? buildDetails.Users : null;
- FormatProjectDetails(project.Name, users, errorProjectsText);
- prefix = "\n";
- }
-
- notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, HudsonTrayTrackerResources.BuildFailed_Caption,
- errorProjectsText.ToString(), ToolTipIcon.Error);
- }
- else if (regressingProjects != null && regressingProjects.Count > 0)
- {
- StringBuilder regressingProjectsText = new StringBuilder();
- string prefix = null;
- foreach (Project project in regressingProjects)
- {
- if (prefix != null)
- regressingProjectsText.Append(prefix);
- BuildDetails buildDetails = project.AllBuildDetails.LastCompletedBuild;
- if (buildDetails == null)
- logger.Warn("No details for the last failed build of project in error: " + project.Url);
- ISet users = buildDetails != null ? buildDetails.Users : null;
- FormatProjectDetails(project.Name, users, regressingProjectsText);
- prefix = "\n";
- }
-
- notifyIcon.ShowBalloonTip(10000, HudsonTrayTrackerResources.BuildRegressions_Caption,
- regressingProjectsText.ToString(), ToolTipIcon.Warning);
- }
- }
-
- private void FormatProjectDetails(string projectName, ISet users, StringBuilder builder)
- {
- builder.Append(projectName);
-
- if (users != null && users.Count > 0)
- {
- string userString = StringUtils.Join(users, ", ");
- builder.Append(" (").Append(userString).Append(")");
- }
- }
-
- private void UpdateIcon(BuildStatus buildStatus)
- {
- Icon icon = iconsByKey[buildStatus.Key];
- notifyIcon.Icon = icon;
-
- // update the main window's icon
- if (ConfigurationService.GeneralSettings.UpdateMainWindowIcon)
- MainForm.Instance.UpdateIcon(icon);
- }
-
- private void LoadIcons()
- {
- iconsByKey = new Dictionary();
-
- foreach (BuildStatusEnum statusValue in Enum.GetValues(typeof(BuildStatusEnum)))
- {
- LoadIcon(statusValue, false, false);
- LoadIcon(statusValue, false, true);
- LoadIcon(statusValue, true, false);
- LoadIcon(statusValue, true, true);
- }
- }
-
- private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
- {
- BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);
- if (iconsByKey.ContainsKey(status.Key))
- return;
-
- try
- {
- string resourceName = string.Format("Hudson.TrayTracker.Resources.TrayIcons.{0}.ico", status.Key);
- Icon icon = ResourceImageHelper.CreateIconFromResources(resourceName, GetType().Assembly);
- iconsByKey.Add(status.Key, icon);
- }
- catch (Exception ex)
- {
- XtraMessageBox.Show(HudsonTrayTrackerResources.FailedLoadingIcons_Text,
- HudsonTrayTrackerResources.FailedLoadingIcons_Caption,
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- LoggingHelper.LogError(logger, ex);
- throw new Exception("Failed loading icon: " + statusValue, ex);
- }
- }
-
- private void notifyIcon_MouseUp(object sender, MouseEventArgs e)
- {
- Console.WriteLine(e.Clicks);
- }
-
- public void AcknowledgedProject()
- {
- UpdateNotifier();
- }
-
- public void AcknowledgeStatus(Project project, BuildStatus currentStatus)
- {
- lock (acknowledgedStatusByProject)
- {
- acknowledgedStatusByProject[project] = currentStatus;
- }
- UpdateNotifier();
- }
-
- public void ClearAcknowledgedStatus(Project project)
- {
- lock (acknowledgedStatusByProject)
- {
- acknowledgedStatusByProject.Remove(project);
- }
- UpdateNotifier();
- }
-
- private BuildStatus GetAcknowledgedStatus(Project project)
- {
- BuildStatus status;
- lock (acknowledgedStatusByProject)
- {
- if (acknowledgedStatusByProject.TryGetValue(project, out status) == false)
- return null;
- }
- return status;
- }
-
- public bool IsStatusAcknowledged(Project project)
- {
- lock (acknowledgedStatusByProject)
- {
- return acknowledgedStatusByProject.ContainsKey(project);
- }
- }
-
- public static void SetNotifyIconText(NotifyIcon notifyIcon, string text)
- {
- if (text.Length > MAX_TOOLTIP_LENGTH)
- {
- text = text.Remove(MAX_TOOLTIP_LENGTH - 4) + " ...";
- }
- Type t = typeof(NotifyIcon);
- BindingFlags hidden = BindingFlags.NonPublic | BindingFlags.Instance;
- t.GetField("text", hidden).SetValue(notifyIcon, text);
- if ((bool)t.GetField("added", hidden).GetValue(notifyIcon))
- t.GetMethod("UpdateIcon", hidden).Invoke(notifyIcon, new object[] { true });
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using Jenkins.Tray.BusinessComponents;
+using Common.Logging;
+using System.Reflection;
+using Jenkins.Tray.Entities;
+using Jenkins.Tray.Utils.Logging;
+using Iesi.Collections.Generic;
+using DevExpress.XtraEditors;
+using Jenkins.Tray.Utils;
+using Spring.Context.Support;
+using DevExpress.Utils;
+
+namespace Jenkins.Tray.UI
+{
+ public partial class TrayNotifier : Component
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+ public static readonly int MAX_TOOLTIP_LENGTH = 127;
+ public static readonly int BALLOON_TOOLTIP_TIMEOUT = 5000;
+
+ public static TrayNotifier Instance
+ {
+ get
+ {
+ TrayNotifier instance = (TrayNotifier)ContextRegistry.GetContext().GetObject("TrayNotifier");
+ return instance;
+ }
+ }
+
+ BuildStatus lastBuildStatus;
+ IDictionary lastProjectsBuildDetails = new Dictionary();
+ IDictionary acknowledgedStatusByProject = new Dictionary();
+ IDictionary iconsByKey;
+
+ public ConfigurationService ConfigurationService { get; set; }
+ public JenkinsService JenkinsService { get; set; }
+ public ProjectsUpdateService UpdateService { get; set; }
+ public NotificationService NotificationService { get; set; }
+
+ public TrayNotifier()
+ {
+ InitializeComponent();
+ LoadIcons();
+ }
+
+ public void Initialize()
+ {
+ ConfigurationService.ConfigurationUpdated += configurationService_ConfigurationUpdated;
+ UpdateService.ProjectsUpdated += updateService_ProjectsUpdated;
+
+ Disposed += delegate
+ {
+ ConfigurationService.ConfigurationUpdated -= configurationService_ConfigurationUpdated;
+ UpdateService.ProjectsUpdated -= updateService_ProjectsUpdated;
+ };
+ }
+
+ void configurationService_ConfigurationUpdated()
+ {
+ UpdateNotifier();
+ }
+
+#if false
+ private delegate void ProjectsUpdatedDelegate();
+ private void updateService_ProjectsUpdated()
+ {
+ Delegate del = new ProjectsUpdatedDelegate(OnProjectsUpdated);
+ MainForm.Instance.BeginInvoke(del);
+ }
+ private void OnProjectsUpdated()
+ {
+ UpdateGlobalStatus();
+ }
+#else
+ private void updateService_ProjectsUpdated()
+ {
+ UpdateNotifier();
+ }
+#endif
+
+ // FIXME: the framework doesn't fire correctly MouseClick and MouseDoubleClick,
+ // so this is deactivated
+ private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
+ {
+ if (e.Button != MouseButtons.Left)
+ return;
+
+ try
+ {
+ // order the projects by build status
+ var projectsByStatus = new Dictionary>();
+ foreach (KeyValuePair pair in lastProjectsBuildDetails)
+ {
+ BuildStatusEnum status = BuildStatusEnum.Unknown;
+ if (pair.Value != null)
+ status = BuildStatusUtils.DegradeStatus(pair.Value.Status).Value;
+ SortedSet projects = new SortedSet();
+ if (projectsByStatus.TryGetValue(status, out projects) == false)
+ {
+ projects = new SortedSet();
+ projectsByStatus.Add(status, projects);
+ }
+ projects.Add(pair.Key);
+ }
+
+ StringBuilder text = new StringBuilder();
+ string prefix = null;
+ foreach (KeyValuePair> pair in projectsByStatus)
+ {
+ // don't display successful projects unless this is the only status
+ if (pair.Key == BuildStatusEnum.Successful || projectsByStatus.Count == 1)
+ continue;
+
+ if (prefix != null)
+ text.Append(prefix);
+ string statusText = JenkinsTrayResources.ResourceManager
+ .GetString("BuildStatus_" + pair.Key.ToString());
+ text.Append(statusText);
+ foreach (Project project in pair.Value)
+ {
+ text.Append("\n - ").Append(project.Name);
+
+ BuildDetails lastFailedBuild = project.LastFailedBuild;
+ if (lastFailedBuild != null && lastFailedBuild.Users != null && lastFailedBuild.Users.Count > 0)
+ {
+ string users = StringUtils.Join(lastFailedBuild.Users, ", ");
+ text.Append(" (").Append(users).Append(")");
+ }
+ }
+ prefix = "\n";
+ }
+
+ string textToDisplay = text.ToString();
+ if (string.IsNullOrEmpty(textToDisplay))
+ textToDisplay = JenkinsTrayResources.DisplayBuildStatus_NoProjects;
+ notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, JenkinsTrayResources.DisplayBuildStatus_Caption,
+ textToDisplay, ToolTipIcon.Info);
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ }
+ }
+
+ private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
+ {
+ if (e.Button != MouseButtons.Left)
+ return;
+
+ MainForm.ShowOrFocus();
+ }
+
+ private void openMenuItem_Click(object sender, EventArgs e)
+ {
+ MainForm.ShowOrFocus();
+ }
+
+ private void refreshMenuItem_Click(object sender, EventArgs e)
+ {
+ UpdateService.UpdateProjects();
+ }
+
+ private void settingsMenuItem_Click(object sender, EventArgs e)
+ {
+ MainForm.Instance.Show();
+ SettingsForm.ShowDialogOrFocus();
+ }
+
+ private void exitToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ MainForm.Instance.Exit();
+ }
+
+ private void aboutMenuItem_Click(object sender, EventArgs e)
+ {
+ MainForm.Instance.Show();
+ AboutForm.ShowDialogOrFocus();
+ }
+
+ public void UpdateNotifier()
+ {
+ try
+ {
+ DoUpdateNotifier();
+ }
+ catch (Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ UpdateIcon(BuildStatus.UNKNOWN_BUILD_STATUS);
+ }
+ }
+
+ public void UpdateNotifierStartup()
+ {
+ UpdateIcon(BuildStatus.UNKNOWN_BUILD_STATUS);
+ notifyIcon.Text = Assembly.GetExecutingAssembly().GetName().Name + " " +
+ FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion;
+ }
+
+ private void DoUpdateNotifier()
+ {
+ BuildStatusEnum? worstBuildStatus = null;
+ bool buildInProgress = false;
+ bool buildIsStuck = false;
+ var errorProjects = new HashedSet();
+ var regressingProjects = new HashedSet();
+ var progressingAndErrorProjects = new HashedSet();
+ var interestingProjects = new HashedSet();
+
+ foreach (Server server in ConfigurationService.Servers)
+ {
+ foreach (Project project in server.Projects)
+ {
+ BuildStatus status = GetProjectStatus(project);
+ if (worstBuildStatus == null || status.Value > worstBuildStatus)
+ worstBuildStatus = status.Value;
+ if (status.Value >= BuildStatusEnum.Failed)
+ errorProjects.Add(project);
+ if (status.Value > BuildStatusEnum.Successful)
+ progressingAndErrorProjects.Add(project);
+ if (status.IsInProgress)
+ {
+ buildInProgress = true;
+ progressingAndErrorProjects.Add(project);
+ }
+ if (status.IsStuck)
+ buildIsStuck = true;
+ if (IsRegressing(project))
+ regressingProjects.Add(project);
+ lastProjectsBuildDetails[project] = project.AllBuildDetails;
+
+ if (project.Activity.HasBuildActivity)
+ {
+ interestingProjects.Add(project);
+ }
+ }
+ }
+
+ if (worstBuildStatus == null)
+ worstBuildStatus = BuildStatusEnum.Unknown;
+
+#if false // tests
+ lastBuildStatus++;
+ if (lastBuildStatus > BuildStatus.Failed_BuildInProgress)
+ lastBuildStatus = 0;
+ worstBuildStatus = lastBuildStatus;
+ Console.WriteLine("tray:"+lastBuildStatus);
+#endif
+
+ BuildStatus buildStatus = new BuildStatus(worstBuildStatus.Value, buildInProgress, buildIsStuck);
+
+ UpdateIcon(buildStatus);
+ UpdateBalloonTip(errorProjects, regressingProjects);
+ UpdateTrayTooltip(progressingAndErrorProjects);
+ ShowBallowTip(interestingProjects);
+
+ lastBuildStatus = buildStatus;
+ }
+
+ private BuildStatus GetProjectStatus(Project project)
+ {
+ BuildStatus status = project.Status;
+ BuildStatus acknowledgedStatus = GetAcknowledgedStatus(project);
+ if (project.IsAcknowledged || (acknowledgedStatus != null))
+ {
+ if (project.IsAcknowledged || (status.Value == acknowledgedStatus.Value))
+ return new BuildStatus(BuildStatusEnum.Successful, false, false);
+ else if (status.Value != BuildStatusEnum.Unknown && BuildStatusUtils.IsWorse(acknowledgedStatus, status))
+ ClearAcknowledgedStatus(project);
+ }
+ return status;
+ }
+
+ private bool IsRegressing(Project project)
+ {
+ AllBuildDetails lastBuildDetails;
+ if (lastProjectsBuildDetails.TryGetValue(project, out lastBuildDetails) == false
+ || lastBuildDetails == null)
+ return false;
+ AllBuildDetails newBuildDetails = project.AllBuildDetails;
+ if (newBuildDetails == null)
+ return false;
+
+ // moving from unknown/aborted to successful should not be considered as a regression
+ if (newBuildDetails.Status.Value <= BuildStatusEnum.Successful)
+ return false;
+
+ bool res = BuildStatusUtils.IsWorse(newBuildDetails.Status, lastBuildDetails.Status);
+ return res;
+ }
+
+ private void UpdateTrayTooltip(ICollection progressingAndErrorProjects)
+ {
+ StringBuilder tooltipText = new StringBuilder();
+ string prefix = null;
+
+ if (progressingAndErrorProjects != null && progressingAndErrorProjects.Count > 0)
+ {
+ foreach (Project project in progressingAndErrorProjects)
+ {
+ if (project.IsAcknowledged)
+ continue;
+ lock (acknowledgedStatusByProject)
+ {
+ if (acknowledgedStatusByProject.ContainsKey(project))
+ continue;
+ }
+ if (prefix != null)
+ tooltipText.Append(prefix);
+ BuildStatus status = GetProjectStatus(project);
+ BuildDetails buildDetails = project.LastBuild;
+ if ((status.IsInProgress) && (status.Value == BuildStatusEnum.Failed))
+ {
+ tooltipText.Append(string.Format(JenkinsTrayResources.Tooltip_Failed_And_InProgress, project.Name));
+ }
+ else if (status.IsInProgress)
+ {
+ tooltipText.Append(string.Format(JenkinsTrayResources.Tooltip_InProgress, project.Name));
+ }
+ else
+ {
+ tooltipText.Append(string.Format(JenkinsTrayResources.Tooltip_BuildStatus, project.Name, status.Value.ToString()));
+ }
+ prefix = "\n";
+ if (tooltipText.ToString().Length > MAX_TOOLTIP_LENGTH)
+ break;
+ }
+ }
+ else
+ {
+ tooltipText.Append(JenkinsTrayResources.Tooltip_AllGood);
+ }
+ prefix = tooltipText.ToString();
+ SetNotifyIconText(notifyIcon, prefix);
+ }
+
+ public void ShowBallowTip(ICollection interestingProjects)
+ {
+ foreach (Project project in interestingProjects)
+ {
+ try
+ {
+ CaptionAndMessage info = project.Activity.ActivityDetails;
+
+ // Need a queue so no events are skipped
+ notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, info.Caption, info.Message, info.Icon);
+ }
+ catch(Exception ex)
+ {
+ LoggingHelper.LogError(logger, ex);
+ }
+ }
+ }
+
+ private void UpdateBalloonTip(ICollection errorProjects, ICollection regressingProjects)
+ {
+ if (lastBuildStatus != null && lastBuildStatus.Value < BuildStatusEnum.Failed
+ && errorProjects != null && errorProjects.Count > 0)
+ {
+ StringBuilder errorProjectsText = new StringBuilder();
+ string prefix = null;
+ foreach (Project project in errorProjects)
+ {
+ if (prefix != null)
+ errorProjectsText.Append(prefix);
+ BuildDetails buildDetails = project.LastFailedBuild;
+ if (buildDetails == null)
+ logger.Warn("No details for the last failed build of project in error: " + project.Url);
+ ISet users = buildDetails != null ? buildDetails.Users : null;
+ FormatProjectDetails(project.Name, users, errorProjectsText);
+ prefix = "\n";
+ }
+
+ notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, JenkinsTrayResources.BuildFailed_Caption,
+ errorProjectsText.ToString(), ToolTipIcon.Error);
+ }
+ else if (regressingProjects != null && regressingProjects.Count > 0)
+ {
+ StringBuilder regressingProjectsText = new StringBuilder();
+ string prefix = null;
+ foreach (Project project in regressingProjects)
+ {
+ if (prefix != null)
+ regressingProjectsText.Append(prefix);
+ BuildDetails buildDetails = project.AllBuildDetails.LastCompletedBuild;
+ if (buildDetails == null)
+ logger.Warn("No details for the last failed build of project in error: " + project.Url);
+ ISet users = buildDetails != null ? buildDetails.Users : null;
+ FormatProjectDetails(project.Name, users, regressingProjectsText);
+ prefix = "\n";
+ }
+
+ notifyIcon.ShowBalloonTip(10000, JenkinsTrayResources.BuildRegressions_Caption,
+ regressingProjectsText.ToString(), ToolTipIcon.Warning);
+ }
+ }
+
+ private void FormatProjectDetails(string projectName, ISet users, StringBuilder builder)
+ {
+ builder.Append(projectName);
+
+ if (users != null && users.Count > 0)
+ {
+ string userString = StringUtils.Join(users, ", ");
+ builder.Append(" (").Append(userString).Append(")");
+ }
+ }
+
+ private void UpdateIcon(BuildStatus buildStatus)
+ {
+ Icon icon = iconsByKey[buildStatus.Key];
+ notifyIcon.Icon = icon;
+
+ // update the main window's icon
+ if (ConfigurationService.GeneralSettings.UpdateMainWindowIcon)
+ MainForm.Instance.UpdateIcon(icon);
+ }
+
+ private void LoadIcons()
+ {
+ iconsByKey = new Dictionary();
+
+ foreach (BuildStatusEnum statusValue in Enum.GetValues(typeof(BuildStatusEnum)))
+ {
+ LoadIcon(statusValue, false, false);
+ LoadIcon(statusValue, false, true);
+ LoadIcon(statusValue, true, false);
+ LoadIcon(statusValue, true, true);
+ }
+ }
+
+ private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
+ {
+ BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);
+ if (iconsByKey.ContainsKey(status.Key))
+ return;
+
+ try
+ {
+ string resourceName = string.Format("Jenkins.Tray.Resources.TrayIcons.{0}.ico", status.Key);
+ Icon icon = ResourceImageHelper.CreateIconFromResources(resourceName, GetType().Assembly);
+ iconsByKey.Add(status.Key, icon);
+ }
+ catch (Exception ex)
+ {
+ XtraMessageBox.Show(JenkinsTrayResources.FailedLoadingIcons_Text,
+ JenkinsTrayResources.FailedLoadingIcons_Caption,
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ LoggingHelper.LogError(logger, ex);
+ throw new Exception("Failed loading icon: " + statusValue, ex);
+ }
+ }
+
+ private void notifyIcon_MouseUp(object sender, MouseEventArgs e)
+ {
+ Console.WriteLine(e.Clicks);
+ }
+
+ public void AcknowledgedProject()
+ {
+ UpdateNotifier();
+ }
+
+ public void AcknowledgeStatus(Project project, BuildStatus currentStatus)
+ {
+ lock (acknowledgedStatusByProject)
+ {
+ acknowledgedStatusByProject[project] = currentStatus;
+ }
+ UpdateNotifier();
+ }
+
+ public void ClearAcknowledgedStatus(Project project)
+ {
+ lock (acknowledgedStatusByProject)
+ {
+ acknowledgedStatusByProject.Remove(project);
+ }
+ UpdateNotifier();
+ }
+
+ private BuildStatus GetAcknowledgedStatus(Project project)
+ {
+ BuildStatus status;
+ lock (acknowledgedStatusByProject)
+ {
+ if (acknowledgedStatusByProject.TryGetValue(project, out status) == false)
+ return null;
+ }
+ return status;
+ }
+
+ public bool IsStatusAcknowledged(Project project)
+ {
+ lock (acknowledgedStatusByProject)
+ {
+ return acknowledgedStatusByProject.ContainsKey(project);
+ }
+ }
+
+ public static void SetNotifyIconText(NotifyIcon notifyIcon, string text)
+ {
+ if (text.Length > MAX_TOOLTIP_LENGTH)
+ {
+ text = text.Remove(MAX_TOOLTIP_LENGTH - 4) + " ...";
+ }
+ Type t = typeof(NotifyIcon);
+ BindingFlags hidden = BindingFlags.NonPublic | BindingFlags.Instance;
+ t.GetField("text", hidden).SetValue(notifyIcon, text);
+ if ((bool)t.GetField("added", hidden).GetValue(notifyIcon))
+ t.GetMethod("UpdateIcon", hidden).Invoke(notifyIcon, new object[] { true });
+ }
+ }
+}
diff --git a/HudsonTrayTracker/UI/TrayNotifier.resx b/JenkinsTray/UI/TrayNotifier.resx
similarity index 98%
rename from HudsonTrayTracker/UI/TrayNotifier.resx
rename to JenkinsTray/UI/TrayNotifier.resx
index c6f6475..f90387b 100644
--- a/HudsonTrayTracker/UI/TrayNotifier.resx
+++ b/JenkinsTray/UI/TrayNotifier.resx
@@ -1,205 +1,205 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- 17, 56
-
-
- 17, 17
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBwAA
- CwcBtnMLwAAAAOxJREFUOE9j+P//PwMyFijg+w/EvujiuPgomkGKoAYQbQhWAwqv24EMIMoQnAYQawhW
- A/Ku2v7Pumj1P/WsOUGXYDUg7ZzF/8STpv+jjxr+D9mvj9cQrAbEHDP+H3pA/7//bu3/7lvV/zusV8Zp
- CFYDAvfo/vfcpvnfaYPqf+uVCv9NFsv815krCTYEPTqxGuCyUe2/zWrF/6ZL5f7rzZf8rz5LjDQXmC+X
- /6+/QPq/5izx/0pThUkPA+054v9Vp4v8l5skSF4syE8W+i/Vz09QMyg8sIaBeDcvUZpxGkBsMsZnAPm5
- kdhsDFMHAH2OluuICWfKAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDAAA
- CwwBP0AiyAAAAeJJREFUOE+lk9tL02Ech5Xuu+iiv6GbSIJdWPfCLhSExK5qKAshCQ/ZATwU1iqcGGqw
- hcdFa7OJU5vbUFGn5ZimZWUHhWS632xBXkg5trmnva+YyaYpvfC5et/P8z2+6UDafx0BOIw81UXq7uIL
- CA3d1GYc2Fxv+36ku70mSxi/NpTw5toWJC1xQV1XSOqBJcRt0zeut6xyuTmIRq+QpwtwsV6hxuhj0F6F
- zeXj7d1yaX6oUm0BTOPQOhLHMBijcSBKnT3CnedhKs1hbpnXabPP4baV82NJz+eJYnS6KmmuzTyVIwF6
- Ed0aojoRvdS4SmGDwvl7AbSNCo+sr3GatdL8caSAvsdqjh87yqW8ExlyAM8GponFY0laD0fxznzA0ZGf
- ZK4oOHl2u/F/AKO+BbYlgC/cY/S3ZO9r3jcDQ+sTJp338c9c3Um7rJKp+UD632PflcGw9wvuiU9sRKII
- QDy+ibUpV9Zs6XWRrbmR8O7em6QeCPPazyhXSivIPZcv1hSHZ47OvinO5BQlAzrtr2QDRWTH6Dw9Q+9Q
- 1iI87Z+lvWdayrvwC0PXZGqA0TIsAStKkEV/kPeLiqiTsdkVXL5lel8uY/P49wY0mZycztKgUhf+UylL
- OMxHSvX2wJ9pr0C/Aa3dwrU8i4oXAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBwAA
- CwcBtnMLwAAAAg9JREFUOE9j/P//PwNFAGQAJZig5uk7//wH4f5N3/43L3/7v2zW4/9Z/beAdkIsRjGg
- buWf4PIFH1f7Nl2VgikAae7Y8P9/2aJf/xP7nv33KDs3FdnFcAMqFv/WaVn991Rq/5P/Vqlb7sAU9az/
- 8r9g3rf/MX0f/7tV3P5vm3v8iHnqIU0MF1Qu/TahYvG3/875p//rBC14B1NQu/DF/7DWe/+dS29+ssi+
- 8N84ad9/vejNPRgG1Cz9fCFn+vv/psn7/+tGrp8LU5A76c5/h4LTOS6ll6fZ5p37rxez7b9u2NLzGAY0
- Lv/0OX3q2//GCXv/68ftsAIpyMu7zZrUcQUcYGGtd6yDm+6BDdAKmP0Zw4D6pZ8+p019998sdT/cAOTA
- ypn13iZtypv/hnG7sBtQsfDjhdQpb//b557+b515dCZ62qhd/mdexrQP//VjdvzXCV1yAcMF2VNf9sX3
- Pv3vVXXjf2D9zbdpE1/MyZ/5zqZ8wTebhtV/59ev+P0+uPn+f93wVf91wlZMxDAgrOm2dmD99aMeZVf+
- +9be+R/X+/x/5rR3//NmfvyfM+vTf5BmYOiDbD+tHbZWB2tCci0+72uXc+yocfzu/7oxW8EYFGh6MVuA
- Ib8cqHnRab3QZcFYExJM0DB+r6ZuxJo+neAFF7X8pnwBYe3AuZd0w5ZM0gpdqYseNgTzAqGMRrEBAHaR
- kJU9BcdNAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmBJREFUOE+dk01M
- E1EQx/fk0ZNevXjBg3qrFz2QYDz4dTKQgBygTVRiavw2JiaaaIUgmLRIxBiNSjGY0kixbUgaPmvZVltK
- 7LZgoabfpaUrtLVFqH/nbQ3SGoxxksm+mTfzm5n33nJchfhDixAz37BZsoU1TDh8qIwts6PJZeSyKxt5
- vNOLmuom6N9ZN3w/aOVZiP8JCsZSEJeWyqqeqO2gwNOoOtxT5meGzuIuh0QiYSnoO2lmrRTP1tqpVaRZ
- WZJ4DhCZ85eouvUlyNSnAMRsHqu0kaLR2ZefjeKO2oCe3mG8HBhHgXyhLOBPA0mCrJM9ZA/i4q1ucBbb
- NBK5IpIUFaUjEIvAXFTErkPtVEGB3QfbwZqY/woISWCWIBGC8AsrJYBp3IUvlMUqLIhUhQKZ9I8JBLgG
- WZ1W6sBDRzSdAGZSBKFCo94UGs7dAzcw4oInVkCAAAJtMs1Qgkb/kQCXIavtxTLZrjhgj9B3EXBTJ3p7
- mAD3wT0ftML2OQ4vVWZ0Zwxg99E16CKAEgfqXoE1xZP/PQF4AlhD62hp0+H81YfgXpgdEmDMl4abRnDR
- jEFKaLo9RIAb2LavE5ORPBxEnSCIyZvDE8scduyt/32VfUZegphp0A/Unkko4OSFUTR3JdDwYB43tQEp
- +a2QhcboxZ4jl6BQtpa/had9w2D62DiD1/YYRsJF2OjQ3HSCBiEHtdkHeasOO/c3ovHs3a2fteKKGsfk
- bRLE4KdkUrlKj+1VpyCrOfP35M0/x9GWR1D12zGZB6qbNf+eWAlRPnPi+PU3/wdgMDZvvbJzy5l/Am7V
- YvnqVXhIAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBwAA
- CwcBtnMLwAAAAjVJREFUOE9j/P//P4O3l5fBP0aGHob/DG1MjAwHtm7d9o+BWODo6MLs7OKaDqT/Ozk7
- f/P28g709vFmBhmMjq1sHViCAgOU3N3d8mByDECNLECcZGfvtM3c0va/vYPLHw8Pzypfb1RDVDQNOazt
- nZyArv3u4OA0B24AiAE0QBKILRwcXbZZ2dj/t7N3+O/v673R19eHGyRvamHL6e7pucLW3um3qal5t5ae
- CQ+KATAO0BA2IC6wd3D+bWfn9N/H13eZpZW9npWV3WRbG5v/eoYmk9W0DPiRvYbhT2tbW0Z7eydNoJfO
- m5lb/zcyNvtuaGz0Xk1Ld52yui4nerhgGABToG9g4qCnb/LT0sr2v56+0T0FZU0hbAGL1QBjExMFNXWd
- S7p6hv+ABv03MbX4r6Wte4soAwyNTOXVNLSvAg34o6GpvUZETNJETl5lm4Gh8X9Vde1MvF7Q0NaVkFVQ
- PiWnqPofaPshSQkpIR4+Pm5+IRFueSW16QYGxl9UtQxksQaihoEFh5yi2iIJacWPOrqGT7R19bVgCnkE
- BDg4Obn5dPUNz0rKKEySUVSDJzR4GEjJKniLSSj8V1XT/q+iptHKyc0LTgMwzMLCzAQUV1FRUb3PKyAo
- r65rwgSSAysQEBBiExERaxUSFv8vr6C8i4OLR42HTwCsABkLCAgym5lZTubm5TJV1zNHGABSJCOvasTK
- xj6RgZHJjpmFhRdbiINtZGBgYWJi4sKaEnFpwieOMyERaxgAd/H0VrlTD2AAAAAASUVORK5CYII=
-
-
-
- False
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 17, 56
+
+
+ 17, 17
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBwAA
+ CwcBtnMLwAAAAOxJREFUOE9j+P//PwMyFijg+w/EvujiuPgomkGKoAYQbQhWAwqv24EMIMoQnAYQawhW
+ A/Ku2v7Pumj1P/WsOUGXYDUg7ZzF/8STpv+jjxr+D9mvj9cQrAbEHDP+H3pA/7//bu3/7lvV/zusV8Zp
+ CFYDAvfo/vfcpvnfaYPqf+uVCv9NFsv815krCTYEPTqxGuCyUe2/zWrF/6ZL5f7rzZf8rz5LjDQXmC+X
+ /6+/QPq/5izx/0pThUkPA+054v9Vp4v8l5skSF4syE8W+i/Vz09QMyg8sIaBeDcvUZpxGkBsMsZnAPm5
+ kdhsDFMHAH2OluuICWfKAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDAAA
+ CwwBP0AiyAAAAeJJREFUOE+lk9tL02Ech5Xuu+iiv6GbSIJdWPfCLhSExK5qKAshCQ/ZATwU1iqcGGqw
+ hcdFa7OJU5vbUFGn5ZimZWUHhWS632xBXkg5trmnva+YyaYpvfC5et/P8z2+6UDafx0BOIw81UXq7uIL
+ CA3d1GYc2Fxv+36ku70mSxi/NpTw5toWJC1xQV1XSOqBJcRt0zeut6xyuTmIRq+QpwtwsV6hxuhj0F6F
+ zeXj7d1yaX6oUm0BTOPQOhLHMBijcSBKnT3CnedhKs1hbpnXabPP4baV82NJz+eJYnS6KmmuzTyVIwF6
+ Ed0aojoRvdS4SmGDwvl7AbSNCo+sr3GatdL8caSAvsdqjh87yqW8ExlyAM8GponFY0laD0fxznzA0ZGf
+ ZK4oOHl2u/F/AKO+BbYlgC/cY/S3ZO9r3jcDQ+sTJp338c9c3Um7rJKp+UD632PflcGw9wvuiU9sRKII
+ QDy+ibUpV9Zs6XWRrbmR8O7em6QeCPPazyhXSivIPZcv1hSHZ47OvinO5BQlAzrtr2QDRWTH6Dw9Q+9Q
+ 1iI87Z+lvWdayrvwC0PXZGqA0TIsAStKkEV/kPeLiqiTsdkVXL5lel8uY/P49wY0mZycztKgUhf+UylL
+ OMxHSvX2wJ9pr0C/Aa3dwrU8i4oXAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBwAA
+ CwcBtnMLwAAAAg9JREFUOE9j/P//PwNFAGQAJZig5uk7//wH4f5N3/43L3/7v2zW4/9Z/beAdkIsRjGg
+ buWf4PIFH1f7Nl2VgikAae7Y8P9/2aJf/xP7nv33KDs3FdnFcAMqFv/WaVn991Rq/5P/Vqlb7sAU9az/
+ 8r9g3rf/MX0f/7tV3P5vm3v8iHnqIU0MF1Qu/TahYvG3/875p//rBC14B1NQu/DF/7DWe/+dS29+ssi+
+ 8N84ad9/vejNPRgG1Cz9fCFn+vv/psn7/+tGrp8LU5A76c5/h4LTOS6ll6fZ5p37rxez7b9u2NLzGAY0
+ Lv/0OX3q2//GCXv/68ftsAIpyMu7zZrUcQUcYGGtd6yDm+6BDdAKmP0Zw4D6pZ8+p019998sdT/cAOTA
+ ypn13iZtypv/hnG7sBtQsfDjhdQpb//b557+b515dCZ62qhd/mdexrQP//VjdvzXCV1yAcMF2VNf9sX3
+ Pv3vVXXjf2D9zbdpE1/MyZ/5zqZ8wTebhtV/59ev+P0+uPn+f93wVf91wlZMxDAgrOm2dmD99aMeZVf+
+ +9be+R/X+/x/5rR3//NmfvyfM+vTf5BmYOiDbD+tHbZWB2tCci0+72uXc+yocfzu/7oxW8EYFGh6MVuA
+ Ib8cqHnRab3QZcFYExJM0DB+r6ZuxJo+neAFF7X8pnwBYe3AuZd0w5ZM0gpdqYseNgTzAqGMRrEBAHaR
+ kJU9BcdNAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAmBJREFUOE+dk01M
+ E1EQx/fk0ZNevXjBg3qrFz2QYDz4dTKQgBygTVRiavw2JiaaaIUgmLRIxBiNSjGY0kixbUgaPmvZVltK
+ 7LZgoabfpaUrtLVFqH/nbQ3SGoxxksm+mTfzm5n33nJchfhDixAz37BZsoU1TDh8qIwts6PJZeSyKxt5
+ vNOLmuom6N9ZN3w/aOVZiP8JCsZSEJeWyqqeqO2gwNOoOtxT5meGzuIuh0QiYSnoO2lmrRTP1tqpVaRZ
+ WZJ4DhCZ85eouvUlyNSnAMRsHqu0kaLR2ZefjeKO2oCe3mG8HBhHgXyhLOBPA0mCrJM9ZA/i4q1ucBbb
+ NBK5IpIUFaUjEIvAXFTErkPtVEGB3QfbwZqY/woISWCWIBGC8AsrJYBp3IUvlMUqLIhUhQKZ9I8JBLgG
+ WZ1W6sBDRzSdAGZSBKFCo94UGs7dAzcw4oInVkCAAAJtMs1Qgkb/kQCXIavtxTLZrjhgj9B3EXBTJ3p7
+ mAD3wT0ftML2OQ4vVWZ0Zwxg99E16CKAEgfqXoE1xZP/PQF4AlhD62hp0+H81YfgXpgdEmDMl4abRnDR
+ jEFKaLo9RIAb2LavE5ORPBxEnSCIyZvDE8scduyt/32VfUZegphp0A/Unkko4OSFUTR3JdDwYB43tQEp
+ +a2QhcboxZ4jl6BQtpa/had9w2D62DiD1/YYRsJF2OjQ3HSCBiEHtdkHeasOO/c3ovHs3a2fteKKGsfk
+ bRLE4KdkUrlKj+1VpyCrOfP35M0/x9GWR1D12zGZB6qbNf+eWAlRPnPi+PU3/wdgMDZvvbJzy5l/Am7V
+ YvnqVXhIAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALBwAA
+ CwcBtnMLwAAAAjVJREFUOE9j/P//P4O3l5fBP0aGHob/DG1MjAwHtm7d9o+BWODo6MLs7OKaDqT/Ozk7
+ f/P28g709vFmBhmMjq1sHViCAgOU3N3d8mByDECNLECcZGfvtM3c0va/vYPLHw8Pzypfb1RDVDQNOazt
+ nZyArv3u4OA0B24AiAE0QBKILRwcXbZZ2dj/t7N3+O/v673R19eHGyRvamHL6e7pucLW3um3qal5t5ae
+ CQ+KATAO0BA2IC6wd3D+bWfn9N/H13eZpZW9npWV3WRbG5v/eoYmk9W0DPiRvYbhT2tbW0Z7eydNoJfO
+ m5lb/zcyNvtuaGz0Xk1Ld52yui4nerhgGABToG9g4qCnb/LT0sr2v56+0T0FZU0hbAGL1QBjExMFNXWd
+ S7p6hv+ABv03MbX4r6Wte4soAwyNTOXVNLSvAg34o6GpvUZETNJETl5lm4Gh8X9Vde1MvF7Q0NaVkFVQ
+ PiWnqPofaPshSQkpIR4+Pm5+IRFueSW16QYGxl9UtQxksQaihoEFh5yi2iIJacWPOrqGT7R19bVgCnkE
+ BDg4Obn5dPUNz0rKKEySUVSDJzR4GEjJKniLSSj8V1XT/q+iptHKyc0LTgMwzMLCzAQUV1FRUb3PKyAo
+ r65rwgSSAysQEBBiExERaxUSFv8vr6C8i4OLR42HTwCsABkLCAgym5lZTubm5TJV1zNHGABSJCOvasTK
+ xj6RgZHJjpmFhRdbiINtZGBgYWJi4sKaEnFpwieOMyERaxgAd/H0VrlTD2AAAAAASUVORK5CYII=
+
+
+
+ False
+
\ No newline at end of file
diff --git a/HudsonTrayTracker/Utils/ApplicationUpdateHandler.cs b/JenkinsTray/Utils/ApplicationUpdateHandler.cs
similarity index 77%
rename from HudsonTrayTracker/Utils/ApplicationUpdateHandler.cs
rename to JenkinsTray/Utils/ApplicationUpdateHandler.cs
index 40eb367..bb20c16 100644
--- a/HudsonTrayTracker/Utils/ApplicationUpdateHandler.cs
+++ b/JenkinsTray/Utils/ApplicationUpdateHandler.cs
@@ -1,45 +1,45 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using DevExpress.XtraEditors;
-using Common.Logging;
-using System.Reflection;
-using System.Diagnostics;
-using Hudson.TrayTracker.BusinessComponents;
-
-namespace Hudson.TrayTracker.Utils
-{
- class ApplicationUpdateHandler
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- ApplicationUpdateService applicationUpdateService;
-
- public ApplicationUpdateService ApplicationUpdateService
- {
- get { return applicationUpdateService; }
- set { applicationUpdateService = value; }
- }
-
- public void Initialize()
- {
- applicationUpdateService.NewVersionAvailable += applicationUpdateService_NewVersionAvailable;
- }
-
- private void applicationUpdateService_NewVersionAvailable(Version version, string installerUrl)
- {
- string message = string.Format(HudsonTrayTrackerResources.ApplicationUpdates_NewVersion_Text, version);
- DialogResult res = XtraMessageBox.Show(message, HudsonTrayTrackerResources.ApplicationUpdates_Caption,
- MessageBoxButtons.YesNo);
- if (res != DialogResult.Yes)
- {
- logger.Info("Update refused by user");
- return;
- }
- logger.Info("Update accepted by user");
- UIUtils.OpenWebPage(installerUrl, logger);
- Application.Exit();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+using DevExpress.XtraEditors;
+using Common.Logging;
+using System.Reflection;
+using System.Diagnostics;
+using Jenkins.Tray.BusinessComponents;
+
+namespace Jenkins.Tray.Utils
+{
+ class ApplicationUpdateHandler
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ ApplicationUpdateService applicationUpdateService;
+
+ public ApplicationUpdateService ApplicationUpdateService
+ {
+ get { return applicationUpdateService; }
+ set { applicationUpdateService = value; }
+ }
+
+ public void Initialize()
+ {
+ applicationUpdateService.NewVersionAvailable += applicationUpdateService_NewVersionAvailable;
+ }
+
+ private void applicationUpdateService_NewVersionAvailable(Version version, string installerUrl)
+ {
+ string message = string.Format(JenkinsTrayResources.ApplicationUpdates_NewVersion_Text, version);
+ DialogResult res = XtraMessageBox.Show(message, JenkinsTrayResources.ApplicationUpdates_Caption,
+ MessageBoxButtons.YesNo);
+ if (res != DialogResult.Yes)
+ {
+ logger.Info("Update refused by user");
+ return;
+ }
+ logger.Info("Update accepted by user");
+ UIUtils.OpenWebPage(installerUrl, logger);
+ Application.Exit();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/BackgroundProcessing/BackgroundProcessExecutor.cs b/JenkinsTray/Utils/BackgroundProcessing/BackgroundProcessExecutor.cs
similarity index 93%
rename from HudsonTrayTracker/Utils/BackgroundProcessing/BackgroundProcessExecutor.cs
rename to JenkinsTray/Utils/BackgroundProcessing/BackgroundProcessExecutor.cs
index 76eab3d..1c9b34a 100644
--- a/HudsonTrayTracker/Utils/BackgroundProcessing/BackgroundProcessExecutor.cs
+++ b/JenkinsTray/Utils/BackgroundProcessing/BackgroundProcessExecutor.cs
@@ -1,81 +1,81 @@
-#if DEBUG
-// only define this if needed in debug
-//#define DONT_CATCH_EXCEPTION
-#endif
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-using System.Reflection;
-
-using Common.Logging;
-
-using Hudson.TrayTracker.Utils.Logging;
-using System.Threading;
-
-namespace Hudson.TrayTracker.Utils.BackgroundProcessing
-{
- public static class BackgroundProcessExecutor
- {
- static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- public static void Execute(Process process)
- {
-#if false
- if (Thread.CurrentThread.IsBackground)
- throw new Exception("Should not run in background!");
- int fgThreadId = Thread.CurrentThread.ManagedThreadId;
-#endif
-
- if (logger.IsDebugEnabled)
- logger.Debug("Running process: " + process.Description);
-
- // run that process
- BackgroundWorker bgWorker = new BackgroundWorker();
- ErrorHolder errorHolder = new ErrorHolder();
- bgWorker.DoWork += delegate(object sender, DoWorkEventArgs e)
- {
-#if DEBUG
- if (Thread.CurrentThread.IsBackground == false)
- throw new Exception("Should run in background!");
-#endif
-
-#if DONT_CATCH_EXCEPTION
- process.Run(sender, e);
-#else
- // here we catch exceptions because otherwise, Visual Studio breaks,
- // even though the BackgroundWorker itself catches the exceptions!
- try
- {
- process.Run(sender, e);
- }
- catch (Exception error)
- {
- errorHolder.Error = error;
- }
-#endif
- };
- bgWorker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
- {
-#if false
- if (Thread.CurrentThread.IsBackground)
- throw new Exception("Should not run in background!");
- if (Thread.CurrentThread.ManagedThreadId != fgThreadId)
- throw new Exception("RunWorkerCompleted called in another thread");
-#endif
-
- // replace the args with one containing the caught error (if any)
- e = new RunWorkerCompletedEventArgs(e.Result, errorHolder.Error, e.Cancelled);
-
- if (logger.IsDebugEnabled)
- logger.Debug("Done running process: " + process.Description);
- if (e.Error != null)
- LoggingHelper.LogError(logger, e.Error);
-
- process.OnCompleted(sender, e);
- };
- bgWorker.RunWorkerAsync();
- }
- }
-}
+#if DEBUG
+// only define this if needed in debug
+//#define DONT_CATCH_EXCEPTION
+#endif
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+using System.Reflection;
+
+using Common.Logging;
+
+using Jenkins.Tray.Utils.Logging;
+using System.Threading;
+
+namespace Jenkins.Tray.Utils.BackgroundProcessing
+{
+ public static class BackgroundProcessExecutor
+ {
+ static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ public static void Execute(Process process)
+ {
+#if false
+ if (Thread.CurrentThread.IsBackground)
+ throw new Exception("Should not run in background!");
+ int fgThreadId = Thread.CurrentThread.ManagedThreadId;
+#endif
+
+ if (logger.IsDebugEnabled)
+ logger.Debug("Running process: " + process.Description);
+
+ // run that process
+ BackgroundWorker bgWorker = new BackgroundWorker();
+ ErrorHolder errorHolder = new ErrorHolder();
+ bgWorker.DoWork += delegate(object sender, DoWorkEventArgs e)
+ {
+#if DEBUG
+ if (Thread.CurrentThread.IsBackground == false)
+ throw new Exception("Should run in background!");
+#endif
+
+#if DONT_CATCH_EXCEPTION
+ process.Run(sender, e);
+#else
+ // here we catch exceptions because otherwise, Visual Studio breaks,
+ // even though the BackgroundWorker itself catches the exceptions!
+ try
+ {
+ process.Run(sender, e);
+ }
+ catch (Exception error)
+ {
+ errorHolder.Error = error;
+ }
+#endif
+ };
+ bgWorker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
+ {
+#if false
+ if (Thread.CurrentThread.IsBackground)
+ throw new Exception("Should not run in background!");
+ if (Thread.CurrentThread.ManagedThreadId != fgThreadId)
+ throw new Exception("RunWorkerCompleted called in another thread");
+#endif
+
+ // replace the args with one containing the caught error (if any)
+ e = new RunWorkerCompletedEventArgs(e.Result, errorHolder.Error, e.Cancelled);
+
+ if (logger.IsDebugEnabled)
+ logger.Debug("Done running process: " + process.Description);
+ if (e.Error != null)
+ LoggingHelper.LogError(logger, e.Error);
+
+ process.OnCompleted(sender, e);
+ };
+ bgWorker.RunWorkerAsync();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/BackgroundProcessing/ErrorHolder.cs b/JenkinsTray/Utils/BackgroundProcessing/ErrorHolder.cs
similarity index 78%
rename from HudsonTrayTracker/Utils/BackgroundProcessing/ErrorHolder.cs
rename to JenkinsTray/Utils/BackgroundProcessing/ErrorHolder.cs
index 56ff4ff..2fabd9f 100644
--- a/HudsonTrayTracker/Utils/BackgroundProcessing/ErrorHolder.cs
+++ b/JenkinsTray/Utils/BackgroundProcessing/ErrorHolder.cs
@@ -1,17 +1,17 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Hudson.TrayTracker.Utils.BackgroundProcessing
-{
- class ErrorHolder
- {
- private Exception error;
-
- public Exception Error
- {
- get { return error; }
- set { error = value; }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Jenkins.Tray.Utils.BackgroundProcessing
+{
+ class ErrorHolder
+ {
+ private Exception error;
+
+ public Exception Error
+ {
+ get { return error; }
+ set { error = value; }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/BackgroundProcessing/Process.cs b/JenkinsTray/Utils/BackgroundProcessing/Process.cs
similarity index 91%
rename from HudsonTrayTracker/Utils/BackgroundProcessing/Process.cs
rename to JenkinsTray/Utils/BackgroundProcessing/Process.cs
index 7b87701..5973753 100644
--- a/HudsonTrayTracker/Utils/BackgroundProcessing/Process.cs
+++ b/JenkinsTray/Utils/BackgroundProcessing/Process.cs
@@ -1,43 +1,43 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-
-namespace Hudson.TrayTracker.Utils.BackgroundProcessing
-{
- public class Process
- {
- // Summary:
- // Occurs when System.ComponentModel.BackgroundWorker.RunWorkerAsync() is called.
- public event DoWorkEventHandler DoWork;
- //
- // Summary:
- // Occurs when the background operation has completed, has been canceled, or
- // has raised an exception.
- public event RunWorkerCompletedEventHandler RunWorkerCompleted;
-
- string description;
-
- public string Description
- {
- get { return description; }
- }
-
- public Process(string description)
- {
- this.description = description;
- }
-
- internal void Run(object sender, DoWorkEventArgs e)
- {
- if (DoWork != null)
- DoWork(this, e);
- }
-
- internal void OnCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- if (RunWorkerCompleted != null)
- RunWorkerCompleted(this, e);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ComponentModel;
+
+namespace Jenkins.Tray.Utils.BackgroundProcessing
+{
+ public class Process
+ {
+ // Summary:
+ // Occurs when System.ComponentModel.BackgroundWorker.RunWorkerAsync() is called.
+ public event DoWorkEventHandler DoWork;
+ //
+ // Summary:
+ // Occurs when the background operation has completed, has been canceled, or
+ // has raised an exception.
+ public event RunWorkerCompletedEventHandler RunWorkerCompleted;
+
+ string description;
+
+ public string Description
+ {
+ get { return description; }
+ }
+
+ public Process(string description)
+ {
+ this.description = description;
+ }
+
+ internal void Run(object sender, DoWorkEventArgs e)
+ {
+ if (DoWork != null)
+ DoWork(this, e);
+ }
+
+ internal void OnCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ if (RunWorkerCompleted != null)
+ RunWorkerCompleted(this, e);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/Collections/ThreadSafeDictionary.cs b/JenkinsTray/Utils/Collections/ThreadSafeDictionary.cs
similarity index 92%
rename from HudsonTrayTracker/Utils/Collections/ThreadSafeDictionary.cs
rename to JenkinsTray/Utils/Collections/ThreadSafeDictionary.cs
index d5b3994..a4752e3 100644
--- a/HudsonTrayTracker/Utils/Collections/ThreadSafeDictionary.cs
+++ b/JenkinsTray/Utils/Collections/ThreadSafeDictionary.cs
@@ -1,60 +1,60 @@
-using System;
-using System.Collections.Generic;
-using System.Threading;
-
-namespace Hudson.TrayTracker.Utils.Collections
-{
- public class ThreadSafeDictionary : Dictionary
- {
- private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
-
- public TValue GetOrAdd(TKey key, Func defaultValueDelegate)
- {
- cacheLock.EnterReadLock();
- try
- {
- if (ContainsKey(key))
- {
- return this[key];
- }
- }
- finally
- {
- cacheLock.ExitReadLock();
- }
- cacheLock.EnterWriteLock();
- try
- {
- if (!ContainsKey(key))
- {
- Add(key, defaultValueDelegate());
- }
- return this[key];
- }
- finally
- {
- cacheLock.ExitWriteLock();
- }
- }
-
- public void SetOrAdd(TKey key, TValue value)
- {
- cacheLock.EnterWriteLock();
- try
- {
- if (ContainsKey(key))
- {
- this[key] = value;
- }
- else
- {
- Add(key, value);
- }
- }
- finally
- {
- cacheLock.ExitWriteLock();
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Threading;
+
+namespace Jenkins.Tray.Utils.Collections
+{
+ public class ThreadSafeDictionary : Dictionary
+ {
+ private ReaderWriterLockSlim cacheLock = new ReaderWriterLockSlim();
+
+ public TValue GetOrAdd(TKey key, Func defaultValueDelegate)
+ {
+ cacheLock.EnterReadLock();
+ try
+ {
+ if (ContainsKey(key))
+ {
+ return this[key];
+ }
+ }
+ finally
+ {
+ cacheLock.ExitReadLock();
+ }
+ cacheLock.EnterWriteLock();
+ try
+ {
+ if (!ContainsKey(key))
+ {
+ Add(key, defaultValueDelegate());
+ }
+ return this[key];
+ }
+ finally
+ {
+ cacheLock.ExitWriteLock();
+ }
+ }
+
+ public void SetOrAdd(TKey key, TValue value)
+ {
+ cacheLock.EnterWriteLock();
+ try
+ {
+ if (ContainsKey(key))
+ {
+ this[key] = value;
+ }
+ else
+ {
+ Add(key, value);
+ }
+ }
+ finally
+ {
+ cacheLock.ExitWriteLock();
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/IO/PathHelper.cs b/JenkinsTray/Utils/IO/PathHelper.cs
similarity index 94%
rename from HudsonTrayTracker/Utils/IO/PathHelper.cs
rename to JenkinsTray/Utils/IO/PathHelper.cs
index fe1839e..0b51765 100644
--- a/HudsonTrayTracker/Utils/IO/PathHelper.cs
+++ b/JenkinsTray/Utils/IO/PathHelper.cs
@@ -1,42 +1,42 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Reflection;
-
-namespace Hudson.TrayTracker.Utils.IO
-{
- public static class PathHelper
- {
- // returns
- // - 'absoluteOrRelativePath' if 'absoluteOrRelativePath' is absolute
- // - 'pathRoot\absoluteOrRelativePath' otherwise
- public static string GetPath(string absoluteOrRelativePath, string pathRoot)
- {
- if (absoluteOrRelativePath == null)
- return null;
- if (Path.IsPathRooted(absoluteOrRelativePath))
- return absoluteOrRelativePath;
- return Path.Combine(pathRoot, absoluteOrRelativePath);
- }
-
- public static string Combine(params string[] paths)
- {
- string res = null;
- foreach (string path in paths)
- {
- if (res == null)
- res = path;
- else
- res = Path.Combine(res, path);
- }
- return res;
- }
-
- public static string GetAbsolutePath(Assembly assembly)
- {
- string startupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
- Uri uri = new Uri(startupPath);
- return uri.LocalPath;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+
+namespace Jenkins.Tray.Utils.IO
+{
+ public static class PathHelper
+ {
+ // returns
+ // - 'absoluteOrRelativePath' if 'absoluteOrRelativePath' is absolute
+ // - 'pathRoot\absoluteOrRelativePath' otherwise
+ public static string GetPath(string absoluteOrRelativePath, string pathRoot)
+ {
+ if (absoluteOrRelativePath == null)
+ return null;
+ if (Path.IsPathRooted(absoluteOrRelativePath))
+ return absoluteOrRelativePath;
+ return Path.Combine(pathRoot, absoluteOrRelativePath);
+ }
+
+ public static string Combine(params string[] paths)
+ {
+ string res = null;
+ foreach (string path in paths)
+ {
+ if (res == null)
+ res = path;
+ else
+ res = Path.Combine(res, path);
+ }
+ return res;
+ }
+
+ public static string GetAbsolutePath(Assembly assembly)
+ {
+ string startupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
+ Uri uri = new Uri(startupPath);
+ return uri.LocalPath;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/Logging/LoggingHelper.cs b/JenkinsTray/Utils/Logging/LoggingHelper.cs
similarity index 94%
rename from HudsonTrayTracker/Utils/Logging/LoggingHelper.cs
rename to JenkinsTray/Utils/Logging/LoggingHelper.cs
index 75ffac3..0717e86 100644
--- a/HudsonTrayTracker/Utils/Logging/LoggingHelper.cs
+++ b/JenkinsTray/Utils/Logging/LoggingHelper.cs
@@ -1,74 +1,74 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-
-using Common.Logging;
-
-namespace Hudson.TrayTracker.Utils.Logging
-{
- public static class LoggingHelper
- {
- public static void LogError(ILog logger, Exception ex)
- {
- if (logger == null)
- throw new ArgumentNullException("logger");
- if (ex == null)
- throw new ArgumentNullException("ex");
-
- logger.Error(ex.GetType().Name + " - " + ex.Message);
- String prefix = " ";
- while (ex.InnerException != null)
- {
- prefix += " ";
- logger.Error(prefix + ex.Message);
- ex = ex.InnerException;
- }
- logger.Error(ex.StackTrace);
- }
-
- // fail-safe
- public static void LogDirectoryContent(ILog logger, string directory)
- {
- try
- {
- DoLogDirectoryContent(logger, directory);
- }
- catch
- {
- if (logger != null)
- logger.Error("Failed to log directory content");
- }
- }
-
- public static void DoLogDirectoryContent(ILog logger, string directory)
- {
- if (logger == null)
- throw new ArgumentNullException("logger");
-
- bool exists = Directory.Exists(directory);
-
- logger.Info("-- Logging directory content:");
- logger.Info("Directory: '" + directory + "'");
- logger.Info("Directory exists: " + exists);
-
- if (exists)
- {
- string[] files = Directory.GetFiles(directory);
- foreach (string file in files)
- {
- FileInfo fileInfo = new FileInfo(file);
- logger.Info("File: '" + file + "' (size=" + fileInfo.Length + ")");
- }
-
- string[] directories = Directory.GetDirectories(directory);
- foreach (string subDirectory in directories)
- {
- logger.Info("Directory: '" + subDirectory + "'");
- }
- }
-
- logger.Info("--");
- }
- }
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+using Common.Logging;
+
+namespace Jenkins.Tray.Utils.Logging
+{
+ public static class LoggingHelper
+ {
+ public static void LogError(ILog logger, Exception ex)
+ {
+ if (logger == null)
+ throw new ArgumentNullException("logger");
+ if (ex == null)
+ throw new ArgumentNullException("ex");
+
+ logger.Error(ex.GetType().Name + " - " + ex.Message);
+ String prefix = " ";
+ while (ex.InnerException != null)
+ {
+ prefix += " ";
+ logger.Error(prefix + ex.Message);
+ ex = ex.InnerException;
+ }
+ logger.Error(ex.StackTrace);
+ }
+
+ // fail-safe
+ public static void LogDirectoryContent(ILog logger, string directory)
+ {
+ try
+ {
+ DoLogDirectoryContent(logger, directory);
+ }
+ catch
+ {
+ if (logger != null)
+ logger.Error("Failed to log directory content");
+ }
+ }
+
+ public static void DoLogDirectoryContent(ILog logger, string directory)
+ {
+ if (logger == null)
+ throw new ArgumentNullException("logger");
+
+ bool exists = Directory.Exists(directory);
+
+ logger.Info("-- Logging directory content:");
+ logger.Info("Directory: '" + directory + "'");
+ logger.Info("Directory exists: " + exists);
+
+ if (exists)
+ {
+ string[] files = Directory.GetFiles(directory);
+ foreach (string file in files)
+ {
+ FileInfo fileInfo = new FileInfo(file);
+ logger.Info("File: '" + file + "' (size=" + fileInfo.Length + ")");
+ }
+
+ string[] directories = Directory.GetDirectories(directory);
+ foreach (string subDirectory in directories)
+ {
+ logger.Info("Directory: '" + subDirectory + "'");
+ }
+ }
+
+ logger.Info("--");
+ }
+ }
}
\ No newline at end of file
diff --git a/HudsonTrayTracker/Utils/NetUtils.cs b/JenkinsTray/Utils/NetUtils.cs
similarity index 92%
rename from HudsonTrayTracker/Utils/NetUtils.cs
rename to JenkinsTray/Utils/NetUtils.cs
index ab75bb7..9c34de7 100644
--- a/HudsonTrayTracker/Utils/NetUtils.cs
+++ b/JenkinsTray/Utils/NetUtils.cs
@@ -1,26 +1,26 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace Hudson.TrayTracker.Utils
-{
- public static class NetUtils
- {
- public static string ConcatUrls(string fragment1, params string[] fragments)
- {
- string res = fragment1.TrimEnd('/');
- foreach (string fragment in fragments)
- res += "/" + fragment.TrimStart('/');
- return res;
- }
-
- public static string ConcatUrlsWithoutTrailingSlash(string fragment1, params string[] fragments)
- {
- string res = fragment1.TrimEnd('/');
- foreach (string fragment in fragments)
- res += fragment.TrimStart('/');
- return res;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Jenkins.Tray.Utils
+{
+ public static class NetUtils
+ {
+ public static string ConcatUrls(string fragment1, params string[] fragments)
+ {
+ string res = fragment1.TrimEnd('/');
+ foreach (string fragment in fragments)
+ res += "/" + fragment.TrimStart('/');
+ return res;
+ }
+
+ public static string ConcatUrlsWithoutTrailingSlash(string fragment1, params string[] fragments)
+ {
+ string res = fragment1.TrimEnd('/');
+ foreach (string fragment in fragments)
+ res += fragment.TrimStart('/');
+ return res;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/PInvokeUtils.cs b/JenkinsTray/Utils/PInvokeUtils.cs
similarity index 90%
rename from HudsonTrayTracker/Utils/PInvokeUtils.cs
rename to JenkinsTray/Utils/PInvokeUtils.cs
index 0eea508..b2995e7 100644
--- a/HudsonTrayTracker/Utils/PInvokeUtils.cs
+++ b/JenkinsTray/Utils/PInvokeUtils.cs
@@ -1,22 +1,22 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Runtime.InteropServices;
-using System.Windows.Forms;
-
-namespace Hudson.TrayTracker.Utils
-{
- static class PInvokeUtils
- {
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
-
- const Int32 SC_RESTORE = 0xF120;
- const Int32 WM_SYSCOMMAND = 0x112;
-
- public static void RestoreForm(Form form)
- {
- SendMessage(form.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Windows.Forms;
+
+namespace Jenkins.Tray.Utils
+{
+ static class PInvokeUtils
+ {
+ [DllImport("user32.dll", CharSet = CharSet.Auto)]
+ static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
+
+ const Int32 SC_RESTORE = 0xF120;
+ const Int32 WM_SYSCOMMAND = 0x112;
+
+ public static void RestoreForm(Form form)
+ {
+ SendMessage(form.Handle, WM_SYSCOMMAND, SC_RESTORE, 0);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/Serialization/CredentialsJsonConverter.cs b/JenkinsTray/Utils/Serialization/CredentialsJsonConverter.cs
similarity index 92%
rename from HudsonTrayTracker/Utils/Serialization/CredentialsJsonConverter.cs
rename to JenkinsTray/Utils/Serialization/CredentialsJsonConverter.cs
index cebf5b3..1bbdfde 100644
--- a/HudsonTrayTracker/Utils/Serialization/CredentialsJsonConverter.cs
+++ b/JenkinsTray/Utils/Serialization/CredentialsJsonConverter.cs
@@ -1,46 +1,46 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Newtonsoft.Json;
-using Hudson.TrayTracker.Entities;
-
-namespace Hudson.TrayTracker.Utils.Serialization
-{
- class CredentialsJsonConverter : JsonConverter
- {
- public override bool CanConvert(Type objectType)
- {
- return objectType == typeof(Credentials);
- }
-
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
- {
- if (reader.TokenType == JsonToken.Null)
- return null;
-
- if (reader.TokenType != JsonToken.StartArray)
- throw new Exception("Expecting StartArray, received " + reader.TokenType);
-
- reader.Read();
- string username = (string)reader.Value;
- reader.Read();
- string passwordBase64 = (string)reader.Value;
- reader.Read();
-
- string password = Encoding.UTF8.GetString(Convert.FromBase64String(passwordBase64));
- Credentials res = new Credentials(username, password);
- return res;
- }
-
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
- {
- Credentials credentials = (Credentials)value;
- string passwordBase64 = Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials.Password));
- writer.WriteStartArray();
- writer.WriteValue(credentials.Username);
- writer.WriteValue(passwordBase64);
- writer.WriteEndArray();
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Newtonsoft.Json;
+using Jenkins.Tray.Entities;
+
+namespace Jenkins.Tray.Utils.Serialization
+{
+ class CredentialsJsonConverter : JsonConverter
+ {
+ public override bool CanConvert(Type objectType)
+ {
+ return objectType == typeof(Credentials);
+ }
+
+ public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.Null)
+ return null;
+
+ if (reader.TokenType != JsonToken.StartArray)
+ throw new Exception("Expecting StartArray, received " + reader.TokenType);
+
+ reader.Read();
+ string username = (string)reader.Value;
+ reader.Read();
+ string passwordBase64 = (string)reader.Value;
+ reader.Read();
+
+ string password = Encoding.UTF8.GetString(Convert.FromBase64String(passwordBase64));
+ Credentials res = new Credentials(username, password);
+ return res;
+ }
+
+ public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
+ {
+ Credentials credentials = (Credentials)value;
+ string passwordBase64 = Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials.Password));
+ writer.WriteStartArray();
+ writer.WriteValue(credentials.Username);
+ writer.WriteValue(passwordBase64);
+ writer.WriteEndArray();
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/StringUtils.cs b/JenkinsTray/Utils/StringUtils.cs
similarity index 93%
rename from HudsonTrayTracker/Utils/StringUtils.cs
rename to JenkinsTray/Utils/StringUtils.cs
index 6758494..3d392f7 100644
--- a/HudsonTrayTracker/Utils/StringUtils.cs
+++ b/JenkinsTray/Utils/StringUtils.cs
@@ -1,42 +1,42 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace Hudson.TrayTracker.Utils
-{
- public static class StringUtils
- {
- public static string Join(IEnumerable objects, string separator)
- where T : class
- {
- string sep = "";
- StringBuilder res = new StringBuilder();
- foreach (object o in objects)
- {
- res.Append(sep).Append(o);
- sep = separator;
- }
- return res.ToString();
- }
-
- // Extracts the user name from a string:
- // - "User Name" -> "User Name"
- // - "User Name " -> "User Name"
- // - "User Name (user@example.com)" -> "User Name"
- public static string ExtractUserName(string fullName)
- {
- string res = fullName;
-
- int index = res.IndexOf(" <");
- if (index > 0)
- res = res.Substring(0, index);
-
- index = res.IndexOf(" (");
- if (index > 0)
- res = res.Substring(0, index);
-
- res = res.Trim();
- return res;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Jenkins.Tray.Utils
+{
+ public static class StringUtils
+ {
+ public static string Join(IEnumerable objects, string separator)
+ where T : class
+ {
+ string sep = "";
+ StringBuilder res = new StringBuilder();
+ foreach (object o in objects)
+ {
+ res.Append(sep).Append(o);
+ sep = separator;
+ }
+ return res.ToString();
+ }
+
+ // Extracts the user name from a string:
+ // - "User Name" -> "User Name"
+ // - "User Name " -> "User Name"
+ // - "User Name (user@example.com)" -> "User Name"
+ public static string ExtractUserName(string fullName)
+ {
+ string res = fullName;
+
+ int index = res.IndexOf(" <");
+ if (index > 0)
+ res = res.Substring(0, index);
+
+ index = res.IndexOf(" (");
+ if (index > 0)
+ res = res.Substring(0, index);
+
+ res = res.Trim();
+ return res;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/ThreadExceptionHandler.cs b/JenkinsTray/Utils/ThreadExceptionHandler.cs
similarity index 77%
rename from HudsonTrayTracker/Utils/ThreadExceptionHandler.cs
rename to JenkinsTray/Utils/ThreadExceptionHandler.cs
index a0c0e19..3f71bb0 100644
--- a/HudsonTrayTracker/Utils/ThreadExceptionHandler.cs
+++ b/JenkinsTray/Utils/ThreadExceptionHandler.cs
@@ -1,68 +1,68 @@
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Text;
-using System.Threading;
-using System.Windows.Forms;
-
-using Common.Logging;
-
-using Hudson.TrayTracker.Utils.Logging;
-using DevExpress.XtraEditors;
-
-namespace Hudson.TrayTracker.Utils
-{
- static class ThreadExceptionHandler
- {
- private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
- ///
- /// Handles the thread exception.
- ///
- public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
- {
- HandleException(e.Exception);
- }
-
- public static void HandleException(Exception ex)
- {
- try
- {
- LoggingHelper.LogError(logger, ex);
-
- // Exit the program after having warned the user
- ShowThreadExceptionDialog(ex);
- Application.Exit();
- }
- catch
- {
- // Fatal error, terminate program
- try
- {
- XtraMessageBox.Show(HudsonTrayTrackerResources.FatalError_Message,
- HudsonTrayTrackerResources.FatalError_Caption,
- MessageBoxButtons.OK,
- MessageBoxIcon.Stop);
- }
- finally
- {
- Application.Exit();
- }
- }
- }
-
- ///
- /// Creates and displays the error message.
- ///
- private static DialogResult ShowThreadExceptionDialog(Exception ex)
- {
- string errorMessage = String.Format(HudsonTrayTrackerResources.SeriousErrorBoxMessage,
- ex.GetType(), ex.Message);
-
- return XtraMessageBox.Show(errorMessage,
- HudsonTrayTrackerResources.ErrorBoxCaption,
- MessageBoxButtons.OK,
- MessageBoxIcon.Stop);
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using System.Windows.Forms;
+
+using Common.Logging;
+
+using Jenkins.Tray.Utils.Logging;
+using DevExpress.XtraEditors;
+
+namespace Jenkins.Tray.Utils
+{
+ static class ThreadExceptionHandler
+ {
+ private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+ ///
+ /// Handles the thread exception.
+ ///
+ public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
+ {
+ HandleException(e.Exception);
+ }
+
+ public static void HandleException(Exception ex)
+ {
+ try
+ {
+ LoggingHelper.LogError(logger, ex);
+
+ // Exit the program after having warned the user
+ ShowThreadExceptionDialog(ex);
+ Application.Exit();
+ }
+ catch
+ {
+ // Fatal error, terminate program
+ try
+ {
+ XtraMessageBox.Show(JenkinsTrayResources.FatalError_Message,
+ JenkinsTrayResources.FatalError_Caption,
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Stop);
+ }
+ finally
+ {
+ Application.Exit();
+ }
+ }
+ }
+
+ ///
+ /// Creates and displays the error message.
+ ///
+ private static DialogResult ShowThreadExceptionDialog(Exception ex)
+ {
+ string errorMessage = String.Format(JenkinsTrayResources.SeriousErrorBoxMessage,
+ ex.GetType(), ex.Message);
+
+ return XtraMessageBox.Show(errorMessage,
+ JenkinsTrayResources.ErrorBoxCaption,
+ MessageBoxButtons.OK,
+ MessageBoxIcon.Stop);
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/UIUtils.cs b/JenkinsTray/Utils/UIUtils.cs
similarity index 69%
rename from HudsonTrayTracker/Utils/UIUtils.cs
rename to JenkinsTray/Utils/UIUtils.cs
index b935053..0d58afb 100644
--- a/HudsonTrayTracker/Utils/UIUtils.cs
+++ b/JenkinsTray/Utils/UIUtils.cs
@@ -1,30 +1,30 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Diagnostics;
-using Common.Logging;
-using DevExpress.XtraEditors;
-using System.Windows.Forms;
-
-namespace Hudson.TrayTracker.Utils
-{
- public static class UIUtils
- {
- public static void OpenWebPage(string url, ILog logger)
- {
- try
- {
- Process.Start(url);
- }
- catch (Exception ex)
- {
- logger.Warn("Failed opening page: " + url, ex);
-
- string errorMessage = String.Format(HudsonTrayTrackerResources.ErrorBoxMessage, ex.Message);
- XtraMessageBox.Show(errorMessage, HudsonTrayTrackerResources.ErrorBoxCaption,
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- }
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Diagnostics;
+using Common.Logging;
+using DevExpress.XtraEditors;
+using System.Windows.Forms;
+
+namespace Jenkins.Tray.Utils
+{
+ public static class UIUtils
+ {
+ public static void OpenWebPage(string url, ILog logger)
+ {
+ try
+ {
+ Process.Start(url);
+ }
+ catch (Exception ex)
+ {
+ logger.Warn("Failed opening page: " + url, ex);
+
+ string errorMessage = String.Format(JenkinsTrayResources.ErrorBoxMessage, ex.Message);
+ XtraMessageBox.Show(errorMessage, JenkinsTrayResources.ErrorBoxCaption,
+ MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/Web/CookieAwareWebClient.cs b/JenkinsTray/Utils/Web/CookieAwareWebClient.cs
similarity index 89%
rename from HudsonTrayTracker/Utils/Web/CookieAwareWebClient.cs
rename to JenkinsTray/Utils/Web/CookieAwareWebClient.cs
index ef19a57..e5e0c7c 100644
--- a/HudsonTrayTracker/Utils/Web/CookieAwareWebClient.cs
+++ b/JenkinsTray/Utils/Web/CookieAwareWebClient.cs
@@ -1,20 +1,20 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Net;
-
-namespace Hudson.TrayTracker.Utils.Web
-{
- public class CookieAwareWebClient : WebClient
- {
- private CookieContainer cookieContainer = new CookieContainer();
-
- protected override WebRequest GetWebRequest(Uri address)
- {
- WebRequest request = base.GetWebRequest(address);
- if (request is HttpWebRequest)
- ((HttpWebRequest)request).CookieContainer = cookieContainer;
- return request;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Net;
+
+namespace Jenkins.Tray.Utils.Web
+{
+ public class CookieAwareWebClient : WebClient
+ {
+ private CookieContainer cookieContainer = new CookieContainer();
+
+ protected override WebRequest GetWebRequest(Uri address)
+ {
+ WebRequest request = base.GetWebRequest(address);
+ if (request is HttpWebRequest)
+ ((HttpWebRequest)request).CookieContainer = cookieContainer;
+ return request;
+ }
+ }
+}
diff --git a/HudsonTrayTracker/Utils/XmlUtils.cs b/JenkinsTray/Utils/XmlUtils.cs
similarity index 91%
rename from HudsonTrayTracker/Utils/XmlUtils.cs
rename to JenkinsTray/Utils/XmlUtils.cs
index 131ad84..37728f7 100644
--- a/HudsonTrayTracker/Utils/XmlUtils.cs
+++ b/JenkinsTray/Utils/XmlUtils.cs
@@ -1,26 +1,26 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Xml;
-
-namespace Hudson.TrayTracker.Utils
-{
- public static class XmlUtils
- {
- public static string SelectSingleNodeText(XmlNode xml, string xpath)
- {
- XmlNode node = xml.SelectSingleNode(xpath);
- if (node == null)
- return null;
- return node.InnerText;
- }
-
- public static bool? SelectSingleNodeBoolean(XmlNode xml, string xpath)
- {
- XmlNode node = xml.SelectSingleNode(xpath);
- if (node == null)
- return null;
- return (node.InnerText == "true");
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml;
+
+namespace Jenkins.Tray.Utils
+{
+ public static class XmlUtils
+ {
+ public static string SelectSingleNodeText(XmlNode xml, string xpath)
+ {
+ XmlNode node = xml.SelectSingleNode(xpath);
+ if (node == null)
+ return null;
+ return node.InnerText;
+ }
+
+ public static bool? SelectSingleNodeBoolean(XmlNode xml, string xpath)
+ {
+ XmlNode node = xml.SelectSingleNode(xpath);
+ if (node == null)
+ return null;
+ return (node.InnerText == "true");
+ }
+ }
+}
diff --git a/setup/GetVersion.cmd b/setup/GetVersion.cmd
index 4556cb4..679adc8 100644
--- a/setup/GetVersion.cmd
+++ b/setup/GetVersion.cmd
@@ -3,7 +3,7 @@ SetLocal EnableDelayedExpansion
PushD "%~dp0"
-Set "JenkinsTrayExe=..\HudsonTrayTracker\bin\x86\Release\JenkinsTray.exe"
+Set "JenkinsTrayExe=..\JenkinsTray\bin\x86\Release\JenkinsTray.exe"
Set "FileVerExe=..\Lib\Tools\filever.exe"
for /F "usebackq tokens=4* delims= " %%F in (`%FileVerExe% /B /A /D %JenkinsTrayExe%`) do (
diff --git a/setup/HudsonTrayTracker.Setup.CustomActions/ApplicationInstaller.cs b/setup/JenkinsTray.Setup.CustomActions/ApplicationInstaller.cs
similarity index 97%
rename from setup/HudsonTrayTracker.Setup.CustomActions/ApplicationInstaller.cs
rename to setup/JenkinsTray.Setup.CustomActions/ApplicationInstaller.cs
index a20f305..a04b9cd 100644
--- a/setup/HudsonTrayTracker.Setup.CustomActions/ApplicationInstaller.cs
+++ b/setup/JenkinsTray.Setup.CustomActions/ApplicationInstaller.cs
@@ -1,58 +1,58 @@
-using System;
-using System.Collections;
-using System.Text;
-using System.ComponentModel;
-using System.Configuration.Install;
-using System.Diagnostics;
-using System.Windows.Forms;
-
-namespace JenkinsTray.Setup.CustomActions
-{
- [RunInstaller(true)]
- public class ApplicationInstaller : Installer
- {
- public override void Install(IDictionary stateSaver)
- {
- base.Install(stateSaver);
- Context.LogMessage("ApplicationInstaller[Install]");
- }
-
- public override void Uninstall(IDictionary savedState)
- {
- base.Uninstall(savedState);
-
- Context.LogMessage("ApplicationInstaller[Uninstall]: stopping all instances of the application");
-
- Process[] processes = Process.GetProcessesByName("JenkinsTray");
- Context.LogMessage("ApplicationInstaller[Uninstall]: found " + processes.Length + " instances to stop");
-
- foreach (Process process in processes)
- {
- Context.LogMessage("ApplicationInstaller[Uninstall]: Stopping process id: " + process.Id);
- try
- {
- process.Kill();
- }
- catch (Exception ex)
- {
- Context.LogMessage("ApplicationInstaller[Uninstall]: Failed stopping process: "
- + ex.Message + "\n" + ex.StackTrace);
- }
- }
-
- Context.LogMessage("ApplicationInstaller[Uninstall]: done");
- }
-
- public override void Commit(IDictionary savedState)
- {
- base.Commit(savedState);
- Context.LogMessage("ApplicationInstaller[Commit]");
- }
-
- public override void Rollback(IDictionary savedState)
- {
- base.Rollback(savedState);
- Context.LogMessage("ApplicationInstaller[Rollback]");
- }
- }
-}
+using System;
+using System.Collections;
+using System.Text;
+using System.ComponentModel;
+using System.Configuration.Install;
+using System.Diagnostics;
+using System.Windows.Forms;
+
+namespace JenkinsTray.Setup.CustomActions
+{
+ [RunInstaller(true)]
+ public class ApplicationInstaller : Installer
+ {
+ public override void Install(IDictionary stateSaver)
+ {
+ base.Install(stateSaver);
+ Context.LogMessage("ApplicationInstaller[Install]");
+ }
+
+ public override void Uninstall(IDictionary savedState)
+ {
+ base.Uninstall(savedState);
+
+ Context.LogMessage("ApplicationInstaller[Uninstall]: stopping all instances of the application");
+
+ Process[] processes = Process.GetProcessesByName("JenkinsTray");
+ Context.LogMessage("ApplicationInstaller[Uninstall]: found " + processes.Length + " instances to stop");
+
+ foreach (Process process in processes)
+ {
+ Context.LogMessage("ApplicationInstaller[Uninstall]: Stopping process id: " + process.Id);
+ try
+ {
+ process.Kill();
+ }
+ catch (Exception ex)
+ {
+ Context.LogMessage("ApplicationInstaller[Uninstall]: Failed stopping process: "
+ + ex.Message + "\n" + ex.StackTrace);
+ }
+ }
+
+ Context.LogMessage("ApplicationInstaller[Uninstall]: done");
+ }
+
+ public override void Commit(IDictionary savedState)
+ {
+ base.Commit(savedState);
+ Context.LogMessage("ApplicationInstaller[Commit]");
+ }
+
+ public override void Rollback(IDictionary savedState)
+ {
+ base.Rollback(savedState);
+ Context.LogMessage("ApplicationInstaller[Rollback]");
+ }
+ }
+}
diff --git a/setup/HudsonTrayTracker.Setup.CustomActions/FileVersion.cs b/setup/JenkinsTray.Setup.CustomActions/FileVersion.cs
similarity index 100%
rename from setup/HudsonTrayTracker.Setup.CustomActions/FileVersion.cs
rename to setup/JenkinsTray.Setup.CustomActions/FileVersion.cs
diff --git a/setup/HudsonTrayTracker.Setup.CustomActions/HudsonTrayTracker.Setup.CustomActions.csproj b/setup/JenkinsTray.Setup.CustomActions/JenkinsTray.Setup.CustomActions.csproj
similarity index 97%
rename from setup/HudsonTrayTracker.Setup.CustomActions/HudsonTrayTracker.Setup.CustomActions.csproj
rename to setup/JenkinsTray.Setup.CustomActions/JenkinsTray.Setup.CustomActions.csproj
index 7d22488..612cdb0 100644
--- a/setup/HudsonTrayTracker.Setup.CustomActions/HudsonTrayTracker.Setup.CustomActions.csproj
+++ b/setup/JenkinsTray.Setup.CustomActions/JenkinsTray.Setup.CustomActions.csproj
@@ -1,116 +1,116 @@
-
-
-
- Debug
- AnyCPU
- 9.0.30729
- 2.0
- {95AA7347-A21A-4F09-80DF-D9797B0FA997}
- Library
- Properties
- JenkinsTray.Setup.CustomActions
- JenkinsTray.Setup.CustomActions
- v2.0
- 512
-
-
- 3.5
-
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
- AllRules.ruleset
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- AllRules.ruleset
-
-
- true
- bin\x86\Debug\
- DEBUG;TRACE
- full
- x86
- prompt
- AllRules.ruleset
-
-
- bin\x86\Release\
- TRACE
- true
- pdbonly
- x86
- prompt
- AllRules.ruleset
-
-
-
-
-
-
-
-
-
-
-
- Properties\VersionInfo.cs
-
-
- Component
-
-
-
-
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- true
-
-
- False
- Windows Installer 3.1
- true
-
-
-
-
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {95AA7347-A21A-4F09-80DF-D9797B0FA997}
+ Library
+ Properties
+ JenkinsTray.Setup.CustomActions
+ JenkinsTray.Setup.CustomActions
+ v2.0
+ 512
+
+
+ 3.5
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ AllRules.ruleset
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ AllRules.ruleset
+
+
+ true
+ bin\x86\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ prompt
+ AllRules.ruleset
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ prompt
+ AllRules.ruleset
+
+
+
+
+
+
+
+
+
+
+
+ Properties\VersionInfo.cs
+
+
+ Component
+
+
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ true
+
+
+ False
+ Windows Installer 3.1
+ true
+
+
+
+
\ No newline at end of file
diff --git a/setup/HudsonTrayTracker.Setup.CustomActions/Properties/AssemblyInfo.cs b/setup/JenkinsTray.Setup.CustomActions/Properties/AssemblyInfo.cs
similarity index 97%
rename from setup/HudsonTrayTracker.Setup.CustomActions/Properties/AssemblyInfo.cs
rename to setup/JenkinsTray.Setup.CustomActions/Properties/AssemblyInfo.cs
index c6579d6..3a0d622 100644
--- a/setup/HudsonTrayTracker.Setup.CustomActions/Properties/AssemblyInfo.cs
+++ b/setup/JenkinsTray.Setup.CustomActions/Properties/AssemblyInfo.cs
@@ -1,31 +1,31 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 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("JenkinsTray.Setup.CustomActions")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[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("ac4e74df-2018-4b0e-b22c-9aed1b4f9b98")]
-
-// 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.*")]
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 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("JenkinsTray.Setup.CustomActions")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[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("ac4e74df-2018-4b0e-b22c-9aed1b4f9b98")]
+
+// 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.*")]
diff --git a/setup/HudsonTrayTracker.WixSetup.sln b/setup/JenkinsTray.WixSetup.sln
similarity index 72%
rename from setup/HudsonTrayTracker.WixSetup.sln
rename to setup/JenkinsTray.WixSetup.sln
index 83a15b0..9f7ff6d 100644
--- a/setup/HudsonTrayTracker.WixSetup.sln
+++ b/setup/JenkinsTray.WixSetup.sln
@@ -1,28 +1,28 @@
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "HudsonTrayTracker.WixSetup", "HudsonTrayTracker.WixSetup\HudsonTrayTracker.WixSetup.wixproj", "{4839B061-A1DF-4F9F-852E-95F534D949BB}"
- ProjectSection(ProjectDependencies) = postProject
- {95AA7347-A21A-4F09-80DF-D9797B0FA997} = {95AA7347-A21A-4F09-80DF-D9797B0FA997}
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HudsonTrayTracker.Setup.CustomActions", "HudsonTrayTracker.Setup.CustomActions\HudsonTrayTracker.Setup.CustomActions.csproj", "{95AA7347-A21A-4F09-80DF-D9797B0FA997}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x86 = Debug|x86
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4839B061-A1DF-4F9F-852E-95F534D949BB}.Debug|x86.ActiveCfg = Debug|x86
- {4839B061-A1DF-4F9F-852E-95F534D949BB}.Debug|x86.Build.0 = Debug|x86
- {4839B061-A1DF-4F9F-852E-95F534D949BB}.Release|x86.ActiveCfg = Release|x86
- {4839B061-A1DF-4F9F-852E-95F534D949BB}.Release|x86.Build.0 = Release|x86
- {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Debug|x86.ActiveCfg = Debug|x86
- {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Debug|x86.Build.0 = Debug|x86
- {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Release|x86.ActiveCfg = Release|x86
- {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "JenkinsTray.WixSetup", "JenkinsTray.WixSetup\JenkinsTray.WixSetup.wixproj", "{4839B061-A1DF-4F9F-852E-95F534D949BB}"
+ ProjectSection(ProjectDependencies) = postProject
+ {95AA7347-A21A-4F09-80DF-D9797B0FA997} = {95AA7347-A21A-4F09-80DF-D9797B0FA997}
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JenkinsTray.Setup.CustomActions", "JenkinsTray.Setup.CustomActions\JenkinsTray.Setup.CustomActions.csproj", "{95AA7347-A21A-4F09-80DF-D9797B0FA997}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {4839B061-A1DF-4F9F-852E-95F534D949BB}.Debug|x86.ActiveCfg = Debug|x86
+ {4839B061-A1DF-4F9F-852E-95F534D949BB}.Debug|x86.Build.0 = Debug|x86
+ {4839B061-A1DF-4F9F-852E-95F534D949BB}.Release|x86.ActiveCfg = Release|x86
+ {4839B061-A1DF-4F9F-852E-95F534D949BB}.Release|x86.Build.0 = Release|x86
+ {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Debug|x86.ActiveCfg = Debug|x86
+ {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Debug|x86.Build.0 = Debug|x86
+ {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Release|x86.ActiveCfg = Release|x86
+ {95AA7347-A21A-4F09-80DF-D9797B0FA997}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/setup/HudsonTrayTracker.WixSetup/HudsonTrayTracker.WixSetup.wixproj b/setup/JenkinsTray.WixSetup/JenkinsTray.WixSetup.wixproj
similarity index 90%
rename from setup/HudsonTrayTracker.WixSetup/HudsonTrayTracker.WixSetup.wixproj
rename to setup/JenkinsTray.WixSetup/JenkinsTray.WixSetup.wixproj
index 3d2005e..83e484c 100644
--- a/setup/HudsonTrayTracker.WixSetup/HudsonTrayTracker.WixSetup.wixproj
+++ b/setup/JenkinsTray.WixSetup/JenkinsTray.WixSetup.wixproj
@@ -1,61 +1,61 @@
-
-
-
- Debug
- x86
- {4839b061-a1df-4f9f-852e-95f534d949bb}
- 2.0
- JenkinsTray
- Package
- $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
- $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
-
-
- bin\$(Configuration)\
- obj\$(Configuration)\
- Debug
-
-
- bin\$(Configuration)\
- obj\$(Configuration)\
-
-
-
-
-
-
-
- $(WixExtDir)\WixUtilExtension.dll
- WixUtilExtension
-
-
- $(WixExtDir)\WixUIExtension.dll
- WixUIExtension
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Debug
+ x86
+ {4839b061-a1df-4f9f-852e-95f534d949bb}
+ 2.0
+ JenkinsTray
+ Package
+ $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets
+ $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets
+
+
+ bin\$(Configuration)\
+ obj\$(Configuration)\
+ Debug
+
+
+ bin\$(Configuration)\
+ obj\$(Configuration)\
+
+
+
+
+
+
+
+ $(WixExtDir)\WixUtilExtension.dll
+ WixUtilExtension
+
+
+ $(WixExtDir)\WixUIExtension.dll
+ WixUIExtension
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/setup/HudsonTrayTracker.WixSetup/HudsonTrayTracker.wxs b/setup/JenkinsTray.WixSetup/JenkinsTray.wxs
similarity index 96%
rename from setup/HudsonTrayTracker.WixSetup/HudsonTrayTracker.wxs
rename to setup/JenkinsTray.WixSetup/JenkinsTray.wxs
index d7dd20d..fc4018d 100644
--- a/setup/HudsonTrayTracker.WixSetup/HudsonTrayTracker.wxs
+++ b/setup/JenkinsTray.WixSetup/JenkinsTray.wxs
@@ -1,240 +1,240 @@
-
-
-
-
-
-
-
- NOT NEWERVERSIONDETECTED OR Installed
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
- "1"]]>
-
- WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed
- 1
-
- 1
-
- 1
- 1
- NOT WIXUI_DONTVALIDATEPATH
- "1"]]>
- WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"
- 1
- 1
-
- NOT Installed
- Installed
-
- 1
-
- 1
- 1
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
- $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
-
- $cmp0FAE03C65D96ED1D021C482BB95EC17C=2
- $cmp0FAE03C65D96ED1D021C482BB95EC17C=2
-
- $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
- $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
-
- $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
- $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
-
-
-
+
+
+
+
+
+
+
+ NOT NEWERVERSIONDETECTED OR Installed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ "1"]]>
+
+ WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed
+ 1
+
+ 1
+
+ 1
+ 1
+ NOT WIXUI_DONTVALIDATEPATH
+ "1"]]>
+ WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"
+ 1
+ 1
+
+ NOT Installed
+ Installed
+
+ 1
+
+ 1
+ 1
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
+
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C=2
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C=2
+
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
+
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
+ $cmp0FAE03C65D96ED1D021C482BB95EC17C>2
+
+
+
diff --git a/setup/HudsonTrayTracker.WixSetup/src/InstallUtilConfig.xml b/setup/JenkinsTray.WixSetup/src/InstallUtilConfig.xml
similarity index 95%
rename from setup/HudsonTrayTracker.WixSetup/src/InstallUtilConfig.xml
rename to setup/JenkinsTray.WixSetup/src/InstallUtilConfig.xml
index 1da48bd..cb272b5 100644
--- a/setup/HudsonTrayTracker.WixSetup/src/InstallUtilConfig.xml
+++ b/setup/JenkinsTray.WixSetup/src/InstallUtilConfig.xml
@@ -1,6 +1,6 @@
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/setup/HudsonTrayTracker.WixSetup/src/InstallUtilLib.dll b/setup/JenkinsTray.WixSetup/src/InstallUtilLib.dll
similarity index 100%
rename from setup/HudsonTrayTracker.WixSetup/src/InstallUtilLib.dll
rename to setup/JenkinsTray.WixSetup/src/InstallUtilLib.dll