diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.Client.Common/config/Config.cs
index c12805b95b..db399bae59 100644
--- a/BizHawk.Client.Common/config/Config.cs
+++ b/BizHawk.Client.Common/config/Config.cs
@@ -312,7 +312,8 @@ namespace BizHawk.Client.Common
public RecentFiles RecentLua = new RecentFiles(8);
public RecentFiles RecentLuaSession = new RecentFiles(8);
public bool DisableLuaScriptsOnLoad = false;
- public bool ReturnAllIfNoneSelected = true;
+ public bool ToggleAllIfNoneSelected = true;
+ public bool RemoveRegisteredFunctionsOnToggle = true;
public bool RunLuaDuringTurbo = true;
// Watch Settings
diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs
index a469ca8848..4b65078cfe 100644
--- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs
+++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs
@@ -614,7 +614,7 @@ namespace BizHawk.Client.EmuHawk
}
var font = new Font(GlobalWin.DisplayManager.CustomFonts.Families[index], 8, FontStyle.Regular, GraphicsUnit.Pixel);
Size sizeOfText = g.MeasureString(message, font, 0, StringFormat.GenericTypographic).ToSize();
- Rectangle rect = new Rectangle(new Point(x, y), sizeOfText + new Size(1, 1));
+ Rectangle rect = new Rectangle(new Point(x, y), sizeOfText + new Size(1, 0));
g.FillRectangle(GetBrush(backcolor ?? DefaultTextBackground.Value), rect);
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
g.DrawString(message, font, GetBrush(forecolor ?? DefaultForeground), x, y);
diff --git a/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.Designer.cs b/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.Designer.cs
index 5d9958e786..e4a50a9214 100644
--- a/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.Designer.cs
+++ b/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.Designer.cs
@@ -70,6 +70,8 @@
this.RegisteredFunctionsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.SettingsSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.DisableScriptsOnLoadMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.ReturnAllIfNoneSelectedMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.RemoveRegisteredFunctionsOnToggleMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.HelpSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.FunctionsListMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.OnlineDocsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -101,7 +103,6 @@
this.PathName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
- this.ReturnAllIfNoneSelectedMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ScriptListContextMenu.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.ConsoleContextMenu.SuspendLayout();
@@ -454,7 +455,8 @@
//
this.SettingsSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.DisableScriptsOnLoadMenuItem,
- this.ReturnAllIfNoneSelectedMenuItem});
+ this.ReturnAllIfNoneSelectedMenuItem,
+ this.RemoveRegisteredFunctionsOnToggleMenuItem});
this.SettingsSubMenu.Name = "SettingsSubMenu";
this.SettingsSubMenu.Size = new System.Drawing.Size(58, 20);
this.SettingsSubMenu.Text = "&Settings";
@@ -463,10 +465,24 @@
// DisableScriptsOnLoadMenuItem
//
this.DisableScriptsOnLoadMenuItem.Name = "DisableScriptsOnLoadMenuItem";
- this.DisableScriptsOnLoadMenuItem.Size = new System.Drawing.Size(213, 22);
+ this.DisableScriptsOnLoadMenuItem.Size = new System.Drawing.Size(278, 22);
this.DisableScriptsOnLoadMenuItem.Text = "Disable Scripts on Load";
this.DisableScriptsOnLoadMenuItem.Click += new System.EventHandler(this.DisableScriptsOnLoadMenuItem_Click);
//
+ // ReturnAllIfNoneSelectedMenuItem
+ //
+ this.ReturnAllIfNoneSelectedMenuItem.Name = "ReturnAllIfNoneSelectedMenuItem";
+ this.ReturnAllIfNoneSelectedMenuItem.Size = new System.Drawing.Size(278, 22);
+ this.ReturnAllIfNoneSelectedMenuItem.Text = "Toggle All if None Selected";
+ this.ReturnAllIfNoneSelectedMenuItem.Click += new System.EventHandler(this.ToggleAllIfNoneSelectedMenuItem_Click);
+ //
+ // RemoveRegisteredFunctionsOnToggleMenuItem
+ //
+ this.RemoveRegisteredFunctionsOnToggleMenuItem.Name = "RemoveRegisteredFunctionsOnToggleMenuItem";
+ this.RemoveRegisteredFunctionsOnToggleMenuItem.Size = new System.Drawing.Size(278, 22);
+ this.RemoveRegisteredFunctionsOnToggleMenuItem.Text = "Remove Registered Functions on Toggle";
+ this.RemoveRegisteredFunctionsOnToggleMenuItem.Click += new System.EventHandler(this.RemoveRegisteredFunctionsOnToggleMenuItem_Click);
+ //
// HelpSubMenu
//
this.HelpSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -791,13 +807,6 @@
this.splitContainer1.SplitterDistance = 280;
this.splitContainer1.TabIndex = 7;
//
- // ReturnAllIfNoneSelectedMenuItem
- //
- this.ReturnAllIfNoneSelectedMenuItem.Name = "ReturnAllIfNoneSelectedMenuItem";
- this.ReturnAllIfNoneSelectedMenuItem.Size = new System.Drawing.Size(213, 22);
- this.ReturnAllIfNoneSelectedMenuItem.Text = "Return All if None Selected";
- this.ReturnAllIfNoneSelectedMenuItem.Click += new System.EventHandler(this.ReturnAllIfNoneSelectedMenuItem_Click);
- //
// LuaConsole
//
this.AllowDrop = true;
@@ -909,5 +918,6 @@
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.ToolStripMenuItem ReturnAllIfNoneSelectedMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem RemoveRegisteredFunctionsOnToggleMenuItem;
}
}
\ No newline at end of file
diff --git a/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs b/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
index a46dc789af..f65226a2b7 100644
--- a/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
+++ b/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
@@ -738,7 +738,7 @@ namespace BizHawk.Client.EmuHawk
private void ToggleScriptMenuItem_Click(object sender, EventArgs e)
{
- var files = !SelectedFiles.Any() && Global.Config.ReturnAllIfNoneSelected ? _luaList : SelectedFiles;
+ var files = !SelectedFiles.Any() && Global.Config.ToggleAllIfNoneSelected ? _luaList : SelectedFiles;
foreach (var item in files)
{
item.Toggle();
@@ -780,6 +780,8 @@ namespace BizHawk.Client.EmuHawk
LuaImp.CallExitEvent(item.Thread);
item.Stop();
+ if (Global.Config.RemoveRegisteredFunctionsOnToggle)
+ GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions.ClearAll();
}
}
@@ -955,7 +957,8 @@ namespace BizHawk.Client.EmuHawk
private void OptionsSubMenu_DropDownOpened(object sender, EventArgs e)
{
DisableScriptsOnLoadMenuItem.Checked = Global.Config.DisableLuaScriptsOnLoad;
- ReturnAllIfNoneSelectedMenuItem.Checked = Global.Config.ReturnAllIfNoneSelected;
+ ReturnAllIfNoneSelectedMenuItem.Checked = Global.Config.ToggleAllIfNoneSelected;
+ RemoveRegisteredFunctionsOnToggleMenuItem.Checked = Global.Config.RemoveRegisteredFunctionsOnToggle;
}
private void DisableScriptsOnLoadMenuItem_Click(object sender, EventArgs e)
@@ -963,9 +966,14 @@ namespace BizHawk.Client.EmuHawk
Global.Config.DisableLuaScriptsOnLoad ^= true;
}
- private void ReturnAllIfNoneSelectedMenuItem_Click(object sender, EventArgs e)
+ private void ToggleAllIfNoneSelectedMenuItem_Click(object sender, EventArgs e)
{
- Global.Config.ReturnAllIfNoneSelected ^= true;
+ Global.Config.ToggleAllIfNoneSelected ^= true;
+ }
+
+ private void RemoveRegisteredFunctionsOnToggleMenuItem_Click(object sender, EventArgs e)
+ {
+ Global.Config.RemoveRegisteredFunctionsOnToggle ^= true;
}
#endregion
diff --git a/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.resx b/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.resx
index 59a410b01c..7ce54e6e5b 100644
--- a/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.resx
+++ b/BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.resx
@@ -154,70 +154,70 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACK
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACG
DgAAAk1TRnQBSQFMAgEBAwEAASABAAEgAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
- AwABEAMAAQEBAAEgBgABECoAAYcBdAF8AeUBsgG0AdIB/wG7Ab4B1wH/AYgBdgF+AecwAAGHAXwBdAHl
- AbIB0gG2Af8BuwHXAb4B/wGIAX4BdgHnMAABjwF2AXQB5QHSAb4BsgH/AdcBxQG7Af8BkAF3AXYB52gA
- AW8BagGUAfUBOgFBAZcB/wEGAREBhwH/AQcBEQGHAf8BBQEQAYcB/wEMARYBiAH/AQ8BGQGJAf8BZwFm
- AZkB+SAAAW8BlAFxAfUBOgGXAUYB/wEGAYcBFQH/AQcBhwEWAf8BBQGHARMB/wEMAYgBGgH/AQ8BiQEd
- Af8BZwGZAWYB+SAAAZwBfAFnAfUBlwFcAToB/wGHATQBBgH/AYcBNQEHAf8BhwEzAQUB/wGIATgBDAH/
- AYkBOwEPAf8BngF0AWIB+VwAATUBPQGYAf8BMgE6AZgB/wGwAbIBywH/AdoB2wHaAf8C0QHVAf8BywHM
- AdIB/wHEAccBzgH/AVkBXwGlAf8BSwFNAYgB+QEqATMBjwH/GAABJwGSATMB/wEyAZgBPgH/AbABywGz
- Af8B2wLaAf8B0QHVAdIB/wHLAdIBywH/AcUBzgHEAf8BWQGlAWIB/wFLAYgBTgH5ASoBjwE1Af8YAAGS
- AU0BJwH/AZgBVwEyAf8BywG6AbAB/wLaAdsB/wHVAdMB0QH/AdIBzQHLAf8BzgHGAcQB/wGlAXQBWQH/
- AY0BZAFGAfkBjwFNASoB/1QAAj8BkQH9AYQBcAF1AeMC/gH9Af8B/gH9AfUB/wL3AfMB/wHvAu4B/wLt
- AesB/wHZAtsB/wHjAeQB4gH/AsABzAH/AXYBaQF5Ae0BSAFLAYwB+xAAAT8BkQE/Af0BhAF1AXAB4wH/
- Af4C/wH+AfUB/QH/AfcB8wH2Af8C7gHvAf8B7QHrAe0B/wLbAdkB/wHkAeIB4wH/AcABzAHCAf8BdgF5
- AWkB7QFIAYwBTgH7EAABkwFRAT0B/QGKAXEBcAHjAf4D/wH1AfsB/gH/AfMB9QH3Af8B7gHvAe4B/wHr
- AewB7QH/AdsB2QHaAf8C4gHkAf8BzAHFAcAB/wGHAW8BaAHtAY8BXQFFAftMAAFyAW8BkAHzAYUBdwGG
- AesF/wH+Af0X/wH+Af8B8AHvAfAB/wHPAdAB1gH/AWwBYQF2Ae0BdQFrAYMB7wgAAXIBkAFwAfMBhQGG
- AXkB6wX/Af0G/wHjAfAB4wH/AZwBzQGcCv8B/gL/Ae8C8AH/Ac8B1gHPAf8BbAF2AWMB7QF1AYMBawHv
- CAABmgF5AWgB8wGWAXwBdgHrBP8B/Rf/Af4D/wLjAeAB/wHPAckBxwH/AYQBaQFfAe0BjwF0AWkB70gA
- AWsBZgGhAfkD/iX/AfAB8gHwAf8CxgHNAf8BSAFDAYQB+QgAAWsBoQFmAfkQ/wHcAe0B3AH/ARIBegES
- Af8BgwHBAYMN/wHyAfEB8AH/AccBzgHIAf8BSAGEAUkB+QgAAaUBfgFmAfkM/wHhAc0BvgH/Ab4BkgGN
- Af8B9wHxAe8B/wH7AfgB9wH/AcEBmAGPAf8B6gHaAdEF/wHlAeIB5gH/Ac4BygHHAf8BiQFeAUMB+UQA
- AYQBfQGeAfMBiQF7AY4B7Qj/AvUB+wH/AW4BagHUAf8BoQGfAecB/wGjAaEB5gH/AaIBoQHlAf8BlAGR
- AeEB/wGeAZwB5gX/AfkB+AH3Af8B5wHkAd4B/wFgAV4BhQH1AVsBXQGYAfsBhAGeAX4B8wGJAY8BfwHt
- EP8B5AHxAeQB/wECAXYBAgH/ARIBfAESAf8BnAHOAZwJ/wH5AfcB+QH/AeYB3gHnAf8BYAGFAWUB9QFb
- AZgBXQH7AacBiAF7AfMBnQGCAXsB7Qz/Aa4BdwFVAf8BWgIBAf8B+AH1AfIB/wH6AfcB9QH/AVoCAQH/
- AbMBfAFbBf8B8QH0AfUB/wHeAeYB5wH/AY0BaQFYAfUBmwFpAVgB+0AAAYIBiAHKAf8B0AHSAe0J/wL1
- AfoB/wE8ATkBuwH/AWgBZQHeAf8BZQFhAdgB/wFgAVwB0wH/AVQBTwHRAf8BogGhAekF/wL5AfgB/wH8
- AfsB6gH/AaMBpgG+Af8BRAFLAaAB/wGCAcoBigH/AdAB7QHUEf8B4gHwAeIB/wEDAXcBAwH/AQEBdwEB
- Af8BEgGEARIB/wGYAcwBmAX/AfkB+AH5Af8B/AHqAfoB/wGjAb4BpQH/AUQBoAFPAf8BygGcAYIB/wHt
- AdsB0A3/AboBjAFrAf8BjQEjAQEC/wL+Af8D/gH/AY0BIgEBAf8BuwGJAWkF/wHyAfQB9QH/AeoB9QH8
- Af8BvgGsAaMB/wGgAWUBRAH/QAABdQF7AcIB/wHlAeYB9An/AvcB+wH/AUsBSAHDAf8BdgF0AeMB/wFx
- AW4B3QH/AWwBaQHYAf8BYAFbAdMB/wGrAakB6gX/A/kB/wH+AfsB7wH/AbQBtgHFAf8BQgFKAZ8B/wF1
- AcIBgQH/AeUB9AHnEf8B4gHwAeIB/wECAXkBAgH/AQEBewEBAf8BAQFzAQEB/wESAYQBEgH/AfoB/AH6
- Af8D+QH/Af4B7wH+Af8BtAHFAbYB/wFCAZ8BTQH/AcIBkwF1Af8B9AHrAeUN/wG5AYwBbAH/AacBOQEM
- Af8B+wH5AfgB/wH7AfoB+QH/AacBOQEMAf8BvQGMAWwF/wP0Af8B7wH6Af4B/wHFAboBtAH/AZ8BYwFC
- Af9AAAFxAXgBvQH/AtoB7wn/AvcB+wH/AU8BTAHHAf8BfAF6AeoB/wF3AXYB4wH/AXQBcgHfAf8BZwFk
- AdoB/wGtAasB6wX/AvoB+AH/Af0B/AHuAf8BnQGgAbsB/wFKAVIBowH/AXEBvQF5Af8B2gHvAd4R/wHi
- AfAB4gH/AQMBeQEDAf8BAQFxAQEB/wEtAY4BLQH/AeIB8AHiBf8B+gH4AfoB/wH9Ae4B+wH/AZ0BuwGh
- Af8BSgGjAVMB/wG9AY4BcQH/Ae8B4wHaDf8BtwGIAWcB/wHEAUgBJQH/Av0B/AH/AfwB+gH5Af8BxgFL
- AScB/wHCAY8BcQX/AfIB9QH3Af8B7gH3Af0B/wG7AagBnQH/AaMBaQFKAf9AAAGEAXoBkQHvAZABhgGe
- AfEI/wL2AfsB/wFMAUgBxQH/AXsBegHrAf8BdwF2AeQB/wF1AXIB4QH/AWUBYgHbAf8BqQGnAesF/wL7
- AfkB/wH7AfwB7gH/AUoBTAGQAfsBfwF0AYsB7wGEAZEBegHvAZABngGKAfEQ/wHiAfAB4gH/AQEBbwEB
- Af8BKQGHASkB/wHnAfMB5wn/AfsB+QH7Af8B/AHuAfkB/wFKAZABUAH7AX8BiwF3Ae8BnQGBAXgB7wGq
- AY4BhQHxDP8BwQGXAXsB/wGkAT8BFwH/Af0B+wH6Af8B/AH6AfkB/wGTAToBEAH/AcwBqQGUBf8B9AH3
- AfkB/wHuAfUB/AH/AZMBXQFHAfsBlwF6AXMB70QAAXwBgQHPCf8C8wH5Af8BSgFHAbkB/wGHAYYB1gH/
- AYcBhQHVAf8BhwGFAdUB/wFmAWMByAH/AW4BbQHMBv8B/gH8Af8CzgHXAf8BOgFCAZgB/wgAAXwBzwGN
- Ef8B0wHoAdMB/wElAYcBJQH/AeIB8AHiDf8B/gH8Av8BzgHXAdAB/wE6AZgBRAH/CAABzwGhAXwp/wH7
- A/8B1wHSAc4B/wGYAVsBOgH/SAABiwGHAbgB+QGaAY4BqQHxJP8B/AH7AfYB/wE4AUABlgH/AYMBdAGC
- AekIAAGLAbgBigH5AZoBqQGVAfEM/wH6AfwB+gH/Ae8B9gHvEf8B/AH2AfwB/wE4AZYBQgH/AYMBggFz
- AekIAAG9AZYBhgH5AbQBmwGOAfEk/wH1AfoB/AH/AZYBWQE4Af8BkwF5AXMB6UwAAYMBhwHIAf0BlAGD
- AY0B6Rz/AfIB9QH4Af8BXgFhAYcB9QFxAW4BlwH1EAABgwHIAYwB/QGUAY0BgwHpHP8B9AH4AfIB/wFe
- AYcBYQH1AXEBlwF1AfUQAAHKAaEBgQH9AZ4BiQGDAekc/wH4AvIB/wGPAWcBVgH1AZ8BfAFpAfVUAAGF
- AYgBwgH7AZMBjwHEAfkC0wH3Af8B8QHwAfsB/wH2AfcC/wH3AfgB/QH/AeQB5wHzAf8BgAF3AY8B7wF8
- AXYBkQHzAYoBewGJAesYAAGFAcIBjAH7AZMBxAGZAfkB0wH3AdoB/wHwAfsB8wH/AfYB/wH3Af8B9wH9
- AfgB/wHkAfMB5AH/AYABjwF3Ae8BfAGRAXcB8wGKAYkBewHrGAABxQGXAYIB+wHIAagBjgH5AfcB4wHT
- Af8B+wH2AfAC/wH5AfYB/wH9AfkB9wH/AfMB6AHkAf8BmwF9AXQB7wGbAX4BcwHzAZgBgAF6AetcAAGQ
- AYEBkgHrAY0BkwHXAf8BjgGUAd0B/wGPAZUB4AH/AY0BlAHbAf8BmgGfAdoB/wGJAXgBgQHnJAABkAGS
- AYMB6wGNAdcBlgH/AY4B3QGYAf8BjwHgAZkB/wGNAdsBlgH/AZoB2gGiAf8BiQGBAXsB5yQAAaIBiAGB
- AesB1wGoAY0B/wHdAawBjgH/AeABrQGPAf8B2wGpAY0B/wHaAbIBmgH/AZMBfgF3AedUAAFCAU0BPgcA
- AT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAB/AE/AfwBPwH8AT8CAAHwAQ8B8AEPAfABDwIA
- AeABBwHgAQcB4AEHAgABwAEDAcABAwHAAQMCAAGAAQEBgAEBAYABAQIAAYABAQGAAQEBgAEBKgABgAEB
- AYABAQGAAQECAAGAAQEBgAEBAYABAQIAAcABAwHAAQMBwAEDAgAB4AEHAeABBwHgAQcCAAHwAR8B8AEf
- AfABHwIACw==
+ AwABEAMAAQEBAAEgBgABECoAAXwBTAFRAeUBsgG0AdIB/wG7Ab4B1wH/AX0BUQFUAecwAAF8AVEBTAHl
+ AbIB0gG2Af8BuwHXAb4B/wF9AVQBUQHnMAABgAFNAUwB5QHSAb4BsgH/AdcBxQG7Af8BgQJRAedoAAFv
+ AVsBfgH1ATwBQwGXAf8BCAETAYcB/wEJARMBhwH/AQcBEgGHAf8BDgEYAYgB/wERARsBiQH/AWkBXgGL
+ AfkgAAFvAX4BYgH1ATwBlwFIAf8BCAGHARcB/wEJAYcBGAH/AQcBhwEVAf8BDgGIARwB/wERAYkBHwH/
+ AWkBiwFeAfkgAAGTAWoBWAH1AZcBXgE8Af8BhwE2AQgB/wGHATcBCQH/AYcBNQEHAf8BiAE6AQ4B/wGJ
+ AT0BEQH/AZgBaAFaAflcAAE3AT8BmAH/ATQBPAGYAf8BsAGyAcsB/wHaAdsB2gH/AtEB1QH/AcsBzAHS
+ Af8BxAHHAc4B/wFbAWEBpQH/AU0BRQF9AfkBLAE1AY8B/xgAASkBkgE1Af8BNAGYAUAB/wGwAcsBswH/
+ AdsC2gH/AdEB1QHSAf8BywHSAcsB/wHFAc4BxAH/AVsBpQFkAf8BTQF9AUYB+QEsAY8BNwH/GAABkgFP
+ ASkB/wGYAVkBNAH/AcsBugGwAf8C2gHbAf8B1QHTAdEB/wHSAc0BywH/Ac4BxgHEAf8BpQF2AVsB/wGL
+ AVwBPgH5AY8BTwEsAf9UAAFBAT8BjQH9AXgBRwFKAeMC/gH9Af8B/gH9AfUB/wL3AfMB/wHvAu4B/wLt
+ AesB/wHZAtsB/wHjAeQB4gH/AsABzAH/AXQBUQFcAe0BTAFJAYQB+xAAAUEBjQE/Af0BeAFKAUcB4wH/
+ Af4C/wH+AfUB/QH/AfcB8wH2Af8C7gHvAf8B7QHrAe0B/wLbAdkB/wHkAeIB4wH/AcABzAHCAf8BdAFc
+ AVEB7QFMAYQBSwH7EAABkwFNAT0B/QF8AUgBRwHjAf4D/wH1AfsB/gH/AfMB9QH3Af8B7gHvAe4B/wHr
+ AewB7QH/AdsB2QHaAf8C4gHkAf8BzAHFAcAB/wGAAVIBUAHtAY0BWQFDAftMAAFyAVwBdwHzAX8BVgFg
+ AesF/wH+Af0X/wH+Af8B8AHvAfAB/wHPAdAB1gH/AWsBRwFaAe0BcwFRAWcB7wgAAXIBdwFdAfMBfwFg
+ AVkB6wX/Af0G/wHjAfAB4wH/AZwBzQGcCv8B/gL/Ae8C8AH/Ac8B1gHPAf8BawFaAUkB7QFzAWcBUQHv
+ CAABkgFkAVYB8wGJAVoBVQHrBP8B/Rf/Af4D/wLjAeAB/wHPAckBxwH/AX4BUQFGAe0BhAFcAVAB70gA
+ AWsBXgGRAfkD/iX/AfAB8gHwAf8CxgHNAf8BSgE9AXgB+QgAAWsBkQFeAfkQ/wHcAe0B3AH/ARQBfAEU
+ Af8BgwHBAYMN/wHyAfEB8AH/AccBzgHIAf8BSgF4AUEB+QgAAZ4BcgFeAfkM/wHhAc0BvgH/Ab4BkgGN
+ Af8B9wHxAe8B/wH7AfgB9wH/AcEBmAGPAf8B6gHaAdEF/wHlAeIB5gH/Ac4BygHHAf8BhwFXAT0B+UQA
+ AYABaAGCAfMBgQFdAWoB7Qj/AvUB+wH/AXABbAHUAf8BoQGfAecB/wGjAaEB5gH/AaIBoQHlAf8BlAGR
+ AeEB/wGeAZwB5gX/AfkB+AH3Af8B5wHkAd4B/wFgAVABcgH1AV0BWQGQAfsBgAGCAWgB8wGBAWsBXgHt
+ EP8B5AHxAeQB/wEEAXgBBAH/ARQBfgEUAf8BnAHOAZwJ/wH5AfcB+QH/AeYB3gHnAf8BYAFyAVUB9QFd
+ AZABWQH7AZsBcAFmAfMBjwFhAV0B7Qz/Aa4BeQFXAf8BXAIDAf8B+AH1AfIB/wH6AfcB9QH/AVwCAwH/
+ AbMBfgFdBf8B8QH0AfUB/wHeAeYB5wH/AYgBWgFNAfUBmQFhAVQB+0AAAYIBiAHKAf8B0AHSAe0J/wL1
+ AfoB/wE+ATsBuwH/AWoBZwHeAf8BZwFjAdgB/wFiAV4B0wH/AVYBUQHRAf8BogGhAekF/wL5AfgB/wH8
+ AfsB6gH/AaMBpgG+Af8BRgFNAaAB/wGCAcoBigH/AdAB7QHUEf8B4gHwAeIB/wEFAXkBBQH/AQMBeQED
+ Af8BFAGEARQB/wGYAcwBmAX/AfkB+AH5Af8B/AHqAfoB/wGjAb4BpQH/AUYBoAFRAf8BygGcAYIB/wHt
+ AdsB0A3/AboBjAFtAf8BjQElAQMC/wL+Af8D/gH/AY0BJAEDAf8BuwGJAWsF/wHyAfQB9QH/AeoB9QH8
+ Af8BvgGsAaMB/wGgAWcBRgH/QAABdwF9AcIB/wHlAeYB9An/AvcB+wH/AU0BSgHDAf8BeAF2AeMB/wFz
+ AXAB3QH/AW4BawHYAf8BYgFdAdMB/wGrAakB6gX/A/kB/wH+AfsB7wH/AbQBtgHFAf8BRAFMAZ8B/wF3
+ AcIBgQH/AeUB9AHnEf8B4gHwAeIB/wEEAXsBBAH/AQMBfQEDAf8BAwF1AQMB/wEUAYQBFAH/AfoB/AH6
+ Af8D+QH/Af4B7wH+Af8BtAHFAbYB/wFEAZ8BTwH/AcIBkwF3Af8B9AHrAeUN/wG5AYwBbgH/AacBOwEO
+ Af8B+wH5AfgB/wH7AfoB+QH/AacBOwEOAf8BvQGMAW4F/wP0Af8B7wH6Af4B/wHFAboBtAH/AZ8BZQFE
+ Af9AAAFzAXoBvQH/AtoB7wn/AvcB+wH/AVEBTgHHAf8BfgF8AeoB/wF5AXgB4wH/AXYBdAHfAf8BaQFm
+ AdoB/wGtAasB6wX/AvoB+AH/Af0B/AHuAf8BnQGgAbsB/wFMAVQBowH/AXMBvQF7Af8B2gHvAd4R/wHi
+ AfAB4gH/AQUBewEFAf8BAwFzAQMB/wEvAY4BLwH/AeIB8AHiBf8B+gH4AfoB/wH9Ae4B+wH/AZ0BuwGh
+ Af8BTAGjAVUB/wG9AY4BcwH/Ae8B4wHaDf8BtwGIAWkB/wHEAUoBJwH/Av0B/AH/AfwB+gH5Af8BxgFN
+ ASkB/wHCAY8BcwX/AfIB9QH3Af8B7gH3Af0B/wG7AagBnQH/AaMBawFMAf9AAAF+AVwBcQHvAYcBawF8
+ AfEI/wL2AfsB/wFOAUoBxQH/AX0BfAHrAf8BeQF4AeQB/wF3AXQB4QH/AWcBZAHbAf8BqQGnAesF/wL7
+ AfkB/wH7AfwB7gH/AU0BSgGIAfsBeAFcAWoB7wF+AXEBXAHvAYcBfAFsAfEQ/wHiAfAB4gH/AQMBcQED
+ Af8BKwGHASsB/wHnAfMB5wn/AfsB+QH7Af8B/AHuAfkB/wFNAYgBTAH7AXgBagFcAe8BkAFlAVwB7wGe
+ AXABagHxDP8BwQGXAX0B/wGkAUEBGQH/Af0B+wH6Af8B/AH6AfkB/wGTATwBEgH/AcwBqQGUBf8B9AH3
+ AfkB/wHuAfUB/AH/AZEBWQFFAfsBjQFcAVsB70QAAX4BgQHPCf8C8wH5Af8BTAFJAbkB/wGHAYYB1gH/
+ AYcBhQHVAf8BhwGFAdUB/wFoAWUByAH/AXABbwHMBv8B/gH8Af8CzgHXAf8BPAFEAZgB/wgAAX4BzwGN
+ Ef8B0wHoAdMB/wEnAYcBJwH/AeIB8AHiDf8B/gH8Av8BzgHXAdAB/wE8AZgBRgH/CAABzwGhAX4p/wH7
+ A/8B1wHSAc4B/wGYAV0BPAH/SAABiQF8AagB+QGSAXABiQHxJP8B/AH7AfYB/wE6AUIBlgH/AXoBUgFc
+ AekIAAGJAagBfgH5AZIBiQF5AfEM/wH6AfwB+gH/Ae8B9gHvEf8B/AH2AfwB/wE6AZYBRAH/AXoBXAFR
+ AekIAAG3AYgBewH5AaUBegFwAfEk/wH1AfoB/AH/AZYBWwE6Af8BgwFVAVEB6UwAAoMBwAH9AYQBXQFj
+ Aekc/wHyAfUB+AH/AV4BUwFzAfUBcQFeAYEB9RAAAYMBwAGIAf0BhAFjAV0B6Rz/AfQB+AHyAf8BXgFz
+ AVMB9QFxAYEBZAH1EAABxgGdAX8B/QGLAV8BXQHpHP8B+ALyAf8BiQFYAUsB9QGXAWoBWgH1VAABgwGA
+ AbUB+wGRAYMBsgH5AtMB9wH/AfEB8AH7Af8B9gH3Av8B9wH4Af0B/wHkAecB8wH/AXkBXAFtAe8BeAFg
+ AXgB8wGBAVkBYwHrGAABgwG1AYQB+wGRAbIBiwH5AdMB9wHaAf8B8AH7AfMB/wH2Af8B9wH/AfcB/QH4
+ Af8B5AHzAeQB/wF5AW0BXAHvAngBYgHzAYEBYwFZAesYAAG/AY8BewH7Ab4BmAGCAfkB9wHjAdMB/wH7
+ AfYB8AL/AfkB9gH/Af0B+QH3Af8B8wHoAeQB/wGPAV8BXAHvAZMBaAFfAfMBiwFdAVkB61wAAYUBXQFq
+ AesBjQGTAdcB/wGOAZQB3QH/AY8BlQHgAf8BjQGUAdsB/wGaAZ8B2gH/AX4BUgFZAeckAAGFAWoBXwHr
+ AY0B1wGWAf8BjgHdAZgB/wGPAeABmQH/AY0B2wGWAf8BmgHaAaIB/wF+AVkBUwHnJAABkAFiAV0B6wHX
+ AagBjQH/Ad0BrAGOAf8B4AGtAY8B/wHbAakBjQH/AdoBsgGaAf8BgwFUAVEB51QAAUIBTQE+BwABPgMA
+ ASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAH8AT8B/AE/AfwBPwIAAfABDwHwAQ8B8AEPAgAB4AEH
+ AeABBwHgAQcCAAHAAQMBwAEDAcABAwIAAYABAQGAAQEBgAEBAgABgAEBAYABAQGAAQEqAAGAAQEBgAEB
+ AYABAQIAAYABAQGAAQEBgAEBAgABwAEDAcABAwHAAQMCAAHgAQcB4AEHAeABBwIAAfABHwHwAR8B8AEf
+ AgAL