diff --git a/BandObjectLib/Properties/AssemblyInfo.cs b/BandObjectLib/Properties/AssemblyInfo.cs
index 746c757..da57327 100644
--- a/BandObjectLib/Properties/AssemblyInfo.cs
+++ b/BandObjectLib/Properties/AssemblyInfo.cs
@@ -30,7 +30,7 @@
[assembly: AssemblyCopyright("Copyright (C) 2007-2021")]
[assembly: AssemblyTrademark("indiff")]
[assembly: AssemblyCulture("")]
-[assembly: AssemblyFileVersion("1.5.5.2")]
+[assembly: AssemblyFileVersion("1.5.5.3")]
//
// Version information for an assembly consists of the following four values:
//
@@ -42,7 +42,7 @@
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.5.5.2")]
+[assembly: AssemblyVersion("1.5.5.3")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
diff --git a/Installer/Installer.wixproj b/Installer/Installer.wixproj
index 93581bc..344c112 100644
--- a/Installer/Installer.wixproj
+++ b/Installer/Installer.wixproj
@@ -24,7 +24,7 @@
False
ICE80
1076;1118
- en-US;zh-CN;de-DE
+ en-US;zh-CN;de-DE;pt-BR
@@ -43,6 +43,7 @@
+
@@ -59,4 +60,4 @@
-->
-
+
\ No newline at end of file
diff --git a/Installer/Installer.wxs b/Installer/Installer.wxs
index 97aaf46..7819497 100644
--- a/Installer/Installer.wxs
+++ b/Installer/Installer.wxs
@@ -23,13 +23,13 @@
-
-
+
+
-
+
-
+
+
diff --git a/Plugins/QTQuick/QTQuick.cs b/Plugins/QTQuick/QTQuick.cs
index e6ab6f9..56371ee 100644
--- a/Plugins/QTQuick/QTQuick.cs
+++ b/Plugins/QTQuick/QTQuick.cs
@@ -37,6 +37,7 @@
using System.Management.Automation.Runspaces;
using System.Management;
using System.Threading;
+using Microsoft.Win32;
namespace Qwop {
///
@@ -62,8 +63,15 @@ public class QTQuickButton : IBarDropButton
private bool fFirstMenuDropDown = true;
private string text = "";
+ private string REG_ENV_PATH = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
private List lstSelectedItems = new List();
+ const int HWND_BROADCAST = 0xffff;
+ const uint WM_SETTINGCHANGE = 0x001a;
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg, UIntPtr wParam, string lParam);
+
public static void Uninstall() {
// add codes here to delete saved settings, files, or registry keys if any.
@@ -237,11 +245,17 @@ public void OnDropDownOpening(ToolStripDropDownMenu menu) {
menu.Items.Add(new ToolStripMenuItem("\\п\\ϵͳ"));
menu.Items.Add(new ToolStripMenuItem("\\п\\Ի"));
menu.Items.Add(new ToolStripMenuItem("\\п\\"));
- menu.Items.Add(new ToolStripMenuItem("õǰĿ¼JAVA_HOME"));
- menu.Items.Add(new ToolStripMenuItem("õǰĿ¼M2_HOME"));
+ // menu.Items.Add(new ToolStripMenuItem("õǰĿ¼JAVA_HOME"));
+ // menu.Items.Add(new ToolStripMenuItem("õǰĿ¼M2_HOME"));
menu.Items.Add(new ToolStripMenuItem("鿴ϵͳϢ"));
menu.Items.Add(new ToolStripMenuItem("Դ"));
menu.Items.Add(new ToolStripMenuItem("ػ"));
+
+ // menu.Items.Add(new ToolStripMenuItem("õǰĿ¼ANT_HOME"));
+ // menu.Items.Add(new ToolStripMenuItem("õǰĿ¼MVND_HOME"));
+
+ menu.Items.Add(new ToolStripMenuItem("Path"));
+
// menu.Items.Add(new ToolStripMenuItem("Test selection"));
fFirstMenuDropDown = false;
@@ -317,7 +331,53 @@ public void OnDropDownItemClick(ToolStripItem item, MouseButtons mouseButton) {
path = "::{7007ACC7-3202-11D1-AAD2-00805FC1270E}";
break;
}
- case 4:
+ case 444: {
+ string selectedPath = pluginServer.SelectedTab.Address.Path;
+ string binPath = Path.Combine(selectedPath, "bin");
+ string libPath = Path.Combine(selectedPath, "lib");
+ string toolsJar = Path.Combine(libPath, "tools.jar");
+ string dtJar = Path.Combine(libPath, "dt.jar");
+
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("ǰĿ¼Ѿɾ");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("binĿ¼");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+
+ if (String.IsNullOrEmpty(libPath) || !Directory.Exists(libPath))
+ {
+ MessageBox.Show("libĿ¼");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("JAVA_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath) );
+ if (File.Exists(toolsJar) && File.Exists(dtJar))
+ {
+ envKey.SetValue("CLASSPATH", @".;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;" );
+ }
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("JAVA_HOMEɹ");
+ }
+ break;
+ }
+ case 44:
{
// 3. õǰĿ¼JAVA_HOME
string selectedPath = pluginServer.SelectedTab.Address.Path;
@@ -400,17 +460,14 @@ public void OnDropDownItemClick(ToolStripItem item, MouseButtons mouseButton) {
MessageBox.Show("JAVA_HOMEɹ");
break;
}
- case 5:
+ case 55:
{
// 5. õǰĿ¼M2_HOME
-
- // 6. õǰĿ¼JAVA_HOME
string selectedPath = pluginServer.SelectedTab.Address.Path;
string binPath = Path.Combine(selectedPath, "bin");
string mvnCmd = Path.Combine(binPath, "mvn.cmd");
-
if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
{
MessageBox.Show("ǰĿ¼Ѿɾ");
@@ -437,7 +494,7 @@ public void OnDropDownItemClick(ToolStripItem item, MouseButtons mouseButton) {
}
// Environment.SetEnvironmentVariable("M2_HOME", selectedPath, EnvironmentVariableTarget.Machine);
-
+ /*
PowerShell.Create().AddCommand("setx")
.AddParameter("M2_HOME", selectedPath )
.AddParameter("/M")
@@ -452,21 +509,30 @@ public void OnDropDownItemClick(ToolStripItem item, MouseButtons mouseButton) {
.AddParameter("/M")
.Invoke();
Thread.Sleep(800);
+ */
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
- MessageBox.Show("M2_HOMEɹ");
+ envKey.SetValue("M2_HOME", selectedPath);
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("M2_HOMEɹ");
+ }
break;
}
- case 6:
+ case 4:
{
- // 6. 鿴ϵͳϢ
+ // 4. 鿴ϵͳϢ
string msinfo32 = Environment.GetEnvironmentVariable("systemroot") + "\\System32\\msinfo32.exe";
Process.Start(msinfo32);
break;
}
- case 7:
+ case 5:
{
- // 7. Դ
+ // 5. Դ
/*
foreach (Process p in Process.GetProcesses())
{
@@ -482,16 +548,151 @@ public void OnDropDownItemClick(ToolStripItem item, MouseButtons mouseButton) {
Process.Start("explorer.exe");
break;
}
- case 8:
+ case 6:
{
- // 8. ػ
+ // 6. ػ
IntPtr handle = GetShellTrayWnd();
CloseExplorer(handle, 1);
// PInvoke.PostMessage(hwndExplr, WM.CLOSE, IntPtr.Zero, (IntPtr)nCode)
Thread.Sleep(800);
break;
- }
-
+ }
+ case 9:
+ {
+ // 9. õǰĿ¼ANT_HOME
+ string selectedPath = pluginServer.SelectedTab.Address.Path;
+ string binPath = Path.Combine(selectedPath, "bin");
+ string antCmd = Path.Combine(binPath, "ant.cmd");
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("ǰĿ¼Ѿɾ");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("binĿ¼");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(antCmd) || !File.Exists(antCmd))
+ {
+ MessageBox.Show("antCmd");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("ANT_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("ANT_HOMEɹ");
+ }
+ break;
+ }
+ case 10:
+ {
+ // 10. õǰĿ¼MVND_HOME
+ string selectedPath = pluginServer.SelectedTab.Address.Path;
+ string binPath = Path.Combine(selectedPath, "bin");
+ string mvndexe = Path.Combine(binPath, "mvnd.exe");
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("ǰĿ¼Ѿɾ");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("binĿ¼");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(mvndexe) || !File.Exists(mvndexe))
+ {
+ MessageBox.Show("mvndexe");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("MVND_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("MVND_HOMEɹ");
+ }
+ break;
+ }
+
+
+ case 7:
+ {
+ // 11. Աʽ
+ string selectedPath = pluginServer.SelectedTab.Address.Path;
+ string binPath = Path.Combine(selectedPath, "bin");
+ string mvndexe = Path.Combine(binPath, "mvnd.exe");
+ // string exePath = Path.Combine(Environment.ExpandEnvironmentVariables("%PROGRAMDATA%"), @"\QTTabBar\SetHome.exe");
+ // string exePath = @"%PROGRAMDATA%\QTTabBar\SetHome.exe";
+
+ string exePath = @"C:\ProgramData\QTTabBar\SetHome.exe";
+ if (!File.Exists(exePath))
+ {
+ exePath = @"D:\ProgramData\QTTabBar\SetHome.exe";
+ }
+ if (!File.Exists(exePath))
+ {
+ exePath = @"E:\ProgramData\QTTabBar\SetHome.exe";
+ }
+ if (!File.Exists(exePath))
+ {
+ exePath = @"F:\ProgramData\QTTabBar\SetHome.exe";
+ }
+ if (!File.Exists(exePath))
+ {
+ exePath = @"G:\ProgramData\QTTabBar\SetHome.exe";
+ }
+ if (!File.Exists(exePath))
+ {
+ exePath = @"H:\ProgramData\QTTabBar\SetHome.exe";
+ }
+
+
+ if (File.Exists(exePath))
+ {
+ var process = new Process
+ {
+ StartInfo =
+ {
+ WorkingDirectory = selectedPath,
+ UseShellExecute = true,
+ FileName = exePath,
+ CreateNoWindow = true,
+ Verb = "runas"
+ }
+ };
+ process.Start();
+ }
+ else {
+ MessageBox.Show( "δҵִļSetHome");
+ }
+ break;
+ }
}
// pluginServer.CreateTab(new Address(mydocument), -1, false, true);
@@ -558,6 +759,38 @@ public void OnDropDownItemClick(ToolStripItem item, MouseButtons mouseButton) {
}*/
}
+ private static string joinDevPath(string oldPath)
+ {
+ return oldPath
+ + @"%JAVA_HOME%\bin;"
+ + @"%M2_HOME%\bin;"
+ + @"%MVND_HOME%\bin;"
+ + @"%ANT_HOME%\bin;";
+ }
+
+ private static string getOldPath(RegistryKey envKey)
+ {
+ object value = envKey.GetValue("PATH");
+ string oldPath = value.ToString();
+ oldPath = oldPath.Replace(@"%JAVA_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%M2_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%ANT_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%MVND_HOME%\bin;", "");
+
+
+ oldPath = oldPath.Replace(@"%JAVA_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%M2_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%ANT_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%MVND_HOME%\bin", "");
+
+
+ if (!oldPath.EndsWith(";"))
+ {
+ oldPath = oldPath + ";";
+ }
+ return oldPath;
+ }
+
#endregion
// internal static readonly bool IsWin7 = Environment.OSVersion.Version >= new Version(6, 1);
diff --git a/QTPluginLib/Properties/AssemblyInfo.cs b/QTPluginLib/Properties/AssemblyInfo.cs
index 67d9e6e..b8928e3 100644
--- a/QTPluginLib/Properties/AssemblyInfo.cs
+++ b/QTPluginLib/Properties/AssemblyInfo.cs
@@ -1,51 +1,51 @@
-// This file is part of QTTabBar, a shell extension for Microsoft
-// Windows Explorer.
-// Copyright (C) 2007-2010 Quizo, Paul Accisano
-//
-// QTTabBar is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// QTTabBar is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with QTTabBar. If not, see .
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
-// アセンブリに関連付けられている情報を変更するには、
-// これらの属性値を変更してください。
-[assembly: AssemblyTitle("QTPluginLib")]
-[assembly: AssemblyDescription("Plugin library for QTTabBar")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("indiff")]
-[assembly: AssemblyProduct("QTTabBar")]
-[assembly: AssemblyCopyright("Copyright (C) 2007-2021")]
-[assembly: AssemblyTrademark("indiff")]
+// This file is part of QTTabBar, a shell extension for Microsoft
+// Windows Explorer.
+// Copyright (C) 2007-2010 Quizo, Paul Accisano
+//
+// QTTabBar is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// QTTabBar is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with QTTabBar. If not, see .
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
+// アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更してください。
+[assembly: AssemblyTitle("QTPluginLib")]
+[assembly: AssemblyDescription("Plugin library for QTTabBar")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("indiff")]
+[assembly: AssemblyProduct("QTTabBar")]
+[assembly: AssemblyCopyright("Copyright (C) 2007-2021")]
+[assembly: AssemblyTrademark("indiff")]
[assembly: AssemblyCulture("")]
-[assembly: AssemblyFileVersion("1.5.5.2")]
-
-// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントには
-// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
-// その型の ComVisible 属性を true に設定してください。
-[assembly: ComVisible(false)]
-
-// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です
-[assembly: Guid("70e873e1-b593-42d5-95aa-bd19fc2d59b6")]
-
-// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// すべての値を指定するか、下のように '*' を使ってリビジョンおよびビルド番号を
+[assembly: AssemblyFileVersion("1.5.5.3")]
+
+// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントには
+// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
+// その型の ComVisible 属性を true に設定してください。
+[assembly: ComVisible(false)]
+
+// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です
+[assembly: Guid("70e873e1-b593-42d5-95aa-bd19fc2d59b6")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// すべての値を指定するか、下のように '*' を使ってリビジョンおよびビルド番号を
// 既定値にすることができます:
-[assembly: AssemblyVersion("1.5.5.2")]
+[assembly: AssemblyVersion("1.5.5.3")]
diff --git a/QTTabBar Rebirth.sln b/QTTabBar Rebirth.sln
index 3aefdd8..50d8d79 100644
--- a/QTTabBar Rebirth.sln
+++ b/QTTabBar Rebirth.sln
@@ -85,6 +85,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TurnOffRepeat", "Plugins\Tu
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ActivateByMouseHover", "Plugins\ActivateByMouseHover\ActivateByMouseHover.csproj", "{D0CF04D8-FA8A-45F1-8402-43C17A8D22F2}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetHome", "SetHome\SetHome.csproj", "{02E9733C-7267-47B3-A524-4736AC6A648B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug (No Plugins)|Any CPU = Debug (No Plugins)|Any CPU
@@ -857,6 +859,42 @@ Global
{D0CF04D8-FA8A-45F1-8402-43C17A8D22F2}.x86 QT Only|Mixed Platforms.Build.0 = Release|Any CPU
{D0CF04D8-FA8A-45F1-8402-43C17A8D22F2}.x86 QT Only|x64.ActiveCfg = Release|Any CPU
{D0CF04D8-FA8A-45F1-8402-43C17A8D22F2}.x86 QT Only|x86.ActiveCfg = Release|Any CPU
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Plugins)|Any CPU.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Plugins)|Mixed Platforms.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Plugins)|Mixed Platforms.Build.0 = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Plugins)|x64.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Plugins)|x86.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Plugins)|x86.Build.0 = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Reg)|Any CPU.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Reg)|Mixed Platforms.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Reg)|Mixed Platforms.Build.0 = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Reg)|x64.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Reg)|x86.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug (No Reg)|x86.Build.0 = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug|x64.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug|x86.ActiveCfg = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Debug|x86.Build.0 = Debug|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Installer|Any CPU.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Installer|Mixed Platforms.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Installer|Mixed Platforms.Build.0 = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Installer|x64.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Installer|x86.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Installer|x86.Build.0 = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Release|Any CPU.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Release|Mixed Platforms.Build.0 = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Release|x64.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Release|x86.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.Release|x86.Build.0 = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.x86 QT Only|Any CPU.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.x86 QT Only|Mixed Platforms.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.x86 QT Only|Mixed Platforms.Build.0 = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.x86 QT Only|x64.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.x86 QT Only|x86.ActiveCfg = Release|x86
+ {02E9733C-7267-47B3-A524-4736AC6A648B}.x86 QT Only|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/QTTabBar/Config.cs b/QTTabBar/Config.cs
index 1f12898..198d6cb 100644
--- a/QTTabBar/Config.cs
+++ b/QTTabBar/Config.cs
@@ -1,4 +1,11 @@
-// This file is part of QTTabBar, a shell extension for Microsoft
+/* File Info
+ * Author: your name
+ * CreateTime: 2021/1/5下午1:58:08
+ * LastEditor: your name
+ * ModifyTime: 2021/8/28下午7:47:22
+ * Description:
+*/
+// This file is part of QTTabBar, a shell extension for Microsoft
// Windows Explorer.
// Copyright (C) 2007-2010 Quizo, Paul Accisano
//
@@ -54,6 +61,9 @@ public static Font ToFont(XmlSerializableFont xmlSerializableFont) {
}
}
+ /*
+ * @描述: 标签位置
+ */
public enum TabPos {
Rightmost,
Right,
@@ -62,12 +72,18 @@ public enum TabPos {
LastActive,
}
+ /*
+ * @描述: 拉伸模式
+ */
public enum StretchMode {
Full,
Real,
Tile,
}
+ /*
+ * @描述: 鼠标的目标
+ */
public enum MouseTarget {
Anywhere,
Tab,
@@ -77,6 +93,9 @@ public enum MouseTarget {
ExplorerBackground
}
+ /*
+ * @描述: 鼠标弦
+ */
[Flags]
public enum MouseChord {
None = 0,
@@ -91,6 +110,9 @@ public enum MouseChord {
X2 = 256,
}
+ /*
+ * @描述: 绑定动作
+ */
// WARNING
// reordering these will break existing settings.
public enum BindAction
@@ -198,9 +220,6 @@ public enum BindAction
[Serializable]
public class Config {
-/*插件管理*/
-/*语言配置*/
-/*关于信息*/
// Shortcuts to the loaded config, for convenience.
public static _Window Window { get { return ConfigManager.LoadedConfig.window; } } /*窗口行为*/
public static _Tabs Tabs { get { return ConfigManager.LoadedConfig.tabs; } } /*标签行为*/
@@ -646,35 +665,42 @@ public _Mouse() {
/* qwop's default value. */
MouseScrollsHotWnd = false;
- GlobalMouseActions = new Dictionary {
+ // 全局鼠标动作
+ GlobalMouseActions = new Dictionary {
{MouseChord.X1, BindAction.GoBack},
{MouseChord.X2, BindAction.GoForward},
{MouseChord.X1 | MouseChord.Ctrl, BindAction.GoFirst},
{MouseChord.X2 | MouseChord.Ctrl, BindAction.GoLast}
};
+ // 标签动作
TabActions = new Dictionary {
{MouseChord.Middle, BindAction.CloseTab},
{MouseChord.Ctrl | MouseChord.Left, BindAction.LockTab},
{MouseChord.Double, BindAction.UpOneLevelTab},
};
- BarActions = new Dictionary {
+ // 标签Bar处动作
+ BarActions = new Dictionary {
{MouseChord.Double, BindAction.NewTab},
{MouseChord.Middle, BindAction.RestoreLastClosed},
{MouseChord.Ctrl | MouseChord.Middle, BindAction.TearOffCurrent}
};
+ // 文件夹链接动作
LinkActions = new Dictionary {
- {MouseChord.None, BindAction.ItemsOpenInNewTabNoSel},
+ {MouseChord.None, BindAction.ItemsOpenInNewTabNoSel},
{MouseChord.Middle, BindAction.ItemOpenInNewTab},
{MouseChord.Ctrl | MouseChord.Middle, BindAction.ItemOpenInNewWindow}
};
- ItemActions = new Dictionary {
+ // 资源管理器空白处
+ ItemActions = new Dictionary {
{MouseChord.Middle, BindAction.ItemOpenInNewTab},
{MouseChord.Ctrl | MouseChord.Middle, BindAction.ItemOpenInNewTabNoSel}
};
- MarginActions = new Dictionary {
+ // 资源管理器空白处
+ MarginActions = new Dictionary {
{ MouseChord.Double, BindAction.UpOneLevel}
// add by qwop //
,{ MouseChord.Middle, BindAction.BrowseFolder}
+ // ctrl + 双击 打开命令提示符
,{ ( MouseChord) 66, BindAction.OpenCmd } // === {MouseChord.Ctrl | MouseChord.Double, BindAction.OpenCmd}
,{ MouseChord.Ctrl | MouseChord.Middle, BindAction.ItemsOpenInNewTabNoSel}
// add by qwop //
@@ -751,11 +777,11 @@ public _Lang() {
// modify by qwop at http://q.cnblogs.com/q/14857/ // en-US
if (System.Globalization.CultureInfo.InstalledUICulture.Name.Equals("zh-CN"))
{
- // BuiltInLangSelectedIndex = 1;
- // BuiltInLang = "简体中文";
+ BuiltInLangSelectedIndex = 1;
+ BuiltInLang = "简体中文";
- BuiltInLangSelectedIndex = 2;
- BuiltInLang = "German";
+ // BuiltInLangSelectedIndex = 2;
+ // BuiltInLang = "German";
} else if (System.Globalization.CultureInfo.InstalledUICulture.Name.Equals("de-DE"))
{
BuiltInLangSelectedIndex = 2;
diff --git a/QTTabBar/CreateNewGroupForm.cs b/QTTabBar/CreateNewGroupForm.cs
index cb12b36..bf9d940 100644
--- a/QTTabBar/CreateNewGroupForm.cs
+++ b/QTTabBar/CreateNewGroupForm.cs
@@ -29,7 +29,7 @@ internal sealed class CreateNewGroupForm : Form {
private string newPath;
private QTabControl.QTabCollection Tabs;
private TextBox textBox1;
-
+
public CreateNewGroupForm(string currentPath, QTabControl.QTabCollection tabs) {
newPath = currentPath;
Tabs = tabs;
diff --git a/QTTabBar/Properties/AssemblyInfo.cs b/QTTabBar/Properties/AssemblyInfo.cs
index d219576..9a06b6a 100644
--- a/QTTabBar/Properties/AssemblyInfo.cs
+++ b/QTTabBar/Properties/AssemblyInfo.cs
@@ -55,8 +55,8 @@
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.5.5.2")]
-[assembly: AssemblyFileVersion("1.5.5.2")] // edit this
+[assembly: AssemblyVersion("1.5.5.3")]
+[assembly: AssemblyFileVersion("1.5.5.3")] // edit this
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
diff --git a/QTTabBar/QTTabBarClass.cs b/QTTabBar/QTTabBarClass.cs
index 64110e2..79d5d07 100644
--- a/QTTabBar/QTTabBarClass.cs
+++ b/QTTabBar/QTTabBarClass.cs
@@ -3794,6 +3794,7 @@ private void InitializeTabMenu(bool fText) {
}
}
+ // װ
private void InstallHooks() {
hookProc_Key = new HookProc(CallbackKeyboardProc);
hookProc_Mouse = new HookProc(CallbackMouseProc);
diff --git a/SetHome/Properties/AssemblyInfo.cs b/SetHome/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..35765a8
--- /dev/null
+++ b/SetHome/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过以下
+// 特性集控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("SetHome")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("SetHome")]
+[assembly: AssemblyCopyright("Copyright © 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 使此程序集中的类型
+// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
+// 则将该类型上的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("0bf24a71-b379-46c9-be2c-c5e7fcb2e7a9")]
+
+// 程序集的版本信息由下面四个值组成:
+//
+// 主版本
+// 次版本
+// 内部版本号
+// 修订号
+//
+// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
+// 方法是按如下所示使用“*”:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SetHome/Properties/Resources.Designer.cs b/SetHome/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..1b1ac4e
--- /dev/null
+++ b/SetHome/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本: 4.0.30319.42000
+//
+// 对此文件的更改可能会导致不正确的行为,并且如果
+// 重新生成代码,这些更改将丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace SetHome.Properties
+{
+
+
+ ///
+ /// 一个强类型的资源类,用于查找本地化的字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// 返回此类使用的、缓存的 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SetHome.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 为所有资源查找重写当前线程的 CurrentUICulture 属性,
+ /// 方法是使用此强类型资源类。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/SetHome/Properties/Resources.resx b/SetHome/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/SetHome/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/SetHome/Properties/Settings.Designer.cs b/SetHome/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..d5b5754
--- /dev/null
+++ b/SetHome/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace SetHome.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/SetHome/Properties/Settings.settings b/SetHome/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/SetHome/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/SetHome/SetHome.cs b/SetHome/SetHome.cs
new file mode 100644
index 0000000..838caa8
--- /dev/null
+++ b/SetHome/SetHome.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace SetHome
+{
+ static class SetHome
+ {
+ ///
+ /// 应用程序的主入口点。
+ ///
+ [STAThread]
+ static void Main(string[] args)
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+
+ /**
+ * 当前用户是管理员的时候,直接启动应用程序
+ * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
+ */
+ //获得当前登录的Windows用户标示
+ System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
+ System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
+ //判断当前登录用户是否为管理员
+ if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
+ {
+ //如果是管理员,则直接运行
+ Application.Run(new SetHomeForm(args));
+ }
+ else
+ {
+ //创建启动对象
+ System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
+ startInfo.UseShellExecute = true;
+ startInfo.WorkingDirectory = Environment.CurrentDirectory;
+ startInfo.FileName = Application.ExecutablePath;
+ //设置启动动作,确保以管理员身份运行
+ startInfo.Verb = "runas";
+ try
+ {
+ System.Diagnostics.Process.Start(startInfo);
+ }
+ catch
+ {
+ return;
+ }
+ //退出
+ Application.Exit();
+ }
+
+
+
+ }
+ }
+}
diff --git a/SetHome/SetHome.csproj b/SetHome/SetHome.csproj
new file mode 100644
index 0000000..7836a3f
--- /dev/null
+++ b/SetHome/SetHome.csproj
@@ -0,0 +1,102 @@
+
+
+
+ Debug
+ x86
+ 8.0.30703
+ 2.0
+ {02E9733C-7267-47B3-A524-4736AC6A648B}
+ WinExe
+ Properties
+ SetHome
+ SetHome
+ v4.0
+ Client
+ 512
+
+
+ x86
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ x86
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ pen.ico
+
+
+
+
+
+
+
+
+
+ C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.ServiceModel.Web.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ SetHomeForm.cs
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SetHomeForm.cs
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SetHome/SetHomeForm.Designer.cs b/SetHome/SetHomeForm.Designer.cs
new file mode 100644
index 0000000..6f95c04
--- /dev/null
+++ b/SetHome/SetHomeForm.Designer.cs
@@ -0,0 +1,139 @@
+namespace SetHome
+{
+ partial class SetHomeForm
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 窗体设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SetHomeForm));
+ this.button1 = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.curTextBox = new System.Windows.Forms.TextBox();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(26, 60);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(105, 40);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "设置JavaHome";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(24, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(53, 12);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "当前目录";
+ //
+ // curTextBox
+ //
+ this.curTextBox.Location = new System.Drawing.Point(83, 6);
+ this.curTextBox.Name = "curTextBox";
+ this.curTextBox.Size = new System.Drawing.Size(325, 21);
+ this.curTextBox.TabIndex = 3;
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(26, 106);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(105, 40);
+ this.button2.TabIndex = 4;
+ this.button2.Text = "设置M2_HOME";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(26, 152);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(105, 40);
+ this.button3.TabIndex = 5;
+ this.button3.Text = "设置MVND_HOME";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(26, 198);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(105, 40);
+ this.button4.TabIndex = 6;
+ this.button4.Text = "设置ANT_HOME";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(162, 60);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(105, 40);
+ this.button5.TabIndex = 7;
+ this.button5.Text = "设置GRADLE_HOME";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // SetHomeForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(471, 270);
+ this.Controls.Add(this.button5);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.curTextBox);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.button1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "SetHomeForm";
+ this.Text = "设置环境变量";
+ this.Load += new System.EventHandler(this.SetHomeForm_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox curTextBox;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button5;
+ }
+}
+
diff --git a/SetHome/SetHomeForm.cs b/SetHome/SetHomeForm.cs
new file mode 100644
index 0000000..a9746ff
--- /dev/null
+++ b/SetHome/SetHomeForm.cs
@@ -0,0 +1,322 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.IO;
+using System.Media;
+using System.Runtime.InteropServices;
+using Microsoft.Win32;
+
+namespace SetHome
+{
+ public partial class SetHomeForm : Form
+ {
+ private string[] args;
+
+
+ const int HWND_BROADCAST = 0xffff;
+ const uint WM_SETTINGCHANGE = 0x001a;
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+ static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg,
+ UIntPtr wParam, string lParam);
+ private string REG_ENV_PATH = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
+
+ public SetHomeForm(string[] args)
+ {
+ this.args = args;
+ InitializeComponent();
+ }
+
+ private void SetHomeForm_Load(object sender, EventArgs e)
+ {
+ if (args.Length > 0)
+ {
+ this.curTextBox.Text = args[0];
+ }
+ else
+ {
+ // 获取当前 工作目录
+ this.curTextBox.Text = System.Environment.CurrentDirectory;
+ }
+
+ }
+
+
+
+ private string filterEmpty(string ignoreFileName)
+ {
+ HashSet hs = new HashSet();
+ string oldpath = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
+ // Environment.GetEnvironmentVariable("PATH");
+ string[] sArray = oldpath.Split(';');
+ if (sArray.Length == 0)
+ {
+ return "";
+ }
+ foreach (string stmp in sArray)
+ {
+
+ if (!string.IsNullOrEmpty(stmp.Trim()) && !File.Exists(Path.Combine(stmp, ignoreFileName)))
+ {
+ hs.Add(stmp);
+ }
+ }
+ string[] strs = hs.ToArray();
+ oldpath = String.Join(";", strs);
+ return oldpath;
+ }
+
+
+ private static string joinDevPath(string oldPath)
+ {
+ return oldPath
+ + @"%JAVA_HOME%\bin;"
+ + @"%M2_HOME%\bin;"
+ + @"%MVND_HOME%\bin;"
+ + @"%ANT_HOME%\bin;"
+ + @"%GRADLE_HOME%\bin;"
+ ;
+ }
+
+ private static string getOldPath(RegistryKey envKey)
+ {
+ object value = envKey.GetValue("PATH");
+ string oldPath = value.ToString();
+ oldPath = oldPath.Replace(@"%JAVA_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%M2_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%ANT_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%MVND_HOME%\bin;", "");
+ oldPath = oldPath.Replace(@"%GRADLE_HOME%\bin;", "");
+
+ oldPath = oldPath.Replace(@"%JAVA_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%M2_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%ANT_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%MVND_HOME%\bin", "");
+ oldPath = oldPath.Replace(@"%GRADLE_HOME%\bin", "");
+
+
+ if (!oldPath.EndsWith(";"))
+ {
+ oldPath = oldPath + ";";
+ }
+ return oldPath;
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ // 3. 设置当前目录JAVA_HOME
+ string selectedPath = this.curTextBox.Text.Trim();
+ string binPath = Path.Combine(selectedPath, "bin");
+ string libPath = Path.Combine(selectedPath, "lib");
+ string toolsJar = Path.Combine(libPath, "tools.jar");
+ string dtJar = Path.Combine(libPath, "dt.jar");
+
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("当前目录已经删除");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("bin目录不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+
+ if (String.IsNullOrEmpty(libPath) || !Directory.Exists(libPath))
+ {
+ MessageBox.Show("lib目录不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("JAVA_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+ if (File.Exists(toolsJar) && File.Exists(dtJar))
+ {
+ envKey.SetValue("CLASSPATH", @".;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;");
+ }
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("设置JAVA_HOME成功");
+ }
+ }
+
+ private void button2_Click(object sender, EventArgs e)
+ {
+ string selectedPath = this.curTextBox.Text.Trim();
+ string binPath = Path.Combine(selectedPath, "bin");
+ string mvnCmd = Path.Combine(binPath, "mvn.cmd");
+
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("当前目录已经删除");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("bin目录不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(mvnCmd) || !File.Exists(mvnCmd))
+ {
+ MessageBox.Show("mvnCmd不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+
+ envKey.SetValue("M2_HOME", selectedPath);
+
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("设置M2_HOME成功");
+ }
+ }
+
+ private void button3_Click(object sender, EventArgs e)
+ {
+ // 10. 设置当前目录MVND_HOME
+ string selectedPath = this.curTextBox.Text.Trim();
+ string binPath = Path.Combine(selectedPath, "bin");
+ string mvndexe = Path.Combine(binPath, "mvnd.exe");
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("当前目录已经删除");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("bin目录不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(mvndexe) || !File.Exists(mvndexe))
+ {
+ MessageBox.Show("mvndexe不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("MVND_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("设置MVND_HOME成功");
+ }
+ }
+
+ private void button4_Click(object sender, EventArgs e)
+ {
+ // 设置当前目录ANT_HOME
+ string selectedPath = this.curTextBox.Text.Trim();
+ string binPath = Path.Combine(selectedPath, "bin");
+ string antCmd = Path.Combine(binPath, "ant.cmd");
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("当前目录已经删除");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("bin目录不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(antCmd) || !File.Exists(antCmd))
+ {
+ MessageBox.Show("antCmd不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("ANT_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("设置ANT_HOME成功");
+ }
+ }
+
+ private void button5_Click(object sender, EventArgs e)
+ {
+ // 设置当前目录ANT_HOME
+ string selectedPath = this.curTextBox.Text.Trim();
+ string binPath = Path.Combine(selectedPath, "bin");
+ string gradleBat = Path.Combine(binPath, "gradle.bat");
+
+ if (String.IsNullOrEmpty(selectedPath) || !Directory.Exists(selectedPath))
+ {
+ MessageBox.Show("当前目录已经删除");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(binPath) || !Directory.Exists(binPath))
+ {
+ MessageBox.Show("bin目录不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ if (String.IsNullOrEmpty(gradleBat) || !File.Exists(gradleBat))
+ {
+ MessageBox.Show("gradleBat不存在");
+ SystemSounds.Hand.Play();
+ return;
+ }
+
+
+ using (var envKey = Registry.LocalMachine.OpenSubKey(REG_ENV_PATH, true))
+ {
+ string oldPath = getOldPath(envKey);
+ envKey.SetValue("GRADLE_HOME", selectedPath);
+ envKey.SetValue("PATH", joinDevPath(oldPath));
+ SendNotifyMessage((IntPtr)HWND_BROADCAST, WM_SETTINGCHANGE, (UIntPtr)0, "Environment");
+ MessageBox.Show("设置GRADLE_HOME成功");
+ }
+ }
+ }
+}
diff --git a/SetHome/SetHomeForm.resx b/SetHome/SetHomeForm.resx
new file mode 100644
index 0000000..c8dc486
--- /dev/null
+++ b/SetHome/SetHomeForm.resx
@@ -0,0 +1,765 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAoAEBAQAAEABAAoAQAApgAAABAQAAABAAgAaAUAAM4BAAAQEAAAAQAgAGgEAAA2BwAAICAQAAEA
+ BADoAgAAngsAACAgAAABAAgAqAgAAIYOAAAgIAAAAQAgAKgQAAAuFwAAMDAQAAEABABoBgAA1icAADAw
+ AAABAAgAqA4AAD4uAAAwMAAAAQAgAKglAADmPAAAAAAAAAEAIAA4MwAAjmIAACgAAAAQAAAAIAAAAAEA
+ BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAMDAwAD/AP8A/wAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMSMgAA
+ AAAAEhESAAAAAAABIxJAAAAAAAERESMAAAAAABEhEhAAAAAAARERAAAAAAAAERABEAAAAAABABEQAAAA
+ AAABEQAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AADA/wAAwP8AAOB/
+ AADgPwAA8B8AAPg/AAD8ZwAA/scAAP+PAAD/nwAA//8AAP//AAD//wAAKAAAABAAAAAgAAAAAQAIAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/kHAA/49yAP+MdwD/jHgA/4t6AP+LewD/iH8A/4eBAP+G
+ gwD/hIcA/4OJAP+GhAD/hYYA/4KLAP+CjAD/gY4A/4CQAP9/kQD/fpMA/32VAP99lgD/fJgA/3uaAP96
+ mwD/ep0A/3mdAP95nwD/eKAA/3eiAP94oQD/dqQA/3WlAP94qQD/msYAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAB4dHyAhIgAAAAAAAAAAAAAXGBobHB0AAAAAAAAAAAAAABQVFhcYGQAAAAAA
+ AAAAAAAQERITFBUWAAAAAAAAAAAAAAsODxAREhMAAAAAAAAAAAAADA0KCw4AAAAAAAAAAAAAAAAHCAkA
+ AAoLAAAAAAAAAAAAAAYAAAcICQAAAAAAAAAAAAAAAAMEBQAAAAAAAAAAAAAAAAABAgAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAAwP8AAMD/
+ AADgfwAA4D8AAPAfAAD4PwAA/GcAAP7HAAD/jwAA/58AAP//AAD//wAA//8AACgAAAAQAAAAIAAAAAEA
+ IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3emFf9/r0z/h7dH/5DAQf+n
+ 0jf/rdc1/63XNf+t1zX/rdc1/63XNf+t1zX/rdcbAAAAAAAAAAAAAAAAAAAAAP94oZ7/d6L//3ak//91
+ pf//eKn2/5rGlf+t12n/rddp/63Xaf+t12n/rddp/63XPQAAAAAAAAAAAAAAAAAAAAD/e5qJ/3qb//95
+ nf//eZ///3ig//93ou7/d6E1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/36UZv99
+ lf//fZb//3yY//97mv//epv//3qd7/96nDcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+B
+ jjT/gY7//4CQ//9/kf//fpP//32V//99lv//fJjw/3yXOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA/4OJef+Dif//gov//4KM//+Bjv//gJD//3+R//9+k9P/f5UCAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/hoR2/4aE//+Fhv//hIf//4OJ//+Ci97/gY4g/4KNRv+BjT0AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+If3P/iH///4eB//+Gg9z/hYYe/4aFSv+Eh/f/g4nz/4SJHwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4t6cP+Le9n/iX4b/4p8Tf+If/j/h4H//4aD0P+F
+ hg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/jXcJ/450Uf+Md/n/jHj//4t60f+J
+ fhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+QcGn/kHD+/49y0/+N
+ dhUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5JsOv+R
+ bRIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AADAAwAAwAMAAMB/AADAPwAAwB8AAOAP
+ AADwBwAA+AMAAPwDAAD+BwAA/w8AAP+fAAD//wAA//8AACgAAAAgAAAAQAAAAAEABAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAgICAAP//AADAwMAA/wD/AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATExAAAAAAAAAAAAAAAAABNBNB
+ QzM1M1M1M1AAAAAAARERMREwAAAAAAAAAAAAAANBERNBNAAAAAAAAAAAAAABMUMREREQAAAAAAAAAAAA
+ ARERQRNBQQAAAAAAAAAAAAE0ERERMTEQAAAAAAAAAAABExE0ERERQQAAAAAAAAAAABExETEUEREQAAAA
+ AAAAAAABERERExMTQQAAAAAAAAAAABExEREREREAAAAAAAAAAAABETERETEQAAAAAAAAAAAAABEREREQ
+ AAEQAAAAAAAAAAABETERAAARMQAAAAAAAAAAABEREAABEREAAAAAAAAAAAABEQAAERERAAAAAAAAAAAA
+ ABAAAREREAAAAAAAAAAAAAAAABETIQAAAAAAAAAAAAAAAAERERAAAAAAAAAAAAAAAAABIREAAAAAAAAA
+ AAAAAAAAABEQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////
+ //////////////wf///4AAAf+AH///gA///4AH//+AA///gAH//4AA///AAH//4AA///AAP//4AH///A
+ Hn//4Dw///B4P//48D///eB////A////gf///4P////H////7////////////////////////////ygA
+ AAAgAAAAQAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5JsAP+RbgD/kG8A/5BwAP+P
+ cQD/j3IA/45zAP+OdAD/jXUA/412AP+MdwD/jHgA/4t5AP+LegD/insA/4p8AP+JfQD/iX4A/4h/AP+I
+ gAD/h4EA/4eCAP+GgwD/hoQA/4WFAP+FhgD/hIcA/4SIAP+FhAD/g4kA/4OKAP+DiwD/hoUA/4SJAP+C
+ jQD/gY0A/4KLAP+CjAD/gY4A/4CPAP+AkAD/f5EA/3+SAP9/kwD/fpMA/36UAP9+lQD/gY8A/32VAP99
+ lgD/fJcA/3yYAP97mQD/e5oA/3qbAP96nAD/ep0A/3mdAP95ngD/eZ8A/3yZAP94nwD/eKAA/3ehAP93
+ ogD/dqMA/3akAP91pQD/daYA/32tAP91pwD/dKcA/3SoAP+DtQD/qtUA/63XAP98rQD/gbEA/4S1AP+J
+ uQD/jb4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1OT1BRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB
+ QkNERUdISUpLTExMTExMTExMTExMAAAAAAAAAAAAAD4/QEFBQkNERUYAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAODo6Oz4/QEFBQkMAAAAAAAAAAAAAAAAAAAAAAAAAAAA9NTY3ODk6Oz4/QEAAAAAAAAAAAAAAAAAA
+ AAAAAAAAADEyMzQ0NTY3ODk6OzwAAAAAAAAAAAAAAAAAAAAAAAAAKy0uLjEyMzQ0NTY3ODgAAAAAAAAA
+ AAAAAAAAAAAAAAAoKCkqKy0tLjEyMzQ0NTYAAAAAAAAAAAAAAAAAAAAAAAAmJCcwKCkqKywtLjEyMzMA
+ AAAAAAAAAAAAAAAAAAAAAAAfHyUmJCcnKCkqKywtLi8AAAAAAAAAAAAAAAAAAAAAAAAbHB4fHyUmJCcn
+ KCkqKwAAAAAAAAAAAAAAAAAAAAAAAAAZGRobHB4eHyUmJCcAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFxgh
+ GRobHCIAAAAAIyQAAAAAAAAAAAAAAAAAAAAAAAAUFBUWFxgdAAAAABweHyAAAAAAAAAAAAAAAAAAAAAA
+ AAAREhMUFAAAAAAYGRobHAAAAAAAAAAAAAAAAAAAAAAAAAAPDxAAAAAAFBUWFxgYAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAMAAAAABAREhMTFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDQ4ODxAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAACAkKCgsMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQYHCAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAACAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////
+ /////////B////gAAB/4Af//+AD///gAf//4AD//+AAf//gAD//8AAf//gAD//8AA///gAf//8Aef//g
+ PD//8Hg///jwP//94H///8D///+B////g////8f////v////////////////////////////KAAAACAA
+ AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP93plP/fK2Z/4Gxlv+EtZH/ibmL/42+hf+T
+ wn//oc5z/63Xaf+t12n/rddp/63Xaf+t12n/rddp/63Xaf+t12n/rddp/63Xaf+t12n/rddp/63Xaf+t
+ 11//rdcMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/d6I2/3ei//92o///dqT//3Wl//91
+ pv//daf//3Sn//90qP//g7Xc/6rVof+t157/rdee/63Xnv+t157/rdee/63Xnv+t157/rdee/63Xnv+t
+ 157/rdee/63Xnv+t1ywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP95n0b/eJ///3ig//93
+ of//d6L//3ei//92o///dqT//3Wl//91pv//fa3X/6XQPv+t1zX/rdc1/63XNf+t1zX/rdc1/63XNf+t
+ 1zX/rdc1/63XNf+t1zX/rdcq/67XAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3qbJP96
+ nP//eZ3//3md//95nv//eJ///3ig//93of//d6L//3ei//92o///dqS7/3ekCgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD/fpsF/3yZ+/97mf//e5r//3qb//96nP//ep3//3md//95nv//eJ///3ig//93of//d6G+/3ihCwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/fZXd/32W//98l///fJj//3yY//97mf//e5r//3qb//96nP//ep3//3md//95
+ nv//eZ/A/3qfDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9/krr/fpP//36U//9+lP//fZX//32W//98l///fJj//3yY//97
+ mf//e5r//3qb//96nP//epzC/3qcDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4CPlP+Aj///gJD//3+R//9/kv//fpP//36T//9+
+ lP//fZX//32W//98l///fJj//3yY//97mf//e5rE/3yaDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gow+/4KM/v+Bjf//gY7//4GP//+A
+ j///gJD//3+R//9/kv//f5P//36T//9+lP//fZX//32W//98l///fJfG/32XDwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/g4pz/4OK//+D
+ iv//gov//4KM//+Bjf//gY7//4GO//+Aj///gJD//3+R//9/kv//f5P//36T//9+lP//fpXJ/3+VCQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD/hIdx/4SH//+EiP//g4n//4OK//+Div//gov//4KM//+Bjf//gY7//4GO//+Aj///gJD//3+R//9/
+ koQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/hoVu/4WF/v+Fhf//hYb//4SH//+EiP//g4n//4OJ//+Div//gov//4KM//+B
+ jf//gY6AAAAAAAAAAAD/gZAd/4CQEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/h4Jr/4eC/v+Gg///hoT//4aF//+Fhf//hYb//4SH//+E
+ iP//hIn//4OKewAAAAAAAAAA/4OLH/+Cjd3/gY3P/4KNFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/iIBp/4iA/v+IgP//h4H//4eC//+G
+ g///hoT//4WE//+FhncAAAAAAAAAAP+FiCL/hIjg/4OJ//+Div//g4vR/4OLEAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/in1m/4l9/f+J
+ fv//iH///4iA//+IgP//h4JyAAAAAAAAAAD/h4Qk/4aE4v+Fhf//hYb//4SH//+EiP//hIhqAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD/i3tj/4p7/f+Ke///inz+/4l+bgAAAAAAAAAA/4l/Jv+IgOT/h4H//4eC//+Gg///hoT//4aE+f+F
+ hjMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/jHhg/4x4+/+LemoAAAAAAAAAAP+Leyn/inzm/4l9//+Jfv//iH///4h///+I
+ gPn/h4JOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/jXckAAAAAAAAAAD/jXcs/4x46P+Lef//i3r//4t6//+K
+ e///inz6/4l+UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/49zLv+OdOr/jXX//412//+N
+ dv//jHf//4x4+v+LelIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/kHFV/49x+/+P
+ cf//j3L//45z//+OdPv/jXZUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD/kW9V/5Fu+v+Qb///kHD7/5BxVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/kmxG/5Jsov+RbUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////
+ //////////////gAAA/wAAAP8AAAD/AAf//wAD//+AAf//gAD//4AAf/+AAD//wAAf/+AAP//wAGf/+A
+ DD//wBgf/+AwH//wYB//+MA///2Af///AP///wH///+D////x////////////////////////////ygA
+ AAAwAAAAYAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAAP//AADAwMAA/wD/AP8A
+ AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMT
+ EzNDMzY2NjNjNjNjNjMAAAAAAAAAA0JBNBETQTQzQzQzQzQzQzRgAAAAAAAAATQTERNBERM2M2M2M2M2
+ M2MAAAAAAAAAARERFBERNBEAAAAAAAAAAAAAAAAAAAAAA0MUMTQRMTQQAAAAAAAAAAAAAAAAAAAAARET
+ UxE0ERExAAAAAAAAAAAAAAAAAAAAABQRNBERE0EREAAAAAAAAAAAAAAAAAAAADExExFBERNBEQAAAAAA
+ AAAAAAAAAAAAABERERMTQRETQRAAAAAAAAAAAAAAAAAAABFBFBERExQTETQAAAAAAAAAAAAAAAAAABMT
+ QhERERE1MREQAAAAAAAAAAAAAAAAABERE0EUERETQRExAAAAAAAAAAAAAAAAAAETERMTE0ERE0EREwAA
+ AAAAAAAAAAAAAAARERERERETQhERETAAAAAAAAAAAAAAAAABExERExEREUEUERAAAAAAAAAAAAAAAAAA
+ ERMRERMRMTExMQAAAAAAAAAAAAAAAAAAAREREREREREREAAAAAAAAAAAAAAAAAAAABETERERERERAAAB
+ MAAAAAAAAAAAAAAAAAERERERMRMQAAAREQAAAAAAAAAAAAAAAAARExEREREAAAExERAAAAAAAAAAAAAA
+ AAABERERERAAABERMRAAAAAAAAAAAAAAAAAAEREhEQAAAREREREAAAAAAAAAAAAAAAAAARMREAAAERER
+ ERAAAAAAAAAAAAAAAAAAABERAAABEREhERAAAAAAAAAAAAAAAAAAAAEQAAARERExEQAAAAAAAAAAAAAA
+ AAAAAAAAAAEyQREREAAAAAAAAAAAAAAAAAAAAAAAABERMhERAAAAAAAAAAAAAAAAAAAAAAAAAREREREQ
+ AAAAAAAAAAAAAAAAAAAAAAAAARIREREAAAAAAAAAAAAAAAAAAAAAAAAAABEREhAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAEhEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////
+ AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP8A
+ AAAA/wAA/gAAAAB/AAD+AAAAAP8AAP4AA////wAA/gAB////AAD+AAD///8AAP8AAH///wAA/wAAP///
+ AAD/AAAf//8AAP8AAA///wAA/wAAB///AAD/AAAD//8AAP+AAAD//wAA/8AAAH//AAD/4AAAf/8AAP/w
+ AAD//wAA//gAAf//AAD//AAD5/8AAP/+AAfD/wAA//8AD4H/AAD//4AfAf8AAP//wD4A/wAA///gfAH/
+ AAD///D4Af8AAP//+fAD/wAA////4Af/AAD////AD/8AAP///4Af/wAA////gD//AAD////Af/8AAP//
+ /+D//wAA////8f//AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////
+ AAD///////8AAP///////wAAKAAAADAAAABgAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD/kmwA/5FtAP+RbgD/kG4A/5BvAP+QcAD/j3EA/49yAP+PcwD/jnMA/450AP+NdQD/jXYA/4x3AP+M
+ eAD/jHYA/4t5AP+LegD/i3sA/4x5AP+KewD/inwA/4l9AP+JfgD/iX8A/4h/AP+IgAD/iIEA/4eBAP+H
+ ggD/h4MA/4aDAP+GhAD/hoUA/4WFAP+FhgD/hIcA/4SIAP+DiAD/g4kA/4OKAP+CiwD/hIkA/4KMAP+B
+ jQD/gY8A/4GOAP+AjwD/gJAA/3+RAP9/kgD/fpMA/36UAP9+lQD/fZUA/36WAP99lgD/fJcA/32XAP98
+ mAD/fJkA/3+TAP97mQD/e5oA/3ubAP96mwD/epwA/3mdAP95ngD/eZ8A/3ifAP94oAD/eKEA/3ehAP93
+ ogD/d6MA/3qdAP92owD/dqQA/3alAP91pQD/daYA/3SnAP91qAD/kL8A/63XAP90qAD/dKkA/3isAP+V
+ xAD/d6cA/3urAP99rgD/gLAA/4OzAP+FtgD/iLkA/4u8AP+PvwD/k8IA/5zJAP+s1gAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFtcXV5fYGFiY2RlZlZWVlZWVlZWVlZWVlZW
+ VlZWVlZWAAAAAAAAAAAAAAAAAAAATE5PT1FRUlJTV1dYWVpWVlZWVlZWVlZWVlZWVlZWVlZWVgAAAAAA
+ AAAAAAAAAAAASEpLS0xOT09RUVJSU1RVVlZWVlZWVlZWVlZWVlZWVlZWAAAAAAAAAAAAAAAAAAAARUdH
+ SEhKSktMTk9PUFFSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ01ERUVHR0hISkpLTE5P
+ TwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBCQkNEREVFRkdISEpKS0wAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAADw9P0BAQkJDQ0RFRUZHSEhJAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAADk5Ojw8PT9AQEJCQ0NERUVGRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1
+ Nzc5OTo8PD0/QEBCQkNDREUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIzPjQ1NTc3OTk6Ojw9
+ P0BAQUJDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAxMTIyMz40NTU3Nzk5Ojo8PT9AQAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0vLzAwMTEyMjM0NDU1Njc5OTo6PD0AAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAqLCwtLy8uMDExMjIzMzQ1NTc3OTk6OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ KSkqKiwsLS8vLjAxMTIyMzM0NTU2NzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYoKCkpKiosLC0v
+ Ly4wMTEyMjMzNDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkJSUmKygpKSoqLCwtLS8uMDExMgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMkJCUlJisoKSkqKiwsLS0vAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAACAhISMjJCQlJSYoKCkpKioAAAAAAC4uAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAdHh4gISEjIyQkJSUmKwAAAAAALCwtLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxsdHR4e
+ ICEhIyMkAAAAAAAoKSkqKioAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgaGhsbHR0eHiAAAAAAACQl
+ JSYnKCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFxcYGRobGwAAAAAAISEiIyQkJSUmAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAFRUWFhcYAAAAAAAcHR4eICAhIiMAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAABESEhUAAAAAABgaGhsbHR0eHh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO
+ DwAAAAAAFRYWFxcYGRobHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUERISFRUW
+ FhcYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0QDg4PDxESEhMAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoLDAwNDQ4ODwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAABwcICAoKCwwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAUGBgcHCAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwQFBgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQECAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP//
+ /////wAA////////AAD///////8AAP///////wAA/wAAAAD/AAD+AAAAAH8AAP4AAAAA/wAA/gAD////
+ AAD+AAH///8AAP4AAP///wAA/wAAf///AAD/AAA///8AAP8AAB///wAA/wAAD///AAD/AAAH//8AAP8A
+ AAP//wAA/4AAAP//AAD/wAAAf/8AAP/gAAB//wAA//AAAP//AAD/+AAB//8AAP/8AAPn/wAA//4AB8P/
+ AAD//wAPgf8AAP//gB8B/wAA///APgD/AAD//+B8Af8AAP//8PgB/wAA///58AP/AAD////gB/8AAP//
+ /8AP/wAA////gB//AAD///+AP/8AAP///8B//wAA////4P//AAD////x//8AAP///////wAA////////
+ AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAMAAAAGAA
+ AAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/63YA/+t2Qf/rdkH/63ZB/+t2Qf/rdkH/63ZB/+t
+ 2Qf/rdkH/63ZB/+t2Qf/rdkH/63ZB/+t2Qf/rdkH/63ZB/+t2Qf/rdkH/63ZB/+t2Qf/rdkH/63ZB/+t
+ 2Qf/rdkH/63ZB/+t2Qf/rdkH/63ZB/+t2Qf/rdkH/67XBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP93pBf/d6ej/3ur4f99rt//gLDa/4Oz1P+F
+ ts7/iLnI/4u8w/+Pv73/k8K3/5zJq/+s1pn/rdeX/63Xl/+t15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t
+ 15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t15f/rdeX/63Xlf+t11gAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3ilAf93o7v/dqP//3ak//92
+ pP//daX//3Wl//91pv//dab//3Sn//90qP//dKj//3Sp//94rPP/lcS8/63Xnv+t157/rdee/63Xnv+t
+ 157/rdee/63Xnv+t157/rdee/63Xnv+t157/rdee/63Xnv+t157/rdee/63Xnv+t157/rdee/63Xnv+t
+ 15X/rdgFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3ihCP94
+ oPD/d6H//3ei//93ov//d6P//3aj//92pP//dqT//3Wl//91pf//dab//3Wm//90p///daj+/5C/w/+t
+ 15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t15f/rdeX/63Xl/+t
+ 15f/rdeX/63Xk/+t11YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA/3uhAv95nt//eJ///3if//94oP//eKD//3eh//93of//d6L//3ej//92o///dqT//3ak//92
+ pf//daX//3Wm/P95qW3/rdYH/63WB/+t1gf/rdYH/63WB/+t1gf/rdYH/63WB/+t1gf/rdYH/63WB/+t
+ 1gf/rdYH/63WB/+t1gf/rdYH/63XBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP96nL7/ep3//3md//95nv//eZ7//3if//94n///eKD//3ig//93
+ of//d6H//3ei//93o///dqP//3ak//92pP3/dqRrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP97mpv/e5r//3qb//96m///epz//3md//95
+ nf//eZ7//3me//95n///eJ///3ig//94oP//d6H//3eh//93ov//d6P9/3ejbQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP98mHj/fJj//3yZ//97
+ mf//e5r//3ua//96m///epv//3qc//96nP//eZ3//3me//95nv//eZ///3if//94oP//eKD//3ih/P94
+ oW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP99
+ llX/fZb//32W//98l///fJj//3yY//98mf//e5n//3ua//97mv//epv//3qb//96nP//epz//3md//95
+ nv//eZ7//3mf//94n/7/eZ9zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP9/lDL/fpT//36U//99lf//fZX//32W//99lv//fJf//3yY//98mP//fJn//3uZ//97
+ mv//e5r//3qb//96m///epz//3qc//95nf//eZ7+/3medQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+BkhT/f5H5/3+S//9/k///fpP//36U//9+lP//fZX//32V//99
+ lv//fZb//3yX//98l///fJj//3yZ//97mf//e5r//3ua//97m///epv//3qc/f96nHgAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+DkwL/gI/o/4CQ//+AkP//f5H//3+R//9/
+ kv//f5P//36T//9+lP//fpT//32V//99lf//fZb//32W//98l///fJf//3yY//98mf//e5n//3ua//97
+ mv7/e5t8/32dAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/gY2w/4GO//+B
+ jv//gI///4CP//+AkP//gJD//3+R//9/kf//f5L//36T//9+k///fpT//36U//9+lf//fZX//32W//99
+ lv//fJf//3yX//98mP//fJn//3yZfv+AmgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD/g4w9/4KL/f+CjP//goz//4GN//+Bjv//gY7//4GP//+Aj///gJD//4CQ//9/kf//f5H//3+S//9/
+ kv//fpP//36U//9+lP//fZX//32V//99lv//fZb//3yX/v99l4H/fpgBAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA/4OKbv+Div3/g4r//4KL//+Ci///goz//4KM//+Bjf//gY7//4GO//+B
+ j///gI///4CQ//+AkP//f5H//3+R//9/kv//f5L//36T//9+lP//fpT//36V//99lf//fpaF/4CYAQAA
+ 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
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA/5ByQf+PcfX/j3H//49y//+Pcv//jnP//45z//+OdP//jXX//411rv+O
+ eAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+RcEf/kG/0/5Bw//+QcP//j3H//49x//+P
+ cv//j3Ox/5B2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/km5E/5Ft9f+R
+ bv//kG7//5Bv//+QcLP/kXIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA/5JtPf+SbNb/kmzw/5Ftm/+ScAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+YbAH/lW0FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////
+ AAD/gAAAAP8AAP4AAAAAfwAA/AAAAAA/AAD8AAAAAH8AAPwAAAAA/wAA/gAA////AAD+AAB///8AAP4A
+ AD///wAA/gAAH///AAD+AAAP//8AAP4AAAf//wAA/gAAAf//AAD/AAAA//8AAP8AAAB//wAA/4AAAD//
+ AAD/wAAAP/8AAP/gAAB//wAA//AAAOf/AAD/+AABw/8AAP/8AAOB/wAA//4ABwD/AAD//wAOAP8AAP//
+ gBwA/wAA///AOAD/AAD//+BwAP8AAP//8OAB/wAA///5wAP/AAD///+AB/8AAP///wAP/wAA////AB//
+ AAD///+AP/8AAP///8B//wAA////4P//AAD////z//8AAP///////wAA////////AAD///////8AAP//
+ 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
+ YII=
+
+
+
\ No newline at end of file
diff --git a/SetHome/Tool.ico b/SetHome/Tool.ico
new file mode 100644
index 0000000..8f561c9
Binary files /dev/null and b/SetHome/Tool.ico differ
diff --git a/SetHome/pen.ico b/SetHome/pen.ico
new file mode 100644
index 0000000..47e8f91
Binary files /dev/null and b/SetHome/pen.ico differ