diff --git a/Data/DcLang-Japanese.txt b/Data/DcLang-Japanese.txt index c77cdcf..ed184bc 100644 --- a/Data/DcLang-Japanese.txt +++ b/Data/DcLang-Japanese.txt @@ -39,6 +39,8 @@ LANG=日本語 41=削除 42=ネットワーク接続ステータス: {0} 43=接続なし +44=FFXIV プラグインの地役調べが失敗しました +45=FFXIV プラグインの地役: {0} ({1}) 99=DutyContent プラグイン {0} diff --git a/Data/DcLang-Korean(Actoz).txt b/Data/DcLang-Korean(Actoz).txt index 10673c6..8ab9605 100644 --- a/Data/DcLang-Korean(Actoz).txt +++ b/Data/DcLang-Korean(Actoz).txt @@ -39,6 +39,8 @@ LANG=한국어(액토즈) 41=삭제 42=네트워크 연결 상태: {0} 43=접속하고 있지 않습니다 +44=클라이언트 리전 조사가 실패했어요! +45=클라이언트 리전: {0} ({1}) 99=듀티 콘텐츠 플러그인 {0} diff --git a/Data/DcLang-Korean(Test).txt b/Data/DcLang-Korean(Test).txt index 23ebe71..9023ccb 100644 --- a/Data/DcLang-Korean(Test).txt +++ b/Data/DcLang-Korean(Test).txt @@ -39,6 +39,8 @@ LANG=한국어 41=삭제 42=네트워크 연결 상태: {0} 43=끊겨있음 +44=FFXIV 플러그인 리전 조사가 실패했어요! +45=FFXIV 플러그인 리전: {0} ({1}) 99=듀티 콘텐츠 플러그인 {0} diff --git a/DcConfig.cs b/DcConfig.cs index d05b373..356d383 100644 --- a/DcConfig.cs +++ b/DcConfig.cs @@ -12,13 +12,16 @@ namespace DutyContent { class DcConfig { - public static int PluginTag => 26; + public static int PluginTag => 27; public static Version PluginVersion => System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; public static bool PluginEnable { get; set; } public static string PluginPath { get; set; } public static string DataPath { get; set; } - public static string ConfigPath { get; set; } + + // + public static string ActConfigPath { get; set; } + public static string PluginConfigPath { get; set; } // public static PacketConfig Packet = new PacketConfig(); @@ -35,6 +38,9 @@ namespace DutyContent public static bool StatusBar { get; set; } = false; public static bool DebugEnable { get; set; } = false; + // + public static int GameRegion { get; set; } = 0; // 0=SQ, 1=ACTOZ + // public static string BuildDataFileName(string header, string context, string ext) { @@ -63,7 +69,7 @@ namespace DutyContent public static void SaveConfig(string filename = null) { if (filename == null) - filename = ConfigPath; + filename = ActConfigPath; using (var sw = new StreamWriter(filename, false, Encoding.UTF8)) { @@ -86,10 +92,22 @@ namespace DutyContent // public static void LoadConfig(string filename = null) { - if (filename == null) - filename = ConfigPath; - - if (!File.Exists(filename)) + if (string.IsNullOrEmpty(filename)) + { + if (File.Exists(ActConfigPath)) + filename = ActConfigPath; + else + { + if (File.Exists(PluginConfigPath)) + filename = PluginConfigPath; + else + { + filename = ActConfigPath; + SaveConfig(filename); + } + } + } + else if (!File.Exists(filename)) SaveConfig(filename); var db = new ThirdParty.LineDb(filename, Encoding.UTF8, false); @@ -297,7 +315,7 @@ namespace DutyContent public Point OverlayLocation { get; set; } = new Point(0, 0); public bool OverlayClickThru { get; set; } public bool OverlayAutoHide { get; set; } - public int OverlayAutoElapse { get; set; } = 20000; // 20x1000 + public int OverlayAutoElapse { get; set; } = 20000; // 20x1000 public bool EnableSound { get; set; } public string SoundInstanceFile { get; set; } diff --git a/DcControl.cs b/DcControl.cs index fd7981c..20aa8e0 100644 --- a/DcControl.cs +++ b/DcControl.cs @@ -79,7 +79,10 @@ namespace DutyContent DcConfig.PluginPath = pin?.pluginFile.DirectoryName; DcConfig.DataPath = Path.Combine(DcConfig.PluginPath, "Data"); - DcConfig.ConfigPath = Path.Combine(DcConfig.PluginPath, "DutyContent.config"); + DcConfig.PluginConfigPath = Path.Combine(DcConfig.PluginPath, "DutyContent.config"); + + var actdata = ActGlobals.oFormActMain.AppDataFolder.FullName; + DcConfig.ActConfigPath = Path.Combine(actdata, "Config", "DutyContent.config"); } // @@ -119,6 +122,36 @@ namespace DutyContent Logger.I(6, System.Diagnostics.FileVersionInfo.GetVersionInfo(_ffxiv_plugin_data.pluginFile.FullName).FileVersion); } + // begin region check - from cacbot "VersionChecker.cs" + try + { + var mach = System.Reflection.Assembly.Load("Machina.FFXIV"); + var opcode_manager_type = mach.GetType("Machina.FFXIV.Headers.Opcodes.OpcodeManager"); + var opcode_manager = opcode_manager_type.GetProperty("Instance").GetValue(null); + var machina_region = opcode_manager_type.GetProperty("GameRegion").GetValue(opcode_manager).ToString(); + switch (machina_region) + { + //case "Chinese": // no chinese support now + case "Korean": + DcConfig.GameRegion = 1; + break; + default: + DcConfig.GameRegion = 0; + break; + } + + Logger.I(45, machina_region, DcConfig.GameRegion); + } + catch (Exception ex) + { + Logger.Ex(ex, 44); + DcConfig.GameRegion = 0; + } + + if (DcConfig.GameRegion != 0) + DcConfig.Duty.PacketForLocal = true; + // end region check + _save_timer = new System.Timers.Timer() { Interval = 5000 }; _save_timer.Elapsed += (sender, e) => { diff --git a/DutyContent.csproj b/DutyContent.csproj index fb2bcc1..ddf67e7 100644 --- a/DutyContent.csproj +++ b/DutyContent.csproj @@ -242,7 +242,7 @@ if exist "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" copy $(TargetPath) "%25APPDATA%25\Advanced Combat Tracker\Plugins\DutyContent" /y -rem if exist "D:\FF14K\actk\Plugins\DutyContent" copy $(TargetPath) "D:\FF14K\actk\Plugins\DutyContent" /y +if exist "D:\FF14K\actk\Plugins\DutyContent" copy $(TargetPath) "D:\FF14K\actk\Plugins\DutyContent" /y diff --git a/PacketTest.txt b/PacketTest.txt index 97546a6..d745d44 100644 --- a/PacketTest.txt +++ b/PacketTest.txt @@ -1,4 +1,26 @@ -2022-8-27 +# final steps (169/A9) + +2022-9-13 액토즈판 + +# undersize +[13:24:37] 758(32,12) => 01 15 00 00 40 20 02 40 00 00 01 00 A9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +[13:24:37] 758(32,12) => 01 15 00 74 60 24 02 40 00 00 01 01 A9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +[13:24:37] 792(24,4) => 02 C0 78 0D A9 00 05 01 00 00 00 00 00 00 00 00 00 00 00 00 5A 7F 00 00 +[13:24:37] 346(32,20) => 03 00 00 00 60 24 02 40 00 00 00 00 00 00 00 00 01 F2 E6 03 A9 00 00 00 50 49 2A 1D 00 00 00 01 +[13:24:37/인스턴스] 매칭: 니드호그 토벌전 +758 => 듀티 / 12=인스턴스 +346 => 매칭 + +[13:24:41] 245(24,8) => 04 16 00 00 01 00 00 00 A9 00 00 00 00 00 00 00 00 00 01 01 00 00 00 00 +[13:24:41] 309(32,4) => 36 09 00 00 DF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5A 7F 00 00 +[13:24:42] 541(96,6) => 1F 00 2F 02 12 00 A9 00 00 00 00 00 00 00 00 00 03 00 2A 00 A8 2D 38 00 E0 00 00 00 00 80 09 41 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 19 00 58 00 00 00 00 00 00 00 00 00 00 00 0B 58 D9 3E 00 C0 15 B6 59 80 95 41 00 01 01 01 01 01 01 01 01 01 01 00 00 00 00 00 +[13:24:42/인스턴스] 들감미: 니드호그 토벌전 + +[13:24:49] 541(96,2) => 14 00 86 00 00 00 00 00 00 00 00 00 00 00 00 00 04 07 14 00 AA 50 C3 00 44 00 00 00 00 80 09 41 00 00 80 3F 18 00 19 00 58 00 00 00 00 00 00 00 00 00 00 00 18 00 19 00 58 00 00 00 00 00 00 00 00 00 00 00 A9 53 C6 C1 EA 2C 19 42 B2 0C 16 43 00 03 01 04 01 03 01 01 01 01 01 FF 00 00 00 00 + + + +2022-8-27 # undersize 끄고 [20:43:33] 183(40,20) => 01 13 00 04 00 00 00 00 60 00 02 40 00 00 00 00 00 00 01 00 A9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 diff --git a/Resources/mesg.txt b/Resources/mesg.txt index 0a7e158..7edb234 100644 --- a/Resources/mesg.txt +++ b/Resources/mesg.txt @@ -40,6 +40,8 @@ LANG=English 41=Delete 42=Network detected: {0} 43=Closed +44=Plugin region check has failed! +45=Plugin region: {0} ({1}) 99=DutyContent Plugin {0} diff --git a/Tab/DutyForm.Designer.cs b/Tab/DutyForm.Designer.cs index 7afcf68..5cf83f3 100644 --- a/Tab/DutyForm.Designer.cs +++ b/Tab/DutyForm.Designer.cs @@ -132,7 +132,6 @@ namespace DutyContent.Tab this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.lblPacketFinder = new System.Windows.Forms.Label(); this.ilTabContent = new System.Windows.Forms.ImageList(this.components); - this.chkPacketForLocal = new System.Windows.Forms.CheckBox(); this.tabContent.SuspendLayout(); this.tabPageContent.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); @@ -507,7 +506,6 @@ namespace DutyContent.Tab this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel3.Controls.Add(this.chkPacketForLocal); this.panel3.Controls.Add(this.btnResetContentList); this.panel3.Controls.Add(this.cboPacketset); this.panel3.Controls.Add(this.lblPacketSet); @@ -1039,17 +1037,6 @@ namespace DutyContent.Tab this.ilTabContent.Images.SetKeyName(2, "pix_tab_tool.png"); this.ilTabContent.Images.SetKeyName(3, "pix_tab_ping.png"); // - // chkPacketForLocal - // - this.chkPacketForLocal.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkPacketForLocal.AutoSize = true; - this.chkPacketForLocal.Location = new System.Drawing.Point(718, 9); - this.chkPacketForLocal.Name = "chkPacketForLocal"; - this.chkPacketForLocal.Size = new System.Drawing.Size(67, 22); - this.chkPacketForLocal.TabIndex = 15; - this.chkPacketForLocal.Text = "10027"; - this.chkPacketForLocal.UseVisualStyleBackColor = true; - // // DutyForm // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F); @@ -1158,6 +1145,5 @@ namespace DutyContent.Tab private Libre.ContentListView lstContents; private System.Windows.Forms.Button btnResetContentList; private System.Windows.Forms.CheckBox chkOverlayAutoHide; - private System.Windows.Forms.CheckBox chkPacketForLocal; } } \ No newline at end of file diff --git a/Tab/DutyForm.cs b/Tab/DutyForm.cs index 20db35c..c0398c1 100644 --- a/Tab/DutyForm.cs +++ b/Tab/DutyForm.cs @@ -104,9 +104,6 @@ namespace DutyContent.Tab btnTestNotify.Enabled = DcConfig.Duty.EnableNotify; - // - chkPacketForLocal.Checked = DcConfig.Duty.PacketForLocal; - // switch (DcConfig.Duty.ActiveFate) { @@ -190,8 +187,6 @@ namespace DutyContent.Tab btnPacketStart.Text = Locale.Text(10007); btnPacketApply.Text = Locale.Text(10009); - chkPacketForLocal.Text = Locale.Text(10027); - // content reset lstContents.InitializeContentList( Locale.Text(343), // ID @@ -287,62 +282,68 @@ namespace DutyContent.Tab if (DcConfig.Duty.PacketForLocal) { // for ACTOZ/Korea - var rcode = data[8]; + if (data[11] == 0) + { + var rcode = data[8]; - if (rcode != 0) - { - var roulette = DcContent.GetRoulette(rcode); - TraceEntryRoulette(roulette); - _overlay.PlayQueue(roulette.Name); - } - else - { - var insts = new List(); - for (var i = 0; i < 5; i++) + if (rcode != 0) { - var icode = BitConverter.ToUInt16(data, 12 + (i * 4)); - if (icode == 0) - break; + var roulette = DcContent.GetRoulette(rcode); + TraceEntryRoulette(roulette); + _overlay.PlayQueue(roulette.Name); + } + else + { + var insts = new List(); + for (var i = 0; i < 5; i++) + { + var icode = BitConverter.ToUInt16(data, 12 + (i * 4)); + if (icode == 0) + break; + } + + if (insts.Any()) + { + TraceEntryInstance(insts); + _overlay.PlayQueue(Locale.Text(10006, $"#{insts.Count}")); + } } - if (insts.Any()) - { - TraceEntryInstance(insts); - _overlay.PlayQueue(Locale.Text(10006, $"#{insts.Count}")); - } + DcContent.Missions.Clear(); } - - DcContent.Missions.Clear(); } - else if (data[19] == 0) // duty packet comes twice, index 19 is 0 and 1 + else { - // for global - var rcode = data[16]; + if (data[19] == 0) // duty packet comes twice, index 19 is 0 and 1 + { + // for global + var rcode = data[16]; - if (rcode != 0) - { - var roulette = DcContent.GetRoulette(rcode); - TraceEntryRoulette(roulette); - _overlay.PlayQueue(roulette.Name); - } - else - { - var insts = new List(); - for (var i = 0; i < 5; i++) + if (rcode != 0) { - var icode = BitConverter.ToUInt16(data, 20 + (i * 4)); - if (icode == 0) - break; + var roulette = DcContent.GetRoulette(rcode); + TraceEntryRoulette(roulette); + _overlay.PlayQueue(roulette.Name); + } + else + { + var insts = new List(); + for (var i = 0; i < 5; i++) + { + var icode = BitConverter.ToUInt16(data, 20 + (i * 4)); + if (icode == 0) + break; + } + + if (insts.Any()) + { + TraceEntryInstance(insts); + _overlay.PlayQueue(Locale.Text(10006, $"#{insts.Count}")); + } } - if (insts.Any()) - { - TraceEntryInstance(insts); - _overlay.PlayQueue(Locale.Text(10006, $"#{insts.Count}")); - } + DcContent.Missions.Clear(); } - - DcContent.Missions.Clear(); } } @@ -1351,16 +1352,6 @@ namespace DutyContent.Tab } } - private void ChkPacketForLocal_CheckedChanged(object sender, EventArgs e) - { - if (!DcConfig.PluginEnable) - return; - - DcConfig.Duty.PacketForLocal = chkPacketForLocal.Checked; - - SaveConfig(); - } - private void LstPacketInfo_SelectedIndexChanged(object sender, EventArgs e) { if (lstPacketInfo.SelectedIndices.Count != 1) @@ -1565,7 +1556,7 @@ namespace DutyContent.Tab var data = message.Skip(32).ToArray(); #if TESTPK -#if false +#if true // 파이날 스텝으로 오는거 전부 얻기 var t = IndexOfData(data, 0, new ushort[] { 169, 134, 183, 223, 637 }); // final, P1, S1, Z1, Snake if (t > 0) @@ -1604,7 +1595,7 @@ namespace DutyContent.Tab } // duty & packet - if (chkPacketForLocal.Checked) + if (DcConfig.Duty.PacketForLocal) { // for ACTOZ/Korean service diff --git a/Tab/DutyForm.resx b/Tab/DutyForm.resx index 3e43f55..661796f 100644 --- a/Tab/DutyForm.resx +++ b/Tab/DutyForm.resx @@ -133,10 +133,10 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD4 - QwAAAk1TRnQBSQFMAgEBBAEAAQgBAgEIAQIBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA + QwAAAk1TRnQBSQFMAgEBBAEAARABAgEQAQIBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA AwABQAMAAQEBAAEgBgABgP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A - /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgFZA1oBxANcAeoDAAH/AwAB/wMAAf8DAAH/AwAB/wMA + /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AWgADNgFZA1oBxANdAeoDAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA Af8DAAH/A14B4gNVAa4DKgE/CAADCAEKA0kBhQIAAaoB/wIAAaoB/wIAAaQB/wIAAaQB/wIAAaQB/wIA AaQB/wIAAaQB/wIAAaQB/wIAAaMB/wIAAaIB/wIAAaIB/wIAAaIB/wIAAaIB/wIAAaIB/wIAAaIB/wIA @@ -165,7 +165,7 @@ AdUBogEkAf8B1QGiASQB/wHVAaIBJAH/AdUBogEkAf8B1QGiASQB/wHVAaIBJAH/AdUBogEkAf8B1QGi ASQB/wHEAZUBHAH/AYkBLgEIAf8BAwESARgB/wGUATMBBwH/AdMBoQEjAf8B1QGiASQB/wHVAaIBJAH/ AdUBogEkAf8B1QGiASQB/wHVAaIBJAH/AdUBogEkAf8B1QGiASQB/wHVAaIBJAH/AdUBogEkAf8BwAGT - AR4B/wMIAf8DxQH/A1IB8AIAAZkB/wIAAYsB/wIAAT8B/wIAATsB/wIAATMB/wIAATMB/wIAAS4B/wIA + AR4B/wMIAf8DxQH/A1MB8AIAAZkB/wIAAYsB/wIAAT8B/wIAATsB/wIAATMB/wIAATMB/wIAAS4B/wIA ASsB/wIAASoB/wIAAScB/wIAASMB/wIAASMB/wIAASIB/wIAAR8B/wIAARsB/wIAARsB/wIAARsB/wIA ARsB/wIAAR8B/wIAASIB/wIAASMB/wIAASMB/wIAAScB/wIAASoB/wIAAS0B/wIAATMB/wIAATMB/wIA ATMB/wIAATsB/wIAAT8B/wIAAYsB/wIAAZkB/0gABAIDBwEJAxkBIgM5AV4DVQGtAV4CYQHiA20B9wNl @@ -235,7 +235,7 @@ Av8BOgHqAv8BPgHuAv8BHQHAAesB/wIAAY4B/wIAATgB/wIAATcB/wIAATYB/wIAATYB/wIAAYEB/wEV AaEB1AH/ATYB5gL/AQABLwHBAf8BNgHmAv8BAAGPAdQB/wEjAckB8QH/ASMByQHxAf8BAAGPAdUB/wEs AdwB9QH/AQABFQGYAf8CAAEwAf8BDAGUAbQB/wEAAREBiAH/AgABQQH/HAADAgEDAwYBCAMNAREDGAEg - AyMBMgMqAUADLAFDAzEBTgNHAYIDXQHMAU0BTwFWAfoB7QP/AckD/wHDAfsC/wHDAfsC/wHNA/8B+AP/ + AyMBMgMqAUADLAFDAzEBTgNHAYIDXQHMAU0BTgFVAfoB7QP/AckD/wHDAfsC/wHDAfsC/wHNA/8B+AP/ A1wB+AFdAl8BzgNJAYcDKwFCAxIBFwMFAQYEAS8AAf8DAAH/AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/ AgAC/wIAAv8nAAH/A5AB/wMAAf8BxQEzARkB/wHMATYBGwH/AcwBNgEbAf8BpAEfAQoB/wEFAQgBGAH/ AQABIgGJAf8BAAEnAY0B/wERAQEBGwH/AbwBCgE/Af8BxAEaAZwB/wHRASoBrwH/AdwBNgHBAf8B5gE/ @@ -254,8 +254,8 @@ ARUBigH/AQ0BlwG2Af8CAAEvAf8CAAE4Af8CAAGPAf8CAAGXAf8CAAGXAf8CAAGPAf8CAAGPAf8CAAGP Af8CAAGIAf8CAAE6Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE4 Af8CAAE+Af8CAAE+Af8CAAFCAf8CAAGDAf8CAAGDAf8CAAFBAf8CAAEwAf8CAAEvAf8BDQGUAbQB/wEA - AREBiAH/AgABQQH/EAAEAQMFAQYDDwEUAyQBNQNAAW8DVgGzAV8CYgHhA2UB9AJNAVQB+gNcAfgDWgH1 - Ak0BUgL6A/8BzQP/AcMB+wL/AcQB/AL/AdQD/wHzAfgB/AH/A1oB9QNZAcEDQAFwAyABLgMMAQ8DBAEF + AREBiAH/AgABQQH/EAAEAQMFAQYDDwEUAyQBNQNAAW8DVgGzAWACYgHhA2UB9AJNAVMB+gNcAfgDWgH1 + Ak0BUQL6A/8BzQP/AcMB+wL/AcQB/AL/AdQD/wHzAfgB/AH/A1oB9QNZAcEDQAFwAyABLgMMAQ8DBAEF BAEbAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIA Av8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/w8AAf8DlgH/AwAB/wHBAS0BGAH/AcgBMAEZ Af8BxAEuARcB/wGHAQ4BAAH/AQABDQE3Af8BAAE1AZcB/wEAATABlwH/AYABAAEfAf8BxgEaAZoB/wHV @@ -275,8 +275,8 @@ Af8CAAEvAf8CAAEwAf8CAAFBAf8CAAGDAf8CAAGDAf8CAAE+Af8CAAE+Af8CAAE5Af8CAAE2Af8CAAE2 Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE6Af8CAAE+ Af8CAAE+Af8CAAGDAf8CAAGDAf8CAAFBAf8CAAEwAf8CAAEvAf8BDQGUAbQB/wEAAREBiAH/AgABQQH/ - EAADAwEEAxgBIQM9AWkDWgG/AU0BTwFWAfoB8QP/Ac4D/wHEAfwC/wHDAfsC/wHDAfsC/wHDAfsC/wHD - AfsC/wHDAfsC/wHGAf4C/wHeA/8DgAH+AVICXgHwA1gBtwM7AWMDGwElAwkBDAMDAQQnAAH/AwAB/wMA + EAADAwEEAxgBIQM9AWkDWgG/AU0BTgFVAfoB8QP/Ac4D/wHEAfwC/wHDAfsC/wHDAfsC/wHDAfsC/wHD + AfsC/wHDAfsC/wHGAf4C/wHeA/8DgAH+AVMCXgHwA1gBtwM7AWMDGwElAwkBDAMDAQQnAAH/AwAB/wMA Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIAAv8CAAL/AgAC/wIA Av8CAAL/AgAC/wIAAv8CAAL/AgAC/w8AAf8DnwH/AwAB/wG7ASkBFgH/AcABKgEWAf8BhgEMAQAB/wEA AQYBHwH/AQABJQGUAf8BGQGVAbkB/wEJARABKwH/AbgBCQE9Af8BxwEeAaAB/wHZATIBuwH/Ae8BhQHa @@ -286,7 +286,7 @@ AQABEwGiAf8CAAGOAf8CAAFBAf8CAAE4Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2 Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE5Af8CAAE+Af8CAAE+Af8CAAGDAf8CAAGDAf8CAAFBAf8CAAEw Af8CAAEvAf8BDAGUAbQB/wEAAREBiAH/AgABQQH/EAADBQEGAyMBMwNOAZUDZQH0BP8B2gP/AdkD/wHg - A/8B3QP/Ac8D/wHFAf0C/wHDAfsC/wHDAfsC/wHTA/8DgAH+AVICXgHwA1gBtwM6AWADGQEiAwkBCwMC + A/8B3QP/Ac8D/wHFAf0C/wHDAfsC/wHDAfsC/wHTA/8DgAH+AVMCXgHwA1gBtwM6AWADGQEiAwkBCwMC AQMrAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8OAAL/AgAC/wIA Av8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/w8AAf8DpAH/AwAB/wG5ASYBFAH/AaABGAEI Af8BKAEEAQIB/wEAAQYBPgH/AQgBPQGiAf8BAAEuAZIB/wE2AQABBwH/AbcBCQFAAf8BwgEaAZsB/wHT @@ -296,7 +296,7 @@ Af8BNgHpAv8BLwHgAfgB/wESAbEB3wH/AQABLwG1Af8CAAGKAf8CAAE4Af8CAAE2Af8CAAE2Af8CAAE2 Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE2Af8CAAE3Af8CAAE7Af8CAAFAAf8CAAGEAf8CAAGN Af8CAAGMAf8CAAGDAf8CAAExAf8CAAEvAf8BCgGVAbQB/wEAARMBiAH/AgABQQH/EAADBQEGAyMBMgFM - Ak0BkQNlAfEDqAH9A4AB/gOoAf0DXwH7AUEBXwFlAfwB5wHxAfgB/wHVA/8BwwH7Av8BwwH7Av8B4AP/ + Ak0BkQNlAfEDqAH9A4AB/gOoAf0DXwH7AUABXwFlAfwB5wHxAfgB/wHVA/8BwwH7Av8BwwH7Av8B4AP/ A18B+wFbAl4B0wNCAXQDGwElAwYBCAQCLwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ AwAB/wMAAf8DAAH/DgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8PAAH/ A6oB/wMAAf8BqQEcAQ0B/wEwAQUBAgH/ASEBlgG1Af8BOgHBAeQB/wGUAdgB6wH/AQABFAGIAf8BAAEH @@ -307,7 +307,7 @@ AaUB/wIAAYkB/wIAAT0B/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIA ATYB/wIAATgB/wIAAUAB/wIAAY4B/wEAATEBuAH/AQ8BmgHSAf8BBgGNAcsB/wEAARgBpQH/AgABOQH/ AgABLwH/AQ0BlwG2Af8BAAEVAYoB/wIAAUEB/xAAAwMBBAMWAR4DNgFZAVACUQGcA1oBvwNdAckBWwJd - AcoBXQJfAc4BXAJgAeMBWwJiAfYB8AP/AcMB+wL/AcMB+wL/Ad0D/wFXAWMBZwH8A1oBxwM4AVsDDwEU + AcoBXQJfAc4BXQJgAeMBXAJiAfYB8AP/AcMB+wL/AcMB+wL/Ad0D/wFXAWMBZwH8A1oBxwM4AVsDDwEU BAFPAAH/AwAB/wMAAf8DAAH/AwAB/w4AAv8CAAL/AgAC/wIAAv8CAAL/JwAB/wOwAf8DAAH/Aa8BHQEQ Af8BPwEEAQAB/wEiAQABAQH/AR0BOQGFAf8BsAHuAfcB/wGbAeMB7wH/AQABFwGRAf8BAAETASwB/wGl AQMBLwH/AcABFgGVAf8BywEkAakB/wHWAS8BtwH/Ad4BOQHCAf8B4QE7AcYB/wHeATkBwgH/AdYBLwG3 @@ -316,7 +316,7 @@ Af8BAAEPAY8B/wEbAccB6AH/ASIB0AHzAf8BIwHLAfIB/wEZAbsB5gH/AQMBjQHMAf8BAAEaAaUB/wIA AYEB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIAATYB/wIA AUAB/wEAAS8BtQH/ASQB0AHxAf8BNAHpAf0B/wExAeUB+wH/AQ0BqQHcAf8CAAGEAf8CAAEvAf8BDQGb - AbgB/wEAARUBiwH/AgABQQH/EAADAgEDAwoBDQMcAScDLwFJAzwBZgNEAXoDSAGEAU4CTwGXA10BzAFX + AbgB/wEAARUBiwH/AgABQQH/EAADAgEDAwoBDQMcAScDLwFJAzwBZgNEAXoDSAGEAU4CTwGXA10BzAFY AmUB8QT/AcMB+wL/AcMB+wL/AdcD/wOoAf0DXAHIAzcBWgMMAQ9TAAH/AwAB/wMAAf8DAAH/AwAB/w4A Av8CAAL/AgAC/wIAAv8CAAL/JwAB/wO2Af8DAAH/AbABHAEQAf8BsgEcAQ8B/wGfARMBBwH/AUABAwEA Af8BBwEAAQ4B/wGTAdQB6AH/AZYB3gHvAf8BAAEmAZYB/wEAAQoBIQH/AbgBBwE6Af8BvwEUAZMB/wHG @@ -373,7 +373,7 @@ AbkBzQH/ASUBuQHNAf8BJQG5Ac0B/wElAbkBzQH/ASUBuQHNAf8BJQG5Ac0B/wElAbkBzQH/ASUBuQHN Af8BJQG5Ac0B/wEoAbkBzQH/ASgBvAHPAf8BKAG/AdIB/wEoAb8B0gH/ASgBvwHSAf8BKAG/AdIB/wEm AbwBzwH/ASUBuQHNAf8BJAG2AcgB/wEUAZ4BwAH/AQABFQGbAf8CAAGUAf8UAAMEAQUDEgEXAyoBPwNE - AXkBVQJXAbQBXQJhAdwDYAHzAk0BVAH6Ak0BVAH6A14B7QFbAl8B0AFQAlEBnwM2AVkDGAEhAwgBCgQC + AXkBVQJXAbQBXQJhAdwDYAHzAk0BUwH6Ak0BUwH6A14B7QFbAl8B0AFQAlEBnwM2AVkDGAEhAwgBCgQC VwAB/wMAAf8DAAH/AwAB/wMAAf9HAAH/A98B/wMAAf8BnAEKAQgB/wGhAQsBCQH/AaEBCwEJAf8BoQEL AQkB/wGhAQsBCQH/AaEBCwEJAf8BmwEIAQYB/wEoAgAB/wGPAZYBoQH/ARYCAAH/ATACAAH/ATMCAAH/ AYECAAH/AYECAAH/AYECAAH/ATICAAH/AS0CAAH/AQoBAAENAf8BOgE+AYgB/wEyAgAB/wGgAQoBCAH/ @@ -383,10 +383,10 @@ AaEB/wERATwBoQH/AREBPAGhAf8BEQE8AaEB/wEVATwBogH/ARUBPAGmAf8BGAE/AaYB/wEaAUIBpgH/ ARoBQgGnAf8BGgFCAasB/wEYAUIBqwH/ARcBQgGrAf8BFAE+Aa4B/wECAR4BnwH/AgABlAH/AgABngH/ FAAEAQMFAQYDDAEQAx0BKAMxAU0DQgF1A08BmQNVAa0DUwGpA0wBjgM9AWcDKQE+AxQBGwMHAQkDAgED - WwAB/wMAAf8DAAH/AwAB/wMAAf9EAANQAfMD3wH/AxEB/wGKAgQB/wGbAQYBBwH/AZsBBgEHAf8BmwEG + WwAB/wMAAf8DAAH/AwAB/wMAAf9EAANRAfMD3wH/AxEB/wGKAgQB/wGbAQYBBwH/AZsBBgEHAf8BmwEG AQcB/wGbAQYBBwH/AZsBBgEHAf8BmgEFAQYB/wEtAgAB/wEnAgAB/wEvAgAB/wGZAQUBBgH/AZoBBgEH Af8BmwEGAQcB/wGbAQYBBwH/AZsBBgEHAf8BmgEFAQYB/wGSAQIBAwH/AS4CAAH/ASQCAAH/AS8CAAH/ - AZoBBgEHAf8BmwEGAQcB/wGbAQYBBwH/AZsBBgEHAf8BmwEGAQcB/wE/AQIBAwH/AxkB/wPdAf8DUgHw + AZoBBgEHAf8BmwEGAQcB/wGbAQYBBwH/AZsBBgEHAf8BmwEGAQcB/wE/AQIBAwH/AxkB/wPdAf8DUwHw AgABpAH/AgABngH/AgABlAH/AgABjwH/AgABjAH/AgABhgH/AgABggH/AgABQQH/AgABQQH/AgABPgH/ AgABOwH/AgABOQH/AgABOQH/AgABOQH/AgABOQH/AgABOQH/AgABOQH/AgABOQH/AgABOQH/AgABOQH/ AgABOQH/AgABOwH/AgABPgH/AgABQQH/AgABQQH/AgABggH/AgABhgH/AgABjAH/AgABjwH/AgABlAH/ @@ -411,7 +411,7 @@ AgABoQH/AgABoQH/AgABoQH/AgABoQH/AgABoQH/AgABoQH/AgABoQH/AgABpAH/AgABpgH/AgABqQH/ AgABqwH/AgABrAH/AgABrAH/AgABrAH/AgABrAH/AgABrAH/AgABrAH/AgABrAH/A0kBhf8ACQADNwFa A1kBwwMrAfwDAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ - AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A1wB6gNVAa4DLQFFCAADCAEKA0kBhQIA + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/A10B6gNVAa4DLQFFCAADCAEKA0kBhQIA AawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAasB/wIAAaoB/wIA AaoB/wIAAagB/wIAAaQB/wIAAaQB/wIAAaQB/wIAAaQB/wIAAagB/wIAAaoB/wIAAaoB/wIAAasB/wIA AawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wIAAawB/wNJAYUDCAEK/wABAAFC