From 6e6aa09d72c48ca01463aa74278c65d5a7bfca54 Mon Sep 17 00:00:00 2001 From: changyunjia <905640960@qq.com> Date: Mon, 11 May 2026 16:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4h5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BingoBrain/FGUI/Package/JMain/com_main.cs | 2 + Assets/BingoBrain/FGUI/Package/webview.meta | 8 ++ .../FGUI/Package/webview/com_webview.cs | 25 +++++ .../FGUI/Package/webview/com_webview.cs.meta | 11 +++ .../FGUI/Package/webview/webviewBinder.cs | 14 +++ .../Package/webview/webviewBinder.cs.meta | 11 +++ Assets/BingoBrain/Model/Info/SkinInfot.cs | 1 + Assets/BingoBrain/ModuleBoard/ModuleBoard.cs | 4 + .../ModuleUI/BingoHall/BingoHallUI.cs | 4 + Assets/BingoBrain/ModuleUI/H5.meta | 8 ++ Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs | 25 +++++ Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs.meta | 11 +++ Assets/BingoBrain/ModuleUI/H5/H5Model.cs | 23 +++++ Assets/BingoBrain/ModuleUI/H5/H5Model.cs.meta | 11 +++ Assets/BingoBrain/ModuleUI/H5/H5UI.cs | 93 ++++++++++++++++++ Assets/BingoBrain/ModuleUI/H5/H5UI.cs.meta | 11 +++ Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs | 74 ++++++++++++++ .../BingoBrain/ModuleUI/H5/H5UICtrl.cs.meta | 11 +++ Assets/BingoBrain/Register/UIManagerBoard.cs | 1 + Assets/BingoBrain/System/Game/JsonSystem.cs | 4 +- .../AssetHotFix/FGUI/JMain_fui.bytes | Bin 18003 -> 18114 bytes .../AssetHotFix/FGUI/webview_fui.bytes | Bin 0 -> 436 bytes .../AssetHotFix/FGUI/webview_fui.bytes.meta | 7 ++ 23 files changed, 357 insertions(+), 2 deletions(-) create mode 100644 Assets/BingoBrain/FGUI/Package/webview.meta create mode 100644 Assets/BingoBrain/FGUI/Package/webview/com_webview.cs create mode 100644 Assets/BingoBrain/FGUI/Package/webview/com_webview.cs.meta create mode 100644 Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs create mode 100644 Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs.meta create mode 100644 Assets/BingoBrain/ModuleUI/H5.meta create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs.meta create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5Model.cs create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5Model.cs.meta create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5UI.cs create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5UI.cs.meta create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs create mode 100644 Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs.meta create mode 100644 Assets/Resources/AssetHotFix/FGUI/webview_fui.bytes create mode 100644 Assets/Resources/AssetHotFix/FGUI/webview_fui.bytes.meta diff --git a/Assets/BingoBrain/FGUI/Package/JMain/com_main.cs b/Assets/BingoBrain/FGUI/Package/JMain/com_main.cs index 6c14d96..f8d9727 100644 --- a/Assets/BingoBrain/FGUI/Package/JMain/com_main.cs +++ b/Assets/BingoBrain/FGUI/Package/JMain/com_main.cs @@ -22,6 +22,7 @@ namespace FGUI.JMain public GButton btn_cashout; public btn_petty btn_petty; public GButton btn_play; + public GButton btn_wb; public const string URL = "ui://qw9x6rf3lbaa0"; public static com_main CreateInstance() @@ -48,6 +49,7 @@ namespace FGUI.JMain btn_cashout = (GButton)GetChildAt(15); btn_petty = (btn_petty)GetChildAt(16); btn_play = (GButton)GetChildAt(17); + btn_wb = (GButton)GetChildAt(18); } } } \ No newline at end of file diff --git a/Assets/BingoBrain/FGUI/Package/webview.meta b/Assets/BingoBrain/FGUI/Package/webview.meta new file mode 100644 index 0000000..15f15ef --- /dev/null +++ b/Assets/BingoBrain/FGUI/Package/webview.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f8424ae2ab97194d909b2bccc341f9e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/FGUI/Package/webview/com_webview.cs b/Assets/BingoBrain/FGUI/Package/webview/com_webview.cs new file mode 100644 index 0000000..096c41d --- /dev/null +++ b/Assets/BingoBrain/FGUI/Package/webview/com_webview.cs @@ -0,0 +1,25 @@ +/** This is an automatically generated class by FairyGUI. Please do not modify it. **/ + +using FairyGUI; +using FairyGUI.Utils; + +namespace FGUI.webview +{ + public partial class com_webview : GComponent + { + public GButton btn_close; + public const string URL = "ui://hb7tci4zogc90"; + + public static com_webview CreateInstance() + { + return (com_webview)UIPackage.CreateObject("webview", "com_webview"); + } + + public override void ConstructFromXML(XML xml) + { + base.ConstructFromXML(xml); + + btn_close = (GButton)GetChildAt(1); + } + } +} \ No newline at end of file diff --git a/Assets/BingoBrain/FGUI/Package/webview/com_webview.cs.meta b/Assets/BingoBrain/FGUI/Package/webview/com_webview.cs.meta new file mode 100644 index 0000000..758bbab --- /dev/null +++ b/Assets/BingoBrain/FGUI/Package/webview/com_webview.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ddb21d4dd804e24d9ca9db4af345923 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs b/Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs new file mode 100644 index 0000000..4754081 --- /dev/null +++ b/Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs @@ -0,0 +1,14 @@ +/** This is an automatically generated class by FairyGUI. Please do not modify it. **/ + +using FairyGUI; + +namespace FGUI.webview +{ + public class webviewBinder + { + public static void BindAll() + { + UIObjectFactory.SetPackageItemExtension(com_webview.URL, typeof(com_webview)); + } + } +} \ No newline at end of file diff --git a/Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs.meta b/Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs.meta new file mode 100644 index 0000000..7ec72b4 --- /dev/null +++ b/Assets/BingoBrain/FGUI/Package/webview/webviewBinder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4cf157248dc475948bd1df252550e3c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/Model/Info/SkinInfot.cs b/Assets/BingoBrain/Model/Info/SkinInfot.cs index b888875..1e36e3e 100644 --- a/Assets/BingoBrain/Model/Info/SkinInfot.cs +++ b/Assets/BingoBrain/Model/Info/SkinInfot.cs @@ -133,6 +133,7 @@ namespace BingoBrain public static uint RecordViewUI_Close = ++cursor_OpenClose; public static uint PettyAwardUI_Open = ++cursor_OpenClose; public static uint PettyAwardUI_Close = ++cursor_OpenClose; + } public static partial class UICtrlMsg { diff --git a/Assets/BingoBrain/ModuleBoard/ModuleBoard.cs b/Assets/BingoBrain/ModuleBoard/ModuleBoard.cs index cb230e4..a8828c6 100644 --- a/Assets/BingoBrain/ModuleBoard/ModuleBoard.cs +++ b/Assets/BingoBrain/ModuleBoard/ModuleBoard.cs @@ -47,6 +47,7 @@ namespace BingoBrain moduleBoardk.AddModel(ModelConst.RecordViewModel, new RecordViewModel()); moduleBoardk.AddModel(ModelConst.FirstRewardModel, new FirstRewardModel()); moduleBoardk.AddModel(ModelConst.PettyAwardModel, new PettyAwardModel()); + moduleBoardk.AddModel(ModelConst.H5Model, new H5Model()); } public static void AutoRegisterUIType() @@ -91,6 +92,7 @@ namespace BingoBrain moduleBoardk.AddUIType(UIConst.RecordViewUI, typeof(RecordViewUI)); moduleBoardk.AddUIType(UIConst.FirstRewardUI, typeof(FirstRewardUI)); moduleBoardk.AddUIType(UIConst.PettyAwardUI, typeof(PettyAwardUI)); + moduleBoardk.AddUIType(UIConst.H5UI, typeof(H5UI)); } public static void AutoRegisterCtrl() @@ -136,6 +138,7 @@ namespace BingoBrain moduleBoardk.AddCtrl(CtrlConst.RecordViewCtrl, new RecordViewCtrl()); moduleBoardk.AddCtrl(CtrlConst.FirstRewardCtrl, new FirstRewardCtrl()); moduleBoardk.AddCtrl(CtrlConst.PettyAwardCtrl, new PettyAwardCtrl()); + moduleBoardk.AddCtrl(CtrlConst.H5Ctrl, new H5Ctrl()); } public static void AutoRegisterUICtrl() @@ -181,6 +184,7 @@ namespace BingoBrain moduleBoardk.AddUICtrl(UICtrlConst.RecordViewUICtrl, new RecordViewUICtrl()); moduleBoardk.AddUICtrl(UICtrlConst.FirstRewardUICtrl, new FirstRewardUICtrl()); moduleBoardk.AddUICtrl(UICtrlConst.PettyAwardUICtrl, new PettyAwardUICtrl()); + moduleBoardk.AddUICtrl(UICtrlConst.H5UICtrl, new H5UICtrl()); } } } \ No newline at end of file diff --git a/Assets/BingoBrain/ModuleUI/BingoHall/BingoHallUI.cs b/Assets/BingoBrain/ModuleUI/BingoHall/BingoHallUI.cs index 167b60b..96fbacf 100644 --- a/Assets/BingoBrain/ModuleUI/BingoHall/BingoHallUI.cs +++ b/Assets/BingoBrain/ModuleUI/BingoHall/BingoHallUI.cs @@ -193,6 +193,10 @@ namespace BingoBrain { UICtrlDispatcher.Instance.Dispatch(SkinInfo.PettyAwardUI_Open); }); + ui.btn_wb.SetClick(() => + { + UICtrlDispatcher.Instance.Dispatch(SkinInfo.H5UI_Open); + }); } private void UpdateNextCardBoardTime() diff --git a/Assets/BingoBrain/ModuleUI/H5.meta b/Assets/BingoBrain/ModuleUI/H5.meta new file mode 100644 index 0000000..b0169f6 --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab00c3d5c44ee3d4fa5b2caa5721ae17 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs b/Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs new file mode 100644 index 0000000..0340eaa --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs @@ -0,0 +1,25 @@ +using BingoBrain.Core; + +namespace BingoBrain +{ + public class H5Ctrl : BaseCtrl + { + public static H5Ctrl Instance { get; private set; } + + private H5Model model; + + #region 生命周期 + protected override void OnInit() + { + Instance = this; + //model = ModuleManager.Instance..GetModel(ModelConst.H5Model) as H5Model; + } + + protected override void OnDispose() + { + Instance = null; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs.meta b/Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs.meta new file mode 100644 index 0000000..6cc49aa --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5Ctrl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9f0d89ff894a1074494420d446333bfc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/ModuleUI/H5/H5Model.cs b/Assets/BingoBrain/ModuleUI/H5/H5Model.cs new file mode 100644 index 0000000..7c7f80f --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5Model.cs @@ -0,0 +1,23 @@ +using BingoBrain.Core; + +namespace BingoBrain +{ + public class H5Model : BaseModel + { + #region 生命周期 + + protected override void OnInit() + { + } + + protected override void OnDispose() + { + } + + protected override void OnReset() + { + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/BingoBrain/ModuleUI/H5/H5Model.cs.meta b/Assets/BingoBrain/ModuleUI/H5/H5Model.cs.meta new file mode 100644 index 0000000..81be39a --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5Model.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2ad9b45c44f492b4a97fc9845e2972a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/ModuleUI/H5/H5UI.cs b/Assets/BingoBrain/ModuleUI/H5/H5UI.cs new file mode 100644 index 0000000..f1f9daa --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5UI.cs @@ -0,0 +1,93 @@ +using BingoBrain.Core; +using BingoBrain.HotFix; +using DontConfuse; +using FGUI.ACommon; +using FGUI.webview; +using UnityEngine; + +namespace BingoBrain +{ + public class H5UI : BaseUI + { + private H5UICtrl ctrl; + private H5Model model; + private com_webview ui; + + public H5UI(H5UICtrl ctrl) : base(ctrl) + { + uiName = UIConst.H5UI; + this.ctrl = ctrl; + } + + protected override void SetUIInfo(UIInfo uiInfo) + { + uiInfo.packageName = "webview"; + uiInfo.assetName = "com_webview"; + uiInfo.layerType = UILayerType.Popup; + uiInfo.isNeedOpenAnim = false; + uiInfo.isNeedCloseAnim = false; + uiInfo.isNeedUIMask = true; + } + + #region 生命周期 + protected override void OnInit() + { + //model = ModuleManager.Instance.GetModel(ModelConst.H5Model) as H5Model; + } + + protected override void OnClose() + { + WebviewManager.Instance.setInH5View(false); + WebviewManager.Instance.ShowH5View(false); + } + + protected override void OnBind() + { + ui = baseUI as FGUI.webview.com_webview; + } + + protected override void OnOpenBefore(object args) + { + WebviewManager.Instance.setInH5View(true); + // delayedCall = DOVirtual.DelayedCall(0.3f, () => + // { + WebviewManager.Instance.ShowH5View(true); + ui.btn_close.SetClick(() => + { + UICtrlDispatcher.Instance.Dispatch(SkinInfo.H5UI_Close); + }); + InitView(); + + } + + protected override void OnOpen(object args) + { + } + + protected override void OnHide() + { + } + + protected override void OnDisplay(object args) + { + } + #endregion + + #region 消息 + protected override void AddListener() + { + + } + protected override void RemoveListener() + { + + } + #endregion + + //初始化页面逻辑 + private void InitView() + { + + } + } +} \ No newline at end of file diff --git a/Assets/BingoBrain/ModuleUI/H5/H5UI.cs.meta b/Assets/BingoBrain/ModuleUI/H5/H5UI.cs.meta new file mode 100644 index 0000000..a21dbc3 --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5UI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 345404ec69f13b84c9ce0415061b717b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs b/Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs new file mode 100644 index 0000000..cbe8b3c --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs @@ -0,0 +1,74 @@ +using BingoBrain.Core; +using BingoBrain.HotFix; + +namespace BingoBrain +{ + public class H5UICtrl : BaseUICtrl + { + private H5UI ui; + private H5Model model; + + private uint openUIMsg = SkinInfo.H5UI_Open; + private uint closeUIMsg = SkinInfo.H5UI_Close; + + #region 生命周期 + protected override void OnInit() + { + //model = ModuleManager.Instance.GetModel(ModelConst.H5Model) as H5Model; + } + + protected override void OnDispose() + { + } + + public override void OpenUI(object args = null) + { + if (ui == null) + { + ui = new H5UI(this); + ui.Open(args); + } + } + + public override void CloseUI(object args = null) + { + if (ui != null && !ui.isClose) + { + ui.Close(); + } + ui = null; + } + #endregion + + #region 消息 + public override uint GetOpenUIMsg(string uiName) + { + return openUIMsg; + } + public override uint GetCloseUIMsg(string uiName) + { + return closeUIMsg; + } + + protected override void AddListener() + { + uiCtrlDispatcher.AddListener(openUIMsg, OpenUI); + uiCtrlDispatcher.AddListener(closeUIMsg, CloseUI); + } + protected override void RemoveListener() + { + uiCtrlDispatcher.RemoveListener(openUIMsg, OpenUI); + uiCtrlDispatcher.RemoveListener(closeUIMsg, CloseUI); + } + + protected override void AddServerListener() + { + + } + protected override void RemoveServerListener() + { + + } + #endregion + } +} \ No newline at end of file diff --git a/Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs.meta b/Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs.meta new file mode 100644 index 0000000..1d141ad --- /dev/null +++ b/Assets/BingoBrain/ModuleUI/H5/H5UICtrl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74ecd6e2beb102e4e9eee8ad48c987d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BingoBrain/Register/UIManagerBoard.cs b/Assets/BingoBrain/Register/UIManagerBoard.cs index 1792f19..a710cea 100644 --- a/Assets/BingoBrain/Register/UIManagerBoard.cs +++ b/Assets/BingoBrain/Register/UIManagerBoard.cs @@ -30,6 +30,7 @@ namespace BingoBrain FGUI.Common_01.Common_01Binder.BindAll(); FGUI.bkg_jilu.bkg_jiluBinder.BindAll(); FGUI.ZM_Petty.ZM_PettyBinder.BindAll(); + FGUI.webview.webviewBinder.BindAll(); } public static void AutoRegisterCommonPackages() diff --git a/Assets/BingoBrain/System/Game/JsonSystem.cs b/Assets/BingoBrain/System/Game/JsonSystem.cs index 1429313..cb598be 100644 --- a/Assets/BingoBrain/System/Game/JsonSystem.cs +++ b/Assets/BingoBrain/System/Game/JsonSystem.cs @@ -95,8 +95,8 @@ namespace BingoBrain } //Debug.Log($"[UNITY] needDownloadConfigFile: {needDownloadConfigFile}"); //默默地拉去新配置 - Debug.Log("kkkkkkkkkkkkkkkkkkkkkk" + needDownloadConfigFile); - Debug.Log("kkkkkkkkkkkkkkkkkkkkkk" + savedCfgName); + // Debug.Log("kkkkkkkkkkkkkkkkkkkkkk" + needDownloadConfigFile); + // Debug.Log("kkkkkkkkkkkkkkkkkkkkkk" + savedCfgName); if (needDownloadConfigFile) { diff --git a/Assets/Resources/AssetHotFix/FGUI/JMain_fui.bytes b/Assets/Resources/AssetHotFix/FGUI/JMain_fui.bytes index 97a722c3d1714f345496a6e31b84b9c43bfd9ac3..e609b06cef249d8024fbad0162a59cc5d0efb12d 100644 GIT binary patch delta 954 zcmaJ=OH5Ny5S{6z@0Eg3K0-er1n39a@>=@(0Rbu0%KvAKVALv~8e)nXNi?oBF)j=e z%`9AKjEO4~T^Mv{h*38#G#WpNE=-IIKe&K}8wKjTr!lU4$;`cT?zuB_&%N*EJU+aD z7hBAcQP98G+MUFks*r3K@D!ebl-)ppoEU(7n%AYQNn_QpDQq*0d|~^_woU`p!&tI- zt=cQqjLHZWXopTnKtGJaXfFI@{u-3$$>Y~@)Sxr0-p9k>0DT-cO0cIf0&P4_HuzQ%vMq-`M^cG7sLyD-e8E{t%S-`R>; zPdiyejzEmki;z`r=k)~FS_yd=v8fffog!+)l;kt)K|){`>>ysunk+NC+xrhnhqv(kP7?S-2_uTcapc#R{ZM%?W8>i(?mZ$+G9fU#G4w5I#IsK)A# zI=T1=&FRrq-9Kimg|TmXR2tKGt-7CzIYlc+^E`I&csJ(6or~{cC(U*_lb#41ok@df YR&7olIW*Y}(!|_s>cqt2NS8tU0<8?^Bme*a delta 937 zcmb7CO-vI}5T4<++ok+iKnvK`5~Xz8(k`^S{Q+u0DqxYqK?N@+1|=dX7cUqSVq%EK zpNLE}@u2bGL1Hvwqk*F)8ZL4%{@nCxJg6rRA~?G!(W9Hpyq)j+=FQA|@A(yceHmxl z?D`s*U-I5U_N_N2y%g{YRzO-`LjX$>z;>2->Aq~JcCx8#vYra5r9Zb{t+ypY9((K0BE7(O4e%SKZzbHooJ&k z$|%Z&jWsfsGHk~(nhbP_a;%`off1}UCD>xOwBd%>}my&f5?i&;vOb;SmqR z44(m?!VdIOI9#Bru$!KS3+`Povnf2p!eKbKA#6k+Wg-*UL`N%Y#XS1yMWl!domTUX z0D^!h2Dx;IOE=Ry)r(>JuBPP($0}kAb+oA1O4rJqG#!#`I4CfRF}m6^9MsH%M4hwa zT#-+8+-xBYU2ufsF}@H?aIZ;nw2oO*{MSZjT91i#?D*deMx$faw7J1b^ht0x{M)xt z-2%Ov)w?;)LN8#39>n@=QBLgSrdMN%&_JUPF=tsjV_n$6!tyz-5j84kZrno`wYc2P zqh}HK(z2#vk2!j!UXH!w(p}g`3BBL74<EZXaC6b z?+rhf@QEBlO2Qz9Oh0A%JIrJlTQ;Mwrmsu-M1rx-q@g}x`dQO2GLvHLBd=**<&+PH NijmZmz4)vf#V?Ep)D$9dp1+G@pTZUd4!rh*#o`_#is_kqhBr?kjBK3{%XQUt_LqYg_c;b`j058RsjZ zNXjmvw3dmrp2pDaCq*j;#IE%rCOE+