From b66db49cff109a64ef32e98206368c66e4a9e4cd Mon Sep 17 00:00:00 2001 From: kk Date: Tue, 28 Apr 2026 22:00:30 +0800 Subject: [PATCH] bugfix for guide --- docs/guide_run_notes.md | 76 ++++++++++++++ gui_support/app/EDFMAppController.m | 96 +++++++++++------- gui_support/app/EDFMGuideComponent.m | 9 ++ gui_support/app/EDFMSimulatorGuide.fig | Bin 0 -> 105265 bytes gui_support/app/EDFMSimulatorGuide.m | 52 +++++++++- .../app/createEDFMSimulatorGuideLayout.m | 70 +++++++++---- gui_support/app/edit_edfm_guide_page.m | 55 ++++++++++ gui_support/app/show_edfm_guide_page.m | 91 +++++++++++++++++ 8 files changed, 390 insertions(+), 59 deletions(-) create mode 100644 docs/guide_run_notes.md create mode 100644 gui_support/app/EDFMSimulatorGuide.fig create mode 100644 gui_support/app/edit_edfm_guide_page.m create mode 100644 gui_support/app/show_edfm_guide_page.m diff --git a/docs/guide_run_notes.md b/docs/guide_run_notes.md new file mode 100644 index 0000000..788f311 --- /dev/null +++ b/docs/guide_run_notes.md @@ -0,0 +1,76 @@ +# GUIDE Version Run Notes + +The MATLAB R2022a entry point now launches the GUIDE-compatible UI. GUIDE does not support `uitabgroup` or `uitab`, so this UI uses GUIDE-supported `uipanel` containers plus `popupmenu` selectors to simulate pages. + +Main files: + +- `gui_support/app/EDFMSimulatorGuide.fig` +- `gui_support/app/EDFMSimulatorGuide.m` + +## Run + +In MATLAB R2022a: + +```matlab +cd('C:\Users\15715\Documents\3D_EDFM_SIM-X') +startup +app = launch_edfm_simulator_guide; +``` + +The generic launcher also starts the GUIDE version: + +```matlab +cd('C:\Users\15715\Documents\3D_EDFM_SIM-X') +startup +app = launch_edfm_simulator_app; +``` + +## Edit With GUIDE + +Open the FIG in GUIDE: + +```matlab +guide('C:\Users\15715\Documents\3D_EDFM_SIM-X\gui_support\app\EDFMSimulatorGuide.fig') +``` + +The top-level page selector is `PageDropDown`. Each page is a stacked `uipanel`, such as `ModelTab`, `GridTab`, `FlowTab`, and `ResultsTab`. + +Because the page panels overlap, simply setting one panel to `Visible=on` may still leave another visible panel covering it. The most reliable editing workflow is to open GUIDE through the page helper: + +```matlab +edit_edfm_guide_page('Model') +edit_edfm_guide_page('Flow') +edit_edfm_guide_page('Results') +``` + +For inner pages: + +```matlab +edit_edfm_guide_page('SP') +edit_edfm_guide_page('DP') +edit_edfm_guide_page('GasWater') +edit_edfm_guide_page('OilWater') +edit_edfm_guide_page('MultiComponent') +``` + +This helper updates the same `EDFMSimulatorGuide.fig` file before opening GUIDE: it turns the other panels in the same group off, brings the selected panel to the top, saves the FIG, and then opens GUIDE. Save and close an already-open GUIDE editor before switching pages with this command, otherwise GUIDE may keep an older in-memory copy. + +`show_edfm_guide_page` is lower-level and only works on a normal open figure handle. GUIDE's design window is not always exposed as a normal MATLAB figure, so prefer `edit_edfm_guide_page` for day-to-day editing. + +The Property Inspector title may show `matlab.ui.container.Panel`. That is the object class, not the page name. Check the `Tag` property to confirm whether the selected panel is `ResultsTab`, `FlowTab`, or another page. + +Do not freely rename control `Tag` values. `EDFMSimulatorGuide.m` and `EDFMAppController.m` use these tags to find controls and bind callbacks. + +## Regenerate FIG + +If the FIG is lost or damaged, regenerate it from the layout script: + +```matlab +cd('C:\Users\15715\Documents\3D_EDFM_SIM-X') +startup +build_edfm_guide_fig +``` + +This is only a recovery path. Day-to-day UI maintenance should edit `EDFMSimulatorGuide.fig` in GUIDE. + +Do not change the page containers back to `uitabgroup`. MATLAB can display `uitabgroup` at runtime, but GUIDE deletes it when opening the FIG. diff --git a/gui_support/app/EDFMAppController.m b/gui_support/app/EDFMAppController.m index 0fad940..92fd34d 100644 --- a/gui_support/app/EDFMAppController.m +++ b/gui_support/app/EDFMAppController.m @@ -368,29 +368,24 @@ classdef EDFMAppController < handle gridModel = obj.getNumericDropDownValue('ModelGridModelDropDown', 1); flowModel = obj.getNumericDropDownValue('ModelFlowModelDropDown', 1); - if isprop(obj.App, 'TabGroup3') - if gridModel == 2 && isprop(obj.App, 'DPTab') - obj.App.TabGroup3.SelectedTab = obj.App.DPTab; - elseif isprop(obj.App, 'SPTab') - obj.App.TabGroup3.SelectedTab = obj.App.SPTab; - end + if gridModel == 2 + obj.setPanelSelectorValue('DiscretizationPageDropDown', 'DP'); + obj.showOnlyPanels({'SPTab', 'DPTab'}, 'DPTab'); + else + obj.setPanelSelectorValue('DiscretizationPageDropDown', 'SP'); + obj.showOnlyPanels({'SPTab', 'DPTab'}, 'SPTab'); end - if isprop(obj.App, 'TabGroup2') - switch flowModel - case 1 - if isprop(obj.App, 'GasWaterTab') - obj.App.TabGroup2.SelectedTab = obj.App.GasWaterTab; - end - case 2 - if isprop(obj.App, 'OilWaterTab') - obj.App.TabGroup2.SelectedTab = obj.App.OilWaterTab; - end - otherwise - if isprop(obj.App, 'MultiComponentTab') - obj.App.TabGroup2.SelectedTab = obj.App.MultiComponentTab; - end - end + switch flowModel + case 1 + obj.setPanelSelectorValue('FlowPageDropDown', 'GasWater'); + obj.showOnlyPanels({'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}, 'GasWaterTab'); + case 2 + obj.setPanelSelectorValue('FlowPageDropDown', 'OilWater'); + obj.showOnlyPanels({'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}, 'OilWaterTab'); + otherwise + obj.setPanelSelectorValue('FlowPageDropDown', 'MultiComponent'); + obj.showOnlyPanels({'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}, 'MultiComponentTab'); end obj.setEditableState('InitialCsEditField', flowModel == 3); @@ -839,24 +834,37 @@ classdef EDFMAppController < handle obj.setFlowTabControlsVisible('OilWater', showOilWaterTab); obj.setFlowTabControlsVisible('MultiComponent', showMultiComponentTab); - if isprop(obj.App, 'TabGroup2') - switch flowModel - case 1 - if isprop(obj.App, 'GasWaterTab') - obj.App.TabGroup2.SelectedTab = obj.App.GasWaterTab; - end - case 2 - if isprop(obj.App, 'OilWaterTab') - obj.App.TabGroup2.SelectedTab = obj.App.OilWaterTab; - end - otherwise - if isprop(obj.App, 'MultiComponentTab') - obj.App.TabGroup2.SelectedTab = obj.App.MultiComponentTab; - end - end + switch flowModel + case 1 + obj.setPanelSelectorValue('FlowPageDropDown', 'GasWater'); + obj.showOnlyPanels({'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}, 'GasWaterTab'); + case 2 + obj.setPanelSelectorValue('FlowPageDropDown', 'OilWater'); + obj.showOnlyPanels({'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}, 'OilWaterTab'); + otherwise + obj.setPanelSelectorValue('FlowPageDropDown', 'MultiComponent'); + obj.showOnlyPanels({'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}, 'MultiComponentTab'); end end + function showOnlyPanels(obj, panelNames, visiblePanelName) + for i = 1:numel(panelNames) + isVisible = strcmp(panelNames{i}, visiblePanelName); + obj.setControlVisible(panelNames{i}, isVisible); + end + end + + function setPanelSelectorValue(obj, selectorName, selectedItem) + if ~isprop(obj.App, selectorName) + return; + end + component = obj.App.(selectorName); + if ~any(strcmp(component.Items, selectedItem)) + return; + end + component.Value = selectedItem; + end + function setFlowTabControlsVisible(obj, flowTabName, isVisible) switch flowTabName case 'GasWater' @@ -1727,6 +1735,7 @@ classdef EDFMAppController < handle tableHandle = obj.App.(tableName); tableHandle.ColumnName = columnNames; + tableHandle.ColumnWidth = obj.getColumnWidthsForTable(tableName); tableHandle.RowName = {}; switch tableName case 'Well2Table' @@ -1736,6 +1745,21 @@ classdef EDFMAppController < handle end end + function columnWidths = getColumnWidthsForTable(~, tableName) + switch tableName + case 'Well1Table' + columnWidths = {90, 55, 95, 55, 55, 90}; + case 'FractureWellLocationTable' + columnWidths = {140, 140, 140}; + case 'Well2Table' + columnWidths = {100, 70, 120, 70, 70, 130}; + case 'ScheduleTable' + columnWidths = {100, 120, 100, 150, 80, 80, 80, 80, 80, 100}; + otherwise + columnWidths = 'auto'; + end + end + function columnNames = getColumnNamesForTable(~, tableName) switch tableName case 'Well1Table' diff --git a/gui_support/app/EDFMGuideComponent.m b/gui_support/app/EDFMGuideComponent.m index 3ca33c6..92eb5f9 100644 --- a/gui_support/app/EDFMGuideComponent.m +++ b/gui_support/app/EDFMGuideComponent.m @@ -19,6 +19,7 @@ classdef EDFMGuideComponent < handle Editable Data ColumnName + ColumnWidth RowName ColumnEditable ValueChangedFcn @@ -199,6 +200,14 @@ classdef EDFMGuideComponent < handle set(obj.Handle, 'ColumnName', value); end + function value = get.ColumnWidth(obj) + value = get(obj.Handle, 'ColumnWidth'); + end + + function set.ColumnWidth(obj, value) + set(obj.Handle, 'ColumnWidth', value); + end + function value = get.RowName(obj) value = get(obj.Handle, 'RowName'); end diff --git a/gui_support/app/EDFMSimulatorGuide.fig b/gui_support/app/EDFMSimulatorGuide.fig new file mode 100644 index 0000000000000000000000000000000000000000..4520c8586efc473da6eb1c7df0cae8cbc4a68251 GIT binary patch literal 105265 zcma%i^;c9;_r8jNfOJWNq#%uSqlA=ngOrHGFd)q^0!nu`(%qdS-Hdd13_ZXw3_V}p z_x=0<-?PpScinZ?zWbj0oVE9Uo_*Ejbk*eK8Q<~nF{;bya(}URw0+C?$%n! zJSGD7-Ces|6XHu#n@cw@65ndBx}Fnim1(?b8Q@;O-I8GTGL=nPGwUnf66c*>y+^NY z(MXB(jH!;jc$q=5B^?_2GKNn{(PT`k=r>hztbN=bA5fUHht>w?WiA(WD1hO-vZlA3 zTH^4m`rZq1{$15YtzZ!ZPBA&HMo`}IO-eibUB8fq>lc9=(BTil+tvVJt;O$!g`a$? z-xCj-G~X5PZ&T9ShBf^R(UX#yB(Y7Sw(8oxmD^<6jGL_xy`+(7J`Bl zxS94Q19CmzzCZejrKl?fcOZzMdgTQp9S8{t(e>k2K9$@$!kP^yWpqX%>t(aGFPvtC=#Zn2LHfiD2?^hrIkl zI0UKr^|N8*Pg-yE5!ej^NV?lS|K0USn)g2TzWwTWwXqnzarQg)6LA{{`ZNe5_$B=z z4WIK*K(WeWH-GYvlGM=9v!So(KcO$cH`T!8zp1f*_Roea`IGJUCZ4sbMVgF1Hd_=t z)q8kNC+K_Eej})6w7-A~YWUDwAL}G;P``HZc1-n@al)p%`5-)Q*Ib|MW#v2AsZ!-a zvQQaH0;3|7{&sU${HZ=;=?1KM&jg72J81Q-syR=K)O#R&uRno)!J$46IWa^9Z?8yA zmbTR$F%wR_^x?be*B4fMxYs4jkHJr9LXPc=ECs{B*MB?S4h4&JkQjJ^W`ix7Mz9xM zw9{_-c4M4GudhL#==(-|yWMGzWf$we3_MB|_>YxX_tc5by^k^}=3~%C%j4~g^+h8a zg;;6tjrubDNg0vO< z6}9hIk3^0NU*ga^;-LExnc@vVnw8~R%Y!*IEj)Rn7PXu*h&SzceSq2e8(%6)S|Rwu zk_*$aXBmnmMn-W>2N70?T0T>^KH8Xu7y?V0Oc%nL&7=<&94pDAtqx?lPDdQ2_tfyX zguB*wPERV0yaYdDvEWHjU-|5vEvQ|0xmUZ`V+l+h^a9nef8~OyNwE9@Vj_26Fqj9_3rh=#QuYiOkmCatP%_UgC4z$=i?6v6Z zlmLE*W8+~?G7ue0!D^YY@>s>P!e{XY|6URYvlZ|HFJVLK;2=laTtz;=zjjcDA-?ZX z&BmAXTnZDlw^K0K7Fj{5hNFi({o_;T+LFJ>1 zNrgeE2kB33si>`h4z=2#9Hu~K$#c?p`9e#Xyyc%fbP)RvQnMpx@Yjn5cP;ss8MH4>Y0&f;~{K*9zZgS$}?CQq6q8XP0KEMx2%v#xuI!V5HMwA0Kh7ug;?;n^3`@(CXcZ+Fk8-l%(bb~+9kjk*&)T42A| zyDBqM26Cfkt|^JM808%IaK(LU?wF^DVgdD~b>v9xVdwoH5!)^iSa7qr^?x_;EC<%$?iAodAM z8`1Af`OAEUbw7Y555;eoDz;*#A_ixJr0C$WuT2;;p#bOFupNFZ?fCH+OU+!;dYLw)a)mPW)`Sng66|-K2we!N*Uy% zl(RAa+U;8fU1RK1F|Z^D5B_RM$;PF<4NDH% z0BebflMp2_Ba@gj=>0|lSP5KTQXDS`x@%=)v`3G~yX3i#Mlg|5ic$eG9YZ33tNp<5 za*CFJs(C&w_#7^9=^w}#C^X!rd7%7TfXC65^SlLPT*_M1cuUhsPI8E&tGoOt7 zc%rij#85!pdq~+u2Y6Pi$_oCLu*z|k&^A^2X)CLLRD_LBE5?R5C(D8PUg~!2~9<}CLl$Y>%ihJ0ed8|9ECe@3?#R0UTB=NoG$NI^C2V*xB%5}d+FdLZTqSQsOqc?5njZ+cwv+I; zRfrbOmbQws@7nx@i>BFWxMY%Xa>juY0r%y2cJ$%WPxETWNcR~JYCr_~FWku<6$w1n znUk~$LKS^8e{x)0;TdGUe{@YFVxNTgpQaE$XaYO4>MvI0qCl)TT&McBrw=P$CBo~$YA&h2 zrZFy#V}L<`)*+k<6~R>LMn)O5VhVZAwXFJsTaNu>BuOl7xNspvik9g5@77Xg7 zyadxCgEt(V52|8ag|Ad_w8IC(YE;Gi3mNNamW(JDHl?cPJ)w_-6JDPOZ#8!Y2|k8A zcno}y;E1YPh@(6kLBy)0Qv zn3IM|Nk_&XOk5Lj1CehyZ?nMWiSZ+TxdP556(+g^?~;J3wpk^CQ{%Z?Jg;%d+rw?F z>@#Jk$=)!FJ5(6F`y{Glzrbv}f=7MyHtOcn_O-*9CN-O8Lb81Y*SijulpEdN@Q3=J z+A}RVfB$Oq{B5Q#sqpw3I|%}&3`qXYZA}@|jRL;6?yLwH@yr--KQRI)7wo>HKJtt5 zwg@5$d3{EWMe^g@zulty&E%hc{8C7n44=ND_H^p+*HO!E7V0m@JTbSerNPhAip;6! z({MTO5S)n0aLo75IbpToU#1=yN=iP+7WTw`G0~j^aUN+U-I(+b1YZPjme6+Uo&w1B zRDYc-KP`kw|GFcuVmXX+266zGhys1M~MiG)(V`ZxtdB#arb+jUVOKAAUXe+ z=>t3!B!1*h_gdvWt*v`(M&z;sak9=nWVk=LgSDXhafJH|zJlQkb@9nE z#s+Zb@AlAl9!>D(lJ0uUy;_lZ#b}&i%Lmop|A29HG!i_!;rGr(Huxr-Ab#Cjd^?UH za5KjJZ950)$3f1;s_TPPmeG=W0ujN(Bv8PzG$o=m!aWG@Idg<*1;nfZZ0Z<-$6sd# z*w_*aCVfyolW48>aJ|orjM2z07Tr{m|BEwy7r6F1Qxfe`w+7U|5?LR)nq3}#$Ot<6 z+ugD8S!#d7&(nooRQ6!DuN#3C!2bN}ZiU+@e_UuTEePl9$a!c%X9hLufEu+(P4UsE z#_Kwl9mf*i#-nJ&yUf+1^up&Es*tv&%%y|8X*#Ih+4Pg4K{7vmQoxR^8r9K~z+8&0 zB%t2<$aMJHV`u2|4?b@5&uH3}CLz2B!5=Z6OKjuA1oo7Cdmi+MI zSJrP_`hVBTby~$%NE-LKoBfQaJ6#47R zK?SnOTx3#X*h`6_cBWFjw~R5!5ql!jn{2FBpbpOqeXvBoTcwU46rtJ+YXKH zNvw;2VMglVk6Sm&uc1_=VrWuBF#C^zg3@zFuSF6lBKmp+aeB?}^1yaR%k-4nULmX^ zfrP1ekUJ<|cDvGlxP_^A`Wvg&%|CM^TLm8Q8Rnhlf;3A6SS z8}Rmtgh|#)+J)ObN{=9-dn+J>{5*z#k5CXT zgSxpN2jQ1>@Wu^Z^edH*h%k6|6<0cE88=tzjFL%%Ze@HJ^yk0dA$HGy5-S|wpQ90L zhwB|mCKS!Ud8w52enl?I^+?0Ne_^uSQTjmych^Em_^bW&=zS^US<&YM??Vit6x^>? z+G2c;BY27>97F(DXT#s<=8Nu5ACsVH-haFW8oiU&2_WSs`vXc5DrnHv`}Ntfgs6=3 zXW46}&&&_MxwYfUgd5b9HLSEFB0v|5LMJ~{jpD>Tz62&kq4Q|0>|`t6E}--VSvrqc znZmvuB>F~YuZMu4T?q0gPd<3>%KaUXU&Otur~w;){Ny6e3a8xF6IFsbPu6!&VLX}I zw{4tPfdd20b3gFL(!{>lfBxwI7#D$bQUJf6Y214BTR|zC-~auvX>k`jlPT*$2IortQgQQmfvv@l3!5(!+Q4qFY%D3odmxK>^n0l!H6*)vFOTT%H6_42&aVgY zE@R$-M*qgVin>h@jYxN{HtE!s_dD5JEUa>&2@NHM7#S2hdiI;2IZV+kB*{&hWcxaz4Fw*BLVuA?$8-cQbFjEHID1 z@EreZaKZMgaq+9G_C&9qH7#p<&vNyPi8m@TgeTYcuW$S?ojv+tih*dsV6>nmeV)); z8el3!<>o-9*exY`+73TOK)PLi*uhj&jPPOSGGA}#1pmi0BcU91aL)9N>fpijo(oXi zp3;>U`;UEWh}Pz174(4DK}by92Qt#Q5Bt-^hylCk+;Oc`{)3`Rwo4FZ+DJ3J5O z#$CYcirFq+Bi{S$IS|&Ic8ulqAfcD&wpNz|QG66Cck@!+nGc#PN3R$(Ow$#B` zJg;zr@mF+q3Cs3c*#{?!6?9o=i&>+tCg-7{!2Nx9ntF4KrU~* zxoyF_ue1n}QNI_*@~^qd+F?*5@Pl~khHv|0mge$&%A0Z~eSL<<1~Y@@5|K?Na!Jri z=NcG?mE%ZUJ2=T*@mEF`1oKP^J$o7q*=wFyw;p$IOIf$Z?uSX-B|~8cm^Y4h{<;H_ zEBdt|T!(WZm;XDN$40B+)3RjJX(SnZo+-t7Eg5=-zGgk|m=rFcAfV!p^j zKGU>8a_6D>qt5JreX6<8pdf>=kr6zDoVjx?B#a@tEBWfnBr9Ly?h|e) z#=-1UF$`xdMQ8NsW{_wDc55V4w+->OqS9wr^te067Rd=pOq-nD|&U_ts+Wpwq zhBzxqj)ikqYH~`W4h4<`HO^R_iG)+xGkH%sMq&L4PkA{D9XqaZ4!nWCr2d|S83kdX=;=aVgeRx(mA=J`;G!Mvk6q?Jo@Lxk7mHg!$ z3h+l7R9l3cjT=VzBSqvO(RdGm@(|f_L44=QTO>XG$A{Yn`iDc98AJn1(jE7~xYYju z4S`fxtSCd`uW9<3sOauNH4ruFWBUg!9*0OA1L+$V<9!OUHcaDxjz-K?5}whOVVT_A z6;4&YFepCM_Zq9SSjZ=63PjCSNIpcK5_sK0Q)7xZQG>+qy^M>kl#4`W3h~{=^M>lK z+!M~o@vFCBv?3p365igDoWkcwT=YV#O`ziF@@|o$KWb zu!nyywNSf2lHeMbeRGQsq2|OZvG-_NDRLy(>vG^mXumwd@n8*Bq%Ht-3ZW8tZZ#MP5 z0@{U{*{za>mg=Y|J^=f_f8YOsNE?B)f$$!>l>@#aO^BA2iLKPzt zAvo-XAm2jlJ(-nt!v5(IX~yo4JesGF-qP|fJ#FS$`@WyaOF+=JG2@QK?Py19Dstx% z#N+RbRlRvP2jihLN zqj3m*Jq7vFbX1{$LJp!v2hW(0A87h`H(OBNrRP?u=l-t#w^NAeocV?cDuWJ!!(5j2 z8?kz=(U;nTFAwLF8rNVnGl6J3y843~)ZhVV_7l83@5~;Pch_mTkhSk{yQ|pe1-X;; zA0O6Xl=J6mpAYWj@M1N-B9snamyf-V%xp&WtGPx&(N}LQ;2a(w#q7!=oep$z6n{R( zA&@hvj|3RKPzS~5kI8{47xbWzx7s90++PCdw#NXTmgdV;=cwy&D^$3ZXG)G`6&v95 z=(f5~I;_Z>$HtC!1#)3JBi<`&rkuoJ2MEque|+}e1DUe^pC~h+S?6@X`8DpLx9f*z z_;1RlkE>eeSVLl8? zpJ0D>1U}-N+5O4a@Ihjzx$x-Z$YB6l@}7uKTpUN6Bq#o7vo*<+m669{Xto!%5yZI3 zeEt@Y|5(@cyO(1J*w-K((X9-%UG z5y~s3_vRG_3J0@Nac$X_koF;X)t&+C4vUxiE61-I8)pLSm6iRj7o_2^0tS{JN;$#v zb7hIe;7({{$7a!8D0G<|V%qZ9^;$eNzxPg80cG@F1j;})`3vE5D(TkMGp&vA!M;gE z{uvC*LiX0%?ORCC6L8Oe&TmPsN_RkIRl2)!S7ObJCp&y@#Tv3BUaf1rTD!q?*floB zta5+*pM}C^52z&(L+1IS*^Q;RU24Osrx!-=oA2R`-#bk+^aC6WydSJun{=zZu^#XX zQjoKi=l#RueiiWm&#aKM0-LTA=Jh+Vb?+W08}r`|H(1GlAAS^*+&O?|RoF7Y4rs*q zTwSx`FvJe}7vk6D&b|H_>DT^m-~6fY*XiRvrD~$D4HE%Hrbprix|Ix_o#^2(zyj>) zg>NisnVesy=x5YSbH-tW-E?a*w0V29Lx^%`*^`5p7xMJK&@+^anfezCxNF+@jZmM3 zJou>rd3;*{IK_(W%Y@$Viv%3pLtqqww#(wtT5S%v1W1BHFyVFLv;Hw z)g*0*u%^nqbc_%+Y#zKWCh_yf%E6{yuWS96Y6BMUV+ZWf3?&=+$i*5Le58TSCl*G^o&e)-S7)~k&!uTmT# za2%j_6aT*T$8>4wOXg^mdxFqkFDsy%lqZ@(5K!uz1x;3x7T%?1AoIwWQ+D*oMW53Z`viBR!?q(;oSbYYIBNaX^Jb zNlf^FkMUj%xb7Fn**Y+-9PP-m65^E{1u*czIg>JUi;$OjV4b?U1YO=dZAG>7sCNClx~p)2k4^#YQM(b=u-zwNBeX}|a+9~iOx$Cyvk zp(o)3^klfneQXtnuKe1sQGjl_DjI+KV4>{309k>?;L+yb0%f zhC_E=JaD5Zyod1oimr_L)=@PWMci>z1-NN+Dm6kcj-e#-eQjZVjbuj5KeAudUX7Rn=zzfco&Plk6`F}g#VU+^pCF+XMVyIZL~{PIx8BNZcfs! z98<GlIpgd8dMu z^Nh*Swfha(;}y1Der9jAjjbA6F~YKmmwTE+23}arDP@#gww-!A?bHamWYuZ^4_Tuf zUTVwhjq~F+`XWhD{fB!rHq{x)QqNb6$D+o~if?b%-A?|xWqa_P`_pU<|G2)Z+h>#u znWqw-wWBbLm+={(s9J{am^~F0;S`0Xr@MV3nuw}ScKe6Fs-JG#M?K)s^Q2yh(7;PI?<!59~jm9F2{A8+Q}iLJP!_r$wN zJnx!4T>{1B+;NG3tFyRTro+*v=DA zuymJ*5GvKyJQPKS_F-j;8f?AX`a`%;OgtZU=!YljkU{kRwb7y-^5JkExm;{S{^VOX zBV%=Ajc_6pOnm|Wh@o55or*#3Ui{4OYR;|o_f_rZ*U1C$(?au3T zBzNE43D75su)?RN96Pub5}vQssy|!89jO1TtB~_05MH*`PCut0Tr{D4nDg!Oiy9zM z!I$=^3`g7@qH;zVunbR8#KsZtnAq0_6-~0<#_qtVTcC77p z;ARyX0qAbX@;C9ZvV9kh{_?LQN;?ZLRhK<6kmN{K2||($-{>i&X5K?sbM7_hnUm^1 zyG<2DRil~-q=7EHKe%*I=KYp~jzZgEY3y_*^v>2FE>7h0|rI}2r^!tWL=b{33k#f0O;KnAXkg|ziTx4!?( zdYdn0uV>s1CD;w_Fx!6_t9RP*mDn>Osf-o7dE=(d>#cvGcAlo#{4E>AIx3Sw_jT@$ z=!Og_Sxh{+_i(m4bqRgEIWF0u-hnpW{l}a$b?*yDZ?{S#Z%qw>y(KspJ?;nnqd$~s zsH6&X!tEa!J_x#=PiM^T&dU6cKHZx1>7nI#mp3w+H)(L~#F=?Y;Rn z=;$k-H@YMnEocvt^autW$9YJ*OAxrt9<7dZ#2s^&wUL#J6Ut%fP(+_xhWo z-7H-Tdg$NLzWWCFxCHE1o78LC{|}dt|4{5#X7P`| z8}Re2j#u#eK5? zv~WP5uHGr~xNWPt@>!TPxucHy<(*^_U27=#@p6`3l)J#D5=;*nd+w96S!XMJr(S#Zz}Ac88E!1G^_BPRG=gpKZy5Xt~`qRE&fF4X5jtGzM~wv1q=+Y1i&mu6 zL9?5|8r;{WKeNR%uuV|l^xE4>uec4%xw#6ocYiHvWoGj9{2te2Q%P;9sLf;5b4ho8 zAlJe3pOM|pw~383^Nrlw&06%eRoo6h-odR?zgl$`O`d;Cm)%eBV1vcPM@t}XNYCj7 z^JBm8aGP+b1w;GaIGC({SJSxFpLqsF@C^<$&i(gUW1vxpANE3T$kw|&-M(%quaADo z;-{8~ugh$M_Aafjc(9f87ndD5B+I)c*lws)~+TKTe zk=^QVx^>F~VY>b(U9}z6g=Pce&8PmVKKeW>O4Ey`-^zT`%eJ&Lw!$(v!E!K`KD)Wu zEbXo+6_V(?i6?&)iq%uGvXmH+{aVm^k}720W$t#@xK<$yE{)YWpVLJE4{W}{w2l>D z5rz0bF5T=>+xVNrojeaO=fOSUJt>_If3OWZ}AD81l+5crt%u z6I9`%3+T#~*4P<<0oo_mhN^}{)aM}1FiemEmVP4jSYnT0F^|ttGz?M!T?B#_r zm!0sVhuy&4jR`;jC6vYJiTT8Qs!4YFwG-~OFvB&8ldFrZetx#oQ@%{jKiuptUF$FQ zoDSIM9~?803!->$wmE8niNA9e?QD&~*hN z>m%7Ns!iq3v7RjxV|O!;f#z}wpR|hW zq%MgU=8Hqp$y*pu0GVwrZO+}3;Ut&ouDoXybKz(Ax$ak-{qa8g(96N?>ax%Gr3j1$ z2miMdyW4|ei4hDT^seiN?_*HvfxO#Q2Bhwaa}LxRA2$k)?hs=k``<=;V|rDs%kEpC zv;W%mqO6r2JD4Jy33^dv?M=_JMlL$wEH4*MuEA#W>L8Ts^va){jb%_ zU*9`%tG&C{eHJFU+f2BxvUU-O6d`(W~UUEnAE(dxsxFT&Ivy(?s4_9a(dkn4%9{<{|QXIsKoVwM@Ol*ki3K21RXKt%uWY76@e;ia8WX>Bh&S2^wOhV%0j zA2iirpZ(}%MDe5y=LcDPk&&GYjnhEPyIhe$cf*TqyE$H3wNWC+!M@&@zTBcthwXT` z7+PGhL(5{a4qhb(;rIr-g2*>)(V|V@kdwTSXV$PHp|th73V?zHL#L|r8>Spg84n=& z;_l<6V0`uTSq@ab=|g91a{3 zr!0KfS9kZa=0@p~t~2USKOuAiD5_j$k1H1LaAz4{z52&TM7NDXIJQnd2*!OOnbQ<(NDVlyJUI_#z!k9cZZpE%Nnh9SlEIojz)jCEk_`XdzR!78=|fBX0V_3Lnc#Zp)SYyKj$-fiJgU zsd`kW=xUC~`@d_}o3BRQT}8i`az%He_ZI#MJ^xX94F6LulKCGj)!ILc;#XIGVJ{-e z)PUiV$~ZmH&|4N=nU5XZRDl#$wWlp4a9Avq`N6!D#?VbDyW+W9%t%06W5Vvfl31W3 zh&vN+DEZB-L zg}XVL*7RgUN(%Upp?3*f?ANo>3Q3KpU*vHI>7l>mHlGqM11=|ScY;lFJ}`klyRY{& zJngRgKzpBUWS{E5Cf#^Alvkrf=a_{BS< zd!dytBq*8oVR`Uk&A(3DuhO!m8)um>?IvP)&HTsIShok+U-9}Mi^SGjeo~;P!L$gD zG9b;m?00yjfw$2xfl}F1c)JvTwmthnP{)5oe=cdXFuaFI#eya{q8H5;(=8WLJg!1d zV^1HkwW#|<22-NFU-yRV8@hKQZM`9;Ci7g(&D@CHJgwUH%T;<%qy_BYQV zC^RB(@_8d!?X1X^$hjSvH}^M)Yeh=X7olxdD_Kg z(H47(DtTBbUlDBViUk~{^tjY9cQ@a2`k)3)!5g`CNxOM9WD>$91^QO5v=4oJoZZD# zyO?JItN0IeM_tfg-%suy<_wu+Y-cxboa{UhDdsd^zVKVlN5Ew`7daq(;qk6J51bc8c}z1dfd~9Wx9R~o)k|19e`-x8Y3*Z8t^G& zrxV)WWXW$;*gpS#8y%AT_A%!N8QNCu!@@R}^q!f_(8Kk*uyJ2u?L&09uhcV!D~RrQ z_3(L>RW=Guldw~!ogJ3*JD|&B9q_HcrVjwN%OO)-7>3yG?7jn2-lD)7Lz+f~TdV0w zg1u#7et`PFN(B8SPiM_t0ShJJ_|rKCF@}(1I4}D2X8-?cVIye7e{@!LaLWgyc851Z zYajZ8M5Ki@G-lB*7Io%^faf>4czNVoDEAH<9)V3 zCu3#^E#`lWd%mu+DM2J!{$$&SBy*syJI0rp%9#|02RB+G>C!vYi{9BQyEa&}#9F3) zUDR2dFs7}*pJ5hu6R!s1{oTbiL%crN1e+o`yu@5XZ6?uQO>3N`KVP@aBG|sCX*c&_ zF_ab80DY`7Olk7nif=_toIm3`A>ZH&OG)!3{^Rp=tDpS0) zRgi`}f*C5Fe6VjZUwbs>T4{am?QpCSbd28Z?xvtUbt8QZm27dk&vdIx(8%%cl;+9P zF`I%p^~J!7;2h<x zj?rI|5cGE23V*hg{@{C|UxhA1LM4Fv*ZgNkvgMHBHAv`DA4305V#QXXpbg43pt#gS zT^iAN!Mkgrm3Uy$zJIB3hiBRgEEMnj<#n+lL{jK{xS^%rdQ_*AR>i&ti9TG)|+=^txisbQJfhf9+;uUTJ~Fk@hl zTFD&_Var@lvEl*T+1Ne^!(&g(nU=jRt+F6W^_8!^Q!Bzcz&HL345BVfkI=rV>Ub; zQ;O<0H?nN|!w*Moc8x6%%=)HQXApv4XDx-A<-Q%cq36C0y?nP5o3a zfj*!ac8b&>liDQX- z-@@m^d#YKoNT%NmqM#Y*=b2Y&zFH(uwbUx-VWf8<*8^%6Z&E0O)g9m07M zF?hQ1gxHaMy1G2T0+M8!aRdjdz!B1{LnsO1JJ}uLO|F#=vH4HnZjNHGMd7ihdKuWs z@ge1>Z+hti#(z<6@L!bs^Q(NMS|T8>jO7g1O;#%*wG!a`&G;1eBeCPeyVe4BF%MCT z_e*c^XyjkM3@ugt(9iqXW)pm-(-Pri1!0p)?~D83I4s_o0P#dgtrx>rsh=F1VsMO{ zxB20p<;WAkURTTHglH4xjG&Twe`25i`_;^2OFVFa&}q&?e1`ZFX{Ol8wdXsaqt4ID zHhR)A_dK^dr7>q$>I?}+jn3WtLMcP-bM^;(9)__TD#&jf5#EZ3^G(vNUbj3KfY4oM&|&!&>@Is_ z22nv_|02bNn`e-|IEFQaJ#uMW`SGdgi62FvVHEbD8TH;|RuFlECb>i>!EObAUx;_l zGxqrH_g>BxxECp$?DSXRoSDm>(UAfb)rdx;+;hSLsu|rpqUC; zvE3Q%RXylM=){|K`=d8ky36J^)q%nO+gZW{9<#?gM|#T21nkdLyrf;&&dh7el-`3G zACyb0kFVPnhi>}{Pe>sjJI9vT^@Z+M<&k>lES&|dyh878Nao8Aj*vQgZg|L6Ao`ss zq|uX@KH{>KQq1a@wPIPl&sT7SM$D8Gsf|WIocv$5o(la>wmxW)>ETG*)Ln!h5bGgN z>ltLNr9?#%^6{iEiRE1-t4L{lWRw)}teG*q&PYvtW?>>UP@0Zy5fnNc)@lIU| zd~{?td-BrXRitYH>P=RH5jUMO85@!@rz>!dyRBNV_yE&62`HN#(kyf%oaiSh&1$|e zXes+kvdxX;X!%DTy4|h0AG!V)d0U^+Z?Pb135t>JiVlkPvuXdnkM}Y7@zovwz ziMb37xO`^)^q&(9mO13ozRQSk@v_V2Vi!VpiXD9eRI)ZIS=TcPbi%m16L8*`glyD| zjQIenEMJ6M7eXXY|9)N~7});9t4z#2alK5w(xmOIG_cOOIg|WdxWhGX1XMvtIhT(q zHjDJ6+j+c5olSpb$SvlT;>yQQyRz@Q=I*^8JU!yw@`LWu1xK>R_-M3uMG&p?=Nkk{ zXDHG9DAS)kWkHXA{=aOXTjQTXGYBcj%@1KBdWmC?O>a3!*KT_xdi*JDYMG^Oz=69} zV>cDk;}FATf!Sr*lDC`Y40kzW%$cM{T}eJyy|NLJ52ltcI@I^8=9W~0S+PMB`foXTZRa!#UbbBgeD-WVW@50ONqT|zrqaD8# z4RbKI;6H@OG~rz|M*0az_XdT!QV_Go_*jewJ~Y<3i(OS=IhE$L#FRtLDJ;Uh<@sae z7?g;6W%|spcIdhl#1#{J`R!5(kcj9TOu67Dn*P-7&@zX|7YVUUPL-6eh97leyxpAw z%?+qD&%|B>#U6rlQ}}y(iJ?{KBH8u7m-t>e8`|QU)82n3#dr}9<>I_1=-uNM>>4n< ztw@@oRT?ZkGGkAADL(xFX!;7EID)NRG`PD zURNUfwPvlui)xR4%pqtF>WhH)AG?(;9{!Y5P&T{--R%>&rB47gr2*!?gKUO&;4k1! zXfSzLn&A(?`y8;~{iz+sZ|ns8$|SpeFn|~MOnaksfK4TuW5zpP7oZFp7n@APu#tU z4+i)B^okSs%Tjau0LbIwOz_o#eZrDF`nc@{Vp?H{Zu_s<|Nmg=Zu|dmCUO((e@yyYH9-Auc-t6|LZby%!Y&=bI|gv@dlnY0W(K;qHuC` zx;Q#}7E={JXLr@E>KEMK`BSERdeLtb)DD>c*vmF&;!gf*Tn;*viG%4?un-~AcAOKlHZbJ4)|tG<<`K3nMx=ne%AZ*e} zo+8w&FFjm8Cb*aI#Ik?{0~uQh!#<6w3OZOn@6ml(7MWiO=NCAB1Mu7t45_i>_YJ3C zLdmu^Qxu&<{TpSV&z~JEAKIh9D5&~>Rn`Mf59pq4`@!S%i=IvweBRX-yX{4D?Hs?G zx8B9gFl7wuw?XY9BKLPHj7nwkBwytz!r7xhkE7|3b#b;GkY4%@=U%t=T#NWM1^3PMC2z|Q{O*pm{7%Gl zOaZWZdsk=E%G0cO;s{U}Y4nx`Wo}T!6W>4YFyAqH18RjhBP3A;Eau75SW&%lguehssH#oDWLWcb1S+!9eMb!u+$ zn9x8x8n}kz?P&_NA}Ks1M4p-I4#ls zeIU48Tl#7&en#hY+6~D0+T#vn*9$5G)ac#$PeYGF`h!+d$$5g-v9J%N!{E8L|BAg-U?vwcvsT6(G@b*5_*NfJ( zD`bh=RwVi^|NNVKbNYv#Hbu-gidA~?=1Q##b8G+5PSff1?1r_ndEwpl<|Z#>LAY$R zEg(X9JB2)mrKYhaHrTCV9H60-UR$k1B3QD%fZ!KYS$N6I_K4#iKFg1U&i&a>?ErVo zfthU<>)HVd^}Q0X5uLuQm`5|jz>qx-MIL)B^I z(#giY;!W%`&VCcjRR?pg*F~YkuTO8gl{SX-<0G8$>8aL$XNQv&<#DIMqP~z+`%N&yW0i;Yi+e=ump7|_J!~oaPcLutO3k9(E_*zZ57k)v-47WpyFYx< zuuw8rCG?k#BX2aE%o%P8K9Z`O^$pCm#Sok~dROnjHSt6K79WS*Z?0CYEBTw>g`ZWf1Dg}swDk=dArW1WfvE+^gW^gi&n zoj><>+isNybJe^vA`VpmgRF;~5aDG7&E~(i9v@)8AE4)T?QhD3bB04K(6_gn;n&6W z(nhXl&S>fBg@~B5()|?sKhu0I372!>{L3$&l&|5)XaQ}(Kke?9 zV*Q;1(McxL#orVU{yYzG#$Hl9#f;yD&{L<%Q+Y@sET50a{8pOZ9_dr3A81Q3G6&)_ zIXruj`whgG37QZTrk~)a*WNfFin@zCuHVkteeTR<0!O;EO=rz>{!9ycW4atir^k4zBeoSlj;_34jGSwRlZ=pdvP1y|Y30M2%ue}ed!Z$}| zv-#}Dl`YXSAbOa5`eU=PaGK*$nt6SX<+y2O<(D~4j$8F5YvDNH?(2*MR*>J>6Lj7P zE91uQ$2`?Ol2rs$XWE;AM2?e%mHz`3@@=P?ePwJ1(N`7^*;tc5=?U-~zYB(P`12e1 z7ry1!M+q*P3WZocTc!X;mg)$lWVpz@d_^Z98LReQ0B35zv~Q_$PK=*r?BgFTh+N7^ z@5sF|cih~~WmWH|SF_g*RcTSC`!-gT%ilR7uVjz6MM)Fo=|5QW%f>#(v(?|KO8~c_ zbnV!;Av3od`twBz6Xn3ICF0dYHu%d^r_OieiKjHnG)s>X#JnSsIw6wdnaY3VfRTFM zy(M{o`{wlev&(6gFFEHRehhzwRy8-g>E7*N^hiaS4GZ}CU|`ihG- z*1_L~3kQ#$G1dFGgTHu=LksLTRp?LNC(0)PrG}qRaFf@lZytGDi(WjIqniC;%3mgo zB9zlVe*NBC4_IanvaB>~CCoc3&z<~!gfnJ}6n4STYtV2m(XqFOwVJ1*h7a?k4N_`W<5|e^UTo-3z z8M2q95?(U%uxJ{kRF}M6^MNR*$-sahz6TxrmJ{crYd#-zx@*9OC`cr)lJ$AkGGFIZ zH6HXhmvO#>I@QJi2vPog-_G{@F!lawlVNz0_V{+2^Tri0k#6gCu<#cB=mzlZCw>9( zKF7p!WSBgDtL?@uJP@TLG(nqroG{YQuvAK5pEu$lEcTT?-Y42o*j_qwf1a-eZrB~{ zL#D!7pCT6h9sCsiNGjuFqmA%y9@pMX{Br#>4F?DLOv5sGH`(^NTkJMItpkGHW&k!q z{)$dFo#teQ6b`H3eKF=hYi}zDng*#i%sWi?EUhjb*-vWm9ujRAy&`2^Q{KeL3sRxp z;^#PIrZMw_8K_TM`3a5^l2$PyQNppY^WlW9SnAJjsbB|T2UGX*?8^98!N;{1wBUai z`ucD6FZPNM6;Si8$DM5g>raZ}%J1ib81Tdrcg<+;Ht==Mv%?bD?pKqiqI$jh$oH^*t9-<9145?;*sgh^{&M$K{&s_JaJO)Lobp zs&xJxri~MfMpbW<@snSzH)XgmvF+$7q8(K|Ti|HiN3re3Ao;vwp+xXv59xa>Gx~g{ z>rRmy)zfitPbYUg+Q&7RdS(=TA}Ur8kVp|JyA}=h>{s_Wz8Y9;iC7_5C-Ofi9P%JX zj>xf}l*yDP?&(q7iE(0Y*3vPh@~kmd8LiD4gcVl^<9`~iqr`|CZ68Tk1YT1Kx>YfT z<*w*{p9}xgGE0s(;OXy|H$nFo-j}+ZtPBzdSR_%eT~CGLQu>dIe|m){ez5WumErH7HI62@%jS?-*(c?m56VkO(bY2usta zlSnc9hTfu~LCMz<+#kc!Zqg&_nvLb{ejJf}_l4nNjp=P~@Jq&~PQ7^;Z&JC>}eI6^O-4wxoE`mEO z8P{4}Y*dykd=JmpBk-;GF#zYA_V(c~h${3LzG6*X4UjhyOEr|VI_=~dEu%+A)ip5Xd+fZ2)B*@Y2`Ka!EQEw72r+ z)FzX(uzq2HW>Kbnc|!v#fbVPov4L<+yZcAGj$-M(U)f*smX%rjyMi3DGZFH^Mgxg$ zzQ&w!ZqHS!(Tx^-)vJLPv+@r7bl^s!eDIXW)|nlVCubT04XkkXt>4?>qAMK8jm^cH zczQf4dfOA98ufL8(s~mkYNU z!|vOF(29rn*if?yedRiY;72lKZ}=X_n~p_B4V{Fm2Ly z6>cT=F#TI_T9awH$Rg18uRQ#D*SzGb?b>fwoAdj(LUEtVxLJJZNnwFeJ1Ftg9d>=I zkGk;%H_G|8D?iacuiy3GC|i<=d$3& z^5QDtqnsWSbI zn?|m|Ot1$a-wa5h*0b42&vXB+H-Z3h|^*OC@1jh3u z+0u5XPJs(Mz!@E56t$zlTMvIri3d)IVd;<#iWZ@4Q1taCSgKVk!T?B0>`oplS-98D zz2EhDB*$x0#X2VoBNtH*+M*fM+;D>sx(lH`^?Kc|DbViM(rmDJ{5wP&l3aRt2uiP3 zi{gH@shee$IH{3}e`a9}M(pk9@V#@%H^dRI_B@H^(y-PT^`tkm*-CIegm+9cJt8!a z#lzgMsV;a}{HlZ-fyObBL`{NTb8T8`By&w6$}WGZMu43+CTBrJzh&j+qS1|=t2`i7 zDl9LYdHQp++3c(ULXBG$y^U8f2|`DFFg*Q64=stFljZVDwX#O(iwp9g(bhO%hTwp| z?wOAbj$m2Ho8P2IoM0<9`qUAprkyd){*nRiWjhQ}mksZEiRtyA;y3e$Q#1m%9mHN%a#>Qfj-kTuWBH2L+EBpsGHsntH8Q>Z`_XBOoK2>NzWD@aV5B z@(1&)iAJ~fnGq;zKuDMdZ;angPlM5r3z5&NY-F!yVFQ`ooJE(r2a#A&_MC2dS!eoy=NyKpt16^xrEYy+% z2jRCYH@`#E<8w-C+w%m&i#iNCSoAQX1cg%8Zr+vZ%lOSu;&Aq*MylsuhfI{T3#HJ757|L7E-VAxv%)a&1I&0 zVF`>bzdNDbEVoY34eICQ$4L_}S=s!lmD(t}#@UYB9{dpa-8%p0Fy!Ynyt(T+$27mW zmCuch-q8R@%%*v|UKmm=Uvk>ilg4zahSu`6tkx9?#vn2C76@-upnMK_YyZ=p)?6U$ zFMfgOK8ElF36$Xq`;o}<5xKz>iGKlQc!#6uNBYo->#9r)AUr}=>=GDd2la0m zYkksfU10+^KK}1LqQ62Ac&grG40$44`K&(cHHei=ag$t^jS;>6gLOx2^BssI6V0(y zKJ6oMuQf53H7kES)zJFFS$DAV(UDu5=UA)h)COp8c#-xLDx zn|+79RW8X#j}_4eAu(bjEk8z^Ff?$ zH9@ZVUx+QoR+@rimeun zLS55?%5>v7=u|L4gIMhlKlo4~MF8F(PNJeyd9!U@A{2P6e<_0;I*t&3n&LPpCL&_q z70TrEWV!g^z6}l$haTP(s^KZkvNvgJPzqu^O~kDbrOF0XU?j8j6n0--y8L0+nt(Dj zX)-2%pk|2VlWY(}v=cTtK6KJ0X*yMLC!{BKhxR&NvgHewpIpff?X)QNR$GjrC(&Ih z)ggld9ckKCrPXJ%ThG|fp{Q6j?#N4p0hO^`&A7fq17y|T{!z&lzIglq2~sZSNTF{F zBOF;HTovO4xrYnN5eP8G=ah)%@c9Oya1$JTCAcGFMbue2D)MYYbXc__%3irO2_V5h zHol|Fc&E0sLQRvHk9Z7q_O}7oG5s%GQIaDD zlB+)i>G+X7bvw$eoWV51{*g~+M9NWN(q$r}x)Z5xPwe6KpOGcAr)R~4_9%TF6V6?d zYMi&Rs8(}ty}OYNt!X8Ef$u^sXF-k|A_Q=x%&ZajWu@7UQ)u?F!H>!*R|odn@VxGG zTPSUj1ZpuxRqG|q-#eAecnwP-#7r%RWG>%mJ8Obykx)XAshCM@4tbKm{FAa5 zRwbfb9ZaM(VjZ81-|lndKMR+3cOSWiO9PTVQ6(!`sW}*Q3jW|)CcaB04#_4X4iRLt z!8CqS{|qSH!pR%p&3M~6TceG2G?1u|hDHtK`bE}HaDS|??8lz_FTP&7_)RRhpi!In z>Q|}3Y%NH{L5q7>6D`~`16YB1EvQT@^pncyK^5=f<4e5Mgxf(gNKIkad{!znoM`S3 zsLM1z`(akGts4#cbM#sXc&)^L)hwLEsYBmkw+uqaDnt(lj()Ns=%0{!I4puNvce%z z9R^K=$E+9W-@f%qc@L`3ZTJqZEDW$7Z{(yis)64jZAdMQv3r|>7n7-<}yQuOsWub@U|NR!Fb{t8LAQAVteg5Mbru{uI>;D3|(d@U10F`NLZ5cGwHC z1z8AVYe2CTv(}q2eBE|$(r4sXln?&-$^$BjBK}db%LD!Ykx6~Da2N0l1B?1B4Ma=; zr95(`3eYOD3ZUNM&jr|6DZl43oIL&t{uQhrM~~D}G^s`#kYo>|v5`}-(P`XAQO7Br zs_nTB+oM9-gvG>^+%4pm!%YyJnjCO+MTTLS zJe@Xs5w1yhoFE_($lrXtrbkFzTx7Gj%^<9p1iH5I^!|A0ApL$XAGic-2ID{?Sh>qK znG62w?xb?MwIxB%SXLvVHe4Y@+mBmY9~HtP#OWuj4)Yn`_ZmM}16k3~NMdAjc#eRDRPCl2R?0I z+cAf`c;hus0ZD7j`{^(I>QG@oE0u!It+;fRK$~HW6!Am+I~M|G`2rp|HdmyA{=?%2 zT#4~8B;&S!CSAvaf1;oi!%&%FQWv8(?@rBV)Dd_3LcfF{^%EEynnEjNx~?TO6b3A+ zY+m}qT(>!iiIBFmbNsDYIMzCt_xU=5?67TjI2?Qli2ZjXba>t%bYI`x zUer6RVDKVs=TCmZ8zl!%L`=N6Fq71#WL|vo!9^g!c@Ik0`@?TimS;3l*`v#G(HX<^2>iC;$8)=>?F%;qZaWTEU^Es3kEVb8bk5+QdWLJdh3qFAJ zX_$wtuDRnDb*Zn43I*6b%)$Ek;9L>s+}KOzA&_QwUK5gk8?GuETLiQRF?O7?B$hrb zYB=Yae9<#rWU)?>A%cghS9$r=-K1&`?}6z)Y6_h0`!$14+NcM5U#$Ya^1dCEG1Gkm z7IF*~Lw`2qZf|j+|AZY3J6SPn*T2I2H}=L$n7VQzn9KWA9-MZaF3aW0;uAX-BOU%l z9(!YEu2WyPo4+&FUx8Ma$v*goA~)OF2haj3d3Rwqk5CLV$jM~jO}*B96& zRQHi-@|SM+nG0`X9$f=5h`2#yefcA`;tB~Pjumf{kdfHjfMUV=a-6C|yWT8j%$Oqk z={x4W30BOp=ced~6|~^1rk6=Hhcpmra(!X=uIfd=Hj5%HnS;dIwp}FWs#?3pRvKFK z8@|Lp)K#TqKjAuHWK46wx!3CQzh`s?w%)Vh_-&as`E^w1oh3kRJagtCo+$Dw+YhRV zW{e3F^o}2FUd9I3d+rA7<0C6xkKp9= zX0P}Bj;|k_*VEyf&pUU2rvB7}>O@3&Hj>wB4o(=Rd7UhzjriOt{lZ5s!`jE9pHWAq zI{?meUDqscqFTH!WH~W;z161sowy}vhTe836E4TtJ+B;=>Kxe`AqYDYYl(}Ofs3m2 z#uG;B8!pHz^@e-Dwh!E;>0N>0nGi z|3Ta@IDUPr*GCtoeFlWD`0aqCCkPuzfu)bSJMUwjH(dTOc1rAs$Bhk3{9wOM)xkl< zL6PPgk?n()=#U~AS?;Ob)I5{MFkLd7iA*a4qscEty+X03E5C}kQOz%x9RdxQ8Tcvm z&d?}#TGmXpSq5$-aGoIxx$&=ngxlDESN&f;CzK}JOp!7(1V~R4$CW!C%TU7f*WTAA zg!Vh>ER*4P6Y<6SVtiG80kN!mF)#)WA<`iW^&XqqMVrIBl3q7#dQk~=mFz2S!hH`! zanFcB@l?()i{TjAU-h=;N0m35XH@C^3g1+rohv4d-kVoQlxvU>((fo#k1mrXW@qGD zm1rTnE!-uPnHi!C6C0C;kYSl#+#sMMRv>6JjlxT@_p>O0so5SqqhpyfMq_fMGV-f+ zBYz5=_Mi)6mBzFouafYROZ73!R6;@g-z^f zr?hLJvKSS0t1f#?Z3K_}213qPe)?@9MUM4*ga=lei88*f#5t0@hJN3t%%xn_|b z08Y3`&&$P4+XB(O#lgx+MBuCoJN8ZMdrkOBRvnX1ZVtk^|K91t|L4B{*F{6A4V@5? z3l4#XrY{x;hk}6B>SQ@qY1v3;5X8DkYhby*-0f8E=Hd5A=KLj?>;cwsCusIW=>>{) z(R!Lr+r;P9B)Jxs);|BhOY~acYGpai9IxM4HMn8!Xvu4HV}O`U1R!9df5TJL~3;SRK)& zt$_)fcwfFtXHPgi^PfILga_(5J)L}tR}o6QRsh%Ts9x!%ptqIw#rr?R>$z}1PBtWVZ zY`_zAZAD;%`v|SH^u9=o=d* zC4Ny!k>!3z%65&6@Oc-E6=@Z_MrbtBB6{6DU=d%yyUN7f#WWh-S~9ltNQ& z>y{9eTrSF?KFhAZtE&MDZ$@SF!vW^u9h>uoVuc>Y$9*i(jcPkA`s;09JD2I4A3+8z z0TpxmQtkSd4RU(s9gJFe`^ZLaCAvsh3eT<#rn_EG@MPUw-XjI21{drZZ{2ubGC!62 z8Xg(JqycSeQ}(o|(e2wD(Xa{rz8IzX?gfj$mT~BdndClf57AP{KLWF8zGyny5^?u@ zRRi@KF>N%B&3=UY=zn6^!p5AlF)34LNTC`A5Kg5GS&r&fvmx1PQsflRs2R0QpbD5` z{~i1Kt%bLcL;;esEg-=20BbA4GT~F{G2M`4TWYL=r?On z@s~<^D0$TA<_9$CZZ|&RW#bTDBFNh&D97QcI;nVV0gkG+i~(zJ?GH5w9dPGYfG`7J z7nK9+wW0~FdIrGxT52H*2x7LE0s~59q!b@4&&r--tZtv4-d@Re-?tCCA9%7w;#cBZ zH$?q~+TR{al9TU$J=|%%H}kx%d1buo{+}9Hd+mc8hO5+0K^TDqM<6R}<)OzO*s^6m zvK*^%T%a@fW}lGlS*T*i!W!tk}`J45^tyP!~${&Rypcji4G)73M z_4$<|(p@;(^?UL2A2+SX=_I$-{2Qpjg3dMLf(@xSaO}X}AxnRs4JjdGP7)bq4!=I1 z)5V%9FsaBJEB#w^zGb4rD6^r~$YSc<1vF}bxkd9~NA{iX+~XtVPI;9f6-6U^&TtLh zovJUm5c2d!1AM}tI5henyOHHg;|=>0y~}~qu88~T=Cf>XWA-hqP9d%v=u_P2n0D+5rnjb zQJjCf-I+Sf2x%ABpq0Q+H~=_R4?T&#pV1huuRK9Vb4rOL?cR-;Wg06uNABTM0WIJC zIcw#z!UNnASg}nq+}(Z~&0d_q3WQnT5*ro7LEsd?j-gaLD#Pu=pURAq)zQSY(*&Fx zH+w$I>iwe=RE4CX0MHf8+oB|M9!&O$aIFLnuq#vNw&Da@lw}dl4K@)J5{8`=guSjxT!}Nuz3XrajS$7|lq{)h zI89WkDWSj0{W+HoD`WdaPDBTH{VUlXJ;E6F;pBFypG3YUb%6uqMEi*kamxuBD zx7r%F@zxICqa+>i8^l2!p>K%7ybCNYYwQa`#HpdP_9YXp3)~0y~o1M>N$q& z@3kIu1+leR*-*@;a~WNy=jEGJbDT@U#+cH2H?1+iP|Y29@F2Hqem~Y;*@uO#A`;O$ zmnS8g`o=PYvh>oaV}MaH{`h60__>ttuO9V{?b%@Q3ftIf{V&u}lMN?zuPN~%VB>q7 zoI*nWM%#}4{0?5!jXR@~ZT=4_3#6hI;KawS|-1`Q$(q1`EM-2 z&_Tj1j2FRf@)~Kf*!pXjcwf^u^b6}`5Q$I`yYG+kJ)yW(2=@!qVla8fd%SN)2P;Co z`0TDkV0Q<;w%9u$o>5r;u!D0Mb_*@BboZ>sF9wKEcKmFD(V%_Kl2wHLRtck_-+x!D zEM&1jxNqOg!Wrn}jd<5X_^Gn9uuvpu4m(5F?t>5qU^F2Y*kS3Wv$i)~DxbU^G1^R; zwcv`{RHq4s_SW@0G%$1i>e;A3xA_ebuv=vW&7(bMYFulcjPM10h;@r9F*$fiZM<0? zesr%*VoXTIqO~DK{J|xkh~?e~um!xy$bxfAp|V^*PdZ_&2%tM^S@PGAbqN?-ntg z2Wj}cKW}CSM@)6uCn@!@Uxm;D*j!-F`^}%n$8~?^%AuJf5cAwo zxqgvJ*-0)W`}HLCex}5wtnEz$dflV~P_;&T8nT!o@cQoK55BT4Z&#ha5y;j2KRaP9 z#SgoW4?E$U=^zHiKjO4Jolx+|LFdcUl#M^Juvow($22o$eP(ovrdGziN$}yDh)dMT>|K}^9~-eKP)62@+^}O0<dF}`# zckv#GLQc&9I)mJd%4>FepGX&I^jJei0{MhUpP#Izbz&2z_AA021rSBn@A!`S!iD2E z@N)2jRUfBkqb(VoCRDc#ZX>es0j~!mJR8z5=e~#skJ&PP2J7Y6wp7bpd)eF|spj9^S5M0Pp-O_K5X>d8n*plA}Mt?f2 zA%R6zoVfc5JfOZRzL@;8IgPEbrR)=@E#%o4_@Lbhz9Z>#8|)-^VX}KMR@O;bScx^g zF#U<~ z0g6DRw5M#b{doR!P`N_Ye#xB|iTkITa=EJsneBYdYm6vsI=9EOjoCeeR<*naR-lAR zGR`#Ze!jJS-pktaq&QqW!T5-3&*Ep3=G7gB%mxw7t@8bthjxRQKEoKIaD@|GE!}d8 z=h>s83x61?@+do$Xpl=W*AiW^+d7S&yLpwC%v6+HU$vIZK@?*W#uDGL^XfYqel;&m zNxtT+A_O=6+#gOZ&MaxYm`@07D4@-(WRlx(!=hcJj_vSRqfPat_{3~UmmY!fso+O*sV5FK$^m9j|ceN zVSlN!-M9%Mc-6Y`pLu!vOR-`Wax~csq3Pg(1O(r<<{4Ar5U?TJfMA39NcZ%i> z)|U~MrtsbT&NXU#OC$3lAxZU=#zQ~#4aM)B>{jx9;Nk(iNbmL!s+p*1MFjG3LG!pf z<>%qg!7tCuSr?U3_l&q;(@I|;#x1r8@1)JejMK|CBGHqNn&KRrdKXwA8Vq*Qkq6HT zfqf@lla3(ex=?J}1fGXK=iL!tdx?rqU;hFDlZH3B{#oz3r_k#@2_E4%e2%qLuTFJo zpd&93<3_|mcD|L7^-n07;LGIZxqnLGew?k z3PGjh$)rS$le*Wl7f(=3{W#ROd6F!ymc#YL^D+7kr#TYUEr9CQodO1_YgZ{=4rZVr z-na@Mi_k(}DKr7nPD?hH-*Aho=Ue!_nt!2TWQ^*aX8MbMwrCTB^RzL56<#BmD#* z{Qaf6&~W~lGs3^uZ=UZ{#pGW01#a(;v}~g7q(NMgv38PQNRmb0PlcqfO22G1qI>dV z1Ye%$L>L|#E6eiwIC(h{fqFI1^hxr|@7Axb{K~{!Db!w59#e4BgV()s1Lr%O*CuSc zfyIGml{bqIk35?PJt6rbpii$?oX4+bN_B&G?dTjCCq@R!l}&+?0ma)V4#JiGQ&9*} zz>`VAiGxD!3B8LH%ScdoFnELR)s6Jk4NH1(A^K8vWm1%k0kmJ>VbFfJ(BC_6=t2KN zN+&A#Ix#|GuII`~jwecRi*YF_sP`g-UhTEl_OG(w(C?aan4)fj>Se1<9(BbePO;Pt z`v&(*e))>GzYyMq2e2@<98|T4?se`Jd5BF*JJN?AEaVcQZqvy&aU2W5rb12ys34w3 zi?4*m*!mArm2w1|J;%bEY}4?C*+xPbJ$~LS!}AHw0)}V4=e3NR;;kfCTH%biRgJes z+=Y+Fdoim};JiE_UOm=@*%S;D*Da5e(U9NiPT)G!(QF{Rg0Z(XD#d(JNy@$*tYym<+JWmDoDLH?YcIWLwMM|^7Zaj zNxtHfHf8UzrT_oTq_oBUYe^!v{FjM!ZEe~+iF|EE=Z8?!IW@c{rtXzZQ>G$>$E}o^uUo*#D2_1zSyPdon5CbdZ z%^0C<`Cs3E?XNPoK<=MB_6Rz{Ilk0Cqw%1edy945bYK1TX>@X;=i zUGN*)2f)sd!^zAvT$=8eekX=I86f9iX!sq9Cj8Kj50Fd<=(N56+F!P1xN>Szq|Hz} zuMs--mJnatflryCxw1Y8E9rf8=>_eufx0@>R{XXRAol9GPUtYoD#K$@{FE^XZ|PoLpJ52c{uCI!aKmdQx4Z z*Yu3_qrxO>>~?X6L+0Ah*S8KnKE&=wzw51dPIT5UA|+dW-miteMz5#SU!F3{HUIrq zQYOvqVSFZnoCrL)3SckFs()sTz1_hX<8sAL1*5>MH<4uBLt#1J<#}N~la8Z2FW&os z7uJqchnb~F$sQjWIZv#9SC=ozXuyFrgRVAiTk{qD{9K;@1zo#ncdgvxQ%6w87tQQi zCOvs6dLs)|l|O-0g9_eD>x4Yj#%PqgU&6g~M&OhU<$$zgOq{#cEYCvKtUSu}x6eAn zuOdjwqP-+?@|op0Pkwf+Pkw+pFJcYlrN;&V{gOMRVM$>C6-5wxus89j#K6gsM0j~W z|DJV{!1irBl)7oYOqMSTbND5VIY{YrGx*%7QP#(Ij?Yi>-o{uy+757&-zxMP&k*@liVY=3MOYeQK zQ}8=|V1+W36K2bMl6V0Q3P8vf?cn};grJn+zm~m zMClap9v~V34geQn6WE_lY(}j0RhV*k$!Bw?+6;X+m<664bi{Aira?jBpWIaOY5{{= z#%Ph^R z18%OR@Ol=&`1?F;N0BQ|I`HHc3(A{XfDUtDSU9tBZBF%SU87rPU!mBqi(N2~i0Lh) z(9}l=Emxb{>kqEt%yff%29?i5^30+wRNVMTUHvCE@ACkNPC|KvntCi_59Th;I1ijk zT@QS9Ty3=G2KEtdihLRKCcyJ2p!J6*PTe(O+24MSiAE(5 zc+Dv~a1V&{#>EAGAfyuE;vOu?KWaqtUpSrzp0T`+tmfPQJb;-V*$(g+tJRY8?=te& z@gA{GY@j3aaT8LaGrNfBtb_2bb-PJ_UD4N7=m0v6n|CUyA>RnFj{)F}Z;_y^et}kDZ$y8ZK~0gwtRR z=~BSxPSlEd_@w&_Se+JpX5`E<^fLd6#KIP)qr^{H!tch^z)$({{T)=Id84bS?LT*| zn|F?tv3`NJLFj=qqKXRopAbCuXB~RbS4}}O2_Kth&W@>( z(Wa4^krC|Fx6wW*=&BzgpRxC0wqsm3JYij6DFZ4@jWGj;gRLM%eL*p!yC&}?RkOQE zCZ9wK7Lh-NJO=%^A==_X2?o~te~rN4;NY#Jp=Xz4BeRJyurQFbQ86%yGtjZ{*0E6f zL!Jdsc_W-KdLZQ@N|N+URN#w*c*Ba5L@L{fj0p=xr9+YXpS+5Rpg;0T(K1XXk-^Fr z%LMgQm=l&qXM4yvc(k1yf3PMRCHa9>D!f$B&k__LYF z^e4%oOVBVNDE!9@<@>)P9xi{Qpt) zCh$;w{~v!FLK<1J&txZMmwl!ZDqAH{S&}U!y9{PbWf^4|BKwkviY%$@#u8(vC}bTo z#+n)HU@-sF=lgs7|BwGX9^=eC=k0;LJomEI?a-U^>#t#)5b+M7Y;`p=HVTq^u>>z!f92UJ`6 zTuFEm>p|9GE5c{fmuM%R%%_9-SJ$oXcwSk2;}4MuKXP_F?Az*<{gR~U^3RN#H~kVq z#gr|<$iJ-T(z{Fp%5Eu-*;G5dyza_zbEqRV^-H{t)wf?CmW?`VY_GN(xRoTz#|XZ1 z3DC(q-Ey}$6Qp9&Nqyvh$w%{ zB9gf+6d|E|`^h!yYh%T~zr{rOFPEx1w0#{;#Rew~k`@dX-_2Lp=Q{?~1U!E{?CkQb z@lLHw;!meBvEe5%zXJPRewweJVM(H9Jz9VIZTK)ta*0g_o93+&J&ge_fkIijfgU~? zV_jl;yB}ZQ?dAD(;Clv}sugO-HrwD)BvE#uiW^iK3#x}bxxRZgRvPt#kGVyy>h|PKrg@&)g~a#k-hR_K4C8#)6k^xZLV0{2uj$IhQ`;$C1I- z>|FgJMnL2woxifkK*++;*5(mh&=&j7%JKSR_c^pDzaT~@@rs1K!pz{prIVi0tT0Cl z*o*7hip~08UeXi;w9fDvLuCEmf9QalHjI*dC?bcJY}($k>T}op%(|qJ>Hl>@pT{{% z=XH_Jm&%lDekGDyn?HQ&B?>hrd}2>yYLkBFkkuZ_Kk!#I{gsjZ^WB%Y#%TT&fui4} z1@<8F1L(xoD=j{g?|kl#*3H=@&Qg*;6Tb`&e#_uEgSovNd@s*rV=5jOP8vU$wW50`+zC*#paO=>;CY8 zr@E;(Ou$qt-uv=riu0TK1-Y%_?G7uo)~g4`Dx7>1<#^js(kcitaU*$fv`GAyK5X@< z-KWx*)oIh7k*~>d6TK{+4N*;%M3n|E12V0l{@cNuUXNpshicGc%|ze(poIl5GHMK{ zMKri*@AhAl!W<7aZ&hF8nBIS;Z_QO-^JLQkY@AKgE@!*pq?5mzcGv?sfE>%Wf+Ae1s)1-~5Aj8yoH5s-zetBQa z79UHVR1;dkM3E6q8-&aIYPMA4RR`jZi4;?;1h3M7QQpou##C};J{@7UEYXd4w~mY< zpdDHc7DlQR(ud1!yI_o4MZ&J$7($?9>(hEf)xA0F$DAL`-;^sMF{ITt;k^Q_+ZkKB z1_DDl?-qp$2vodg6HR@96gZt%u|fY!t4+x!?)a^D>zm>x)2MgD@Jg%v%w>Td>H?9j zvKkOKzcRXI@@QJmqM>S^mmJLqI=?mMy&LwuX#;YC4MvsiXj{pV@PtobUu2LFW@BSa zxAwLb9JeN&Dd*$2>-4>650mU6%G92w?89U|<1o*ws+s?pWIdOe^3#+pC2q|jgqf%< z^O%qKp1_N+Mf@dEy=*03w$dC*PpoKkMKAB`%IUxTWCqP9CsDOite@;4Z9R8Pw zq-PwAN0W|_5Ft>36Z0CRAq=9kfxHZWpcEh{Pk}WjfQp=dy`%#WA|NO%A(rF?tV*CC z31Ha*AT6i&mB8U3lj)Hf5dSMc)UaOe-P5G-@bU5Svrj5dox1T;Od{&do1YS=#DD&L zISi`DV_$BMRu2j3d1X~IQ4?u?4HasOs-@F+n9S0Ea!TvzsZgKtldY$T6EZmo_j~6121Rn$GIos)gSNZ&Zw-5VR zsJ<`r)YpCObn}dTxO*Zs;|bRogI~m^Sa^Al^zkL*X`Oq$hUXoU8Tj#FnnA5T^SA+X z?GIVWB7+LE^?0C7h4BbXVhsPFX8YBL>s7fL{A`5D*uthjdn*rTZEBs4VuRl$(Ao}K zWw;vF{;0P*q_9qEe;gk6ozVW*Y6@D1)rZCY)xx<}d4Epr?NlLi1O=#?-&+~^Ra@B| zK2}ZWtK|V!3)L!$6NPQ9lZ);`+w<-;eYKybFqXpWeckPonXG#iKTjcaxproq$+HC) zn04yyeHLN+EJE9Nf4;#u3X=uiU0_bf?7mW;b4X|1c5&~=>q%lB39nBkvu^Xd_hUkg zLS4X80_(Q!z#C>s%s;l(E3(Ujr@fc;U9av{O0>s1RU)cYlK8HCY z$wUgTBY;sB7(c}94!HL-O@+xhz&NYA+6RoBz^KBtC7Hp(>v&+) z1jbJ>yQ9EpE=-;TM!M=M6&Tsv4H5c6#5> z0_GaZh$#S^E)$oS*6st$0C*lVLw$~U&I?TF_hoTR$hSuk!7#%oBxy9UU96bLvg?MOR$e_uBZjqNGoIKb2QW8qdX3Ewz`Qvm@GnGZ0Fip?3Bbm8+(J# z9y{gW;MqTU9=aXr8@A6i!@6w*%C^;Z%>WoW3t(3Q_KDSY>OZ?Ruv-8-UT>8R*df3U0d^R$ivzm>u(tp^wo4KdKK6!rx%$Gs z9I*dbZHECn0z~(c(L^H5pR9z|Elt-id0njVU6$=sY?zfAX~iqa3RGJ0U)3*cSDdhT zZMVCfDTCXc_YI?J8+gVeEIs=%$$G19U0geT2_oda*COjVvbf!C5SNq8y3IMmy4N$4 z;3cj(hrbNs$ZO7dN#jtDK=@YQFq8-=rB~Z4fvYl6gggo;y6uva*8%jy*r~}Ypoecm zxBvA)2~cZRU%&(gkwd^bhIDd)d!MuJ)z2jS>jJ8RW;;DmWSyR39QqXW(3>&2?R~I) z5SQ&c=uBX5@(tVN2Eq7O+aVyBgS=)t1n40t#`~v1^)JwT6qJ{Pq$inOv9GAi8KeIh zudlY_l10{WVBH9vTswpgNrXM%UhqspF_kpua^y! z1fE}Q?~4~%pOn&U?@IzD*d}Ly+ylttfV@O+bq%b>8c?$U^<8p;gPi7^15hi0s7eXO zp&x)MZR`}@7W7Gx-fCqB*N$~N*J>r`D(g-LjtK@&|J!4`^uKlyWW_Ur4Nuhm{~lln zF^g_lxk~w6_UjNu%-EXt+J2BLwf+|2I>q0gHsti{$I9i!#h)uoJk+Z`zzh9@!TYHa z`pL_`9&sB*2{|dUNk4tAo340niE4?WFu*dx$|Dt1GhD_@n^v1F9WKLT${qJd?zimE zzU2Ztk`9CjkP`;v!~{7p|K(%?1VcbD2?SIizyJXg z2w*o*6f6h{Q8?EPQ38gdt!|tgDF5YX0dm9K`?JjeU>%mlx58N-1+>&N;U1 z3OeQ$P1JsyXjlw~sd;SG-yJS=-qzj(C7Wm z%y44c?xoz0{TBv_+gC0o?j=TwtR+UsFk~TSl)|HCn-)Tz-4^`mOF25~X*n|LBZ$X< zVE5oNW(NQw0U!ndOaUMb0B!?71prh4fExhJ0ze-C^!)?q0)Q+4cmaR|0PF+6GXQuF z02cuu0sssFAQ}Lo0YCr%QUE{+0F(g00c79+GQfLOso-q^U>g7;0N^D6Tm^vF0AK|G zMF3C)0M-C71OTM~Q2Gx5GH?JH;6W$g?Ezp90Kxzu5&(<!{RaRUOv2h6R@< z#e&mpGY0^2{sGhgKmh=r0Dw6Fi~&F$0Bi#Q3jlBeKr{dd06+==C;@;H05|}E0|4Mb z2Kav&1OR{;0Q>=f8UWY;04@L!0e}nu&;)==0Pq3;F94VXfXROVkOBT*27v%z0RR&K z&;S5?0B{%p*Z=?v01yDc0YEKQWKAC|<08Q_=v5d*lad2^6(N+~O+RL~N$1d{gkWVD zjBuGXv_ayYMTE$j1z65uH={5jWbn9M406(ZB8O`<6r%__cDrnRlYtrD%z@c^)T2jU z%)SGgA*JOTbGwemvl}m*KDKt}fhyvZ`Uo?)N`+|zQtat>-v0zr90eO%7o->nHuN)4 zg8$dvrh||$5E>RK!$5#k5Xa3nF+Azr5DriZdv;?^rY|w|)YF&}|28~6EKDbedD?@4 z_8#733^~^Rr8CPO?~j%d=?VBx$Ct@_4Db@x92tl?Ch{21#P((9v>1(2ncxFn>excX zv!qO7Ac}bA3ENPnTGg1ERMqZeV(zC(N3&Wt8}Ds2();V)J`BDl+5CSlgkv6v5!r{* z@c6Q~KUwD3;6D6-v4Gj{Y~GhequS&7+Ml(b=VrNd^XB;@NkQCS)hj+<5Yfmu^YzQ% z&#PTQ=g*$~s(uzr`SQ8RHKU@e%0%E_M$;xEbgm@eWQiYrq^|{YwrWcx;n}mE zj1lK44F220CwJA=Oc|eAQYQ;W9*=Zi`&;?=iDd9rf_TfmELH_^+Ig6n6z>@7-(JT2 z;MnaYpt^*))2@t=aURB_1=pMmBKIsHLXmd&Y?`p&}$4d>LHlfWh!vpo-* z^$jAo>n}#`sWqqO2&pdR@T+!H#Xu?6whIT%+Tty{4WQfuZUk^^I;SE|IS*s*34(c2 zjxlBJgW)8Pb8bZbY zGjj&K^%XA4G8}|}!U`ygfMO^dDENRv8z{a4g?w(}UMXi*Hy#cuxIl%7fh=S4pF#sv z^ni-HfMEd?IZ&Muj1l;J{qFDBuZ%FK^c~AuLMV)-VnP61_oD2Y8y3KMJ-c&6bViuH z{T;itz}m;DN$G=REnx!ZocHxXH0r$%8vc_hUL2{n}00xrt;sm+qgIrcXNDH6{ z1R*Cur{NVqF3TX7M4-&!$m+)EfC@Db+YR&)LO>^ti2}(8fK3qsR+P#G6#qKj1SnE~ zf(kkfBMmBwK*bPH;GqDD02LyjLK7(P{DAQUFaiOC8fm_XQ383K2NiU%tzaMz=D$wL z1Bt;vCn4CgmYD9K8{I%c5b#BV0R74|1fAjpECv9o1fZCI&;amd#R#OeW$$?ze4|6K z9#o9L=kZy(_~@>rcnf2b84Fz=VX8PInT7GhF=K;BL?5Afcx^V`vCrXRX^pf)qRMtE`$a1*V4JtlG(|onLW(&uAIK}DikcA&~n9<1V^}G2lTlN>F?29fY?cF4Qpv zoI*1s^49hpoKs=9o&6`6(JF|K?Q@_(h+-@tltpLW@Ak6(ui@C5)61A%21bQKIQg$Z zqGk8Eq0#IfUT}@{Uqb@eb0qu-Vk&{J`2QNf2himID!%_;ker+U3xdDa^{<{Eepf;sQwgz4)2ON5;ET*?_*I=N0; z`%h#K!FU5vvuovhEF!Y-X6>&3|;6f28PVI$M6- zkjX-ORl3y#YU&<1Z}-4D{E2=q)1UM4sg<36R(Vv}OKh11u0N6ocJhz+FSqb!j9s6IRS}V;ytsb2U^NRKJwR%xWB{jC5-X1UE=$pq06IsAzL>$ zKSew#6kb%+z}Al7HP&IbQfR~&3x-$O~b| zb*ZjIt-badFK!be;JfrZuW!9O4aFtRvd6fDCJJ^9CqrGJ;Awsx_qHi|z8v$QC#JQf zLJ(p|NI$Tza|Ny!u)tYsu0j4_xpdc|+35~DZt*nI)SB9R&1oWUI&HW2!2Jom-k}%X5vmoK>a7mz{X}jQ@jlp ziBuu!e~qgivbSx9=S09EYWt_Zn+Rd-OzgKyD5ZJiW=rD{&QCg>4XJr?J{B9Rf-_{5 zns8$$8K@5?CGLyv0Ih}V>xF%11-`uCdHnWLhWA6>s~Ok+d}sE{B%RCs z!v4;zVfIr|W~?5V>fX+}!zr$&t$wh}sViCd~kF7{QA2-wl$&3$ZzL~ zoFfkE53VF#egn6tHqk+^7_Lo=N!3OS*{mZ5u zb_vm*4%<7G{dxD)K6v`AZ(TsDt0f1(cN~RkC~PBrdI28K?2J3^#_4?HS=-6|^c+io z{QX`RWNWL^@R}f9wkF5$j?+_=zV!{EcW82-Cg*`TW4zkJA%)Om8HHH1Y_?q8+AZS% z_Y{-ZCQAGFKyXdg1cKwx3Oo4&De-$ehBeVTmbSZ!3por^5G3p2*^iU)y;gY1tfIJ<->dAyci`+f z$;^vC$KCV&ehK;iwcTJt1?=)Z5yMGXh~ZAGl>`=o&HlR<|03(ZG3v#ME?zgUb4Si5 ze;cgbm@Z*?IQT}9ukbue%JlLwEIwRm4{_N$5Iia?=A{B3^p1>I>t-C&H(g%tKu^y4 z96YbA9{PMRd`kPKncxVvsC;ng2JeNTh zQt^Hg+Oi3Ls{6h6W7T*|v*iy>exK5Bezs_#{kE@4jrjQ$ zo#iU{*a{6Q3R|9z%OIg4^hICPfgMrUbJIASH(`UwPD3F%zCrpLH;Ec^XyoBw*up51{GNP+JGT zK@d%wO?$XrwyvKH?t3e!2d*RVBX_?+h{+iE?jd^|9wY|?I3<8Paz_<@iKCG~5F1VC3`mz-K%PII5a3%SHD^Ae> zr*cuh?LN*H_9`58`N^DtiEG@aW7^+Nc9wHBU>TMEW0jAZ>*F>y!#9qHZesU`E<-8{*##b`mN&Ne}uF*RmiEQlbq58Ce%<< z`iZoO6k4|1RDI4f`o8JJ8avf6obG#Yq9Rq_MI^ZM#De^gIF;pMoq!IxJ~hqhg*f3x zu4q>s&7OFediW^ybvQkjbpk7dg!PiqM~G-XV!ioO`m^qAR-s_wGlK)%*g9+W75Gna zYF?W5EfL@16P@M1IjK&lDfAg4T9kbx{)4LyyFCo)vs zqf}jXD%YVpua)w`{|(40em&#IcY(W=dXkG>N~>vH{_^ujr`VguIkukbG7pPitNMRW zFVd~jJ0-tzt&iFM>aPF$`a@7DMxzOeBbZ3W6>wWLE3w3`+fpqoSxeaZ+uL<`W4qr} zJniMs5y8k#WLz^bkd!V?Ob-C}wW@`-Q@IM{k1n{oYpEOkc+WyLYD)j{#tB?UMDB4r z?j3O4bHv<6hz*8qZxf&6B+qPXy`mEtx7=+Ck4?hNECmM>!;a6owe|Bg1)njSv9Wmj zL66!;FKXQAP`4u2P-}RY7P%izBkn#o(&+!?I4-=qdox|)cHbNMbY{at8|=P*_6HN2MxmHD`Xpv|142Qhz8*K#KX&f}H%chG75)UMZi z4TpBn8tV*J&b@|fX#*1Cg{{fHckT~U70zxjPPc?QBKeuX8mKU?Is z=y-JkKeC-wkIaK?KTC@@?l7>Q$~{24HfRC8_*&alz_;5`o{$--N3Qs85NZJBIE_9d zwPiE>3TKFf<*L^->5OlOs?Fycy3Z#YxL$X6f3-f9_+)BgQchPRp*;% z-CnK_k9J?;=pMYOYRQ@U;-Kq-v}1w((4wV2{~n#P_|tzJ7a;W0r?}-Z-A&9~Cp+NC z{K4X`SJ3vF%*3)3ILhvo;?8Hq)(m=39F*&zKHs`>Xz6puoLkp7-K}yhif%6qEJW5B z-=5b0(@*$w73RbOTeMj%Uq&FkPSGZ=P1T>EO|T-p6lfF2kzPu)i3?Npd5s~m($uVH zbkD{RuV-}l6{HtOo#x?*jKkEkPwB~xAqrFV0X!2ThpA>sb<9Km{booB@Zi6|-G&Pk zO_F$b?M>CA+;Wo#EFjDmM~w*HeveJ;>_Nv7^zUv=D0^+;^l!l&tK^4M8f)irk>Vd5cT> z$NbL-A-G5_;`YKDNBa}oQ$GvBI9Gh<68GeBD?Z#uo2tekt<)9n_fMS;zp;|4;RyyRg{vp>Zc^|=Fw17M~To0-AtX>;rFB$&%-Z^piH|HOiG5ljBsJ!Yc@asPa z9T#DR%J8-at3C@DWKJ&)9!AuUqcud)z+HvW@(_QAAy-WSy5(otG1G zGCPVs5>D3+r&ov5gTnvsiy`6#GUp01=UqGFek;1hw#vdRR| z2}h`LnqHiHC#h;Wgc4pr@4jL?xj*{w-je9|hY4;&ZCgQ6LzmDj{>N1d&OT&xbADH8 zJv;07C42@I$9m_ppZZZ9vuh~_$JL2J$%QHF6aB{sH=mpP4LT+>in%Js-2B3&CmjmI z8H?%__}&M99NhS|t50>4BoYbIWHm|6WXlZXrvyl?oO&Dfq9m*) zk%;Q6Gg^)vvRkg57Ne9PQ>qmvcqjO&iM7*`zSgMhxe~cgR4zxfm+D6SyAKVO{F7l2 z^?EkgY2Q_wITCLhp%5J3MFtJ~Woo%QBUP{Q%+`Bruk{amQ;5<;B0rI+-_pVsiN#%n z!cRaOc%Y%u3D}`#od(B+ty`92lk%&y+q@75zMw6c^%Y$b31SA{--SRntBK!Ryu=}q z^Azzk@Qj%6Hn=*F#-?Q1W^j6-$3S?XC#*D09co)p99J-JOCT3y>)dfgnRbTJ5v%dE zc;TUxozz=%PC9MIFf(`oL2pUhoc``u!7RGt#WSr38<)pkU}M7B5X}a+BC#IFAR`fa zm5w8AQP@eAyY zmwHJjc5ISY$}?qPUA#~!CL&xlQ)(<_|G&{A#jiIk?_S`GfRV4~4sKxPAYVU_ZY&sb z4E`H1V)F0Le-9V6GcEFoqu!b+X<1_)_N&NQ)MT;C?PT1Yh+nHWijrDBznrW7k{-RF zZPU{_SXB9X-P)FleZR*OJh|PFAIb&pO|bK4_aRH8=zF(WblCca_hG^HfF=mC+RHx`&tf_?l(2Vqx*H=oR|qiM|s0;a{Q0tE|oS zXKyHIb_d<-<@AH^>0XG-*LRrKz8E!ol-cJO-W=F6l}%JOo|}BpPoJd-c667YNpR8z z2ZW2W-l2sD#tPr;*S+1T<6bhJ*S_;fa2WS%$oj_6Xj#sZfeS5{W9!;$ns^*dJbT{Y z(AKrXsP~Jxkn7#hycbZX@ZcDY_1yG$$S*GRd%!)J;Pg0Gbnz*~iU{`!j;pi{xq+ie zHTnKEK+|#$ZuKY8a)pQneg%-Tjo9B)25b=YgZ8EJ6F;1sa-kW5JN-A>v9}`OUmPjJ z$?fG?*W&(;XF|l%W({PgQFF)O{s&>fJn(f1)LhScE@Z18h7z34h1jL(gVXy95d7F-SY#N)=_ss?2QHKXZy?QWL?%5Von&ZhWOPpXCiE`jq|jOvp%cIl`JJ5}(RCp>&X%@{BHWgsRCt;iVFU=c=1LJOSgRg+`1F zSiLQLbWz_SPN92@JM@pSsdI*c-Tk5`S*cPY*x+;?{&l1_D>+GC^b^CIb=?benb z*HXqE*N~Ne`6dQNcD%_*71Qd|aI42J4f`@Mq7S9enP8di*lh|K*{V&+>oT{gg+xG4^^ZySgXR7)$Uz z=2ER2b8j|NZIa%%R8ru6=T!`=YP0i}|6jauW{1#wA=T!l6RHyO(1^Z>uGzQpP)W&* zm{3*U8+s?#B-dk{-Xry<6L>7%I7vV65lwty8D;rmpv;_aL3!x389_db?nK`E%s2F+ z%hBANJ(-QbVSPZB-TD%mlE*XM!BZMjwOzxJZ7F3h=4aCR{(@~{++EH!OPA2c-ikz{ zsoff;whGL?&oYy+#z*ze=DFyf>dHGFE3nYcSzteq7D^NU(qR&iAX-`P+jbo;Y+j zsh?0MzTgBObX@Q_aGyo$9JlQ?BzILj?Vh(IQG80G*`Ntb4E&7B4Lx2WUw3589;v+* zM6{aHjL>`@!r^t0&I3KTe+j9u#YucT)zlo)s1{Ct?#4kqj8UkA?P6(Wv~$F}QyI;U zjzTCCEfFpI^c=CwQ^jGt5nSFcy|uKgv<_vu9{F*Uk}t9uaz!!d1ix!*o(iI}F6!Xy ziC*?z1yRmkSy60XTbJJ+#s$LY}P3^xUYe z^TbmpC09oHa>9@-FZ$kX=}o&&&8t$JLJiaK2W+n(#j8GhZWOJDU}Dx*>Jb&EL_*T4M{s9#M_kUY+67v z70-SdaCLqkeIp>{$$Q!>Q+Yet*zi%Iy1YdXsUr2y2SSks} z-xAh&;F3l$Q-~G)@^d)iR{D{_KAjI{Iv;r7@UEqQ@c;SDfA#2mKIc67I$M_B$v0fG z`f^-)=EBJ5>NF|$Dfyp`1I>2t+0y2TLTvhaCc#L>C}=l>_Z>DaA8YPEp{tuo=TBb? zvYy?!@bRy>z}J=PP^~xLUZ*--uHAE-i2mS5e~$9h*fJz)Or?Ym{Ztte-;eyR`Lyp+Bl-2_%1!Nbnf@wR8b8R9r1Bq<3%YOK2AGBE~n@FX=bGy zv(k>tj5F9@fYa<2dP2TzG8BLBpSt%LHnT1MX(J)}EBr~j<;F+NnQi$`duh>M5fGcv zrL`wC>o3a(?gYMx4q(%M5Tu!HX1CNBf_|X1Yy#iCft00Ce=gDcLlu4JVNwEX4D26S zY(HE(aryyjNi&?kNGLw}#~xmzz{%EEz?EY!3-jQkF@RYNoMvjaLh&6^(kn6*yMw+p6sn`=ak}Hx^)y>8# zv#BwpsJ_H4b{Y?{V#=y{wy`LpFHDo&;fUAChHwp~uBzu-7B#;zaw1BfR~~gZ%#=W7 z1$!Uv!@mj*&1=|Sep`C?@Xo{KAF?Y#mI{T9g)W&*ncFopKUne;Bk~gs74>R{4MQhc z$O2+gh}Q!*I^Bh4zKj`~E7+31{B)hvz${*a-!X>Yv8YB_RC{>S61LH#LzLY&jF3*n zNthkE_J@qaW}onC-<>Tix*`iz(bA-;+o4%2imJ#!`8`GX#i0B$QGU-*em|NtQ`$9C zIy9}@HLU}>6o%H1U8}#=P;K5&O?+F(bZ*kbyz<(Yuv-$hTMEeifmU1{&0(1o&Cfi3 z-5hI2_Wy2ZZmhP_Bfr|?-Z^t@W>s^$Ad7;5l%V{6M|kyCx6@HF4cZqPwAm+9@qKcW zshTXEnvRk6UY~`My*`WVH(a;>!PTV@=@``NW@F#sXk*W=xm3>s$`|TqN-qf|TfYU( zDv_Ib>+amTR|91`f{&ah2wJ2~csjlQ6F>I$qI9*5(uk{mDgJJXO5L8P-S0BycunSs z^vO?MBDah3o)dIV>kM9(zZ7t@_r92w{_pEOxp52PAM=b(F20{BkNa~xV37T~Sip7c z5c9S0kq<3h%&S~JD7DIhC=D?2#GP9H>9b@*PH&MldSLnhi^nqiJLSTnzJ1;6nmKz+ z+&Fq7)Q>8@HX0Vf5qN;Ux=p_!yBwum?{ZPr8iTV2}EmbzAu$IzVlF6 z0Y*5XcZao%eKu}=m!3Hbjzy0nS`XQv|RakZ4Ozbslj_D3N$Wk*tI9K<6jhmV7^ z$GW2b{{Hv)>yohq8L7z+e)OvIrnPH9Ars-S|8YMKVVzkbWxePf_sT4%KmpOsIk)=5 z%1nu)x$fosK)`lWU3?JyiV{Z#{5IXt)WMQ&xG_FdXW8BTXgA zx4LRd!3QAv&#<9KAbadkR^=eUqd_W1hXpx2VtCr4?M)p*cpElPtbQ$(hJ{6J3EuA@ zC>O-Fu!|WVo!9!Qs$`_LcK;YH;ULOXYAf{;O(m^^z<2Myu(HZ%SDj$jx{oN4gcOI# z+N>&DMPW@%pap6HnHT1?EH4voCkLru(**pUVS^f5?mx#$AAy*p>75CyvpMcjeCXV7 zPI4=%pp^5dg8;{NP5Ubx|3y^s7qXLvB|#%R?ooulty`LaNNP~|iLK!yC=c1K;S03# z#14Yuz57baKJ8s~!`X$A_zqdf4)|M?0B1;CLIdxmP#xrD3xXTUGZu2+{>{DePjU zN9U2hRFz89)}~o$KD=91#x$RtDbm429JcX0@4e}FDM3Eb^Q6bk1l^19iLYd00yhMA zHVD}{xFVEG@)H+xu%WanxZ2mTLMIMDVC>*$rXI?5mBz9mmwONhZl!5*)(gdd;N$*HsXGJ<%R7Qv^agd$4%lwG;VzYbT1q^DPn; zep-|FL}$;X;#EbZr0MNcyP!>#^X-K5YiqX9=FeJeSgd!2yfxu+LEQE5xE~jF+ER07 zDTbm=hhGb~)wEd-B+VHSIl;tPgTg8-TB&GJDV?ys=9 zQ|pcUN1VoB)8c}acR**Nz&Yt~bp?)oQ_`RFD2r9906 zW7s?Rj_@k?`|k$v;t=tRFasf2h{E>pEJBa3N{b?H+iq}#DE^AZO`vi2(fY014Gw{s zZCi%3_E4TIz z5g5X@L^JJqWScbcy^7991e5FL-TwAe&qeJ(=Vc%d>Upar@e1~1BRl4vzb=}j3aK=%rB29-P_e*7{EN;75=cIDL znVTP-5*)=$!UN8@EZ7v>B>1+>c3*urYsxY*Bz?bF_LAMxe*r)&pv9I0Op9nVa(Z%uSJ1 zpKEg@@is!sRX9`yMb(l4PxCFU3tL*?jO~^p)^!cXw}8fl1My9Bpz&OF^I$(UxY#vgI2=JRx-<0 zj2!L9PHb){4h)4{Mb~?^6D+0S*+Q!;7w1SOZ3OG9@P>1l0$zY1MkMJINt`VN>qxLm zfH&~UgmTM->S!y$k21Cr=1H>e;GyTp#Q#mNUHm%2>n1p{JNbI^aY%rYy)DP!`wM?h z|9AcMQ0w^D^U-&G0n}6vuDb(`Ew@)Nf*?;hV zP`GSeRHB+1;{Vzp=S|U}jn_4{HQB=rw__AV>XrC*l{x|ygI?O+ZQy7_}mx>u&L#2i=1sbWc`byzn-D_T6bBO6Z`)ng;W9Mc{ zDf2DkMk;0q&A*OW`UVY#m6Up=HZ(}1(6Z#kkS(O94+P?aD+N1HH8P3Kl8_S~hY$DP z<$_ViN#BjLX1WOu&vC(BX%LfbF!cxm_RW`KAnyjh$dAJ*&$vlk+)j(KdWwO6kl?2#5`(yWZwBl(hX6=Lvk$TP?EAcMv zE!PU-w8P`7FX~W)D24~slp@8Uk&@7>>`=WU5EoNu=XLv=r_O!k7I9)(eH%aj=mham zd3>pKB7<|agG6?L`mHq=u;1wF~5cSZtf z(@l0{?~HyI70VwL`}I(e3T}Q8)jY&uFFqc%REO6M8PfJypoLSE8_4k$Ow63&W;! z!xH%B=$PAGGF8E+~9XCB(3WCZTkY;FcQvxc7k)tQZNbV8@wTs%> zUo!<})7GXBA*+r;OHM#bc%h!k`eWfiKAaw7EF!oglvZh12PIx~y~N;9Q8L_3HL=k&{l$~&9?H=R`^hL5~w;ER2|r&oHFpIFG}ruqusjUaM_)$i|=tt zXZ7oNS7{SJTZ~=fa-u{LoHJXkzV;}m-e~F+kq!AEUoV7anXSL2kc~YslP&P9^Rc8& z_2Wx&)Y(=GSBETt^+9Wx^nkU)TB9xOYRA@5Rn2LN;LpZA{TaclWI>rEr>dZP%XLvV z>w-?a8-u@nJ!*W2D49U}kvgBpp8DXp%pC}}Ti+n>d6e+-do5~eK&Y2=F%jo$#2G4OoZ!{Scq(J|uF@~SbIT`1|pL|~L zH)}U|`3|e@8aIC_PUxcc6HQ3>UTCL;-nB`KktuODJu)wp<0vG;6k!=FATrs?%L-hYurRr+6X3NnedCQ0 z*J(cV%)y}9XAV#6&c{#P8T)^)PnheF72C%jZ;qi~Wi2mvSF2UrYA7aY#qqvZ7?wvT zm2eN#u3fVWt*KdLaa4v3&6E~hvOdx+*|P%;M)P&&_0$z+6B_Ny3vdJc5cHw-7yYtn zlk+aem$EgEZf=KwPYJZXtIAjbS*fu!!n*T~61bBZ`!;It|Dozlz@hrz|Nku6HP#Sj z8nUFaW*$t9ST<4tE>)iMA`MB?MT6$MKbjf^f)b$dXWu|rcLrRT}!eH3&Q=YZ+ zYvV@yE_yxsgyv^eM+iQIjhOWv#31N9Hf!E|4*u)*BwW`Uex*OScWmFVe^0u2cH8^@ zlPcCZUiS%^y2!UK1xwd|;s>x+8j#Z6&5{DCy=vStX(N)Si6Ne*QO{a|XL#u~t?4*3gtVBjp0eP#z;Z8_vpzE&Jd^Hnt2HT;?gnin z4tbCyR7HzL(&oKk8dX-4A~5nw+fmoav&HP(aI^dy@1G@|NKyt!iHH0_F?&lkO?%KMjWfGWn^O?^R$Rx>`B?0` z5C+TF{=bpv@_>u;O?_|PCzZw@AGdm!mWUZDvO zTW>7vFN#tyo*?}Y=A3O`gkNxAA&3p_$_zIftKx^TFO&=kV&50Ply8`YxVmhZg}T~p zbiC#0vv=-4Q;y~~2y4zBDyY5dVp-i={p$R>*W}onaIDw6@#0;bVe^IN@UJb+f!HLE z9r4RdaakJj=-;BtW3sUg=1;FK3-Uw^P8Ys{g6IfoVJ>OmxRA<{m8r_Lc9Zl!Ik*$- zAWD`G_%18x-9y|CJIDgKLIl|PtBY$p4Z9axFABRA{fY9`0ga6OM7S;rG=CRmyvv6| zD8`ucTC}3m_GItal-{@yUw4AoYXW-U1oJiwpm)O<{c5n2O<$O5{MSC=`DJy|U_1sNA2>nFMwWLV-!R zu&M?qGiTjAlvQg1WrhGKGdxq&t58U(1Va^2W_06WJ;()}g0F#(Qd4;O*F4lTRI-kM ztRCSU*g+NC;P0wvM_zR8vC&a3Utd6(@j|#}3pZB@FhYx=ki|IWs9P6Vz9i)tw{$(% ze8aG+%6mYS;#{p2W{#S#)&k1RkqmrHYrCM^^vi5?EuhT!eI^?i!g+V96wqI zP-esnsew>w8}XTr)7~yb4shQQkQg^uSrF#z%?JQy3ZLkAI`50J$6xJYxYlXqBEhNtI|L2g^fL9zGsvZRb>3n}!aO z&13QSI1I+4i(~}_yGSrrxpP|OZmn_64( zZU|5h$a;ST#r(WZKQl$uhC*5-8I#B_tCJN`#EK$UrP+vY0~4E-$cN{Okm36Zc?Ndj z$1A-D0=$!!*UESJ{~d;8`+ssmNTwrWoG0DRPK`5D(SmY8#LoGTJ4+0< z{?pOY9zdV&h^aHP|K<4WioyD|%YW-X8LafKkF?zV=q~PecRM#;@R(lz7uD&Z`i}!U zk8!BxCkjSmbbZ0*ze@S+jqZ2lWb;^mn!LW+rDD4+`aJPz75lBikn5QfN9UEg${lov zpD#YGV)^|%wU%voD~hy zA&_DdTWjgt<~Hv(=C!|s7DU!NZ_R@eM@kLP`4k+yA!2uaEi~91I`+Xs>vVUAe$On~ zgCr+h4NF=MVp~{@4>;~_-m#f62p8O%I~Rf%(0M6a&HkxWB;?agK}9h4?#?T$ouUi- zhaa~m#0G%6{6FM}#~k#Iue%L~s({pPZ82;!M!t})MwU5Mfc^9$0$zU8eO}bF3D$!< zyY6aWrHz<+wp}9^0xo4VnCk`N1rHm|IetESJf0I5q6Jex0IXAwUc7K`m z&$gR9kq6!B(JK)S?E&^wGSk%M-Io}cfRk!Bfw#rvO%^_+m_T#I%o374+AqenHi`GI zhq6xHt4gg#=VA~d)5vsrh+L0emQd(f;aAAUnWi$&zC@*VbIoa_5|ALanHyx_IoeG% zJUp%`%$o5Jl5c(nFekY60Ikq20VjVMT%xw9lUGLNE7a>7B8t`Jta%)pc2}Nu7i{~F z{EGl*y+GIU)z%8t)>^x{^dNWi3RXiOrB?H5ZaXTslX)(~uc<9IoI( zOth8Wy4RN&(}ND=q6di61EMFVPPLIv%Y#Y>nsj1Db?~DNGO8*ms#pU{W;mj2gqn*1 z-lIwd*cUNEXw#)3db+K&3b2O?U=RHCKxuj)Zj!3pMmCU#YzYeE1%&(cbyfUSu}v0C zlvNk`S1t@DFg;Z$55nh!VvL9A<+joVZBXe$yR{cA9g^-7yzi>HJJd9Yx(uN}22UU( zf0D-5MlqLHC=gI^1r~h@#@e2KxCnwY%FJ(~RaZC2}Lt?wi{KwLGSn2Vt(3)=)7~6{e(JilZwC3`n zdt55|xJ%TDs{YP>iP71~1DT~@HMR*GaGy#W3^Lo?!n?ZVMG%{QccJ5Jg_|_x}d&=ZS!k*HJFzWL~D6K~DrKXRG07TSR7B#Nq5zZZS^svy{KO z?)a5%x>lscgwG?``PRFq*5sR3l*dL8Ged}z3g@id6t)sFcH1e!ofP{{ibi3^Y&+%5 zH0_g>0w{JL?zw|~IkbYbQc%exHoXmD+$2yX<;nGyy3KVkZ8%qdGQORpFg>MDo#LcU zm3}3uOt)P(eulH9_K|$t@va1Li_!+O_Z!Jy4it6PfL-E7N}GH@N?ww63bfNOBVW?} z;_TR*@6Wv0XAczYCZQLHy!)d9Set$#l<+fC0O1uoN%fqP(6bxQY=*g9QF=y*pTU$@j5va zotzGxoO2=SIGr3D;`zpqD`%GKQ|9Yk$|oeUtY?&TbA0AKAE}b#5GnkYx>`5$C3`;y z7sa6*O<`w!V3lsLN|A6!Ggze@SgUcp#&MJ?R6;JcG*GTvuenJfov;Ee#_Cr21dTn< zq+a|IjI8_CSR1GF!;<(`-THx=^#h<>6l%RGtbn_v_d|XuOn-3YSaD?7O}!r#G|z(K z47SfwAaz}EP!84g-`JJl^$#B(FUAF>{O#oDT4sOIeo~p8^@0pjY`w+SF_r6o+1QUH zv6rdFJUOy?A4=}(I~a_V=YH7I)2RRD-(P1CHWlyw))rYpVs44OxM)#y{$_<8Pk7Ra z0Yxy|qIY>{ts`6*GOz(eOIAaL2iZ5p_+B z-56-5Klr>$(P{7zy1FRHbcBah+V}kTmlik~>G%*GOdqDK2$W`iJk8up1MOM#PIoT1 z@zQMD?A6a3jc{e}orc)e!17f5my@8`!zC2qMdwwK0*=M3iqJtjDGelS`fd)f(wyjPOg!H}p(uG{?N!wVHr5-9=+vL3k_CfDIYb_Iw#vn7cPU3 zX<%W-Ow`pbGBOuSjkTT7d90%wr=x2V5cFu0CX&ojJ5 zlvl`((`kG`p=g%iN4O#WT-zx7I{z{6&1C%q+{Xl*IXei?4bE3Zqn@Bpk5H&ZdC(Rx z>)Q;`AK6Mn?lM*p3Aou@Sd-@t^T{gxT`J!H{2GefLp4Yva~8tjcW3C2bI3k2cokzb zX1IqcsexZH1sldPnB_TS6>o6MW7q-LpMemKv020!`x#v-3uL;fo;6{+Y?N#Lhb(m2 zmTvs@z|#D=ZpH=u-HReUr|Xv@?Bcv85|z%msJyzeMt)RvEgUv?Vlhf3@Q`>U`0g~~t`ML6EQ{G?2oKS@wp@igBe0a8; zS7A&D<&#?wm%mC5=$*aASvY&k{4!Wi1G{9*9Chd-`z3JpZ6$%(6^6Ew@)K}?-Tbeq z{DJ^8l?6`=fGqqNU!UC|!%d}kd4>Us8z&A0duXB)e0FpmuBu(=BAbS!Ozpv+`gQ|f z(K-?dI+T+-lv6qskD&Bq9f}E21h|n-dSmS$@04&4Yv0Pqkb+tVY3fS!tg98Q1}3E9 zO*D5qRlO&~Q&5VgFcCqRh%hWu6|Hy_eDE*p{`6m#z-MY%=LcNuGjG${!=qLK-2MTl z0&rg>fF$(6{}#Jg*}U)io>ne9Y@c!UeaZWX@R`H4KUdZChS=LzE0??jNR#8C3>Q`u9JTPmX?6tchPUP;HIQ~ zSN;&|%X9W2#V^n&mhL^@DlS5^42c-K8zb*@_l9bn6(oVedqZ}@s)nx)HNx^bU?{d$NLR>ms%>Tp-gV?yi zWf<{Tlz0+K{KBeg`lP!^25ul63&&SOVn)Srql7(>H}l4w6Wgu`JTkzJx!xA%+W-qj_GP3VUo&~fiFsUES&JTPI=7(GDzN! z#dF4DV7I$SYEW>BBqJcboO;@rJZP+!uhx?o+|#6kM>RY|HCV0&Bu`H1W#A+gRs3YM zmQQMdd1xJGCDqwnt}49S;T=FAYm6DwqEVIY$q}(BTX7*6H-Z?RfToMn>FjiR`Xp7f zjeJiY;x8b)A}H+YJkw!cg74>o6!2~{Kd0jAjbTk1v?(@wGCnq?05HIO31Y4}XgWWA zRhsU`JJ}v%uDh0MLPvF#@1X^s@A=ZML~1p4V_o*#c6KsWH?mW!TllxRuBv0$Pfz@# zPHD~R&x^kxhVnV6>&3T)1*{pLc5#V4V+axK?l(W%W-irc4$Hu^x0{07O!4L2_!+#&G*?;^++yy%8*||iP0~8BWr>_7o!B2-mTb6}$*GNF*`UGk{=$|@K-b3!X#yf;`$*v~tY=oXRHf(DKy;;9j<#pqlLBd4=xIpBwFL!+#4IfB1 z-wZwZ3YuQC9DS*?NzRmqVo!(NmtMYUpRhy2@T>ZBO<65yj`(lk7xgVZaaV1HHB{T# z`^Rr=+WK2p4M*>FUOVM~nW1%Ri?kNf3SSCsr0Jmv*%#O|!nwd=N62yM;m2ki1VSwg z_(sBFH>L<-(J zMqR?SV0N_L%v8!x@J~p2bzWTa19!~dSG0TD>%-aeq>l9gr^k4BJcgY&l+Qhc&*7UI z-);?_-frIfCkNlm2RWMM1DD}~q{ZS7_#m}>kU(SjG`FzwXVagqh)dWcp&jvFrg#wz zX=nl#%0yi{PlH;NA=QhJPtsG$8NlBfH{P~Z^XfGB)~zjFh1y-hoZYIzQ(Rn zRYg6v`IrYrx{`LU1PUQ#GP^WsvaV%FmLg6+6z-16-#aii5ud@2l>MX5jBP@ zaSJ24g)^FnVzROD6iO(h7?6Is*YNh~s^Ur(<#DvA7$2 zpgIZg3>TVUHPZq6+-dx|Q#}r?c6n|wq;o{Vvbpa(4cRON;pN+QJOzx}BC3!aFlze} z|9nQ*Mz7YUuhynaAq_}m4k$#DTiA(9SRXikMJ&9^8{=F=quw+DYn`Uo{7A*!ElhEe zkgh*H-|)KzpZ6L5Kn=TeZ2^gQheX6-mykO^tW9Pi!H@Cm>a?#1I+o*Quha)y`s5FiF{1(}XNThGQPj3n1D~JL;&5y$K>7r$Z=%dQeUBpIt_k8#!UFpSs&GiHE38wI%K z|8|$yvH{Y~aTBAT=e+JHDQ!l3ToAbWB-2r-_)?mTSzGi`Ud5e6xh%&QgxgD>w$ho0 z;t?yKT6&Wk+m_sBemgUQCVG2+)lX=z{L;QbQcb$8>A~Mm?hNE2S4>@@R{avLJ3JG2 z$TpDXLL{ZZOqAI8DZlB|=x%E*z_VD_Ig6)JrG}$wn{6!f> zd(nu#-HVCkoz$y#!&asE6ZD$pLNI`995LzMAIPw19QeUj3Q4 zR%2F4HlIN)gh*!c-lR|X{@35@y&zXY=$_>e{h6(F%e|ep<{R9G4G+&>C;Q#1TzOg4 zG7qSDr;Cs$&)%K2n~l!^ioM6T1$@Kz1w4S&Pj46cIb_r1C1uSdv)d*FUE>x0NieZ# zU=iX!3h}#Tk`u}=yRdNlRRwoq(7xa~8eaTzRJ&Sel0wK5^d-{9F*CyDl)%CBzQpk^ z2sYJ_L*PLC5)&yf2#HBkh=TQm!lLVlKe8cOcfRYr8*c92= z5UFyCY#aqC)h6qZV4f?F50S_7MU&Z~U|~(Pr#jkG5cVbxMZ3-D@?vz!qG-Hy#jlt? zglKplVsNN7wHzr}h^$Rbk;{cy=D@nSz<-QkO6Sp6)zMc4VXxv)L$?`aUW_tX)DSQI z_SbcvqEy3YwubXV+R7()Iz2QkZ867bD(CZdDQ0B_z8CjBc?WEi6?Q11J&{3j3ktt% z4IBH&kwI#~kaN(@fh&dBw}@cKYoVX!uX7`vdxrw~3y~iI%s>-e>BAT`S{+qvM`p<5 zdl6tKF0fM^%6E`fn@2%%wjoOe@V9bd4>ZtAP*eyPeY9em_(Nfx_ye@~YfDSo!~CkR z{D%k7cKjcG%%*!5m}qUK#nrL_NvY?SKKvgaCO8A|VKTmD-F-hk-BE0md}8Qd#prp1K87U{=nKpD zFPTu2b2fu5<5$kd#+)A%O0S>Ritbv^kI5h%52^g?WiGWB$@8KhJ(duexl^Br;rBz( z-pd-pGrK20-A$?*J|jAFXJ$+ut1La^aB*Z_lxvNzE~;+4;LiH-*L6wb<)QB*L8?AM zJ(%qL+1$q6;C%GNYrwqpf8uiVIq%fCOkEUy+|_qI^7WZy_=`~0C4A7{u5SD7`g*{5 z)t;?iSQAvmpFezOry|z#^hZnYpGN8m>}O9s@1F*e^NEWvb8fm+#4}XN6&)vzu&kIW z)t0*cvHlJEkwJ1yEFK3$WWLIwD{CDlpGevub8hensb;he2TY0++$R7d%As_~w5g`? zf~EC2-qubpH)>~;Z-eWYvyE!7fdwtxQgLK33*!u+Bk6LG>jb!q9KaFKsG(n)8z@VO zPOaqofcoD?Hi^cYBj8{*;eJ5>aNB-ml?#kHGcVsT1x4Evlz&}6rhs$IFt0*3n%}^J7-Gn%$c)0VT zar%$AF-;t3jXy?Zo&?*jLz}-t_#d1X7xBb2{r=F8r~(#L8RlDbDn_9RD!?74f)8uJ^K5N z$`t~3K$tmq6yqs?@f5`B516_My|h%QqQ%Uq{xBL2*|Dw zd=vNwCf=y<r?Gy zH!FC&I#%i;Q^&cBtn{T>9Jm&Ct>&7mYVniEvu$J@c?k8CUmLnmy?bZX;pjLA=jZjo&D$C*@~|WY}zO`S@d; zML5>-VRb>$C?S57un&>kByWWB4USlT9;r2MPSKztp9nzg`M3WMSJtM#WMGX6c}Ls^ z(!7D*pc$m{G!i_GRBIy(MdOPR@GPkOH5vKujXjCm2#A;fTv>z>m<9!X0c1n>E|OA7 zN(Hy{2;dKXS5^5A_=9ZI?y}SFl5M01(Ku-Y_`!>&(YVpk#8I77sbbFv&3^Kj-!int zYbNjqy!2XfDjtiF-V)XW3w)zLcXyHUp6L*5C)>4?Pe7oN=Cs|niFG^H?aN*|kL2s(7= z>tIYt`_9s$_GEEmvLjTQIvL;x1QQrrbXo%Qk}+mTo>^wHYL`thH)uCyYd5veMyK_x z*K$lDFGC^sBp9hO?Iu_g@Co%$U(>l!$4g}SfQEfTC6(~!Xq(Xy#L8ma3_-#=<-9rZ ztr7915b>oT@uh|?#faz$wf^~m*8XL^UT(_&3^d9~GAR9YyM?5Q^&0>}7SNmFnFsh7 z$-jigG(1Yt2$m@X)GWg?HPB^7un=Gg0o<)Yvdm|)2NYs8x%xlprtTyoNd#~6Gw+HT`5w#`HMZ|hGtXhW;_;i zwo#2YFj8%LZ{|>^MdV3#{C0EJmEgGbxy`J-$e{iEl=XViDgS%Ws2KNP zv1zb~f}k`KE?u?;>P&RvyQq$Zu#`cJ zw!G>@^5X;?K)B4agEY9n=>%AhDXixL>}*Inj)H)c3c#&J0b*SqR2PdPyrz(xy}`4B zXrf9c`Dg;CYr;8uHN%h+!@2IeZy)Mb3`<@A>hL<{-p}EMhLYcvO}P)QuaPc9C`z+@ zsM3sDR>P&KlI?pRv;Hj(Ie*)~A}_=HS~EV809TgBILpweS9-&p`* zo@ER6zt=1o7B`+80r+SM84BzQHr&?vYPuE|i7%nn-|}cQmca>JYzsaXXu40acp{)s zo=b%J%+Qafk+T6&ym;HM$-7z7UjXDU_}|(WAZ1`Cp_uWguE2C$7y_cf1p(?_m=`i| zD#kF(Fb$fRL-v)yPsA~pCTqW$r`P@VjEQ>}i6VQ8`Wujcv>M}>bh>Tz>9^kU z&F2?Cp8IcL`yUwzXk20veF`&W$l_CH!Z3btX=dyP&C{oUye@1-AFb{}4vg-(yBJ7> zt&PXSX9pu{ey9ZORiCfpDO7%;*Iw!I0p9NHY8*-^uP95=3RQH5%$CM^Wi$+#J& z_Z^<+eBox8dvLGfhFT58YUJ?A+61+~8MlcwgN>bev|w77{@glV@94tSoxGFyD3xe* z%9R;iV}rfm%(fpv4L(PQp04Zvojdp@MLG;VG}66@Vx1K)&qRtC;8qa)W2IROdUfC2 z4P*K`2*Eiuu9rhU-Ds;RFdHG~F4mQ&XoMacwkYW<=EJC{{8i8ZUy1z(05xCz+FQ(t z2V^4zL^yMYaC^S+Q#w!q2G-*aUh1KZnw=(BtxGkpu%d6PRtRoBn{y5eu9Das_^(ZB z&}v~5@C_gMtsqd{Xzmn0k&i>+hjQM!&}O~%-~`-q|L?td&*$kG7qS4;P}f^k*IVfi z!An;=o@@5vF;v%45J?<#Gzn*1h?7~he40yvr^bMW& z%&BSll5oVec@3nF zfN*W3z-;gXp52CjV54IAa_xG6ErkT|%;vGWV6Pxwhi*FI&zMf(d2Q?H4EsqMj7npr z(q4R}$OQz6632q(X>V&|EgdLl3coN;E^hwxTNDrCh5(>Oqy*Cq9?bE45HhrVkhGF z-Bnkb^2Jj21jCt&ffw;g=j%`Wy%Do?({Yw{31YScFw{yH6_Z-ruxj^f|m;@k}Gzx2C7Z`^GGmGPCH zm6}q|k46D0gNX@n-WQp%WmNk@J-9{>^{56u+Z0?K%Rt>HkR`pr{*Phf+<)lfs(4Tj z3@(Jm2z68I+`+B{G)9iWl+PrG0o75U!r301(TQ!t#kMV*-4g>pFHeRE`5n=>{q(ikku#Rd~ADS*QkJSjj{muO#-QZ1RgU^Eth$kuY9QqEw4BSe8jOS;u7zgza ztIRa+Tqaf+8qY3NLm`n*vVrQreq>TQMfS+?!0EAN`%hWBSfxvi6QvyIwswac|9rAJ zdS(TyWZYOV8`!-MGglf%r+lMRB3n}!`J~%_J~_#irJc}&R8>I{w@kQikzzymab^wu z2AY;&;%q+uZt$WwsSGK;zU{G0B&zz)jum=`{5oC z5JD)X|3rY^!bF-dQAAbuv?;OY0x@&9%R*OT{c zzCz}>Pn5ZBCR?_fh)x#*_%XbV#3~QkNWgKllY}7XGVcXPlR3vTFR3sS@Nph`O;;-J zqPO(31U)U@;lNt=2}h+N?VAD$uM;wqqci-XGr;l+Uj!7+2r96_gT8eR)#rV!H@P%n zZDO6p8~EmPYKB7(P{0$q1n^NU?i1pko5{loIL!oHGCSxQ7g$RJJsOP~O+k%PWkL6H z^r~b-oK;>@IZVLsfkOi^`u{Px`FA^A3Y%*|fo~vzL9vrG#WsqXyaHKJp;SPj6icHW zv7d;EZN|l}8~AonxS`h8Lc~4J|7f&X|0zA`tS&w`Qt_?$A21;{^5J`1?)&9O_+3`S z;O>V!LNEW<NMm_V1=IlGeyCCdqAi2;tD}^e! zz1XO#HGC1=y*BXSmfPMb{pKT#axIldn5V)_6?X?6#lU&AKz)AKQXUT6dfwrD|9rP_bu1A?K_L%<5}{IYz}37Gm7Sef9lS zUm?B6bR?#OXFZQidn!+R3bs)^qBG$&v*G^i052ty8>srJ)uzUv{Q83DPDM@ zl>6qE;=lyba^FCiMoSV>@QEW5eRfcfR_QO&@!7GnouV_1fui&PetN*O$*E&)q+0-| zAOHdhg8E^MfV>}MNmGcw(grYH;dU(n{*1AjFi%B(CM#IN;iCDH{ZIRn#S${I6Eecs z6;`;d;i|gZ2|C-+I@|MU8P|Ibn&o$PFP69X#}P4CrfGGl8Py0#iy%DmI)jc|9bo>C7zC8(GFG~^{$=y{KY+laZ_FJ2av+nQ^Xq|C&o9JkcF z$rJh(_`~J7+eI&nUav-#?>lsS3 zn(MOvmZmaf*E(c(X-@IVH@ma6x{pEyay89s&wei_8zk+1s_nU``|5ftGrw~m{^JY# zO2(%F?3<(pn=Iii3eODojnHp}dtb3{TFASekQw-b)lyNUPbi{kE@c1C2wJBrcv7QCqSj;e?QruLb~+j zR^IlEJHKh1l|Qr9(^IF9ypi>%0$1R$N*|FuQu7O3hRX)mDu3ZI-uxDhT1=}pSABzP z-P18J6!}4F1y}!_nma4zR&37xIgQI4D#gEhs?~T)LT*5}gMP`AaY+VsikE&#jh5C; z8%UcRumB`_=)V%Zxfm3Diys|=WOSWEg@{cLupQ?RfSnM4y?HV@An^KrY@csZfbeLk z0&(TQzqj@K^lKd&GdfHqKSC3=NhhcaE4ZTM?cMmBTZ!VasB zPMmrBN$Y3nvCp9cH#Xc3EDa2guj(aJkN7_j-7E%urmOnk@-vR0syqL(tPD25Cu5W& zBR4!|uKUZhyoqB};0vvHG|)5wSWp~_&j|hVMBX4rKsuPxmCw4!SpRUW%SCXio2#Cc zcvrM9TdAi1ty4itMDRrawIq@#yEpa>z~9TQo785Km7oPhQ)kI7BzBNUrS z{3~s0##?U9h1Q*F`#SlnRCcJLb!^or3r1_)$lpq?OE!Z?t4rwoTS4k!4R;o=a6$})Qmj$L>wK6IrA z!}0Q}qij3!H59*r084U#B>_W0omLB&C1=`@&jj#)<6#ff(MvL@rQ_4J15eDwMxn{F_}o!fOk1;}!Ej*6GK-c?z(>*{j7L z{iMJZN7xP}bXCh5Z-)-qDku(I}$mf?;1__#*68eU-q*cZV0_A37`R ztBS%GkH4y4j&St9<<_|+BRFAYO#kGI0*woN;PgMSK+_t;hjAH>i!!JNqys8T-61Mr zeU)o|O1BUv77KP!-&p0DpE~!AqyXAjB}kAJOr;8VI_NotU>Dx`spLZNxY|AwIKP}w z!^ra(Z8+~IN!L{CW|_P_nGnXaua7$_lbdX%sYSkd%rpHVjAV(46;n(USI1Uqp>@;K zBx}nuR>={3vl(%PMo#bkfiKQXg6u!!-1^OB+Y}~i`y-s|%6stV1Q#fAPShD;p!gC8 zEaIRI+gu5`*g#RiU=NdB+rLvZlT1QggP zE&;`3iA|H%|4_5M9pz%#Cz?(Iuz|%SH+SaA3qoA~3bB2>D`S^SDR=5jaz55kdi$)S z=5>Rc_x%@jQtZbo`AS!x-oJKicsa7_hF8zs$si(ZZuf%pkx=#FZSSWsktc7J7B*T7 z3@0O`5uw5MIKtMO5NpK^Cqkt7#_s~s{HNl1^RKnd-e$(qN4Jtos7^UlWSQT+g;THg z5w}=Us;5K_ozoU9y|;~8)bl1riLOU?9OlE$saBj=uNb6Xc8=RpTo`#7X+KzfbnDgS zcX#wdpI7mQ8k8*#hUPZ%M8K0$950$LM$IL}1XHK-xos7`h5r1y5A-YG!TOS!qb?Nk zv6m#Qwcc21LI$E#hwUIFzvYVt=thbUnDrsfXcC$^1x=dzr-gySBvc5Mu$GQHIVGj9 z9?W+w7nvXj%6p1RsG&hE=aA>AK#+;AeM#Eauz>~iC!>mIFR})ta}h&)bmrRvzS(zK zs7#)c(4nlRXDEN(mRDQ*`|A9JUlwuw+Vo4joWf~ih`j`45NLZ)kMZ;5DUiI;YT`QS zETf#g6`{2yF8lJA^N+C~W>0RUr zP4Wmyy7o=2^9tFqFeNZ4g>I=Q@3=rv98!BcpmxK8EMg^XAE#HMrdM)ip5VT1pkY5B z;hj~CuZx5CxnqbGG%CzWdMys z-_rXXEHPE_`!7qe)Dzwl1dnS<>w|O5cgp>{l+c<2XV5O?9Nz;Hijom2TBrZquJcNHp!nx@sT}@e9DLawGX@+UJ_(gxjyc4wwo_Q*g_l<< zVp>Vi$tfKYi8~&bVGOor0r@<_S-CI*9CgUDJyLk3UOGVzRQeR9gQSpj3-PlO5EaF3 zR9Z+w^`FyQ*;cf1`|s68->Z$k`>Wk(>Gj-CQC$p!E`m-j+E{u1-cRqF&ke91$%>W6tPt-i0cknC&HM!Po87}V9Y!}D#y1_RZMgm? zzg)`ju^}1p#jEtZPh#z@-BNnHWVh-2=MXt-#oZlz{rOUzE_5dL|+-I>={kCtz} zu*UY8*_yj|Tx#aoYIwN+%A%R0WlQSXISRS<;M+z&s(%D|z{B9DRkGh5IqU)bz688K zySJhL-QuiAkAW5;V(c&gf0;3HR#(G31iXcAT>}zpZY;(dgHfYV&y16P-6Ik;9<}J# z{5VC)7Bq;{l(W@H{vfh`c7bayX{RsZD(4z_P<^~2ByH>FEt-M*!!7l5i}sDjmhI!T z21_l^W-(m$Nd~8yMkcqfK&Zx$MRCX?|Muv^4yl!82x=sD>*D7KNm7J9DFTyZqZatGp`|!&SH`3L@WxS8Kv+ zG}&;W3r;ol3yh2Lt>z1Dp6*@0({5XE(S!l_O4yoDZR+R2_Nc=9Bp89<#82h|D~YZs zLt`vog%Lx+vE^lqk4H{VJ5SEz%ii*DdJwc&jWh*~S`+W-)h~!kyA4W9)Dwf`P!sGJ zmoCUDe#Tv&23z96jv+B)+B7Q5@#~*YgkbVQo@}j#eBIJ(SE-ioDvI80IroRTQo5S| z;7PbL=`=d4PqKf%^gmZ25NNW9bL{ymYi5>iqhxs;!n zS$1^9e2+3QQ|yr8EFN-{xi6f-F_IGc9W=Q#=@URla`jn9vaihqX(pdzS)5sm$yV^M z-dY|1%~0h4?!f&mfJp-YYDQyRe(OZf+u3agfR}MUGLM1 z`WvG1`a_f>+n#<;7>W4N!pAm2O<1w)(H4G|xTCqftp&N^w4N9~cF1hZPgvBuu5=yZ zc^J6mvt@JWumv&jx%-)Tv)u-?dyO2#Pi`pOkBQxXIvTlP74c$5vO&gGafbJW@4Kd| zfyIv=rDHmZkZUJ~GrGNRy)~$t3V(lJ7d!Cw{sk+Cy2a33>=#`|j}>yU+ZQ)G$sO#8 z47Rn2Z%ixNyYKYuz%Sf!AZ$01*^gBe;fXUYJT#|nBd?6xZznz3KO`jgp4S7Ab01MZ7&N<)r%whQ;Zf~ghIacawzL$%!V*86*Q$Pf?f$knndbE- z(TT9=OUU!m*%NU0~FG{2@#Ghs4smsDCQQlezNYR{4qTKxXs`lO%`K% zz0BK_S=X(uEM$#5cyO`H`tcbuedP$-b@hXIS5T~o>8NKcqYk!FfpVy4A`R3JuI-x_ zMjFL3)^^B{Esr#2i|~ok2Zf=g?I#ltA1wEG7JNUvcWIX9rH_+eXo%UnTU38HRyLl?K zNo7{#&BY7j_gWrTs|h@_w=C}2>{vMG&CtI4%k@XUn#9KDf5y27(#>u1h=&#jms=b| z;t}DfWy}!;fitSD4_nv>Kfm%7O6)y{zf;>!1yMzb&W9Cx506SmOSL)&-wscfSeO^(A40@4 z7md#hf2&YullhbqZ}{1@qIELcAc@23IN|}Z zyvdiqv@%l13--c7qN0Z+RVP#Y#f<>S4bC8~#Ta-^{rG#N@E$b8yDAWO0T538TG21j10JIeK*MB?h_|F5B0LjSpMClAv*XLNB2Sm zmw2x$ExrZJwz+wxmYQ9&UU|gwt6Z^JInVQ}m)$Xaw@ucb0ZfXehx9ez!ZMA zY;-@l?PirMPVznGB;{c)$OuCVlFsBeYCNKsi60(IyV5MFo|Lu1meZdkp0Lsn-4b@A z{%WI0l%FovEf?9=cp*4l&1QS3i4y+XKfsV;S48-T#2VJl_r$udX3ZYsV-6aqu-*N@ zNq3(IUyH}TWk>=~hQq@p$KRHc7ewGUW#{A4-@o`YCfO!d_U`pN;pD;t+b2At#lr-| zuh!h7za14tzI_}Q*{Xc03BW58Dxv@1OUab91$0w z8=G3UmnGn3;>~Cd9HHl`5A|C&gVs6Ld+kV$aocWe$_dm_his72 za09wE#sGPL+$hqF-1r##+~sWs?92u1z8Z@3+2g$gsO zSD`L5WPKrVBTRAhCWjDtD#C4Z_~_8KCZ?{i%E15GEl!`373S?7pt7UvT>BKJi;55C z&I4DiYfXXy7&14so%=qp>(QXWHbdQE*Jy&`DJ*dVtuT5c5Y-N1yjSm4e5}HryJp%o zK}D){;dLWqBD52<&2{kgzq9xSaEbVJDy)fi)y7(*Ly0>;jF+rvxE0w z{}D&O`vF0)uL~Hh>7Zz!MN*#FyWSzG6I*#dmN?(GjXEqFsLe$G|cn| zIgl^sd3Il!ZY;Ni4~O6>m(`&ebDbMjSiJ6fFM_lI(-_MAoA)h*l=B?a$A!(#!p*Q& z%6OotOi%{%zA|OoxeUcuS4vylLqvbbSxL&m_2H-?Oz^xO@RBNp3n=o(?6BCP?QcGj z49_7Xsc!Uald!a6vDhk@W8sCu1V)Z<^(GJFsmsF_jYOqyv50nXm%+ZBlmDmR_Rl*9 ztqV66J777Gw90-^9@-!O!+vYb0%BRB-|@G4hspc>R%4}9&$!FX-4*h&ssdMF9jxSF z?C|E<6UF2va1PZ-SR%tn80o4(=%jBHSN89@ygWw zutN8qtyJ=eFYUwiO(XOw*OTzUDgFaNx>_RbzVbL)YF93;@2a5mf9)?vd}^k* zftAG;N5Y;2PN5C}BP0cH{F{JB6lUv%U?{@E%U{x+O%!dn{Bz>CHCPmrZ*T2?Plk7v z`$M(RP^}?HfVd&&h+Dwl<=f4Hd)7cD{0C%!mid-kU`)+c**<{Odu>#1531p@(q6DJ zzUCRLdlI%93x^A#4oPIQdfnUVs6GdU-rqT`<0hD3byX71zCoAX8a=2U))PXYVk{OH zd-C@>AR~-ETrn1flLhglS~Kc1x&zMcI^UTKm;bj>6U)v57$_U7cegUO*%JL9=~c0; zW1H#!x(=dm`o}g&=N@g}`TNgn0K!%c&Za{{)q0vLJ#H-Z9`$CJh_VDBXWokcqH>%4bM%PKKsipOF-!7uf)`++=_b2Hr zTN=UR6te`aK)2XFaue9M37sd#FY!yY){M6Z1sZlFZi&$m7~D}|SIA<|b`TGuu%1a{ zBHtCoYOP#5=&Sue-!{8kZaA%b#%NdR#+tu%V8pe$e8exI>h-lO1^Buskdh%SQAfC? zL-670uRim%qvG3Y{|M4>Lojyn>G|9ExniY}0+%?&Wc-l8pXz6DpQ!@E zht^U1?$sqya$Y$MhSpW>uW7Fh>(q?pOd4xEKjw_OhfzM_%gxVBEU?hG5W~)-d6f^L z_`XOlD>FZWH$%Znz3ISX;!xgrJ@yI(kq;>A9cR(7lBU=;TylfEP#vH`Ji4qvWB2p; zN{C*;X^2lPY+~E(=`zJc_Q%z?XUVw-No`d{VsJ@fz00IZa=+eQWsV5Y*(QItxboNN zs%tO$f1Gd9yf1yI_$TzT719@Fz@!K{+G(f+jt25n_nyE)vv4Xt9CTnPyKu7})VHI? zcN5qO(h<8MG5*(0_%8yVkE}af_}5U{t493M9q0r8(vK`uHj&HRkdA6iOh_pkb4E4w zr~H3{!VI*Yh>^F`KQ+beMOPVqJ+FQ{>ORM>eAHM+d9?U=~q{v+jlrcCaQC-Hh&09_1$)Ux3-9lb-zw;EUGq{#Xr7msn8 z){aL~Qslt5t~T=JT^`wCEO+rn_~u94i8Ss%P(Rw;vTx~M4Za$kMg5E-_8N8Fo3knD z6{wHN@0I@Kxv0mpLenVEa3Zgk8ty(V`gA~AhniLlhsS++$jp$9{$V_l`<*SyRf_y* zu_!CUS!R(brRO~7`DsaYOEr`&XbXFazVz{)?Tp}`;y^UYyMr~M5{zQUl~x(c{GGr~ zJEVv`Uaj!g*n?Ht7GUWk&^?)$!UxqBuDuNLZ-#6uok#D4P=#7YAM1Iq?RT6h@|AZS z-Hz11KUoP{&E)&+O%L53?&3x)5)OKWY+I7_fvji#vmft5z|TUld+f=}H-U%S7X12s ztsc{Lx|<_)=VyuXI#wF1LPsbE7UyNs*T{99PT|2f{psK&g`iId!(1MpYP_3r<7Psm zxO96_9FmxpFv~vYEp%(#44rq*4}^$dZQKkV8qV>5hqSimj0#nO0&6ORK7}HkZY$>{ z5i32FUbk^=g@SWx66kDCM2kLVL{4g zcfaXSV>wuyUSRZgUAT0?WGFrM&hq2@x-7(=OYig9^}QQ#B6@&HzH$0cvF9A~lb-+5 zc9%ZiI+`h%NGZ5lGFc-en{wp=>Y3H(ZaM;62LH#hn3$}QT8yIG z;1Y`tp{JO;Utjgs2A$U`{1bz0P)B}biKIM4fZZuS!3dne6yz@sto3VeZZ^PY8P#Mr z#o6xvAO|K$dgTB>tB3|!-7HGRcH9zecZ_g}2vaBQut}WXolt%V+RxMw+!*J64i)8H zI>{y(snCcKTKZXJ6g1PNL5r#k7HBg*vJ1vA8wKv)I{&7sCQKhb=o!d`$`WlT5S8B=N0%o^Q(v6OxoJEj!$yp-*m+m@u4KhbjJc#B`~xh*dbj6go9E#3^7~1Gqc^{ zt8*RjFovPm_u)=HjB{3W4E zjOFd87W@d%1gM~FQm>3Zwfvplo8Kh|h6|R?l{v-cy8Rczk|7!HPPygYD&X3Gg~fcb zNp!Tt%c)7T$*~ja^C-(e9h#tz)r|g(-1qoHN6gM z>VqJaq%8Dil!sALK~RUOTPcu@7)r{T^K@mbtDx+z>&vyrFc(GF->ob6MPEdf^}>Hv z3yE6)xGdAOznypdER+MrvJ;jE%yz`hvgB|CeS-ynh}xn3=ylZ_KhnL`=6xumrND_@ zuY5ETZu2V6<+7E;Le2(q$*j@T;XfHyABu>!(#%egqlwpocf@Gi7r+;wuqlab zO^IxWfR#7%mX8U$@)fgX`C((NA5$CKZJi!?F*PiaPR4HIs53BK`Y3USTS9ugCx8PW zfhmW#8m6br%j9#jL!~7m2N^Db65DN+@70@Y&WszhELMbMKSir#g}!Y!6>_F{YiyGF zE1Gyv3ipvwbHbnZ29|92j!WWFCFY3G7t($KyK?VWTlFm6x0$m8E)v>HK4!Y7<{IgOVU0BPPQQ?hK#*y)8?{I__KRpLZ5%>=oG4_Mg^Xq<`f@4(SlsEux^sEMgmgyUR{g!jaSr47jEFyvIy$YZ z7DbYI#~m6KdIJ)?D^Odotk;@LmwBUqrYpol>Pw{mCY408DP0l)(sPdVbeBOzY|mEg z+!X2pdxr?6{-$N2pLi&sSzWSPr<4);!CdOZX z(sbi4&wmx-21WO`|#K54^9ZA!I3l@=#%OW{rGO(>RJScik8mWnK(&7iJ|^Y63k zGwP%6S@$>;ELJqQCtGsR$>^a-db*}v*3odMcW_|=qlCev^WZi#Xdz93;@cC)hb;{uTKLYB4k!ct4W zMwZio<84@+;g~{V12$y5No2AU8mk^=5O$bVSl1mi-#qem#yCIS`8XnEc*@vm#<#`f z;1+gf`Wj5@-`Lfqs&7s5d;*3;1e4fRyCDwrs3n7sf%Mjih@c*4ldLp>0 zbikJ^6d#GXbcJd7y;bu3coko##F?OF-;Wgyo7lTYtt2Fth-}1h5=FM$aCNCEN9IrH z+|pRX-8slKv`eM@$BDHt74@dyqwA^Q6rB@#6#mN+6CUH zxV8Th9yb+pcGeXS^;U=?(%Zz)ED0Vsv}HkD2R_8GW=RlC?frgJ9I_2KRJe;t|1R$c z6*F%3?b>kN*%IQ-&Nm))*!l8a=Iz=Y{BOUvoPY7_T1xPQa8a?u7g+zHhu3+|ZDMfG z*v>hRd+J(sIU_MpIH15+2=eJ0QVtT*=(4VQxoVavgME6+bEW*`w3f5uvNMO`wx<&J z062wHcdTr*FgLky=^A$s%zf#PyMB9XRp6Q$l+@Uvr7_m!d9E;6BFFC3DFktWVha`8 zqrv8bAyfr_!z>18f<1DX=sRu~R`w?s;PPBHPPJF-Y2`TS@s(>21HYz){? zdxaL_-Mx~i$rz6rI6{dxO?6^3uPsm*!d(RJ=Vt348+D8cCE-RQe$#-47k-NNbf1i( z(fJOYr^+v8`I#%L_|N9k8I!%S`Yj@XLYc5Q2|ZUSuL1*fxmt$f?^B?DfudUAVZd(` zfI}uoFDwAfP`8u&I|-~}Jjha6XX;dp>gq=ow~bWOuOWfy5E>N6cZla%04f@aD#EvA zZhbZ-CJ^}Hh!OPvT@qTjVpN!)?hVC;Mc2Lvu0R^St#QSRjiTs;*NV5jB!6wo==#h# zdKk}M(qRn@3_#rhXVk0CG`ZF0%u;3MYh0E)S@0unP~f=}c}xz|oDFedv;NL$t(z_j03eS)$d_ z1S`n#yR?P!Dbvl|strKK{EM_S+oogP7I2d?RTIR$uN}K6E3iN6+qyN!Y~O64yl97T zK)usPzkI&})rkY+4_mAD{)^7X(s>fV7y4Itmjlz#tR(+PZ?oYw8M{`Ssv8PFM98o+ z`fxoT7Hog;@sD@%N1f0}EaiWEs; z@Q1G%4~qv8u5;DOCix8DB}dl7ycNI{2%&j#eYkbQ0Bp9VE8HU;o)r-QRCpbJrJWM{ z+{JU1D8C4xb_A@cVega)=pj6#fdo28Z{17ez&rv|pjSL-&FD$Vv>Gft_>2tO^dH^c zDLP7rdv$779wyiOD^4hcyhuI4*=o-kY`OMuK)nJ@Je}IEON2R+c|iYtqRjf7Bf?_@ zeR7=F;(tREzH^nx_}>mYUtrl&q7ocafoEf|@hfkGOGaLIpt~Z!xFSeB87#cMeim?e zLuY)Kc2`w^&{i=#ypeZPOqKvE6Ybe0*$n z%$hm=eTw}}VPVtq-in#faD4urKFG#b_HvbN;O2EYnrp`Fm1mfUiI^$KAjlc0y;scgbWUb~8t zj!K_wVrfq+TN}8k@U*`lT3#7Uj5hnS7wfIhUV|y%9T_Mxmr}PC_}O{hc0`3LXN?tU!XwXi2)e<*Yh*mbE(0n5~Geu zGubuEG8oHHuN+R0sHa6T$UsR%$%Ns@@BN>Vkcg-# zyGw%C*o)kAK>1;S{OenHNY}vwHS0H*z-bnpARW7r?YAT^0SzW;Afw{(3JU_Npn^df znY`bqpw;&#+Zh*mIg24t$M-6nw%x06V;r_YSstdc4G-&niqe_8^hohrD?nc|lc9NI zhi{H3{yPZY7A||3YWgc>5eiT7*kswU?er5EFw^tTDfoBjVFb_=0*iQxb$06mZYC&Y zc=8fM5=AN0ENo{&G2U`^qs0a*{4(p@hKFXUwLcnj1XNLs<)okPu-lHqJ(N zw(=GMwKXMVQc#X(KhF)G#DvBh@B}c`pJMy4Fq&>nVdfj*n-;(EXh#j&occ#?_8#_c z0{?kGk)Qco+2xpao6mIg#aCgYE2}3*W7wd=j%jw_ZBomT4Hbv~e7?-z!Vn9u_#>LA zbtS);p6Jd;q$e~4Q7)1}^tfavE~^E19~pYOhQedqBk+7{f7h}n@MRg$!b6W=Mdo_E z{i(Z4qi}L@b~l2?^Pjs=!!ut$elO+oZKE@#^~C=zUi-fV58As1%wcydLFD@gF%DlA z;(4G5dV1=W=(C-J{blyZ)~M`;!*$x(`5Qop)ax^zc9%m@Rl{%n!n|3s7EmiGEq!ag z=XP^$B;6a)L7R#nEVs@{rxb8@`_78l*bK3+r_CKbx$K${=PS62*wo<|1! znf{E&9aAjb=Sl={(H)16h#qOA#=5<)JnGkGi$dl*+Y$i(M_znKocDEih5gGE z=MstYH%oi+ct3KjEl=yz*E3mTi`Stn^d6`caQrz~`0pPoQJlhBWoJxKkVeBY{0ktNnLLZ6pMNT4X`CV{=8IJGVNhQD z@~n*4m~3cXhhO(iza#Zj=yGIp07w-D>Jq)m(&b)8?KbH-fL=J>Zfag&LNAg|fie-+ zdRA6w$7}EBBYL#*G9(79-{QGN-(*IhKMR-0D`G68qW*2% z0f*LDp6lvlc-DF1lSat6ptds1vI1OTegcC@m!J$G_NM~ErLD}V&g zN7?nJ?B)WDAMW1^?=X;&a_{%8rK$zlu2)Uf*|e^uVX>oc7^6Qu3QIu*GfAJ$Bw^nj z%dn?5%jdrUoJQLrKglNs?-}vW6THmab>FWkXqq_lWSrM)G6*&@9;>W&jV-Juad^~2_ z6ZS<(Dn{2o69a8VHmv8rj>TC1ZF^6#d~|nK_;ysaV#fWX%Ktf|!L#Po^?Dx4#Hr)o zMk1Ck@_iep&NtZrTi@slLWh3NN?N~qLSOr!DRWooWpRfc~YicClsTAXc42>(O>MxNm}nVAEA`sPo1YmT7X<}6LA4y^spf6rOg zE$F3+>cMQAZ`|xy*qZHbyp~>5=(psuS#a>bGK`Wb()vy(>+R#7;)Kt*g}v2O-`eWZ zKhyE(P|1sIx{4`|qF)CkM4P$dD5h^uQ~h%D1t*s~FUqNXDjk6M_pa7fEEcmotbPQs z_Tl!%w6alty0D3krHSe%OzLcS4vkWS*>eZN7fTk(zrH`R?}GcVD(OG^8)~7!@sa-a z?g%%%CO2u@HhrDc-7F^Od^$`bB+qN-WSQ^w6NpP% zOw@}@Js4w@BkFR<_x>p{;XhE4^w{%t%&h7M_Gj3R3lu=%fRlN6@|*WHy{fF-fmYxX zIpzcx%hqxUD>5p!=b~pHIEH5leyp{{h4E=`NoR@JiiQ3RH5Br|)7<;AjY-%B#Kn$n zor`Q|*NxnuEvN7)k)qscKVA;bI1IV09b|{ci;o!*b7o!W_JxjK1-C=^Y>6aYXaL_w z%lO1V{C1{^X~61^46;hCs)aJqbwe@BR^BY`ba*-ej_qT~eW#~jtCS>b($e~m;mbab z1nO`E5?jy{njUY!{c+H7D}R>_i*O$o>d-W0nD_V=4%uq6RPPz*HJVVj#2bFM{PI_t z&!QBID+$*_2jS6y&E+N}&^U!Wb*fgD>dpG6;T%@F>WuIq)zh4yc8AM}UBLLu-y3tu zG5f877JsI~6(&5{8HRi?-(p3HQ4N_b>zQX{I5HgKx9}N6D+j{h@Lx0O__1)*pU!h} zIk&|dbH@ey`OSy(u!r-=7b#z27{w<@4D#_xh~VQC6Y-1h`hv~zNIWgXkd|TyPvQ=m z`P1(zC*=-S#2LEZw488yj)O?umiIs|kUtxfqOFffl?VR@HrI>PpLf;#<0}sJPNE;j zb|^s_*Ai44kGE==j5Gu)(-)dQ)HzSia9lM!Zfd=!8-PcB+#1DBS2#-$i*AL_7k=5f zn`_p8`o(XvsQSt2TRv)jLeAZh!;Ww%{FdTZ=BQsl_=e(o&!xW&Cr)346we|>EeMzH zlOjLrA^$(6T|l+#(U)H zVTmIh<>H=|N3?ILRuu$X?#r;rd`$12W>RLRbLN(FIx>~imnC$T;d5UVWJU>nz0}{n zb*xjRnhO#qA=zkH55)Mb77Y$19F8$nuY2= z2Na4MtmjpZ+fBE-gsp);zwf?bPI_%-Rnu_dO0}m?XQgJ%rBANwT*2=Wm;dYZ(t!K< zYli&0j)5+1HT0TebgEOF%uzwe1%N!7raXcfnN8w?qDj9r>9?hMnC@L&+@OOU6!=MP zP$~Lx@tXijDINV|>Gbx;(!w2F$k50DMk-e765ntQ@hy@mS z`JnTTO7g0!b~}E3W*&@QnRcKsV#1P?nvav|PsI>0r^D*c0m8>KdOZ30Qz~{^VbX`+ zb8mXayCA(?BT*VdEg^T#BWIlY@41=43P8a6RpfNQ7-_NHI4QGd&UF@JSjtq(OU#e2 z;IjtdYp?noi^;*ZLc0|G%iuNtd3!cc{N{dFv;XV?)WvGfU9NPW4e-JdT&otYPWOUv zX~c{`j+pMs)4m=mwg_Yj%%|~CDPG_|KZa)Z07k;iNA>|xFdp2GX~Imap1Xi%5%OgM zNIJojaSz<@6IBF1bij{}M94w~K7?vtE6c8b>TE)opw@Wp??jrZM|W zf-66wD8S+e_P!CyN*srk$zf5H>fG94N8qp{U?^)WC1R(=YH$$7WOc#Sd%D}YJbH-` zR}NNnZ(mCM@DZ<*Xz|I8dqyTix#K9H!yYlNB-=HAd49LIsdP~<9Jojs%yh~=5J8An z7sIaPNfr9y^PU6faDa)1KsuOass$eRy>o>bvd;`zV$OIS6eqM0>+$ikr2e9_z_#&j ztKse?-l?{{m(gahAgiM+=)fDBPhs zZNa-y&o_Mi#Jm1PCeXv{%);Gq?YCV>9?vIvWHQ^uyTq?ZyIvxJJaRubDmUDv5roN! zt6=T$A5VAt)%TML1ZJdGWq;p~gjPer>ES!B?qWaO=DDsAFURpqRp6cTRukd7K^a*Kq}ysU`l&&V+Z8{f>fn?2@BiuIIxwLA z=v>V_3Oz~h=@Mc4UVC9Y`E+cZE~REMk4(1gi#4b(EO#h0KOEt|gFDXoNK+bq^IBoO za3J3CZmnos21LL@ex7{AHd0vWd zi@YzGAP&r7?zrn11S+MGCI0HSuJGzIY~`4i0XZL0PPek}U#oavbDv)cIxB!G8kM#1 zm)4pMvpCX5_eLw6ALza)DE-Qqwn)g|c&dfR*8Y*NUYM6NycX{&(P7?B;_z2I%z$?A zgTM+HI@lML^rp5ieRt{cKBM>byNn)2^G|@ih4y#zX-u__WT4(YQLu$gp4EnLfs>MB zf&*F!0%LPr0)jqRDUk0AuN)~112*wMlpNcLIqo0apOz|JR8&#|JNdh@0(A#>T?yBW zf9uXkGO%ySpS0h>^jHFw7UQ4DQLT<5R#laN@_&(fXLo@y%E`j=70>$TNS{+>k4%t) z3SYh6f|k__SHMptS^(LhCt3ZNJubv6sY5S{y4=ygq3uhNBAiE^p?j61obPiCx*>vi zJ+4;N%FS7j60JpL^T~9gg}=cc@t3Td(zhELFpDz6@*t5#G418=n-m2I*0Dj|Jwg7# z!!2Jz#=)BK<)7-CN`?(u%L46YdreyCDxk7Q0ms_WprS%R$n_m`v}?j(y*H1*j{+LW)Vwh>3O<b*zC1Wb z;cU+A#cI5ai8gsxq0x;^f+cw4Bf_wAayzG2^nS5nlC|}9(-69(Z?}h@S8u&L+qUW& z0*3B6W#B54{eW}CG6tew@^YnV3-YJz=EwEjhSnjTiCM+ZmYFvH!hiatSS(O*R8Y7w;Ngg#J@v!3|$r!3o@izWA}q`{2&jH z=Shw)yVqbhCa3K^D{EKdkuF%U+}t)2)d!xE;40Z8FmCzx3OrdK=hY?VwzoR;V<=l< zq{|?<KtHdqTfz6xT-^8$7z_KQtzoqR+zls?rrUZ#`g`SK#Bb;gg)J48l zNqKbi25mnfgveAJE0D!vp*y6ho}49cdACwz~wy@05b^8l=rF6Q_$20b1ekv{Lr zpr5n-gDN;ox(~bTlZchvDoFvR)(PNXg&-^sPySFI#H_BJnxm6Z=>JhmZ0-L`p?$?e z_OO~v$VQ5TN<&mav|e>itY_EzkoNPrDUP?3m4l`jF3kf{8Gb&;(iiv-&l4rI#Sw@N z0h@Ry4Oe=+jBl-^!V#4a662S^FXfVHeIh9-^5nOSas{1RhVLs|gFpu@ zO@cA~lyD6fhu~MlInRplAKwVa^NKEn-??^&pNUXXW9-ZILHMakQV(xsingc<_f*Ky zICvLLh5M%A&XiBQAIy+bP?_1weV+LDiIZQ!X8)^k80`~^LCUMyNxfR22Y$)=NxOV7mvXiR`NsCx2iGqvr%=~ zy>#%_ch+_JW@PLAGg8mi(1l{PgPyE3-E~@DDeh`aQ1jV{_E6ewBBQ)NE&Z1vwe|Y}x;Ksn#mX6zx5V>iH1j zmt%ooU5B7A^d?7=hZ!fn{)4hEyE8P!S4{FzQ6j+czA`Og9&3>h0}SnTorv=#`vJV z(plD)Ai6^1L~?H2 zoc5xwX{h!r`FL6>^_lOf-tqUVL+e8+$bgLFY$YVH+0=c8?ZmfzEVS3~0nQn%PH_<*I^_R3Xt|=eiqxQKV$n zzfvfXse*Ydd1tdLR(Z=OYLl^z`^|dzQbckDrAL+$oGlIvt*>|)ws%it|8s>eof`B| z|NduiX^51l*LkA#Iah5oIA_rdLv(qn@|l*yOa|Wbm-rsTC1B*?tDq?Gx+Uu?)<=+K zomFTM-f#1va5@$FkR_$KAf0*;2KZvlvkL!;*Tbl*p}(%)+IwuJW5zqG^IgU%tZU<$ zKAi0;*-Ce<&!~k^0NAYrh)H%zUU-aBN)f}+II{E%z22e^8pA+Fk~2fobQfK4)i$)PdCazh~l9E%b#o=MM;8pew zhnZfCMRZQcxK$6_?mT<(P#@vBNXpONRh=I^gFz4X>bgpJE`h}58Vy8FrDnV2uR@~A zpI)V}M=ys!y43M^W>8myK5v-+$Sc%KzyH;LH&{e?MOv5L(d-rG1c7w=zu$$&>LV2z zVc!cFD}rvRXDySDvwyAhdlZDYSyMp(y5eW?=+5Ee8iP#GVhG5lIiKxz7IVAx(7g6g zujnMq0i0do^#*zDs2`x*Y|TxZZX1Se?KIwawx83-c*Ul&7Qzm$$F?C%7NE14S6_|t z+kFebpKoF5VMod^Yfo!%BhcG-ye?~X;p#(ZTkc*L&>e{PB&6=_Yo|eLZSh^Ev_7!w zH=+C~%KQfqy3`a^ybF;>X;vI6UM+ORF7V@i17APVM=-`wK8-#1Jx}C(T}TdE9Ls=G(0mI&F;U$yppouC)BI+qYy#Ou`%su%tD)&^l|+~d%U6>!pT`h9_qr$ zWK2XjzdliYofZi~`|00~4~=O?Xb`V<^iYXF3%7m|)#33V7N^GS98}yFB6q~LTYK2k zzfKIg)%g@J;WptqP}1t}C{s}xvBSj+2l(Sozh~v;8-BMg+#skuA$+5Nd0?x_HCFPn z_3N{|?tONKcTrFBx^Nq2A4Jpgo5@66vscR6SMp{L$G_f7fdch=nK-zl^8gZ@%Pm7E zJ$oWj1jfLKYt_pBGFjfN&Bz*7l~0tf3kV~RDN7>|GD|nCL>ME6f)u#eM z`0^B=C+y3+i^rLn|E_GRlD{2OKWO9{nq|~1?|Kpw;T-E*)Pnn$5NY~CT-(Qxdav4s zvqpj2o}KOgP*~O1#s+j@K!@l2+B!O{B-A7g3`NfNg}%QTm~~R}=69GPMHHjHNadR?i?nO`4$zeVGHS#KH3l z@X~P_y;`bdDOSyMUKAQ|p4~(S&)#h3IxEu-9ZGw8CVS&X73i_v?aeU@snEBI*{0t| z7n+gND3S5&ZCvXdT5r5(()fN<&Pl)RY_gYB@h+hvN08B{-6eLpF6uUjl%38Z=f~*@ z7n*%PnbQn9UN-m{*^~3y(Rc2Ezy3GeOs`r-=M!X8N`pIJWC+8%1di!?C)OOQ2B4Pt zJbLN*p@ofnof;D2q>9|b*+Qv=M%8;h@p#>#HaQjbnPbyE&m-&V1~2-biRcT|*GWK$ zS2F|gD`%+Kb;M|c*n`ztm%J^e*il+I`ICYt{RsN=6s3UFt(?y#Evwh#BPj8`&R&Nd z%Wvnk=&L?dv-)+X98bs%W@67!GZk=!rz|hHWa2XI*{%r|PXp}op+99^tT<15W@>^- z(g5vm@-q#knsig3Ax@sOcYO#~M{O*-6)$|LEYM34G|Y{c!vpJo3YRUtc4K`iAdr)> zo%IYPt20*da{&)sLkPhSy^n3H>H3>v)9u*T@cr^#Md!O9LpsSqe>{VR(ZpM~bnDgU~S6)a1(-(5T4F!K)+2MCtb zVzIZeGP6ow=ahA-1CF!~t|%qAa|J@|BDfAt#cE>XWJU;Tuc+RxZqIxD_w8Y_4adCq zD@FA_1F1j@o3j=_i^IoUNsUyLcliGcA+r1rF5cCCQd?`@plM?;_2TIT&B3yZ{=_?x z43<6z%4o%ExvI1(;da++DlT*<-s9_!oYzzaQ)(uZXw?^r#?_omAN4tTB5Z6_MLHK- zeH}kRCMa4bCJqWiHpUcT6X>px(`*SCg&NW0S_mpxm-lXUMLChOo3}_mj@w81cRJuj zOe%V|9KF(A_s~B)BV2At#WpjH<;P1C0h51~)zuc|EfPeIMw|bx6^URO=m8uthJTc# zQ`^D*14{kUkMB(A*Ngrd0r@4s@23=5 zEIv8*I4*3gL|oGuY^mK`({Jq=_kX>8^WwUZig6_>j&N|e;YD7ak8&Drhk>`xyG7=w z(0a*!M+11Pap*zEOadGV}_C+n8xaj*KaEUiAL_k z`qU4(y3|;~pXmeR35RIz1+>UP=zD^6efl=huKhEr)7zTpI2q2*cG*z4*=gC=QplkJ z!}k7O_NLwOk^8)q<*qcTXBg!A%eK7)_G4E^kk{61shg@3&v!^S*8Lyyfoqck#8?&g6= ztH0ftC)-3rQmb#D>CPuieiSNp36AB9i_GDuuYCze{qA$O2e$z3c2fr!#FP1J`!QA=+u zy2lg)VSt9jrze|C7QK-yFQ;jQ!O$MvpfFL?#7Kc+HS$cdNjfH%utkit_TX-CnDX)| zJ3-)wTyNnA9iPucIDWb}HJCfiU59lhMRm9x{~ipw>@*+5dpAhN+?hlrqFO6Hbkio* z`*MO%Iw;vg9ju&T-4|m`bCxE>9UO3YmY%+CyH+sCcniDr5ySqxHG6m)si4N7AP6CP zBze&}9X0!Vq>Eld|8x~Hm+M$oVbOXXXdzZ*A2XAklF2G~Tvu>d&Ptib(GDMbKcI#- zJ6v}&KCw6miSw^-MlFEK6lWG1M|~eivq5!X%CbCN#~1R61ee-j?0Uirb!p9KV}gj; zpwBtl`K?*NxA`@AGRZ0m@@xE4g(sDs!`u~R=1l_da&HdnIaEs>JYD>uKB3=AWM(aH zs4TzCeT%Rf{6Or0)35c|SsV>_qXit*VU9yN;59RpMQtl2QZBqNO~YTs`dq3PMw2P zv+_vD=_VNG^#Ts<*8hr2-G_2%^{P;<&z3Jo@&1TqC&kdyKNI*Z&Dg_bXgsOiqy0;j zq=v4tFf!#o0iw^L_icXw5ZoIexx5V<8pmu zAeK!5A^$@)GkS5w&wuyFV=|z7{i{tKRXrhgob)PT1Aps0L<=c*_2)o(Z7LJyXqR9) z1>p+O?Kcbs(h6?=Mbc^PMr}IVB}r6Xd!~^7v#H}-9Myx*a4o-u0*wB`tPB+x1_SuM zLdbfW`8Kv2yFZQBQCX0{Gj|s6LQW_YX;gAGGBIw+P&w^1ZCH@f~CcR>~M zZlCh4D(sbIIvYB#?-HmOtHPkKHERK$_ff1afVYl6pv8)bt8*z^0o!Qjvth4cB)=tC zl}3)EFAgjO{v>Vz7Rwn!(%g%?JnTYzOeT>D+nb0>M3JD@P~DrDI5;uFQEY?qAEYh} zc3)e$8Et2ZOg2V@h;V^>uU)y6fvU)J;->)Rb$$(*+-Vtq4jj#Yc{JRZMuioK7e}@f zVKtZXsVWlr4bCZA=YOZN05?WdIefICc+yUmS%7OO%l}_RC?x);NWE;~8ryPnFvXA# zR%RN_J$I*+G~~G?+dax(Do6P1PKMai-upo5VR5i-JO}W7!JNdZ#?}}PMyVJUPHTCe zBe*UG4)*Q-|DhtIx-0rrY-*{IT94mWsxzklMt^=@?HMRqqO z{+@qUp3$`$>%4w^uHX=)YtbVJTN0daEu%k$(3G{&T`A*ZPq0+V_NY^fkgtTyA%{oj zXF-QLw(~x#!iqdRN?dT+LmwqHjkQ@H%kHb5Ji&ApgngCamg~6d{O*oc7^dDq_GSpR zoe9C!Q+mF>0{wk-o>AO|Tdg^JLGP6PXaDeP&*>EU*l6L|1#%@Eb2Z~hvwB-5cF3=P zhsmirkuzvEIGlx0yCldNEnstL^0*s+Z?DcKoL?h27h=Ka57<;{qHVQOgj7B~c=G{Ua&R2>1tuHe zg|6tS0g`B9-LjwyvPxC3Kn>J^nu@h$ovwb>jN4fofWDREb|UQXHRSX)Qt&|MKTX{* z6cA4^Qcec!J9pgSKbh4~^Oqb=p^Rom-EE*-Vd z3G7$=lgrc7m8tB%7>&6lpD(cHF~-ZVgb=_X@~L2OQot{;k0DS}?V2F$S|{F9#UkWO zY(<=794zjGIs=>rP9he`^iqdw{jmd;Zyaxw??3~D_%kvH)R)Ns5B_~V)!49th%W9$ zD9c@s3TZELz2_EUWxQSQ*uK45uAsFtJv3jr=oHwO7lQcy?<#3Jtc9yeRTCd?pgP{8 zmZVCh5NzlvC2XL-n#uHXTs&4qs<=3w3x~Qc(y^z>dYkf^vY^vRWTwH9DNRgqm}eP3 zKWAhzIe4zFz2fK@?JIwo)c|4>b zU^Ae3JK$r7)mjxc=O?)0)|&Cano`6jN}6lKo0NI|?V7j5{EWXvT#E^W{OhMK{hMJlmEXv}8tl5^-!@og2saSC5u6Xk7;?p#-7d`v5&lBfpVV zWDFq_X{I=pP!Ks7AP-Z`Jk&16=wAL7{HMLM-?Z^Qh`?*!_9%nBrIy%=?BFnrPQ9}! zEAOpuv_)--wNBo|fn)sK3xJY=RyyN!c9YX9NI4jOkE4ysQh_an4_Gy-b1e&0wF`JA zK(Gr#zPX&!2!Vs^(+I`kQyd2usI)mYtNxUFcHvYs>r&fx^d!}MaMWDFnl50>bWNg< z=aSC=SP`5UaHhz;wX_e!8@uIic!?E^FD=*&#KIMn^ZPs4^)>Ewnm`(ygGlvpCV^h?6M}vxC+$WPHdP*1@ysx`fSTp@jIHa8nsn#t7&gxi!H8?|=_*&_YhP^ft@N#ahVf=o&+S%AP0M-+^YMiQgH!10t@2%33R5W)IVq`?41HL^S%v&_26t^s^?O5Z!0Sct6istM?zsAVip8){k;4YNqqQNW|Z~ zZ|?w($r(`GoH`#S!g`Kws;E8i6ySm7%>QHTt;3@Hwy~7 z1w^GgW=IJU5Ky`$Oi)0Yp}Rvsx@HK;p#~=2XTWpL@0|C&zU$);ysnXX)}GmWuf6tK z_kAxGQv9dt=4f4!Zo>qX4nZ1iK5Fi1ZoDPzLy*eu$x&j0M59j$FU&e%IXB4%r7{ia zv8{z=d8(G#vZC|)N3th`kMc1DWUm&7_WV_l4=9%i4vBrPsi56+F0GgR!^91|3Ad_8 z+S>^A;HYuYnJ>VvU<~7^w7^nReXT3OEE?E zhkw=EUdEuk8OGO{J;Q+)6Ysmv!{f8Rxdf4scP}yv8047OJv^JuoA}vm_@vrxLI!Ao zi2d-zFGFB59}b4YVR!Q|GUiU91mSD1Lv{qD1II2bx^c)&mlk;6BU|35U8r4IPF6r5 z;BW+?_D<=(&UjMq#me5%3?_bej=TE;y_@GN%Z}E~=aD;)LfWYcx^8%SG_QA=!6JJ! z?w0^@+8l?=viFO%`IZBgDLZwj6Q z(0m5%Hf_uyG1*V>%Jn z$KXG7rssvllh$BDXbr+vMfZqTS$5`14dIoa=q>JBFmg%ofhesFXkP7B8cySs&_fq| zrmpfiPGd#-@4<5>bC7kzcrZuFXE2nKg)uGzAaCT&HxX-ySnJTU50gX_#x%8t$;1~M zE;yEQ;0VLj&znrwMKfm;n(JP_PL+j|V{b72l4pnjMu9m6!_e%`SCB7%ea)hz1 zLQ1bqnofk9>MD0B`Y(qTnR$IP2lf4WUQv@OA}w>H{o$m;3QfJaor?m^Rv4YIf4?l& z{`Al7?aDY$4*Qp#s6s`=m7l)%M>sS-4uHn&p)r%$tv4^Ie+V7So>!}hsO_6CRIIwO zKetU3_-CdBGZn6O6q$*9p1J;D)aa(Zu{w+Ib{k!?lKrrs{vF0?n9wC$ocnr5ZNUP; zBqa6*)+*dBD*|?-3Z?xb?Lo*d2%iU;p)d$KovSgn%r9WvB zNwKHHi>*_vjdMA(NQfkW*JqG(Kf%ySm2khKM-Y0f?&|jwZKH&t>W56HXGD>SK6`MM7vjk8nMn@H|-#j$ha;2OF~;u?%;Kx==6o|-LlOQ z#j=O+VaT5$DuiDO+^$WIGkM=M-?i!F;@HY*((M_es zVVO=vax(N<)@wqknb6~TkL|>iq_j}c2((8ypdn>o3YjOOGJZY2lD~2k1pmx@7u6j^ z2$k26)+gu`x5*Km&C&@wF3KldFZo|*^Oe1I#fyX(yZ@~-C}Wl{pfUsPhCokGqw5Hc z@>-MPWAa89W6&8)|8Y7E3_NiAdiI{3mp9J9@7BX7N<+EN-$uA07oD zLi#&tPpC%ZXb0z2%;Z}rnTp@{d;KEggruy_eL+p{bCD6N);V zb5J58Vk#7&YR;b6uW+UxzY^B{ob>_`k%6*k-zopK0(i{mo*&M^S1AXzMnJhD^^bEe z1`b->$RFBc2eh)zm;J^duW$)v#pxZk_z{J$IEN#JAV(;Ym+&IaZ zapPx4&|+2OoI`E)x4&m?Cb0aaa=k#>;L+M{6!nJcjxwoRXGf2Y+$XmJZp7;*!m*uUI ze`E|6-ERIvM0klG89zhJsOd!)LqHOi~+o#?vVa>FCjii9i(C899$wzukPGh4vSU? z&eM|z*Qs$KHzGmu>^a!)9zm!?^95)yLxQ&ooDB%vV4ZME0y8q2q;?C2R*-}Z_BH=+ zXe(UbPEaYWp%nERjgLUA)U?2%U+aJ+Y~japw#6DO^dQyl5GN;ywTfZ&b1l0l3p+U28c{fR)EL^ z#;bhUM78z$YfTnooHWVB&AFiyQWC+Juy`IIJg(FXt%A7PG-hK_Yz8Bs$hf<>d8ekx zTOB-f26D7#3+5llssFjx04Sb|1z_ecpr9bgB}ojG3r3jM=2JeQnhc4W1DQlA-X-ki zrS`l6zF;s>b6rmu{}IXEpkrPn4FGT9o7X4g?IHLS_X79KLmk~RL~~%mKZJeUwg_V2 z$2Ad1BozvAp9R6LN0!A30tP9{WU_xfsr}tG>d9;!2YBvjBJ--_6Xl9wVj-)1d}K#0 zhL7y#Bt**iCB!=9x}>g_wce7D5+HqKO&o;{t!BF&VSMRBbFV6`z>6(gO?Q^aY?HKf z^Q2UrNAewn?3{u^9WI2Vp9;zlG4x9LD9+cg)%XE0?}|JAG)qoA3rBYXNSTW|VPu&O z*aP0*u>1om;9@g-cCnfI%x75=DUnkMrROQL-oRyeA4630*T)^aq)49gIU#LY0bcCJ`-;85 zGhcxXeR~5FGVfL_`wX?D|C>|i0g=*@W}@$%e3ilOF3ACD8i>M?G*%|MD_1?CSTeJ z>$qAXJihYnV?T9ef1C4Ov}fU(yo}WzR_BME&q}kw7X(4 zm&^x=TQ3o=g5<)i!?E4!&PuOQ9ta`2gpKw?xvV0_<_Zq>?6f(Dgp-7M(3gf;TSZtI z?|Np3B&?D{qwJYX%)s?nlzHGH(oq8}`;Eie>azaKI{WTexa*j*Bs&}no6(#dQx+do z)@^USWi#1+_);`cYmlk)H#Ax6GziYaE}fOpFzFB489wMIJVVMP`m0W z70!$Ia~Z+wCQE$>$8U5$1`+~$55!hSrP_-(xIRCb)P-14ZCkxv>d6GS@3e1B`aC7? z)!*CUdFcERq&UvD{|h?keqkJk!)Dsw?%NGM94j6)iN;BP<0wa6fS;suc8t_~sN!bB zJ&wk4S4mT7rbEZ)G&*oT{OA$n7y|i=c`T6A0$bgmovaAHU3L#gUeS4+y}BePer0*& z`s|OJ@2f2pzKnm;7`wm0>d1o&R_=BnM#Ff$`*)|`RmJt-NPUOL+YIXtt~NnU1J~vh zanQf3tX_{u6%h3^pt``$e-}+i+-}N1{TOjo<8dx!c=$DqWke)@&T>%kjM;>R1xm0X zvc4d0{+2&^8KUc!uuo2Hmz{TP<|F%~bX3X}0)i2ZY?aJ%f@3z{U#k%sbZHy*@*BmR zrE7_v4Dx|U)k@UcdZQ-;eom8DyoNiiCz9fh*mZSZO1iBCeD}>?k*vu0oJf94cShtv z8aZ=?x%lQrXTv~K!wk5GTs&)f{K4~V1>w_-ADfAt<6qN0J&1mZ5gMkGUp;*b>0G6B zc~+B0(i|5!So1|TPp!xF!{6%g)L8w>XpD8npT)pey@>K~ z(t{CO1Z?*%#;0$Dp`WQ|Ks6Ir7iT-$pf7-K4{j5A3yTx4(d)#O_MeonRACT(5{aTg zfq+0GWd=wDdzk_{p`WFw_+qv?Y<9Pl@`WOOYN%)I9%)6|)H-AU+IvbZzU|NMZOG)! zw))2Xg~*Fuab6#1v&3-~DNTrVqHm@opa}~+sloP2#`p{b@r9^e;oauJ?OSuBH@s)G z)P6C{?serYGwLrX#V&G9xi>qLn4&LEUaujz?F$b+u#iI>TI|t0%d0v?p^%GC&%%7$ zH|rlzO~~@P>AzQf*8=TB_J|Movpe6k{&nHkX=(D!5fL*P^o<6R{%jU-lvqFFUZYRZ zk9sG;=j{%sbj?3Xj@C-P@Q`)fyw`OTXgp%hbD++IwK|$2=6S!n_YqPvhOf zKf(K>7(Ct6W+|vs_{GRa-jn)d{qsfjP#368vS#V%M%fZmuPwI~7f*a>ttscbb35d1 zGOu_=#e1PABg#$|MX{L*2Sz7XW)w~se@~`{Pd=5_Y`0`VgfGmP0IZeSz}Yxi0$$RZ zlw84)!kcLVj#;dSgO_EwCG=VS9b7M2#{Y1kqnN(V;>7g$ca^AKUdJ~5E?7QncA?hZ zo*ebXRt`msI?~+8sur$VR$4mtesU3U`m6zsV~y-UNbPl3+amv%U|D(z+UfPL?KE5Y zXu%U{WMNZNH{tHDFxMqu6ye~IdHX5ZLp3myH7Ck`Z2WSrNP>N5I0DWl=B(R}84msW zT!veBTOw#wA)4Cv>+BaRsYBt4Uk!!Q!jy{nnvlcHToEOi2OJT-jGNYs-~5}7zXg6? zH-BS<;Jy?j_k$lES>oC7#}FZj(FitziE2D(Lt$)1^s)+_%zUGLiQX95Tf2FUw?jk4`{M~`}VLAda#?AyS=oL7k6q7X3J|}+NsPE z2sRoJy*By+)8AG(avS}}w}A6;gRKZp1Imvx@@Bqyg$cz#W?b2Mb@ zdEnECMoHewU*vl(xbg@fH8z%zBw1lgYFG`Cxyl3imvTk(vE7h{ zt0&bZow=&}As?3f4tN#m!%t*nHt>VSe50h4zH5blJ!cuvg(+0N3x~ce5(aH+1X29g^3) zSEYE+S8dnt>DYDG5Zab;5BN9TsPMVumQ4@)k_#R&<0MNb{Y>O>rG z$ubHndS_fmj(!1&DD$%^N;@BV9xB$-WZlNR2Vn7=71`qzejjHCvlLzImr@5rMd#cP zx%Q^Bkgi0Bk@CpMn_=<_yC2IY7jFl+(q=!)pqg+EJ&{oxAl^hQvuR>O_h>{)v$jQj zE*|ud8VyZx>FXXfXTIKwb^Jb#tQ$n$-S`vpQR33T>+$r?uIG#TKiIe2+g_IQ^}p3x z3M9CBa^T|A@fMd;rvSDIoKx?Y=WT%1sCP7c!JLE-9szF_r^WasH*_ec+iV`OUc~qb zDlT;bnk~$azaU0V(u6_<3}KcA{#ti34Uo_w3r?IeMr+mQ!+~etD2oOZDHoa%aIGP+ zFJr)POD!N@v$Xxz8OMX0Uf%KLA) zt`4|6(*3PIF6{xrdzb{RH(f;x9>D*x-@*{!h zvrVz*`j4L8j17D!v!8)Nml{fG|3Sr6TzIazTQ7*M*K)Z`B4D@4?_pXI@{7gt?(eE8 z67S#P9Cv!jgg01FaoJR;nTF;$1_i{pe95yu;g8vKY1Tpkg>~yv29*KVO`Fw_xy{pXB&tfy`nl-{7wRK7`eGRP z@teo*PWI-ny5JxO@2;HWDKfKUr58D7rXAJ~tE-RG=!YKqWs`pLp2bxkI(>XGyWdq= zF?i}_ed3kl{=h-ZWM-E{EX$MF_tx(3Hk`oP+zZNeop~%~{f}rXR(H1!?H@be_I+S| ze5~xW!!i7oGwTdGkUvmy5GC&<2DbLgA}Go-i*vk$hTQCYPQ7vMVQLF`o<#8J(dV*6 zzQbJ-S4`7b%2-`W=cgT_GPJeP#x21B*^bQWNRN2FKh$MAc z&pyy~itP$8cCWsU0S5SqB&p{-a9Mm}V`E?w6s$rnIu=ipOUJM3Kn5aL=3OIfeWB7z z*a~#<`2z4K?80oxisc#by6eP5qUz7$eF^Wvzvrd`vh1W?ih4}mkkW`jJNhHG-jG4Y z?xwABAXE240YKc-^Zw1$-GLmJiP^k@k%UpwLQ^cs;)(yi^7+SS`TW4l#Meuh1oitj zwK!kjXS}XsBCDd#8onD%4b*3>B~p3)G?2{F&>>~;(}hlxiD5AyyDd+)+w?Idc=%W% z=y*d_eiYho@cTtM`kEG~U@ZoJsm@%XS={581nNcBk!MLf!Gg;3B8}pD@)B)m1LpwO ztqyWY=nCIT3A0acVwzbLi@S4oLI2H36qnY>2d+*-xz(xUHsfdD*g|`^ z7Fbf4D-rEkZVK0%vD2C`nm2UZ0vC}~2|dZ7xsJUETwQPDYihg)WHePv9AxoJ9EEY{ z9kh+Up^tp4T+kY6Dt#K?MXk74fuXBPM))EWBAQPzi@!H04XhG?+d=nc98aT@Mmdx7 z&_v1TJ;f^DE3S$k-8>YZsUS_5?*lF38?&?Ifcv;aB%OYrfou2T5Mv)q`Sz)Ixgt5C z)|9|mCh+U4);&DG1h~1G4&b%UAeda)_^Y(B!dq`bt0G-@ZmQm4uaCT8)pbq#4h8K~ z$`D>p&%L63o?Xx}WA9e_Lc#kPuX3w39dX~&pCcm3dJKGOyq!Rkg`cnevCc9kpdXpK zSQatRFyNWu9aZ60U+Y96GPk%Rl|T~5py&%;Y-?qYvX88LGKreGKUB^_ZBh8<=plt( zH@Uz)7e5qdaL|J2FD6UYN2;DWO-J&yO9dvHC^Na(Im0Q$DO0;EJba(Jz59FRKoo&x z&49HlPekr9#<1-~gg4HF`ihWv7qVm>+Ri9rvP2oJC=oKw*}ne1Gnv@;l~M^MLq$K@ zN6H#kD(?;%G^-;kd2i2zu8o^#yF9S`@S%MfylY`U*eu8nb!5JbIaNFLwip<@DrfTS z*s6mvM_!M>q;%1pLtR<#;Z7Qp*fHiq;1t)V6URF2qXSRoM{|Wf5I-K0Pu{&z&;2vK zA%Cb#7*DsKZ_d3`0?Qb#!agHH#^p6;pp_5psSfBqmrYTe%3kp~*q_s`!M#$z|Cz~= z7Un47xBHaP6&}q!+so_N+N&q`i-C)f68iC+bkI7Nfa}W=+}3Erso|*?Fg7Eu2Hjm6 z$UCw&M0@LY)cULWtNDkU?^m^RfgwGJDs?te1l7|Kj48lVGb+kpR`OZb%_GX*KVzZH zG7c**Hh=J?z7amt|o;Dw*Ec zpa0IXtrWG`6eP%fTZzff;Py)s%i^ELFBwRV7;YPv7aJR9=Zjp%3#v!m)2ewfRcm{Z*%byrFI;(oQ(II9(-hwdH^J)`s~_eJV3r9LpIr5pC# zQ8XQuZiK#Lg;k5zzjp7@6!}WP$Mz%V8>bzLhnnv&t~JBFPjk77%09f2fCozy%qLxB zU}r%b<;856JYBa0k42uM>(HNE+uOW_?=5557RON=dw&Xv2bzVUP8nkC6^?YT=@RCg zpw@NzstVhweZDZuQhk#bpG{4trYfU{=jM+FRXIcI=JXP{e`97}p|}&l)>T+#*j5s{ zTg6-XGd5xW7ICNlRQ<9~XKrJ~*Ea*B&e!fj`1--g;3L9sb0jrLCBhqX)%95k5=8}w&Tg>GGkT%{lF|W?bCsgwX>SI$e`{yib0*`nW^z` z>bW{;W>8y7I1}xksW{>hkhKnOM+ydJK!W=Cr|YGJkO-e(V{10kTrE{b}w8-=O3@8}btFaY?ChxK^y3%3X;?eYQ%b&urX$B>7@ zA+~(2Y7}{QB&!#B{rCiJlQl~ZDUIBM^zajBEe zkROd#)dy&ljP^f-+a=@|QQZH{Z=88!e1_{=t`60{duG;`#x6~lG9sfzasMnR#$^!7 zGHN5;VsYCiwpl+WIoJB}sSH${3JQ-0-5;ii<5ff{916tkSUxiObYN4l!1EPlUB>4k zPuzYr@TuQM`N}=03&a?!qltcWxUd^Mez>uK(e(g*u9{0HSNfpddDkWP*dATuam*zF zg1xU6PBeJeU#+abH{@-&U<-0z^cMcMfFW%`$2ByR7z8HgfS_EBXwMw(lm?3(34j9w z+}pt)!hWLfw@C$HJyD)YO~@9~UT?_Y{=~%8Q5vqod2XVC>$%ko?O>%?mNx8N*03+InzDo#q zrgFHNT5n;}ugR7@bK21@5{ll~+YoC)5-)u`R;Etbo^BtxVu@y$h5nh-{|W6d2M@Sz z;ckg#H!}KJC@4?CQd#$UcyTpozk4pYYlGR_>loM=?H_D*3ToH!%#K|tZbVDmzjA>0 zV)hK~UlxE5^f(2>qaSCug_}D&MgY7*2pKsL(l8U8g){}KLCoFuB)0!5GpbMs2K61N zh$sJVf0=3PYmwaD)2JqHwRE|l>!D`!erj?Png3le(lR>+bw(VA@-b^!$Ty${s?e{|ZuomN`{&%SEU3XIF_g<|AU{Od+t*!Wew@vE78eO?9d5xIGKY1Peuy^^aCm}xY_lK zK_rZwlW#wmAAmW@$bVB$f@pOxbm5!gOopo}ep>=s7fmmo6`H;2=qTK%0iLg`ke2R~ zoH1FwiJTIsNNnuVpcMGLfceLyUXMeSK5Js4NiFB~?Y9Z9Vw-gh*po;pGl=fcikaTM z?)K`6sd%RwCqs=<7H|2-Jqq8jI@J&89ep*(M$&Z&yvJJVpY~<2?@$MHJmQlwS~($TfP0#L-vJ(cf)P<@gCc> z8NAJ#?oQZsHUYMddVQCOz$&(8!sR24w)_r#Gjolv@(Tk>50Y8-O6~+ytc>{{U9>c} z*MkW64qJly6Mo}_ET?f(i{I~nvm+Y>2a@Op1|&isjG#a5=Xmt(vX+n6k{WL}8zQeF z?zq=1Od!45KCZ3ZXtgZ#{+284^%QX;clB3F1J%6eg}@4qVUt~-kZS{)3FD8uDla3+ z?I4=wC7;Xsk3gUL5B+^0arBDX@bEpg?*J%85(2FXLvr-s;CA19+a-ugMBPu_1wK5o|gFxEi=aLQu9d$A`M zA47~3sk8TTe4Snx?)a7o``*%o+rwpKbOWFLff@&9V(pQ&2H(DonPmO4Gx^+C{mIDU zs*jTnL^2sAlpjUc!rJ!;|5`QxVxFit#)O*!G<_yZ>RUY)Q4q1W<1!h*1EkKsfK9x zQbWPfogW~NYAX*mWV|(Z{4CaGT>^Yb>UgH8A!RfFQtP<2)Ep-*GRUw=lg9$~7F z1L~!vd>0bjK*!4++rryD^>din?OCf)(U?rKGG9gzUlRw3+<7KKS^e*3hpbNuQ)eq2CNde-|kN@ z?H#mUtq+UT{9+VJTD$z`tp_`-WQ^$u6IR{8w)N&FS1q>sLX_{m>s$!-R8<={D$7nwI4K==6AD_qaaDP-D=@;80Psu=Mj)*mD z)5#s$)%;QY+vmQ0K%971dxUni?O~A8`UFa+p~{OJS84s}`Yp`*3hPn(vxU=**}1-7 z-loSnVBfyayJ%;xz`*w>4~jNh7~5eR5pJUPadZ~;;>4s=Y^5E@TWijYA2v_n$)2-Q zA)a@>9&D_CF8{U~e6WA$x7v5luePmP5)vDl*hs_{PnvH-lcd6CNx;&?R7D~jN>xSm zEtt)Pc$%cL@udsPH1Sar@eaKrQCySJ4viwYNTZ?;sdXr6DaHFnaZ^&5O5`u@$k3~a zhJ-}$H~DjdF#Qh*5bRL zO5elYJoagOssDnygvk1FPju(++vA-f9otNEb(b$za?;DdqteMbnEDZ~9Sp4-4v#f_ z1C=dYMN+C1va0S4R8uJD@WA-twazpY*LJmZ>U;?FNuf8I7PtGvC36CtvWt17izD(? zAe1~1-&fg>e{7;=TUJ};l2>S71~!4lSvoKgW8-xBBJYcqqYx{pjYW35KlbNWe{&4z zZ=W`2GIONG@3#O?|zm=&lFpPmL;3+BX)U_1A|Ww0!&TxEwX)A68r| z>c@#P-l~k%{ZcBK`R3|LOs6}K_03NA`wp3knxYmkHkXa$`DfNcfx-v&i zlIO&@GorYMGg9i&$9cYUtn*36p z^RIJ5az*>v6!wd?&aSOr>l&>V7 z#6A3{wecc^qZhbXBX67nFFd&T^se6i+q+21??^Pz?GmqNe0F{0KDGCE z_*mg!IMl|oGm+>cVZg*dS8+`6ur^!`H%N8xlge7rcYjd*eN|ULVt%PJzZ63+~G8nfeP) zOO*oZE?dwEeHvmOa|w%_bMJTly(H5gAP?!<-t#!+3I;`q-}2OF&5%9%F}5I3i>M9M zSB5|!DF4C4&BtwR-tL&FZDnd3!!H*z#3-b6s!mo%NK`8d$B{YXTZ^bi4aL2(#fvVt@FUkaT&U zt{EwI*?+oa#G3tW>NY>>Dg)FI@-@8535i7?HxMb#ee7HJ!j%77&6Mi3dxNysjU1?! z7#i2N8rhZDf{y+`ShqTXe)gWW&om#t^_8SLDWFl^icQ zU|x5_t6&OAL*z$mFs13`!DE<)AWKG2grL%iWS~(>y*Cf5IcKS5tcxj@#sb45h2{$5 zV1jdA>eD9lBuEgk6PD4x6DmzFdGzt$ z1{P+9Kmm?EYqTstkUuPjD&XUXJpPss$+UT^xxAkcJHyl@6;*nItEzcLStrC87H9}G z2REqS`SR$=q4~>~pN*!&pE~Q=r#K&`v%Qiau*s{>-&AUs7L~ilGpDv%Ss+UAw&=IQ z09JEfU1z{%FJ&N$kU{U-NyJ^~aFH_w`W`Q|j#>3kFJ5U|=};j2Pg`o8x7Anc@qWvW zhI*xn61`3{??0IPlS+b9?=F6yT4gLkD98WglED~1(c z!Yxa*z4d!y-?Z<7eTW_rocpfC0JRT7h`g;`PW~PEGs|b%&XB$Gg%xF)5mGNmn-BY= z&Vp@GS%NNro4#6`o6{`W>&_Ezn1~MX z0QfSrPvoTb;#Nq{(ktp`(=`L}1)U1vz(btegHB`Cr*)7)u~hly<7GA9$kV_Us{NFG z7u$?%j&+m-&^KXBiy}QG(*)z&+wd^b#(*O6Z*%0a4?K1?NeA841~E@8juKUnN^>0< z@dR10+m}{Yg4P4=e5WsdTyxp zNmFxUu+)WB;vil*Wt&TU0<^-v#>zbx_m;!D%-~t(ksS^9T=<+8?dZ4CF39wX z-LhnNF6(dxootCV&c5wI3Ur|x>}qE8;R`Lj$VO5Y1lvNk#A~ev*cCIJQhWY>b3o+> zGsU6@xGVRe>_&AY&D1qJF$qN^cd<@0-t9#*OX%)qv>GkiHZuDu;nuqbPM>?DU}JE{ zU2sa#+$(zo+hwyQA9KG_kCz?p!>5;Q>dR!u93{>B>V}-yju2z!0#+j%4`Ro;60_e) z9E2l&I<16nEGLa8+!A4z;o+z;tW6w6(Wi$hB^dj+jwp{CWIq=*hkX_;2D2|U5XGap zUI%i_aXe~pEHMDEB)2hl4!q<${GSq&9q2#)f_qV&H_kA7xgVL7hR8Y`Pfb1wk)AVY zGl9cK>*v7-R}G7Q$>mPdK*%Jjrw@h z1dg~LpbZ!c5d~M66yICd&BNyT)n+Wz=QTNCG#?q@_IWYs;~{r4mrNXE{ePQG@&!t9 z>&GvlcG`UpWe2DbsYXbP)xdk1`0vNQnk{S2=_o`ujAca(2abr@4#AGfiS6(4%L(`xYR@EEl4Cu1^tfja}g1cJ~>Sn{>xjqb75gGJ^8Gl zQ|dwYEYK(opnvcUVq?#F3vD#74!zZ=TEPtYo7;r<&bz`2IRP-Ts;RlzD-9SfkU50T zp+PH0>vSsp$Kg>heI(3g={7B)0W|g}Y%Sq0!DpCW80K0DtJe%TRXC?)ybDPx(P-gW zD0#q}vqHG58Oj)TDTO4L$Jp=|dIb27I9M?c7MSg`%p?qGY|aGvSvaannP*C#`+9!W zcsl0(?HzIk=$izs;&%_HSSv0tQ$?3~c)EJIdHexg_V9A^5>Kuj)vj_}4VNxBn)mS? z3|RI*sxP44O+i`T6}nKLg1b_Rn+KeN~wODqWW`v*B_3H8Gh}) zYpSYMH*xbd9c{WbRlM#Eu;Tshjj^ch2QoZ)@oCXUkYAkBx>Vl75$QXDET4>yhemKj zW4NbO&KbLzVpRG+KYzKg^`@(b$Bhx`XpuWJCFki}k0epf(!T^hP}?eb*TUw7Te&Xg z({G?S6PeiS%>(`{Yrk`JHLAb+sO76fES7xC?EC9}TV+L%eizoUhE|*In+R&x6e6X) z(DkAJ)2Y3=+1#LBpZ1bUN!s&Q-v~<@YHlwHTJo&jmM=fO)wZi(+rV0PA_``)g1;`X zr>yhSIC#JZUi?+!_u99@*~RG#V;0-OQt&KdluZ*Cy8cD6RayCh^-TWnq56%vDRVs$ z>|*%#lGbuy-Q|FQ9OTp6k9eR^enk z%3N1wR6Ac~b6IHGaI&W)Je$s=->F#6Xx`bXXMRjd{;5T`Kmqs}5(Axi3~^@8;OGb| znHV@N1MSb^a{NBielHOTGQkxeZp^_x#jR&qGd3s>%9Z7n78PxTnK0OYFFG=@=fu!` zD)S4&WVAm%F2o6!i|i9y>{2lf(9Zakf~Cfud@?6mNmd6R3D@YQ&cQ!<^4=QKMRPr5>@| zP7}j0Ng&ZkzH2xF{ky~S&YZ_X_j}s*vMQm(Pj_SRe7h`;R6d}d%XSGm#Fs6#&}olP zxrsxCi(egU^D(IL+zmMyaV}RB&;tF7s#F0KayfxQ?n<@nS=vrJNF-18=vx@`s^pE1 z7P3IOS$XqVItQ#{etDqvy|zPNg7R7Oc&c2@Da5|6^BHsL>tp(4#FL7Fo4{)mi`DMs zmOO(2zob}yBZxBTp>q7{t3!u!fg^1AY^eMOTkDG4$|f?JVNQAbyheOr_*=Oo$MzI` z=jLek8ogh6px)eHFzYp7bQxa`ecK#PIV}|RId6@VOJ?h`(`>rGGL3{?%)!L}883)OMgoxE@Z`D_*$ju1&{sr9;lz!pDrCk3kxUF*WX4;|@8V)(K$R$8`W4cUlx*ZS=4Y^{Zoq>a|hudxPIGIk?Ea z%3cFM$-qa*a~5Y>a8g4&rt6$svt|&h0K9t}eTD)bc*QcU9Ch!boaBv4F0#OCCHL}a zfcYjxt=Vw7FPnzxM1p;>gcL=e7IyNi98E^3HNu7`hRUZ)MD{p4mbU;?xnQFR)Rcjl zl#WaA^0`{Ddx>HiY0C9 zn2IG`YoE$AZR?E6G+k?Au#Y_b0NEl+rH(Z+Swg*+lu()Xr-~aLW12tf&~!_8V@Nak z+EL>Y&qEi@+@s09bguQ_e?p5r7CD^gVY1r}DSGb@;oaY%%A(BhWNNT2uKvMam zlW-`}ShKqlK7armJ4^jAQscw^i!(_>dPZP#t5~}p8DUObO*qKVTQsL~?5{t{9w;)lm=HY)k>VEWf*V0w@&uOLWn z>Z(+UY}tq5e*@}m{|it*eWw`I^-n5=^Z_)qC8q>ec|RY^(}#Exfs_6aumw;xF>U}n z9-zx!HwkV7XbHrUI5Gx+mEebGB~+fX61YOEtW{}cUaWx=0Kk3d@q{DunJ^|NJT}QK z5aCd*oP&D75*whA24WN3x0f3Q`_Z4MTuj=QG0$Qw$R764z;i765AmMG0HjLNrAR0U zl5Ldv{z0(pGA~R}g1;iK^}C=HgB|xl&n^%|#r}0un^$rJ``d!jvQz_ZJHCoETAmBL z9EoFB%qK;t6xa(r3hAK(_Oo7ED8;5*kXZ+xyhOg_kL-wS8OF?w_T%vy*3%P-(_Sf@L!E zjINPm0K4&YA=`ii2)G224n5E5H58iIGape{<`xO#T;v4`HN_wd#Yy5sKo3oU<_McK z^evtrQg%hXijzg{j1Wj0l(anipwx}?(Z9Ylo^#*M)$$frT3}BLguFD1E%znvVCx9J zmR#aj#~?@xD926mS7iT9{GN>Bvy6Q$o>S;g&r{D7QQrRSK`b5i@VINp4Ns8x*fhw^ z67N+w(LitOwm;C}o$!vitG`cf!#}wscE{};Qez9C zy=(|=HOMIDNo+~USOvWajPUO~t7jn^$@!InQZ7Ww1*Ncj3I&R!p=p#7EUn2wqTAwp zT~?3nZ1DVjGhoU>?6|L7#PiDL^f&_@P(245_QjMV%O!m|O=d1cmA_V)S zZBd_rAKHv3zI0~N@cenSMP$TT#^<40M(lU|=${k%sYN9m-~#?3`+v|bYkVh$>jjA& zYshyWtttOq=ROe=#sc!CXW== zpYgH!t!WnAIH!E%{H`kxcl3bI*O)bcY$H>IQ$7|OAn#ICE}pi_@tq3xk)huvUu;nc z;EdEK-u2~eplKZsK9;7RBVX)LL1(Zr2#1PgGk%)0u?q>p4~sq_rB&rojWWR|loU8G zC>?5kIj}9Rv0tFjaRXe*IfCmsqbgI@lk}f*#y@im3e@~5j8zR*ZnfdToD(R%m0QW*n9hOB`YkZJ#s0bug7`cETz1az$7KA`+YW5vrNV7sm|8QRB>IQM+RO2A9h9fu4J zilT+zCXvsC>&D|D%WwA?UoR@ey=>NoNtA49yH5qc8Wa0BqDtS{F8AcFysx4F&xsY{ zEIvaweAnQ@UA}C+IPZrzVJO zxp1R&Owl8$GVrRCb=Se1BUiwcz=Em69^=X?zsVMd`pzojdMQR@_Ay_W;nzMt>>I7? z#beqPQ)Rn#8Yja<+b58t`ZnL5UuF)OC1pGx`mY^L0C`v*@ zTpKjgXl=tONN^fN+{iai;le3Pm_edPj0i$DN*a&}6Ppn76cd0mJ-^m`*EeXWQWnzz zz7X7ufJ^tafO~rmx~9Re)6qmM3x*GPO#JGVC2MPi5C@A5-%pMw;V9eM^%5NHI`^;S z>f`LP7kW76&(KdOT+e#8BNn$+fUGbdaGG`g_Op7f95tPVeSWLo)Acl8wHfj0SZ97f z5+0&8?282|@PGm&j)%mUi&dqOuamG>Dw}$tLkEyIxsR7O`4=Dk-?}IG1LxmrC#)_( zX88@78qkgIQb`2?a9Z?L1G-%1JzfuW5>+U0uPUNQ0G-{dF7e>$ z?QE@q?1LWdqOE_u(c|W~{VD&U7CRP@|LZ)BK08kzCZ$;3H&0qmH8C*1`1eTdRC#vN zOn5P&*dn$O?*WrjN%QO_p^tW1xb|46{{k<4&w!V430Z7{F&$*!NSu?Tn!_s_!I#o! zu|@OWTg$}1-4@fi+j@^U3&tn<3basD^P;Ogo`*wjfhtHg^83ovjgPq%E+L=9_lBlZ zM(bY+1Cc+*dIB&{X!RL>_Yq2lUyRa;R&EzqyP$i9ek-kStu_6QONc_jhobC4W}=gP zOfN*7fuL3 zcQ}h-e{%L$kL7A0=f2JMNf3b^FWe@G@Bx4=Vgs;62CmY@G-nd%LI&)GU;t#-La3wE z89YeiW$>Hk#W(VV>N*Gb57oY~RO-dQ3BJ~#_n`oBR0yw&zNq&EX^Iyb_=m!|X?(A{ ziuf6^oDiS-n-FPL`me+9$IcnMGseVHCD?KIMnBPzda43wLft`vT(m%pMNLA-MMYl( z2;sd192@9!3~=)UCKqM*nDK|=VDWU@|lrgR-MhQ3vcMzAA;m=$G)Gty;gMpG$;lS3x5VA z5IO8?YeU*Mx9CD)GhdZjdz}9@*Fe}5W=jtQO|)dJ2A+Tf5?-@{*&d(@tD$%U&jpaU znmHTyUujTS0ZWhTa?}4q0V#ua(2btwNfxkzg-oZr@W*>R;y&S!=1(9N=f%Et0M^R+ zecAN;u|7!`RJ4(%;JTYY3%P$vZDUe9o-Z6U^GvnTa(YcYNDcEZ%6~z`KW@|ima33C zm#WCjK2t>!X8u<;;A}rL0rQC0I`U})lm;%9oCx7r!Bluwa0yNP-UBjjq|f&h`;aHx zy&@qh$lJlD7bBkrn=(W`2sUMm^faT#^2DH6CzU4l#1zgUQ-*e0cWp0Dt{s6`i{*nz zxk5M_E!`bX-T)B+3)iU5tK$u|n`6TzeD_bd{sU#d@Lnk84?PvxC^a;HXoqKT-&yhO zo~Rq&oXvi~ppaB}ul53ac4)PdL-Z*32MvD`WBvaV(grR0YXI?FkeNV%ARzt)RPYbj zq2psgq_v^g9)ZyeP=A8>z_y5cQGRIwW$n&n2MFB>p;ti5g9(#{YECj+J;FfE_J|cydqjf? zVICuzc^qiw5mSG&BB>XE@_qADQgaxH8%JkB(a!=Niy*h%;8v8FTvA$;O3ZjBADVs; z-zBp+xhSLZA2JNfc?cjs{E01>Y=-cB2oD2lz5($A z64O&%it-Cw^2_sJ=8VMo5L;@@hm7VcvcumFN4~d1=-FfGh~>y|KQ}J)^Ii=wX8`yT2uOq};LSj%WGV{rV4{G561T?9Vgi!}I5vbXP6Ms`!wQ@R)=*xG%3~Ny5vB z_{eHlcBkApZ?=ALrmp`ua~N%3$68j|zUC7+NB7l;yk^i>1*xwXOy+SKygcS{@&4Al zv$C~j$8K3b+{d$5Z@#?~k?*F~@j&y5d?VC9DBpG>tm87?DE_a2m;XFQ{v-Vhwq=>^ zA)a#GW%SL--8BHsx056ZVngmrwH?{MTl(qDgv z15~x1huU8?HRmd7^t|%m%~zk3&z5h5`UmCP@to;7@?V{ve**vj|Nrb*OKTKC5Uxx% z!Hr2+#Xyd$67U$*s1QOr*^mc{322PZ=&(DEgOllTGC?+=1W)lMBIqR`%I>l`w`MH!QTt4UW-3pg4UY7j4 zPy<)?GcCqBWg^=5L|gxwgVj&UA)HB)n9JpB)ljM(CHQUdUcG z=3HC%4T!jp+56@3F3r>(Z%atL$E0`zY8Eodw~)9Ztbe`vc3sLhIZjQ%Q{!wwuVp>1 zd-qfnmzOlSEYr2p`O?^9+7aeUvDJ5CIwGZ@Ywub zsGR=+$@w4EZtwfBIT)=DPLq-d_5o&vJeTyDy6hv?L4@_Mw+?PMaGxPixn3Af2FmM& zanNH%JnD|n$If5r152dg`^%lAzwB#W%}RCUR>8}J;1LP$uy~dhw*81Zh@3+nL%xVS ziF^fl2KiQs$JvPWEc+8y&vO6G2z`2D)G`-5W3T(Y{AJ}s`_Jw*e`D*J`{W4u^zBzR z_nDBc_hUa6x6a14-*@rl$6@EW73QY~<$eae9-xn$Vf1kzw)16u)g5Si-A5h`w5_jh z_Qw|QJ$(5I*mMxmrldIihT z?LY551(owWAlXm(yh+!XuT`?ss>i2^Z&B>tHt%jdyM(@hJgny*njT$n3OQ<1k53w< zjxVX(gENL@KJb;nA;+{0btc;%c?`y>XD#9b-5#b3Fq;w=qYodAx)dao1hL^NYCO_>`H$4vNx0;;{P{zuyzPaJxAA|5M<1glAZCJ!vqJeWb&PQF!Kc3iNk1nR{Sip&nV@_IMo(Xueh&inBijeEpB2gn R(Z0_9!7y_`002vCHT;-ymHz+$ literal 0 HcmV?d00001 diff --git a/gui_support/app/EDFMSimulatorGuide.m b/gui_support/app/EDFMSimulatorGuide.m index ec955a2..b889705 100644 --- a/gui_support/app/EDFMSimulatorGuide.m +++ b/gui_support/app/EDFMSimulatorGuide.m @@ -2,8 +2,9 @@ function varargout = EDFMSimulatorGuide(varargin) %EDFMSIMULATORGUIDE GUIDE-compatible EDFM simulator GUI for MATLAB R2022a. % APP = EDFMSIMULATORGUIDE launches the converted GUIDE/uicontrol version % of the App Designer interface. The UI is built from standard figure, -% uitabgroup, uicontrol, uitable and axes objects so it can be inspected and -% adjusted with GUIDE-era tools in MATLAB R2022a. +% uipanel, uicontrol, uitable and axes objects so it can be inspected and +% adjusted with GUIDE-era tools in MATLAB R2022a. GUIDE does not support +% uitabgroup, so pages are implemented as switchable uipanel containers. if nargin > 0 && ischar(varargin{1}) feval(varargin{:}); @@ -19,6 +20,7 @@ handles.App = app; guidata(fig, handles); configureGuideCallbacks(app, fig); app.Controller.startup(); +set(fig, 'Visible', 'on'); if nargout > 0 varargout{1} = app; @@ -37,6 +39,15 @@ end end function configureGuideCallbacks(app, fig) +if isprop(app, 'PageDropDown') + app.PageDropDown.ValueChangedFcn = @(src, event) onMainPageChanged(fig); +end +if isprop(app, 'DiscretizationPageDropDown') + app.DiscretizationPageDropDown.ValueChangedFcn = @(src, event) onDiscretizationPageChanged(fig); +end +if isprop(app, 'FlowPageDropDown') + app.FlowPageDropDown.ValueChangedFcn = @(src, event) onFlowPageChanged(fig); +end app.NewConfigButton.ButtonPushedFcn = @(src, event) onNewConfig(fig); app.LoadTemplateButton.ButtonPushedFcn = @(src, event) onLoadTemplate(fig); app.ImportConfigButton.ButtonPushedFcn = @(src, event) onImportConfig(fig); @@ -68,6 +79,43 @@ app.FractureWellLocationTable.CellSelectionCallback = @(src, event) onTableSelec app.ScheduleTable.CellSelectionCallback = @(src, event) onTableSelection(fig, 'ScheduleTable', event); end +function onMainPageChanged(fig) +handles = guidata(fig); +pageTags = {'ModelTab', 'GridTab', 'FractureTab', 'DiscretizationTab', ... + 'FlowTab', 'WellsTab', 'SolverRunTab', 'ResultsTab'}; +showSelectedPanel(handles, 'PageDropDown', pageTags); +guidata(fig, handles); +end + +function onDiscretizationPageChanged(fig) +handles = guidata(fig); +showSelectedPanel(handles, 'DiscretizationPageDropDown', {'SPTab', 'DPTab'}); +guidata(fig, handles); +end + +function onFlowPageChanged(fig) +handles = guidata(fig); +showSelectedPanel(handles, 'FlowPageDropDown', {'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'}); +guidata(fig, handles); +end + +function showSelectedPanel(handles, selectorName, panelTags) +if ~isfield(handles, selectorName) + return; +end +selectedIndex = get(handles.(selectorName), 'Value'); +selectedIndex = min(max(1, selectedIndex), numel(panelTags)); +for i = 1:numel(panelTags) + if isfield(handles, panelTags{i}) && isgraphics(handles.(panelTags{i})) + if i == selectedIndex + set(handles.(panelTags{i}), 'Visible', 'on'); + else + set(handles.(panelTags{i}), 'Visible', 'off'); + end + end +end +end + function app = getGuideApp(fig) handles = guidata(fig); app = handles.App; diff --git a/gui_support/app/createEDFMSimulatorGuideLayout.m b/gui_support/app/createEDFMSimulatorGuideLayout.m index 490ca01..7eaa15d 100644 --- a/gui_support/app/createEDFMSimulatorGuideLayout.m +++ b/gui_support/app/createEDFMSimulatorGuideLayout.m @@ -33,9 +33,14 @@ handles.ExportResultButton = uicontrol('Parent', fig, 'Style', 'pushbutton', 'Un handles.StatusLabel = uicontrol('Parent', fig, 'Style', 'text', 'Units', 'pixels', 'Position', [984 774 251 22], ... 'String', 'Status', 'HorizontalAlignment', 'left', 'Tag', 'StatusLabel'); -handles.TabGroup = uitabgroup('Parent', fig, 'Units', 'pixels', 'Position', [8 46 1247 706], 'Tag', 'TabGroup'); +handles.PageDropDown = uicontrol('Parent', fig, 'Style', 'popupmenu', 'Units', 'pixels', 'Position', [8 748 170 22], ... + 'String', {'Model', 'Grid', 'Fracture', 'Discretization', 'Flow', 'Wells', 'Solver&Run', 'Results'}, 'Value', 1, 'Tag', 'PageDropDown'); -handles.ModelTab = uitab('Parent', handles.TabGroup, 'Title', 'Model', 'Tag', 'ModelTab'); +handles.TabGroup = uipanel('Parent', fig, 'Units', 'pixels', 'Position', [8 46 1247 698], ... + 'BorderType', 'none', 'Tag', 'TabGroup'); + +handles.ModelTab = uipanel('Parent', handles.TabGroup, 'Title', 'Model', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'ModelTab', 'Visible', 'on'); handles.GridModelDropDownLabel = uicontrol('Parent', handles.ModelTab, 'Style', 'text', 'Units', 'pixels', 'Position', [62 630 60 22], ... 'String', 'GridModel', 'HorizontalAlignment', 'right', 'Tag', 'GridModelDropDownLabel'); @@ -51,7 +56,8 @@ handles.ModelFlowModelDropDown = uicontrol('Parent', handles.ModelTab, 'Style', 'String', {'1', '2', '3'}, 'Value', 1, 'Tag', 'ModelFlowModelDropDown'); setPopupDefaultValue(handles.ModelFlowModelDropDown, '1'); -handles.GridTab = uitab('Parent', handles.TabGroup, 'Title', 'Grid', 'Tag', 'GridTab'); +handles.GridTab = uipanel('Parent', handles.TabGroup, 'Title', 'Grid', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'GridTab', 'Visible', 'off'); handles.DxTextAreaLabel = uicontrol('Parent', handles.GridTab, 'Style', 'text', 'Units', 'pixels', 'Position', [49 643 25 22], ... 'String', 'Dx', 'HorizontalAlignment', 'right', 'Tag', 'DxTextAreaLabel'); @@ -77,7 +83,8 @@ handles.NTGTextAreaLabel = uicontrol('Parent', handles.GridTab, 'Style', 'text', handles.GridNTGTextArea = uicontrol('Parent', handles.GridTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [93 147 267 108], ... 'Max', 2, 'Min', 0, 'HorizontalAlignment', 'left', 'String', '', 'Tag', 'GridNTGTextArea'); -handles.FractureTab = uitab('Parent', handles.TabGroup, 'Title', 'Fracture', 'Tag', 'FractureTab'); +handles.FractureTab = uipanel('Parent', handles.TabGroup, 'Title', 'Fracture', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'FractureTab', 'Visible', 'off'); handles.FractureInputTextAreaLabel = uicontrol('Parent', handles.FractureTab, 'Style', 'text', 'Units', 'pixels', 'Position', [59 571 76 22], ... 'String', 'FractureInput', 'HorizontalAlignment', 'right', 'Tag', 'FractureInputTextAreaLabel'); @@ -85,11 +92,17 @@ handles.FractureInputTextAreaLabel = uicontrol('Parent', handles.FractureTab, 'S handles.FractureInputTextArea = uicontrol('Parent', handles.FractureTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [150 497 241 98], ... 'Max', 2, 'Min', 0, 'HorizontalAlignment', 'left', 'String', '', 'Tag', 'FractureInputTextArea'); -handles.DiscretizationTab = uitab('Parent', handles.TabGroup, 'Title', 'Discretization', 'Tag', 'DiscretizationTab'); +handles.DiscretizationTab = uipanel('Parent', handles.TabGroup, 'Title', 'Discretization', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'DiscretizationTab', 'Visible', 'off'); -handles.TabGroup3 = uitabgroup('Parent', handles.DiscretizationTab, 'Units', 'pixels', 'Position', [48 37 1156 430], 'Tag', 'TabGroup3'); +handles.DiscretizationPageDropDown = uicontrol('Parent', handles.DiscretizationTab, 'Style', 'popupmenu', 'Units', 'pixels', ... + 'Position', [48 480 120 22], 'String', {'SP', 'DP'}, 'Value', 1, 'Tag', 'DiscretizationPageDropDown'); -handles.SPTab = uitab('Parent', handles.TabGroup3, 'Title', 'SP', 'Tag', 'SPTab'); +handles.TabGroup3 = uipanel('Parent', handles.DiscretizationTab, 'Units', 'pixels', 'Position', [48 37 1156 430], ... + 'BorderType', 'none', 'Tag', 'TabGroup3'); + +handles.SPTab = uipanel('Parent', handles.TabGroup3, 'Title', 'SP', 'Units', 'pixels', ... + 'Position', [0 0 1156 430], 'Tag', 'SPTab', 'Visible', 'on'); handles.BoundaryTextAreaLabel = uicontrol('Parent', handles.SPTab, 'Style', 'text', 'Units', 'pixels', 'Position', [30 360 56 22], ... 'String', 'Boundary', 'HorizontalAlignment', 'right', 'Tag', 'BoundaryTextAreaLabel'); @@ -133,7 +146,8 @@ handles.RockDensityEditFieldLabel = uicontrol('Parent', handles.SPTab, 'Style', handles.SPRockDensityEditField = uicontrol('Parent', handles.SPTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [103 165 144 22], ... 'HorizontalAlignment', 'left', 'String', '0', 'UserData', struct('Type', 'numeric'), 'Tag', 'SPRockDensityEditField'); -handles.DPTab = uitab('Parent', handles.TabGroup3, 'Title', 'DP', 'Tag', 'DPTab'); +handles.DPTab = uipanel('Parent', handles.TabGroup3, 'Title', 'DP', 'Units', 'pixels', ... + 'Position', [0 0 1156 430], 'Tag', 'DPTab', 'Visible', 'off'); handles.kxTextAreaLabel = uicontrol('Parent', handles.DPTab, 'Style', 'text', 'Units', 'pixels', 'Position', [66 365 25 22], ... 'String', 'kx', 'HorizontalAlignment', 'right', 'Tag', 'kxTextAreaLabel'); @@ -261,11 +275,17 @@ handles.CommonCporLabel = uicontrol('Parent', handles.DiscretizationTab, 'Style' handles.CommonCporEditField = uicontrol('Parent', handles.DiscretizationTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [420 502 150 22], ... 'HorizontalAlignment', 'left', 'String', '0', 'UserData', struct('Type', 'numeric'), 'Tag', 'CommonCporEditField'); -handles.FlowTab = uitab('Parent', handles.TabGroup, 'Title', 'Flow', 'Tag', 'FlowTab'); +handles.FlowTab = uipanel('Parent', handles.TabGroup, 'Title', 'Flow', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'FlowTab', 'Visible', 'off'); -handles.TabGroup2 = uitabgroup('Parent', handles.FlowTab, 'Units', 'pixels', 'Position', [54 12 1120 267], 'Tag', 'TabGroup2'); +handles.FlowPageDropDown = uicontrol('Parent', handles.FlowTab, 'Style', 'popupmenu', 'Units', 'pixels', ... + 'Position', [54 286 160 22], 'String', {'GasWater', 'OilWater', 'MultiComponent'}, 'Value', 1, 'Tag', 'FlowPageDropDown'); -handles.GasWaterTab = uitab('Parent', handles.TabGroup2, 'Title', 'GasWater', 'Tag', 'GasWaterTab'); +handles.TabGroup2 = uipanel('Parent', handles.FlowTab, 'Units', 'pixels', 'Position', [54 12 1120 267], ... + 'BorderType', 'none', 'Tag', 'TabGroup2'); + +handles.GasWaterTab = uipanel('Parent', handles.TabGroup2, 'Title', 'GasWater', 'Units', 'pixels', ... + 'Position', [0 0 1120 267], 'Tag', 'GasWaterTab', 'Visible', 'on'); handles.ifpcglEditFieldLabel = uicontrol('Parent', handles.GasWaterTab, 'Style', 'text', 'Units', 'pixels', 'Position', [37 197 33 22], ... 'String', 'ifpcgl', 'HorizontalAlignment', 'right', 'Tag', 'ifpcglEditFieldLabel'); @@ -285,7 +305,8 @@ handles.PRFTextAreaLabel = uicontrol('Parent', handles.GasWaterTab, 'Style', 'te handles.GWPRFTextArea = uicontrol('Parent', handles.GasWaterTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [87 35 150 60], ... 'Max', 2, 'Min', 0, 'HorizontalAlignment', 'left', 'String', '', 'Tag', 'GWPRFTextArea'); -handles.OilWaterTab = uitab('Parent', handles.TabGroup2, 'Title', 'OilWater', 'Tag', 'OilWaterTab'); +handles.OilWaterTab = uipanel('Parent', handles.TabGroup2, 'Title', 'OilWater', 'Units', 'pixels', ... + 'Position', [0 0 1120 267], 'Tag', 'OilWaterTab', 'Visible', 'off'); handles.density_o_scEditFieldLabel = uicontrol('Parent', handles.OilWaterTab, 'Style', 'text', 'Units', 'pixels', 'Position', [242 199 75 22], ... 'String', 'density_o_sc', 'HorizontalAlignment', 'right', 'Tag', 'density_o_scEditFieldLabel'); @@ -348,7 +369,8 @@ handles.OWoil_modelDropDown = uicontrol('Parent', handles.OilWaterTab, 'Style', 'String', {''}, 'Value', 1, 'Tag', 'OWoil_modelDropDown'); setPopupDefaultValue(handles.OWoil_modelDropDown, ''); -handles.MultiComponentTab = uitab('Parent', handles.TabGroup2, 'Title', 'MultiComponent', 'Tag', 'MultiComponentTab'); +handles.MultiComponentTab = uipanel('Parent', handles.TabGroup2, 'Title', 'MultiComponent', 'Units', 'pixels', ... + 'Position', [0 0 1120 267], 'Tag', 'MultiComponentTab', 'Visible', 'off'); handles.cs_NcTextAreaLabel = uicontrol('Parent', handles.MultiComponentTab, 'Style', 'text', 'Units', 'pixels', 'Position', [16 191 38 22], ... 'String', 'cs_Nc', 'HorizontalAlignment', 'right', 'Tag', 'cs_NcTextAreaLabel'); @@ -557,19 +579,23 @@ handles.GasBetaNonDarcyLabel = uicontrol('Parent', handles.FlowTab, 'Style', 'te handles.FlowCommonGasBetaNonDarcyEditField = uicontrol('Parent', handles.FlowTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [743 426 100 22], ... 'HorizontalAlignment', 'left', 'String', '0', 'UserData', struct('Type', 'numeric'), 'Tag', 'FlowCommonGasBetaNonDarcyEditField'); -handles.WellsTab = uitab('Parent', handles.TabGroup, 'Title', 'Wells', 'Tag', 'WellsTab'); +handles.WellsTab = uipanel('Parent', handles.TabGroup, 'Title', 'Wells', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'WellsTab', 'Visible', 'off'); handles.Well1Table = uitable('Parent', handles.WellsTab, 'Units', 'pixels', 'Position', [43 194 446 167], ... - 'ColumnName', {'Well1'}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'Well1Table'); + 'ColumnName', {'well_name', 'nperf', 'index_xyz', 'rw', 'skin', 'well_type'}, ... + 'ColumnWidth', {90, 55, 95, 55, 55, 90}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'Well1Table'); handles.FractureWellLocationTable = uitable('Parent', handles.WellsTab, 'Units', 'pixels', 'Position', [737 520 445 100], ... - 'ColumnName', {'FractureWellLocation'}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'FractureWellLocationTable'); + 'ColumnName', {'x', 'y', 'z'}, 'ColumnWidth', {140, 140, 140}, ... + 'RowName', {}, 'ColumnEditable', true, 'Tag', 'FractureWellLocationTable'); handles.Well2Table = uitable('Parent', handles.WellsTab, 'Units', 'pixels', 'Position', [35 476 594 185], ... - 'ColumnName', {'Well2'}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'Well2Table'); + 'ColumnName', {'well_name', 'nperf', 'perfnum', 'rw', 'skin', 'well_type'}, ... + 'ColumnWidth', {100, 70, 120, 70, 70, 130}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'Well2Table'); handles.ScheduleTable = uitable('Parent', handles.WellsTab, 'Units', 'pixels', 'Position', [552 176 362 185], ... - 'ColumnName', {'Schedule'}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'ScheduleTable'); + 'ColumnName', {'Schedule'}, 'ColumnWidth', {100}, 'RowName', {}, 'ColumnEditable', true, 'Tag', 'ScheduleTable'); handles.TimeTextAreaLabel = uicontrol('Parent', handles.WellsTab, 'Style', 'text', 'Units', 'pixels', 'Position', [949 288 31 22], ... 'String', 'Time', 'HorizontalAlignment', 'right', 'Tag', 'TimeTextAreaLabel'); @@ -632,7 +658,8 @@ handles.SelectedFracWellDropDown = uicontrol('Parent', handles.WellsTab, 'Style' 'String', {''}, 'Value', 1, 'Tag', 'SelectedFracWellDropDown'); setPopupDefaultValue(handles.SelectedFracWellDropDown, ''); -handles.SolverRunTab = uitab('Parent', handles.TabGroup, 'Title', 'Solver&Run', 'Tag', 'SolverRunTab'); +handles.SolverRunTab = uipanel('Parent', handles.TabGroup, 'Title', 'Solver&Run', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'SolverRunTab', 'Visible', 'off'); handles.RunLogTextAreaLabel = uicontrol('Parent', handles.SolverRunTab, 'Style', 'text', 'Units', 'pixels', 'Position', [263 571 47 22], ... 'String', 'RunLog', 'HorizontalAlignment', 'right', 'Tag', 'RunLogTextAreaLabel'); @@ -679,7 +706,8 @@ handles.EpsMaxEditFieldLabel = uicontrol('Parent', handles.SolverRunTab, 'Style' handles.EpsMaxEditField = uicontrol('Parent', handles.SolverRunTab, 'Style', 'edit', 'Units', 'pixels', 'Position', [113 308 100 22], ... 'HorizontalAlignment', 'left', 'String', '0', 'UserData', struct('Type', 'numeric'), 'Tag', 'EpsMaxEditField'); -handles.ResultsTab = uitab('Parent', handles.TabGroup, 'Title', 'Results', 'Tag', 'ResultsTab'); +handles.ResultsTab = uipanel('Parent', handles.TabGroup, 'Title', 'Results', 'Units', 'pixels', ... + 'Position', [0 0 1247 698], 'Tag', 'ResultsTab', 'Visible', 'off'); handles.ResultAxes = axes('Parent', handles.ResultsTab, 'Units', 'pixels', 'Position', [217 22 987 585], 'Tag', 'ResultAxes'); @@ -726,7 +754,7 @@ handles.PlotWellDropDown = uicontrol('Parent', handles.ResultsTab, 'Style', 'pop 'String', {''}, 'Value', 1, 'Tag', 'PlotWellDropDown'); setPopupDefaultValue(handles.PlotWellDropDown, ''); -handles.PlotTimeStepSlider = uicontrol('Parent', handles.ResultsTab, 'Style', 'slider', 'Units', 'pixels', 'Position', [15 578 150 3], ... +handles.PlotTimeStepSlider = uicontrol('Parent', handles.ResultsTab, 'Style', 'slider', 'Units', 'pixels', 'Position', [15 574 150 20], ... 'Min', 0, 'Max', 100, 'Value', 0, 'Tag', 'PlotTimeStepSlider'); handles.PlotTimeStepValueLabel = uicontrol('Parent', handles.ResultsTab, 'Style', 'text', 'Units', 'pixels', 'Position', [54 609 106 22], ... diff --git a/gui_support/app/edit_edfm_guide_page.m b/gui_support/app/edit_edfm_guide_page.m new file mode 100644 index 0000000..f55ee22 --- /dev/null +++ b/gui_support/app/edit_edfm_guide_page.m @@ -0,0 +1,55 @@ +function edit_edfm_guide_page(pageName, figPath) +%EDIT_EDFM_GUIDE_PAGE Open EDFMSimulatorGuide.fig in GUIDE on one page. +% EDIT_EDFM_GUIDE_PAGE('Model') saves the main FIG with only the Model +% panel visible, then opens that same FIG in GUIDE. +% +% Save and close an already-open GUIDE editor before switching pages this +% way, otherwise GUIDE may keep an older in-memory copy. + +if nargin < 2 || strlength(string(figPath)) == 0 + figPath = fullfile(fileparts(mfilename('fullpath')), 'EDFMSimulatorGuide.fig'); +end + +if exist(figPath, 'file') ~= 2 + error('edit_edfm_guide_page:MissingFig', 'FIG file not found: %s', figPath); +end + +fig = openfig(figPath, 'invisible'); +cleanupObj = onCleanup(@() closeFigureIfValid(fig)); + +show_edfm_guide_page(fig, pageName); +syncSelectorValue(fig, pageName); +set(fig, 'Visible', 'on'); +savefig(fig, figPath); +close(fig); +delete(cleanupObj); + +guide(figPath); +end + +function syncSelectorValue(fig, pageName) +pageName = char(string(pageName)); +setPopupValue(findobj(fig, 'Tag', 'PageDropDown'), pageName); +setPopupValue(findobj(fig, 'Tag', 'DiscretizationPageDropDown'), pageName); +setPopupValue(findobj(fig, 'Tag', 'FlowPageDropDown'), pageName); +end + +function setPopupValue(handleObj, value) +if isempty(handleObj) || ~isgraphics(handleObj) + return; +end +items = get(handleObj, 'String'); +if ischar(items) + items = cellstr(items); +end +idx = find(strcmp(items, value), 1); +if ~isempty(idx) + set(handleObj, 'Value', idx); +end +end + +function closeFigureIfValid(fig) +if ~isempty(fig) && isgraphics(fig) + close(fig); +end +end diff --git a/gui_support/app/show_edfm_guide_page.m b/gui_support/app/show_edfm_guide_page.m new file mode 100644 index 0000000..ad33d7d --- /dev/null +++ b/gui_support/app/show_edfm_guide_page.m @@ -0,0 +1,91 @@ +function show_edfm_guide_page(figOrPage, pageName) +%SHOW_EDFM_GUIDE_PAGE Show one GUIDE page panel and hide the others. +% SHOW_EDFM_GUIDE_PAGE('Flow') finds the open EDFM GUIDE figure. +% SHOW_EDFM_GUIDE_PAGE(FIG, 'Flow') uses the specified figure. +% +% This helper is intended for GUIDE editing. The GUIDE Object Browser can +% turn a hidden panel on, but another visible panel may still cover it. + +if nargin == 1 + pageName = figOrPage; + fig = findOpenEdfmGuideFigure(); +else + fig = figOrPage; +end + +if isempty(fig) || ~isgraphics(fig) + error('show_edfm_guide_page:InvalidFigure', ... + ['No open EDFM GUIDE figure was found. Open EDFMSimulatorGuide.fig ', ... + 'in GUIDE first, or call show_edfm_guide_page(fig, pageName).']); +end + +pageTags = struct( ... + 'model', 'ModelTab', ... + 'grid', 'GridTab', ... + 'fracture', 'FractureTab', ... + 'discretization', 'DiscretizationTab', ... + 'flow', 'FlowTab', ... + 'wells', 'WellsTab', ... + 'solverrun', 'SolverRunTab', ... + 'solver_run', 'SolverRunTab', ... + 'results', 'ResultsTab', ... + 'sp', 'SPTab', ... + 'dp', 'DPTab', ... + 'gaswater', 'GasWaterTab', ... + 'oilwater', 'OilWaterTab', ... + 'multicomponent', 'MultiComponentTab'); + +key = lower(regexprep(char(string(pageName)), '[^a-zA-Z0-9_]', '')); +if ~isfield(pageTags, key) + error('show_edfm_guide_page:UnknownPage', 'Unknown page name: %s', char(string(pageName))); +end + +targetTag = pageTags.(key); +groups = { + {'ModelTab', 'GridTab', 'FractureTab', 'DiscretizationTab', 'FlowTab', 'WellsTab', 'SolverRunTab', 'ResultsTab'} + {'SPTab', 'DPTab'} + {'GasWaterTab', 'OilWaterTab', 'MultiComponentTab'} + }; + +for groupIndex = 1:numel(groups) + group = groups{groupIndex}; + if any(strcmp(group, targetTag)) + for i = 1:numel(group) + panel = findobj(fig, 'Tag', group{i}); + if ~isempty(panel) + if strcmp(group{i}, targetTag) + set(panel, 'Visible', 'on'); + try + uistack(panel, 'top'); + catch + end + else + set(panel, 'Visible', 'off'); + end + end + end + end +end +end + +function fig = findOpenEdfmGuideFigure() +fig = []; +figures = findall(0, 'Type', 'figure'); +for i = 1:numel(figures) + if hasEdfmPagePanels(figures(i)) + fig = figures(i); + return; + end +end +end + +function tf = hasEdfmPagePanels(fig) +requiredTags = {'ModelTab', 'ResultsTab', 'PageDropDown'}; +tf = true; +for i = 1:numel(requiredTags) + if isempty(findobj(fig, 'Tag', requiredTags{i})) + tf = false; + return; + end +end +end