From 8fd182acaebf95880f3dbef32a6e11b08d54b63d Mon Sep 17 00:00:00 2001 From: Megghy Date: Tue, 3 Jun 2025 18:03:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0OBS=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=92=8C=E8=B7=AF=E7=94=B1=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8A=A8=E6=80=81=E4=B9=9D=E5=9B=BE=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=99=A8=E5=8A=9F=E8=83=BD,=20=E4=BF=AE=E5=A4=8D=E7=A4=BC?= =?UTF-8?q?=E7=89=A9=E6=8F=8F=E8=BF=B0=E4=B8=8D=E6=8D=A2=E8=A1=8C=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在package.json中添加vue-cropperjs和相关类型定义 - 在obsConstants.ts中新增示例组件和控制器组件定义 - 更新manage.ts路由配置,添加OBS组件库和直播工具箱路由 - 在DynamicForm.vue中移除调试信息输出 - 在PointGoodsItem.vue中优化商品描述的显示逻辑 - 删除不再使用的OBS组件视图文件 --- bun.lockb | Bin 337819 -> 345569 bytes package.json | 3 + src/components.d.ts | 1 + src/components/DynamicForm.vue | 1 - src/components/manage/PointGoodsItem.vue | 6 + .../manage/tools/ToolDynamicNineGrid.vue | 608 ++++++++++++++++++ src/data/obsConstants.ts | 14 + src/router/manage.ts | 28 + src/router/obs_store.ts | 4 +- src/views/manage/SongListManageView.vue | 253 ++++++-- src/views/manage/ToolsDashboardView.vue | 83 +++ src/views/manage/ToolsManageView.vue | 25 + .../obs_store/OBSComponentStoreView.vue | 376 ----------- .../components/ExampleOBSComponent.vue | 176 ----- .../manage/tools/DynamicNineGridGenerator.vue | 499 ++++++++++++++ .../manage/tools/DynamicNineGridView.vue | 15 + .../manage/tools/ToolDynamicNineGrid.vue | 608 ++++++++++++++++++ src/views/obs_store/OBSComponentStoreView.vue | 421 ++++++++++++ .../components/ExampleOBSComponent.vue | 182 ++++++ .../obs_store/components/GamepadStick.vue | 0 .../components/gamepads/GamepadButton.vue | 0 .../components/gamepads/GamepadDisplay.vue | 0 .../components/gamepads/GamepadStick.vue | 0 .../components/gamepads/GamepadViewer.vue | 0 24 files changed, 2696 insertions(+), 607 deletions(-) create mode 100644 src/components/manage/tools/ToolDynamicNineGrid.vue create mode 100644 src/views/manage/ToolsDashboardView.vue create mode 100644 src/views/manage/ToolsManageView.vue delete mode 100644 src/views/manage/obs_store/OBSComponentStoreView.vue delete mode 100644 src/views/manage/obs_store/components/ExampleOBSComponent.vue create mode 100644 src/views/manage/tools/DynamicNineGridGenerator.vue create mode 100644 src/views/manage/tools/DynamicNineGridView.vue create mode 100644 src/views/manage/tools/ToolDynamicNineGrid.vue create mode 100644 src/views/obs_store/OBSComponentStoreView.vue create mode 100644 src/views/obs_store/components/ExampleOBSComponent.vue rename src/views/{manage => }/obs_store/components/GamepadStick.vue (100%) rename src/views/{manage => }/obs_store/components/gamepads/GamepadButton.vue (100%) rename src/views/{manage => }/obs_store/components/gamepads/GamepadDisplay.vue (100%) rename src/views/{manage => }/obs_store/components/gamepads/GamepadStick.vue (100%) rename src/views/{manage => }/obs_store/components/gamepads/GamepadViewer.vue (100%) diff --git a/bun.lockb b/bun.lockb index 81fe5400977df50783f021ff30e23c2f2f47236b..c192cdf3a3c526f8dbc57f992b1c3d8e4604aeeb 100644 GIT binary patch delta 67511 zcmeFad3Y2>+wVU!FpvQeBSwRw$POZ_h9m?gMD`t2Rsjhlkgx@^ummsxMNv_N7K=qe zWLHs9kzEOjETV{rfQpKU;)kqP>gt)K zS+MttqYuVBQoqiv54@Lj^7OZ7Z~SRSpzgrb*tv(!eqO5H4LNr`^74>L^=CcUy>-y1 zqyMa4l>?c#%^Kf3<%*I%Upb$za9}B)?+Ww{^ini8XGG>8qFz-b;Kw{uO@3 zkE-Y%^cr*x>0E|ZqG;vOvZ&G>oRgC~VRZTpz9(%)qqA~yfxc{Fk!Rtk)KOWPX+B>A zd?nn>+2^lS(2>|WYcKb`Kw2u+&G4(x>rpjE6pf>+elOu^3N4}Q#-$G$ojQ29FE++2 zPI;6|3YT+{sy`Q1Bc4Y&RrvUoK3_$&B#HB{pl~`s8LY+A1%Fum0jLb;#d?}LY^>X1 z@mzg1yc(+Ou0YiedD)ruhUNHtqw_{h7@U=sejnGVohOsN((Op&sUR7tIrWB&NFADt ze~GVvni5ci&Xv53a?`VO(zAWOv-nD2(6wGod!dSV60RDi4$jIRMUf8UlSkpQ>%0~# zRoSa)ZtCdNK_k+A$0?=ae}t;VMrMvoua`E+_YQu!0>Byqq+OUkmN7sLX5g#lL#lWe z^hcFI#GlN0)p#VTk#Gm9f_Amnjj!evC_QIz>WI{|^x^pG(q1T03Ok}oKMtorO}U|l zH?WtY>Z5Koy^J5mSIs`aR|3QFxwfzqN+k=++Kgjrdlk4B}8>na6c-?#q)qvcGY5;Gs{tEO;{6|p@hXPdNawMvFeNbK35>>ng z){jLs&H|R7Z0%kD5lZ}m!d(QEz*-L!E<%;S3{)A7LzU5Bd%m+hpJ@GBsII?{=GFku z8b2a)RIblAuB%s|bX4a%qdFgtD*fxxtF+dXC7=w>cJVU&3f1C0HZwO}VO?0 zV@B~JyuxkX7#N+Jo1ut#qehR&8=5)lrrT|eIj?li-0F?UyutNHW)9BIYSY8>N2cXv zvlRJ!%>Wuyso6tEr?So+=K_`ZwVqxAFQJ-oAHd6_8&SHn@RMF%LUFylHK!J;K{-5g zR9d~PA-;Xq@6*TmFzUKG_xJU(d6LUD^75#UdL~lt$l7_#sS>Ju!|Zcg>YRI6h z@fYt<MK4nEzT`i z&rwd_vey-~u+0#MD*Y{4UiI^GvooofuLIT4KzkmpX0J{>HP6-dy0WP9&&kaml{eDo zJHzU!`gY9rvQHnJk($ljF+V$fR2sME?>Mh~j-j;Xpu)&<`(}=p!CF)ql*sdj-u_%~ zC~iSjkAbL$WH(d|`Mu@KEuV$Pz{jB)!n>VwWh>X2HQsC1aip%}dVIA;IkW=$0>x46 zg-*&PR~1y6ILrcGR$n0Fe-g~t}n7BzM1ptZ>dmF- z)#&K#%$$)0><1sALp0tZn}S#G_xwrlD-;n`M%O;*HC+f59{^WPy4mZS+4%pusi38D z*|ul@-L^ecl?2>=Op1gi77 z**7;Ks;?TpioRoxr_{^SpR-P$fK)rEYX;PEJkBueJRC`QC8;1XY_y;(boKWp(?DY@J^rQDxZp zac@IW1yzCGS?JX`C&Qa5oA5PU=b~z%NoXZ>J@M5N5q>B9TKpq$jfUN*u8a6?Jm$*9 z6Aihb0lxEuw{zLI#2Y@FQBC^n^qi~_W7B=VEcJ%nH>if^$Ea$?LqyiNQ9fV&Gs>Gc_|M<`Hr&aXjl zL`R^t&}~oqd{xjTsOG_Q&v@g!`mN!fYVsJX zB~W$IPcL{~d-R3ty}&+zTB6A68mr4+aGs97t{}3KL>{iGk2~S#t@ZLL!PwE5)t-B7 z=BV_0@Rk2j)SVnT^+sl8kIvY<&dcsuRM`z#@6~q~s`9fC4^40E^KHO)&!^_(j-iu$ z+39&XnL{S{rf%>m)N-TOf-_OA)vN3Uy-@j)!QYRJ)C1=>c@4-mod+Rl)Yxyv1WJ zs&Y@=>LoYMYN*I7)&NxftsP^%;pr2`Wn>O!8{o^#NguD3_*t%3|3AIWOXmqx@gIBL zo6KtSdfoVWK&I=}u46`LsoQ z>J7WRj4SQ-;*CfjJ4*fIyBwgB{b?hF@Kuwv^z_m7GIM+%@A$7B6IqpR+v8pLDA&~> z{{5)i5kp61Wz!^)?c)$_Y4b+=et+9Lf6D6UdLyz1$1xcQWHKFmr{3`*Oduh*EB1OB zXvXBGr}=30u~g1i|6OPI71tFEqk@_tvHQI8MjrDc8_9H%(VEc~y$)@Psz<8r_cU_8 zHe4e;fNE-AhpIg;MOBPd?|bs-&6Zme=J#@gkpb%BU*L>g=M9X~Yh#cQ{ z6!1#;Ayfsq;h;CQUc;}5|0)fuf<<~L_mG!yq#}_a_^$=^3dr&wDPg4K|C&*xg(4Z` zXQiqA_~^tdK;p+<&9hU-)f<$RHi4&!Ol>PZf~y76k9ZY)7hgSl!TLG5skwPUrsK&Y z&af-5>r zOP|ln+^P-x!7KRxX(0dWc>H#Umri7*?M)-8{0&Zd`ij-`9J(`|rQ)`qyn9`}pS_!A z3>wP?Ayh5vkbo+16Y;J`uSPY{^{hFZ3Et$icYcvgcn`kYqjt~dz?Dv9yhbYY=C5i9 z27F{{-aYnt~IeL(#vM}=S+L4GFJHxztl5eAp7@7JbIUmFMJ5XiV9Mu>b zn(jV$`=%5BYJ5J!s+XHOH0Kb$TH+}*7Ck`)RH5P(DbRi;QiDhV{&kxiDRHDgk&OTJ z`+beM{s4Ld`gYLo?uS;OHSy=d)p8HwtLCrZt0f`@ZRGPgORl~)x@E}k7WCqWyf5v$ zx_t1m7Kay~xsZ9!8&fZ@o>6-Ei}hamtn%nm10!D6!7X(ko!IER#l!EJx-6@S??T4j z_v&1FXWgRVX9gx04ta9z6&+t6an~Q)?;HGVo2OT#m&z^QVc?OPPh6E)c69Bdaeq9P zyz}_k!@n)h>6|y^i-LQ99eC5%w>^1!bie5@b*ouBaQ&ubW#4R-HsZ!HO@90C?k|6S zW%c4#O;RU+HuvKJ4R3w1?uLh)t=C-t()ijhlzgdOy@pZ#dd`HnWd8tX13!&(j-MYp ziA|CNmj#{tCSiXIXG4=@|0w4iKc8?CHD$If>!q z;MW)ZBxgf7*+0oS$ImyN#N=fEd1pd$a;O(${#LT}J1NanopYR_^;#qcE{S&XTZH{# zXG4o*f3|aupIe;7lw|)e&IEqeb2g+T2PZNW+Bg?lB!!9ywIHFAPD+#bfWLy1e@ock z(b;fIvj1i0+%3t0S}{)3mSO)$XF|(l{|aXVKfiR&@$&{Ju~o8vtuvuja_AaXs}7`6 z!bypb52fR&txLIWveij!og4}=nZmH3Q0#VY9(4TujNz*FXQ*?{;!OeN=hyRg5Hlh{7lztow~J~>e4T4!VX zuz!Seu6=TF<+T*tX&#?MwI_5?wKwpyzjKbCo1Mgt$-!%wo^6~hNlBqpLQTAslj1d| zJ0|=0If=svtbZgfB1*LbR!+a{rFSz}blpflxcLKIFj z9PhGc@tR)rzO?6vNC#G}>g0C``!k#kU6TE4oOAqSOmPQq_X*)qOS45%C&sHf#SgeLX3D~93-T!che0vuI(0t7|#(J=EjJv;|(7- zM(Ari4Ij@-ynzXK(VOyLyj^&979_@puBq$u4Y(L{0$!5qX~MtkB=$%SMcwGJkmK(V zA8LuGCJs3MuJNIV@l?tZ?iksFr_Km!T7=5f^SNs_qpW3os2QF&<}{je?K#?op}z)C zvVVqiu2*tsXMLZqC1WTeW*lzOrJLpiTz$s46Opc;SxPlgAtZB;hPYyY-TVPCV z%`H5QO~2#s6dx)dM|SSHl-BWqJL8;<{llT3rAF&G(kJnhbZIx+I-Jls zGGf-GCO8`hh6D2xobv<2q1_kHu~Y>DiB5iMIGB{EcD)dnZmzo@^PFgmBLGgip zO`ZHf;m|yw@?dRhmf)NllpMO8AxI511llvvPddVx;uA=skk>SIlqm zZo7CcoXnT|7rg~|nHRm14CvI0UOL`i=ib5l>$XPZIvX;QgO%F4 zOU}qD&X$qEv*75!qoe5dV!3WvPw09gt9{b@%x?x}olb+Pa~+gjy=Z60u=Sa;OqZChI_9S$AG^#?#oUq?r)vL68+i zbEZjra2g(a6}Abx2zfISprcVbX1s@_rCk#jmeM+baF{nN< zVi?(Q@*YA+iyT#CJMju$JRYN#+s@T}BR9sPZxZ}{osHweAqVE&6xCdN@n~gRiYm-& z3POXkbqhU!XPdHrd}tfqO`MBT%E8lk&7BL$NrA@woc#Q7U{F72V}3Zepr7`^le;7Z zcM)o;RVi44IoZUS+#)HE*x%VWF&vx-;1oCfwNB!sudneuExlyz8* z*_Sayc^we`wQKODk%3ys??on&fJwpgU^xYHuyJ$yxyO}Xu5fz*WfJf zbXhi@8rN<9(2IC#B6q0|{ebsZ>NQ!yw2r!?BRCL`Q4>xI%_YPQMh#CHKEP87+-vES z>j!xyVnFnY4~@iA3as|r30B}S2?{H?XaJnk+P)1Cag!+|VUg5R;sGDGi93dIlc<{I}( zcCth9ygD=ULeJsd;-=tF)xvo0p5#!ip^>>n*@8px+~FH~j*#Xo8^`YxqHt6>nmi*u zaAk(m^xkl=eFp8O0TbFxs1>KZ`swDtPDJHgnGl7e3Ncp}C-^g+{QJV8tuRerZm*1o zONK=@MMa76ffmD@rqjceZNl{AK%L>v#_8c;`f!cHEz^?%3x+#Q?+*u$0K(3eu1TS~ zBQCZ&H~PWWbK5JhV1(23fw2FmGvR^cK=qN%#s|W|)RDA@yM8So)Ikp`JR(eZFga9v zlvir^o*%e#lym+;ZoNPaF2*sA~*^Q7YQB$(V~HIW<01h^J-Bd(e3kPa~F* zOh5AMHj`(!?8w89pV48mosIp%p|^o5Kie&~rX_N`Vo_w;Jq1rggIURvI?;Mwb>7EI zax>6CFQ4o4rCju`&f^Ag(Hn|)+eL399yc%wrt5-Zi^seb&+B!an}zpR%#Z&|%sS(^ zL0wEG8}F|iw&QU>rlF~3u->Z&JKsV zPVnY|x6IGN>*7XX1_VBx;GCZw4m8YnnmXaovWedKDxtej;K)R0Be3qIi=9DD#^AMZ zFQ+DF!J``sTSVuwp2l6YN{o>;A!YF=vg!$z+*?*D=F|nfs=2-p^=4NUA>#tyLe5A zOb3mL4|Sd5tzbT9%6;*nC-Ib}yLJXo;IY@>Hr06Q#W@y^4-Ug?=8oFs;(CS+d@|M9 zI4>N!;%=`Y$%-L3=x(R!{BU5|-A?}eaOmoLye%CMbS&CAc=2R)g~ny@X*{MgwLU?J zJ&ua^Q$opUl-z0FF)28f&<)Bn^dzB%ZiFef#0TD;=Hx#f4%NCh(#P5kq~hJ|7JLpN zuVwtb;{*Hdb@HDGhyDbryC@{HG5J32g_Os1LVcA-;Pd;O{Dt9A!|C3LV%oNd52oR{ z?HYQ4kT;!~e4+Dr-AK-z+<^}FI~x~;LsRbO77Hxr?oamMv2mb!Q4bX3q1JdB=5DOe zyLgEgy?PINQ_ed#3Qt+mPmjij*5kFpV=-I3Vn2@|U7MDC8-SES)_qh`~jxv>LJb#lEx;-k*_<>AnfN4@byR!_u- zp0%F0sGP@B4VjhP^4rYuhON)tVvNP}hM-p7{nn%BddG)qKjxkDW_kvm)?rq!74gAW z@p$59N9i-(5MZ8kjSsXk&c;>YU=ENO`&3eB3nATqI8Cj8!)xaih2`S*xnBEtJDO+k z;yFjbxPN|+*AOq{_G7bo-h$20zCS*+5Kl!ZD z%|N$vf=SEWMJ_%mG?`FuH?lT@2k;u>F^RZklwQG{aJJ+p1@2nmG+i4Gy$?{Ik}{*b z(#lAEH5`Vlbk48kbBC2q(^ta52CKA6U$`SFIF!&Jw*tEeWjoDZVGcj-^JTc~7@>Y{ zDES%pGd3#v0U;h=pQobFdc%@I+9^Ib8qaHhHwkH$xZ@{~v)VboJ{){*HA|UuVSQ5I zD;I>SKIeTZ;KjQCIp_R_aOe%7YRK>k^BK+a-Uk5gttjxo^UlVN;lSSKo%2ZW1*hqz za47KwZ*)@ULka#DoQ<%IHQqEM5tja!@%Y3$J}G#f5L0DKv#1xnNzF}-0eKf5ol1mP z331Qimh!toZaMrPCq%sz=`qcRvBkaMi}IYw^O`A=CJi@trdN%Zy<*`py?R)W4^G=A zMB%8bnaug|fekM^`LBh8XMo+D=KYfbZPz;IUt>GG_Ts9<(s=1Bk>Y6G>4c|w#+Gw% zd}tn?dfoGW#=GUBm$S~he^hiAoVW2ha*q24o08b|&iSHnC~LhpIoZq%iVyC`V`ZO{ z6e_jUE+f~@tU~X(?1BchBJzJTJ5^g8y@b*wV{Q0 zTC+)k4>rHRQ+n=ZHB@a=kebom;e_tT z^M<~B&#<)IVN{Zr<+Ige1u|8&A3N83Xlt7EejKJsCP-J?|sa>Th~! z+Q)aiR>bt~cdy{7b+`f1R=-%!d#Gx>Bhr72-cSyn26!1azsfr!9<392V5f8b-EiRb zT~5<|;n0n{z4mAPCBz4F@fy0{|12e>GLmyjeDE`Q?h`|$x4fD#dLM`n^~7u9#?sw+ z23{LH#yMM!_iRi)IEZH>w#Uie9}e~3b1_*4_&mI9?*hECZ+q2a{*qXGJPm7_nh$9v z+jH*MTcJ&O%9e99Zs~U-gGOF!>k$+0ZafVPFXkpZT}P4VhTm;W^7}X`s7d2>){MPg z8CkL@)lNL`8V%4t@U#cuv*j-Fp~QE+oV{(#I6TF4_s*f!)}t}FVI9MZ;~e_~QmL}f zyE~HuTbwLB4GyoSuj6S@F;tc%M7`(j_Po{eHoO#0aTj2`J&M-@j||uueEptt{xA<_ z`<lM`BXwz%%=ujUR>sC-*z&k=pO8|3m%X_wr%NbV-Q9=|WoG{3&z5tB5xX zTi~fc-gjj4tml>JFy1YZGK8vs;8nzH-T`>J4_xYY#2ma%c-~F!=m*ZmBjHf;!N_iu zZF%7SgHF>=!lCzow-S?^DeG1@PuddyYTF&q~SK=c}=BeJddZ@!D^8jA51t* z3%DbB0-;u3&NTfNyf{2By`S*Bx@kZ({xEVo(T;T(o>o3eJUc%05?%*9<_UxI0-o1i z+F*42=wh1OqUPZ>ASQ!i9>WK(H6FL+J@J8#A3OP z^_E3wN}or{osyamg%frQL{A6jS(cwR|Z4T4MYdb<0!^Muru z-qmfsp=Gs02~H)%;}G4rM~oOer`?ypH`N!t18cOJ&`7B+SCJ9yj+xU$T5 z-V)7_q@#P{wIUrBQM~zhO4VB@KCm%ax$fq3rth7m@!?R@?=M!9Tg)&#W&w@2kdPXj z#fZNB0k4zmrM#Ws|G_!`Q#ds42d^nvBDmdez*ELd)Yb993wUg=7xNk6$>P&;IG!4a zRB5hf@RTYQaQX zE#ZC1{S4j!uB0X6*rfjKJ!E^{lX&WP&-)V3>ox60YX0Knp9zNs{o-ZpMOly6E^_|W@! zw(S^(v1dGw3z$d!@cxQ93r{V^O@Y;@@>%c0OK%%c<(&5f<9XBZ?j)w`1<&HKHt~7h zw(~w;n)~}WJ%6Kt+|bK}+BlQ>^yfSw6`c=b>C>Bk_bTY!kcQ#i%sKC4&4qY8v6A8+ zg!;Pa^u9ntx}mv*TDd8HOh_rZ-5I>{55|nkQwcSOv%K&jse|WU8QM=st7Tco{}H>9 zKfR7}Kk*KA$5ZXy)i?MAp8Jtp;G;k1XDWhF_m1lM;f>Gvgjr)Ltp*KLj%ex+@!8#+fQ-woxI^7}@)p`(Pnj!5S3 zNW7+;M~Gi1p?S{{>S>w>C`H#O3gphJ*@VgRTxj zbx0L24b%1M?(NG9_=4y#ObLv_qOh@8DQps^1Pd@7QYAFS>fLD2G_U5r%5If0Ta2y2F8+n0pjgrO9o`J)|lV_X9T%mSy+&cdFKA0dxVm)yWsm6X;ROic~Dp)kCIdUbcLn?l?^`(km$?A2e(yijR z-BHCx{5#c!)i|#x)veaBT2qiis$eaCD1IGOEzkhfgh{Zxsnuqv3Y_A$zXAZ2sFl^W zsA|v=<)5z;Ka_A6IaU?FyXCi`ir>rneNg`S`s#;OUEj~1A7FWb0y;4eEsYMfC!{Lj z2vlgK`Sj(jfj^hWsz&F93kSc*m=;i3cmP?huBi5HHIEx=K z=yJ>d@09-kzq{~1yG|8aWeX^+h`-JHu4?@K7x4eF?~ecf7X{F?+-+<2KTvP}6~91z z|FKO-s_AnaEsy?!YApO}&r9W>wZ2sTc~sNSb^aUGCH{byKLIap30=+ccdF@Cn)A}K zHl9?$a@LnB;Y+PARq!(FOLacl`q2dh6t2LJvgmcF22B+~s|r@*hc2v+ssOd^d8y*p zwZ2sGZnV6Cb(9a*k?NP+8@8q^w-;e1XAqTTdcOU z+Da!mq)M$5dMVo1p1;GMFRsd^pXE~d{ZSQrp!HKxtx_2Q)(Az&1n7|Z&9#^N<4v>6 z{ZXlEqbz%o{_a`Ff1+0q?;acf->KiceYwA~mU-X3HhOUtzt3`M2{W=D8?Z_Bxb0s2 zQBe_Q@I$d5vih)~>0H5I*}XM9B9}v|XtS&@RnW2gQOk>~&|{WMHIo*hTGp4MYNM5? z8u%HMf4g;o<>UjaxNDV6U|3+2*Qk<8Tw(*LqN*aPo z^^yn0yTrzm$}d-fhE?EFdqS!UF0*>Mn#$BUkOz@*P{IMU9TTjRgv2G zs%QhtrShAUV9irPO#vDT$u@#i!CUyD3|gVepf#$+_jXj*^+t6RSH zbzQ1GpITre46+f@?1_J;N-*8Vlgb}reX0DRRx_+-S{-I}xYdFYHZaoaC{%}331wMd zsv3+z)ly@vKi+D-)k&z1;;QTJf~)3J?RhD@z;}-Y#Z?(kv%I*9-)p&4!Tb54gdakc z(M-YrMs@uooR`jWB4B&-b3y19CWutKxkCmmaj|i>vq{oiAy&G-esV z^&PSCq{{bm>r3T-g=(4m-s;b&%6S@9`F=-LLGOpB@=NkV_w(|o^1aNBXo!xpL#Zd|B0#w_3d?1wbV_h_|29}l~EJR<56t^ zT3g=sMglt8qO_u~1FD3&+6dk4d1=60dyW69kkadk>o?7>u{X%xHg;bdySS=2cUUgf z<^56d0hUYU-)a5gs?wxcUR>2r!_kGmP^I&v;MzR-8g0vPioNW=q6MJDnfNgRp8eP z2q>dB?1_J;inrZfxWmT(cdGb1ZT#IfzEu1zs|9;(;B6a0stE6(D&f19OU3tDzqpFO z2UiOnu;-=XAD~L-kmdiP1?~w&_|QfuuHqltgpSzrQtiUNw7ygseT6Fi*Op7gzp?(` zsrC`R?`?$Qs)SC$tD_Y(gsqCl;H##wmP?gUMe9pdz^c}lDt-;?7uT8^{~hfKscslO zP$k$CRoVL5^HT9UtS?n?p!NT6)ZHMblE5`2GznD(lWl^*MdC5o|h{AL)Mqd zf7tr}fqL^_5j8y?wHHd&gioMqx+g7{DuczS&~mHKpeo?=f>za%8?66#s;=A=B!4Bi z*+!Hq!`DznD6(8C|8=X|t?sbri>u=8vRta*JJ$c-^pavH{AO}fUa?Aa-+N%C^FFHb z9k9`)YM4)~FI9PuT3@Q`j#)j9>eM&<(0cR}s`#g^e*sneKT#d1x3hM;LxgTogaE1@ zin4wgIUG_Iu&nj}POEXgzKz$w#w)JM`)0U?RZGlt?iBoc z^##67Hi6Anx7Z7HaTjYU*njdhj;>KW73@FzI%lZ&J&rCMgsCOcFeQ+V>5!_){`oqG zMp%KVkyc^q?ti|{`NFoym#8Mr*O-pKQw^(szRsZ${`orRpRaSgZ*jN*|MPXuKVRqk z^L5TYU+1`A_x$s9j<@^#=j$A8rZ|GdRQsn=_|oEE<0zhd?M(mqI_ICSbM&>2#=<{e z=jdx4_pu!1-#=gHTt;hX`H24K>zseS&S4yQU+ZYG_~+}K;$QD*j{Ng=&fk5FqcJ1? z&(}Hse4XRoO8)seM^oaTuXFfX=l}0t=Uo23f1R^#UNe7ge2X>}xBdA2nGIKVo_*KZ zVO0)q-S<^V$Mn5@ee%j1TRl|c_4_K$$=KcQ#uw6NX0)5xwdt+pt1X%P+T?1lj@i?1 zXqBHAj6P{P=lWwiEv&SB(Y`01=)djhDy3`meCn%v-oLS1$s>1EsS)?ys;V7^?=ik- zr__#n;-0b3EWEY+b35Db8yxI3eA?!bO$IeSIO*(j`lWuq?~n3-pi7KD*Wb%T<@w8* z^jv>O|1z^iV7)+09$!hN1#A~sWunIdV#fjU#sZ!(MFKkoYK#M{He<#C#*YUa z5P05H84svE0WfVmV2#-)a7Z9-0^lVxWrDw#|7CMnveq=pM_w`aOV*jAh&eHl$gL+5 zd4riX5x&uUE!kvJCLx>6JjoVwO7f~{KN)$=ES79F=Ojg@`(4O3vr6*1@fRR(m_Cy2 zW{u=c6DmY@m{iG5vq7@UL{C9>n@q`Drbx2KRGf;uZN?yG{N1YSR0_A(RJj}eu9+a& zXZA_nGj;Ak_M0h^_swC+0n=z2@`1Tua?l)=95RXbB8SZ^$%p1^$wwyTKICIFPjbYZ zl6+#?Pe(pAizT0#bCRQ``~Ar0W|ica@jrlkVfsjpn>CUzP3S@7E0ZcYVKzv+Y&QyE|`QD5{%=m{@#fPZkNmJ!v_>X3SvAw4LB|En@O1sXy*Wy%?4aBrv%Ol^l$)w zn#B%a<)eV$qyCNo{s8dSNBuob?>UgQ5Pu2dpF@xuoeRh_fU>4YV5dNhxqxzJ%v`|ud4vuKls8r80cy_&Oq&OYHv0q)3B=6@ zR4`NK1Ewzk92bZ&jTQhB9`|2r9$Vn=!0%Td6*%!YF~ zv|9*R_5|Qsb4uW>K#zrh%4YFGz{*8{;37a3(|r-3_mhCN0@aNFNkG(MK>Cw_8fJ~a zdV!e5fLbPXF(Bh9z;=N;Ci*Er>=HoUQ-HdrNMNTxjU|A3X3P@6_@#gY0u4-+rGVPY z0MnKN8kv0phXmr50d6u=mI0^1_ECXwO;^Cdmhl;>=QU75cdM$HZ$b~!1OhM;{rWQqcwnp7XfqD0D76D0w)AozX<4K zX1xfQ`x4-^z#S&#B|y8E0n1(j^f#vj&I@Hz+%9R_XL91HNiGY316cW0x*@a(C}%2k^%YoA}ef z?D=mEdTrAqt3S=isNM994}J~Q`f|sjOSe3*_3I~hH`_U&>*i(~d;ZuvSi4=~mD3ir z3g&(-{J$+LA{9scFbQ#v(x>fMUDA3ojZ-t!HrC2dTqf3n-W+}Igi=U?|q;~tC6 z&Ifn%PU^I{E6kBc(HQLZIeb_xvNvbz5$1u zbdS#JbZmW>Gy9x}*Dgx!dRhHRKZd`pxV7S=wXV4SNkG>v2E3USn}J{pWZI) z7&7&?P`qC%4eH$B!)q%(^Y8vHZ7RDsp z@x|F|+BWkwt#sqPSuJiqSXk@VR^8sd=i%FXUGvP_1Bb?z`{4JRDwlntZ~DSk-z0r^ z``od;w|pPi7F=m&yy~x5khb81-&$6$yRX^y8OtkvSa-wHS|4_*)^1E@T#cs|HhcQ( zx9azZnwng(*Ow1&y)3c+yhWY*9NW7#wdyB7?QZc+lhiF0ekxYFiNzc5!PhQtc}u9% znym55&L?kbFze^o9*0V=E?;qeYQvw}PJ8R{>GYnv&sBZ7Vz=xKSL~0zdFE$pdv~aQ z^q$9`|9N8V_s52#-ZIT!W8+xo=TCR98*t_6z^6T){jTKqV^;O-Q**{EFKisKJMh3` zsjJprT48g=Cttm8^vw^Rh`DrVg%3~O`$Bq$Mep3O?b1dkr+s$kTg8eu+3eFqKKmLI zIc^g(yTDA@1X#Hha9m)DX|x&8y9h96GvID>R3K^_p!F8OG&5@pV71h}fVBcMjlT#``%OT45nz^CBXCF{ zW*fjUsoMb4cL25v%rVig0}^%u@?HlRQzURgpvD`3d1lNTfVsN>2Lu+FD%%0=b_1qu z2Rvc+37i#(dlRt8OnDQq@-4t|fyJiL4nXfcfH^w=OUzM$sJ8*FcLJ7~Svvvi1x^dB zFe$qL8Sem=?EEmH&k{f%}%I%aHPiAjgj-~al{cS@V#wcq(}_KTOComsEd!bjT1o$oaK zV21;b+*|R7vrm`&@r410pUl~{V^v4rrZMZM9yYVv#CJ3o4zlRf$!Py;m!SiWjoe-0 z{gdD3t-fnPrg=JX>Kk`G@P0U<+$9y?x_`%xGSk=pSdi3m`%m?pXKwze=DpvQdHTba zDH(6X{BY0gV#V8Dym)K(Pg>=FzDcu$sIiC6<$dw)+`xc>Zqxg(9lmgQ@Q04ogW*S- zO+A`ctKzXQUs#a-sgv2QahE%9_-68eOZE@hw{*r;T~C|Uhy1aoUgTU2 z$v8{{Pc8-7R^XuV9|W8bNIwWTY}N?O{S**$2=I|f zJp^d?8DP7>5fgnFa8@AiFyK>DB(U-*pvH%Qqh`#9fZm@24hS4GRXzel9Rp1J2yoo& z6Id@0_c7orGv#AI#utF&0$-a(M*y+M0dtN3zBNY$b_%rq1n|9?^$B47mw?j(Cr!$y zfZAUHmVF91Wljkk`ik9q&(GMs|7;e22AF<=7{Q~&IBmKg1tfe8SSxVG_&*1n5J>+V zaL%j|nEMSN<{02NlX?u$?pwfifeR-33&2@{ye|NMnj(Rf-vMeI*8>ml+di%bp6?+C zL`noq)h{7YKR~8^2?++wdm`&a;=Y2E4w$K5K{8H4j*El>rtt|#?2nK+Cm>}5=5vvq zBCWrMlna>IUqi;9f}9p9A27Fk1F8KJWZ5^6=z#f2+XP|>Urn0p!!^8?@-lllXo-LHV{0@s@8lYp}Vc_#st zO_9LLGk_XD0;-rXKLUE61so8lW~!V5M4banI|Zm=_6e*Pi2Dgp%S`zRkZ~SxT%e9= z^fMs#H^7{q0d>t$ft>=ae*x4pvwi`L{~d5zpn*v_4XAwquArgqFDo&GdDnUoWoBtspp8$&JWlw(A-3y z2b>kiI}b=UMFJ}WfEvF6Qp}j&0KH294hXa~RelFVl>|)t9njkB6Id@0cLC7WOt}Ea z2m+1^v^S0Z0K}F8%=rV*(Hs@nDbV^)KxZ@SPr&%nfYSn9=cEK^ji^AmIm-e(_sltk zdkEL`@Z;ZR7W)CyLx5la(8F{O020ao)(Z48{t|!_0_i0Heasqxxn%({B>{Js)RKU9 zmjJd4^f%E#z*&L3AmC0@B(Sm^U>d6=k3IWJ1A1Qyh>HRYHdCSiQRM;01=3BU5MaH) zoDg8BIVzBG8K89;K&F{h1`rz!I4v;Tq?85h6j)XkFw&e77=JmS$0dL)v-lD~?FxWk zIlvgxy&T|>z*>PEpFr=5fVc{PyUmmefT*hh#|5UD zMpppV3(UC!aGyCUkZ}#5bqwHsGb;uVTM2Ml;6ameC19t(vMT`(nNtGeuLbnD3NX_w zz6wzLIzTWMFw1n01soDsE8rM^MZomRfb@!hIcAMO!u5cds{zKOUJW=Quw7uDiM|Ff zw+bNd8o&ZmB+#xZphhLY6J|^$z*&I<0*g$QYXK{(0j6CGSZwwQ^sWwwyAH6#Ot}sa zRReHbV3}!D8L(bpPG!Ifb5tOsCZP58fK_JJ^?=w~fYSocn3O7jodV0M09Kn*0^@4~ zdQ=5GZx&Yt)UE>vRs*at-Kzl(39J=($@r@Srr!WauMSvi)(9lj1;o?4;3LFr4%~YukSXm!1tu~;@>=WqS01#IP z@Vc2&2N2Z|a9m)!X>@e^Y>)YP~=Qwjqn_0czh&j9`6Y>@(f#0}ctS71(e54FJ>Q0O<_?2h19QgeHKP zhJb@6wISeyz;=PdCb|(|Zag5b5#S?JB+xDaP@^&6h#Auua8}@ez^A6lO@Nh&fN3`Y zj+%V}y_*8!ZU!7PQ*H)CB>|2L95;>P0KAEs_J{*~WsVADGy}A50{Gg@Y66ID4md6F ztx4fca%QK%GTvv&HsqAR_%NVH0^p=soB*hu3y#FP@_5Ef*I2sa8}@ez@Mf{ z7_hPxU|N_xCLgoD7iN#yyEP;(8B(HznVJlVY6Ceg5-edFw}7k{nbQJNx`g>$B%>{) zbqXX@!pu&A#I}Q+7Aaf8+;R(Kr^vEfAmvJ!pG3yDhxBL(DPO`o)e=&>10>iA5?#XF z+6r<=WG#fxU;V8q@^r2@>8$}VW{p5XCqPUaz*Q!-4d8^pc7ci}x-DRCXNKe0whYH> zOp!plF2tzOju_XPG3@|n1r7*QHdWdKR(1tUYY(Vm_6hXv28inbsAi^g07P{M92clz z8g&G$7nsu#P|F+@$hZ~Ix)Y#|nbippdmG@iKwXp48L(4eS!X~!b4pE&ma8}@eK(eWFJ78sBz_i-|DQ2HQ?>hi-Jpe7ulpcVn zet_cwtxcnzfb{}%dIH*-qXHTI0j+xh+M8Lu0I>rArv*Bil-_|}{!V6|q_a6C>0;XV zLAsj7l5Xalq`T?f7rE7}lH6wecObW$K9U}0jijdu^+S4@R7r2MLDI)W_ec7gOvxRl zNYc+#91zF~R^itlE-{VL1Nv_(N}A0B0#U)euyX5WjS3v|o6Cj=N~(1S295>S^Ji$6 zt|RU>enk$AOCK~kb?|WC@^wXn*p&z8SK{ybl-6xJT_%lHXBPyb%Edn9{(WDe zo~hl2KDdqud;Axpm7%>jpd;$PVb*a{N!?StG`#`{plIBaCqZ$IN$+(*S)| z+RoeLUq?gUSR&YQv+b6dUd!GyBTy;$;;RBTkr6PT&U{p=aq}dEQKS*~JDd6Zuc8N#K(O zfh+x90d;<&(ke5|{#Vhx|IjFDTzteGR1KUH^+ zuZmr+S6}KlVY-t4YhVFUqQVMZb8j9x7wwRVJ*rW$B2#UFv$mZ(0_4!&DX6Sj);q-nCQ}*w#Y5 zaf*MwYFInVqHQMX`U;lm4OA*%4eTn*Dp;oB5Np{Lmeqp2tqV9}EGwvu6Zz{zy~0Z8 z>tOY4#H(Oxxf`&)n2u{~yt;(%aLHeg1wGuRMv)2MA?S#!ceRRWH9%ff{9_8uJxFa?vbMTB)Uv+-IGUTj%&%Ti!Z z5q8@@OhBc%1zTn#wy>-vY=vdFSk?-*(y~^lTCg>?%Cgp|f^D#;Eo+A=53LiA64p%X z5P8>HJDmA8Vn-XXJ#2wxoh|DCdw{T}WLH!fcf|S;)|Bjq^3Pp(PAE4Ht@Mi58M_@; zRccum)xW2W*u%oEM2NGjr)Aw>O)TqWS$9}Xn5JKE%h>h#f;L_s%Wi`WR0%jDf2?ym z;UqD&f8<4MdY6G-NUQ1B-(K94aAV5`Sk?>nET-d5nDXn54H4kbi`J-qEJSp0+IVzP3AIt6-YC zdS{zX55!gw(A3R^X>z2h{&xa3PbXM7i0~~iO*Q>Rk7_a)YiXHQ%+mO2*mrh{>Ah=; zmyVr;X-eK_*$~2dhm#I1h?%gGmd&ti7)-AlOFwd^6nZDECI z!D|*ijH5fqJ;+weW)k*WR%F>DunUA$%Wam;BK(JCuUj@7b{JDF->}Rfd=%5M-D72a z85+_Yg`><5ca*4VK1nH2YTXT;OWfcu&_M5mY3bIRWwdu}h-tg{1>;BC!J1ettTt8$ zy8)|<-H2&xSRZSEX-n7$YmD85-HgRyO|W<@0ZYW1Vo6vty{)J@fiRYgwZKxaTd;vo&b{N})ZN|1>dU@;y>`}dCb`Al(&UQAY*WAv;9>5;NrepVE_hX~6F<3U1gXLm* znD)BkunAZ`HW8bQ-G%8T#f8`uY$P@c>yNdwGVEOY45AOuJ*Qi`}7g) z6YNv$Gwdk#F182LTdTF-)vxpDccAnuTiWX0fN6VM7rPPDTY^_G#I)w>KB{}9Zi!ky z^*;c+i>4M>?F_nMy7TKrMh{@qvHLLXd9}yA2fG`ahOxi(O~vlVreOMe0c~%!oz<(G zw1w4{Ra;bTNty)Am%`(IwbY zOm`36EmmlQuDgL&f35af-Jiv@dTX)PZA-T)-Ilald>qrwdm1(gn~aUeN@682AND5& z51@abzhSirH^q(<))W0#n0AkPT>nNR^a!T+9)FB|gy~(%uVIg22Ahk`!{%cPu*b0{ zu!Y#e*b?&9%dQ7v^|1O_U91asE7k++iCvGyVK-q3SRz)Z2|sFK+ExZIy*oqiPyY@3 z9lL<(FC6|feQqmpTfr8BuVSxZTd^W+1-25Khdqip*kbH4Yza0WTYwpCF7^br2wR9f zi7myJVRNv@v8S+I*iKBp=d%NQ1AEiYaMAB2ZNr9OX;>;Y2pfoL%Nvh%z}jQa(lAeB z&tPfT5KMbBZ7Q@I-pu&cJJND6y<9B=)4RJ4w&jq06r-(uPz z{)m-<>Gg8m8FRN{dTHlZ*a>VO=ikNlV#Ba8*hDM?n}ChNvavzfSZpYkgXLpcSS~gg z8-a~3;72Mp4$H*Su<_VPY&fR(F80RyV27w-by}esmPJAI22y>l{tmVq)B8Bz#D-(p zn0B$vFl|y>VI{FBEQFQ8v;i&9j&l#T3)_upWBD0YhX^&XTG$O(b*u(f8>@m<#j0VI zv1_rbu}auAn6}|lutF>!n~0Ud%43&eWwD_Q%T(Pi1`$ZZ(y<{}1FRvIf+b;5SO_bF zWm5BDnEo@0)wIU**bCSi>}6~%_6oKE+lXz#He;`1uVGuUB5WJ>I#yZx>FY`COPoE} zN$f}L6!sIQH~f{rN@8c}g7cW(JlhYu9qWPJhJB6gU=dknG zZ`ga-4r~|pCiXMdnSyn}dSZ*I&{NnFY$>)3)B9cT#in6;*=#%AF5aVL`?2@2Yp`LI zO8@P^Wmq{ZK;}N|0`ejD4)zIl6nln5S7Qgb?sNPi!Y^PiVlQDYV{5Tju=Usm>=>r! zIz5nP>UNPqU??^OOUL?R2g!INHXa*+eNF-PV*N1v*DSTLK4hpDDHdXJm_85E=Rb*< zKDW`wG%;9ptQMwsy6TOyT`0g1bRqdXTELG7Fg;Z2Q;7>?b`D!g;+;`_0?`}04vWWX zVpXu^6ksr>=l_OSBTUczdMMRnx8CfiNAv}lUc#uyYrUj#1-2YpkLgLeK<}i~Ya>Tv z>DXZGfA#hqU{NH^`|Qr5D2j+=76c4uMB)mHsApEp=b00VXW$H|X8-{cD&|CiAO~hW z14h7{PQ^241r>9~bSf(1|E&ouBHR~#-}Co*UVEmyy1Kf$y1Ke&X6Xm?2O0yswQd5u zgw&;wRz~U!+(Hk!0`nkrU8KA{ZU{61$^r+G&%54i;4bh0I1Ky=@Wz67Iy?D1hqpJp zW!eVRMny-!0k8qA0p1Gt132vO1C#-3Km$F1hJYWy_ay<|#rgt%0Pl<%BTYfd8`L0R z0MH*$Iy#X3e*k)=^q6<8{2P}1`<1*~)f0Y8S1@0xTT~tkLBKK~28acCSF;4*o$p7U z|9=C#Lk&RB1^_*9Z3*nbHE%TE0lbk+1I_|BQIR)?Cg?GLO2Cag1D*gy2~jYwU}xh% zAMTHacpRqzVZc-%0^p4yZv=Vc$AU0e00Z3f9*_5Qd4MAHbrfX)SwIJrGam-?Wd2Hh zCFM@sgAX!D9?o20@w3GJ90mka3t8O&K04#Q3rAe+$&RAO9AIJL5Q8HQ`+1%C2raw- zGJy=>I&c->X#NUt8Mp*o1TFyQ0gn35037*q#D5Y%91<=@KnHQdkC+VJ{n1|^jQczF_l zFCfVUJ^?wv2SBOLtn$SR|N0TP%<*S{S1_eIFEFeE6;fVkz9Qk3kYR{>Wi@1aUJbcP z6QsrfuZ*RDGV*;{q^3YQpgf?oQJDh`XJps|TEH5x1k3@JTYjGSmB-owc`PUkX(eBC zISbC6;HBCIU>OgIPH?q}$ssINatR!C1xV#3y zn_LE$60AAyEI1AzT}BY^$9KhOqf4YUMW0X+Z@@afL;x*Kk~0zU(FkXae%f@@yS zYvH;RQl6_F02kc1M_L7zhN)=}@FW!0(_P&g0J) zqmdB|j0eU6p+E>Q5%>)l3rqmU01AzgU$7qM6}(rjIaRKiKl2msdHj`vg6TBmPX(p` zOw$iSh9R8{L;yS#{Ey2c0oFn+(imVnkOB~}3)l&41EPT?z+zw#un-7efdA$L^MJX) z9H1JQ%|to_m<>b$vw)?5(g-tWW(8@t;(i^l7FZ3e1Xch_ox+Wy?eKqWoS82NgCv;= z-zVZa0pNTVI39=tmdW?OBjqyAXQ8$S=no{WJbwxpOg$kq80*sWrJ;>uR-;FdDDPJ@8 z;hxJx-%pMKf?+skA3)ZAxrp!CA9H#Hc|75cB0Yn&GjI&oe*(vWbl?PV8aP`7IA1Bd zhU*(ZCcv})8Ss=x_%1GP0XG53YQKKHEnnY3ngu)o?g5X1RuJL=()++8;GvxN9BB^l z0mug418;#hz)RpY@Cx`Fcn5HspLv8o;eumQ6~Oz}5&*}ieDuY8T8>kz1D`?1W>Oi~ z3N1(Yr2%_D3)lj@?`0kWU;unYojicu)E6KZ;By`>S94&*%s4~C83pc@Yb9mjIACUa zCFOeD2n(Um+2EQRvPNnFlmU3#$n_ZJ03WgPMlGCoY`m}JxU@WA22?_2UKaQa))HW1 zzGnfH#_Vvd2(IKQ0w{FcLl%rRpwMzBIo}be$VUlEfs(SMl>jDm0+^V~oB>5k3N6#{ zHP@*IaKlQ2yy^M@r~o`y*`wxZt`L z5Z(bdd_>tEV8V_7A6N1;;XQ0ufaiU0q`d%6`vPHrGiU}P9RLIXJjI41<;Ho+4MG|S z34shePh$4vsT9N;<1gp&bgunX7$YzNi@e*hbR zb--$16|j=rM&KPQ?xZ=e0!RW1vW>@m3&=r87Xk}_`M^A&I+~n|lT>A*B#D!}=C&*^Lc{w!SlBZkauF)|hbOMs<7G!O$U17d+VU?7Cy8J&o07L>0C z0Gz)T_iF&|FE`j4c})TC9P4Qtz`}0^HUTX3Ms*u_1~i_Gn=QarU?;$pnBWMI3MfiF zgzJOA0boC{4^R}kS5oL6WGM>WjqCrbLes#5m8$epu|&2??q{Jswkx8O`u-e71*I>h zuqr+!Mn3BhWaKp@u8{l;+6DjlJ zhHnD50j^U}80N=x7sBx$3%~@52DpHG$!g+WaQPE}8+Zo11G0fnzzg6x@DbqrmjIV> ze&M_i$jbqk?r*>h2!D(J-T<$G^1v(LJ-`G^$dx!{8cw+q=W#=P&y9Tnasd|bE5M!M z;ZtKMxYsJAd~k0B@Nks|*fgi{_$!l{Dy>rO~{2G0PPmOIBCW3L_$ECj0aYRf(P0mM^~1_NopV1Rw{Jb)#4 z2C9OFeKz~!KY+FX0acLC0v-a`RjvSdnMeUv0doPKl2Et!S38@6zB<4`wHR%C;-(SM z1gHmi0S+kq5ou$fCQt)lCOV`Fy*+5E0JV_EesMak-ErLz;QCzdhiiqWH?FyU1Hc#X z5HJe0alw^bfx)Oy2dN9-2CyL9SViP>Bg~ZZxUu^3JvYJ)D9o9*F1;QjScUr(AmMhq zp{N1CY`6;dnb~#$Isrcc?SXbcGoWyvS|hI&&=&9q+5jzqLVYr5jy!ZJJikvZkimUo zffOc+FnsR_fmm)f6YiHn!;L5nD0$o%UvrtF57r;+r8B@C=?HWXT1q|P9x8;KD%TQ` zqya?}JwV$N=mlKkhY9#s+9##mZ$dr64aX`GdsZ7CYdSEfmRi-v)5Xn2hjuU)CMX%$ zwso8RTBF4%admO?aB(&0L%&ZDY`jK-pbQ8$#W!3%#nrwx2vF<>f>4w&(<;Ye+jskN zWuCrd0lh#~JDxITAc)ZPPpEKh*?ACnp{BcsK{7c_6m0ODarKedv0E+$x+!Lr2bUbS zjhk?HaYYLT_o&N6!2>_FHj9%Fv=8K7ycCuLdElz4Kevya7a_8BcX5;Ed})-#y<)t*P9>tz^`sA9hDXb76h53QN6Kfmw2LZlu3_+sJ z1s#vZ_g9AOPCXN7gcR}MFB)&m@2l&~FFPa4ItwV~OQg*eqT zDnAu>^QrL^B#G1$iQQIIHbrHl&9#m!Dj&UDt@6OYxVgi_()=lchuWz$#ZMQk<=XUq z3KaA$C;2XiCQk?7PV{;S6xk~pbbVO%truS`$hp!9oLh2|bWseyTkRV+0ya9^q$2?I~2v`FC>d~oPA1IbL9HAARbYDooYqCTU2GtjL( zD*F_+W{e@=>H9umf3rDFpA8ai&5b9Ty*ZVc2@QHtm6@2A?Wv+xV`JA-reBl0{rJUE z^CpS(t}f{4uQYciMrINSc;Yrn3`)1j33?|Ih!b}X9Ree}7!a^CYM3*!=I)X&W{Tr3 zPR}(|ZWgBgRuEvth^Qa6BGcXJ;~@~ZyTI5GuAziy*c8il`+aU7e2fxL7fc}pbJQDE z?H+)DolNhmH%7!aRZS49>R7sLS~yGa(0&4e1qe(oiQlsn?C~Q2;j@LdYI7SpXsWSrKwFh;Bq^@XteWT76F)e? zQ%zJker;n8#>CT3;=iy?kGWNMHtmW*chvr0EvZT)Q1be$Sl_Y=av1q`=L(3Ckvwp~7L+VPi=YiWW`8LJ+&&+e@ z^6rc3#VC0jjHd(h&`D{oRfN8kuTV$CoGlkN)1ORLcTt&b&e)v77Gl2mQ{(v%U>KEO z0M_#me8C1H{;shnZBVIHC$$Pv!k`fL(R`*$qqd8XbfB6b$1kDYM5dhu4t9A8q;~VU zyksx-MESKOwhFo2RwVUBWwjzf08M6=vIJq(5ww6;T#E74`EGA+iM+(YPsGoVf-Z$V zbK*sREktsL>LAJICCQb4E3=ksN>%a;|FbUVSNld>ICxR0&vX`j@XCYJ;(_w(quzVz zrO|D@VHRI9gX|Y$ah^)U7DJV5YD=cwuFl~VHYbmm%a($nY(u{O|Vd)r)ZV9?B9UI(w10 za3h9bg{91el%=eI04$20UeDuSEM=B-C>mZuG--K}6W0!jmA*lLxyKdJj4>Q`c?`oi zU2b65>=v2wa*GmarIXj$0$pG}av5312(}ecVe)Xk5g&dr+z@Mf>V`Rf0;GQ|2Iv$D zn0Ijm_~d+HjNrs;>y8+qDSk@iV~o(HSbn}e(K36YA_7jtD;x*?Ha1Z7ZliRcpHF@G zc9*HjuK|K#xKo-ED@@V8gfHV6eZ|CQxS2(pR27c}@*PGnyGlC_xAi#WkYxvn2CR8-IKp1iQVaINcAJ*u)T&S-$u1BxdB9gSKM<1>!$_%-8jF~zz6;gOSmdm-Cjl0+x7AE3VMR~G#LbH3tx&y8``?Q zSku5Mr%!B{XZ*>pdcq#QbdIGM4~oj5=$$^QS<}{&F6b%ZQR0Y_x<734cK>{?xxQpC z*(XAZED&J-74g%p14%Rfo@}cp$fJ%RP+K*iphQUFiG8Xq2&c69eb}@0rTz7U?HW)b zDAYq6(C$Qp)!)puiddw6XeQa{ty>3{|KYyRN25Xrh4>ZQ&t~MC1m`DJ9C`Cm0m&zc-`(sB5aLYMPN zruIjxJ!!9}sDl!2qlQ^E57q2@N&1o|&1oLj?JiRUSmu^0SJC{vp5j-O@Em>=J?2eP z!}ojiCE?8}6LsyDfP(utQ?qe!-}3dw>nYY!xs_Ns_Q}i_*MDAV=-g#9^#tc-=7%0E zTvx%W#Rq-KJ?hO>Kghg|%KOz!RV_KCCn$}x9hOVye`;6Kq8$_UC6DM2RMqCRlf=?B zEf)}3a&b2%aMQWeg$r#@Su4?L$M%xKs)bLeyZCOk$9jsoDB&Rw7q-;$h&&AQSL(KH zPcExq6oH`N<{Q_a>J_}sS)->I*Pa4a2@&!%mS;b?t`^Q|i*Ny$OYB4))?hmA?j%j!YM)n?8t2>6Sae)&928$c37la>`(1`BrfGw# z$t9vo+xmxKCAb@WpvLPlZPcCV!Wwv-3Y{r_BRr$STEWc7sWVQGP@Oif5F3Z zx~yfie;sx~vd?>iYqiHuWU^lLo&{TOtM=_e3)Z9M=3VIMdchz2_3|5F;|HiF61(qv zAcxj)%HU&TcdM%uLBv$;S;J!9I6iRjgtJHIrJm8o4T7ik2OJi$Z$Fm2U_nM?wh^f0 zCBds3`c3Nr`CT6{&ur^NNdRApVz8du2$_u#LN}kc`@L2aT3CMqx*jd zp6c;EDJvN~>d;@ek>|P%T^C)v6@_gSw2D%-ov=&bc&S{I<{9N0yzqwquFIQhZ-dD_ z>D)$iUQ(E%E9$T*Ux_H1z6l$LMZG9un_xjtHVMNJdw1Ckp%?W^iP|ivRq7gjY2Fr? zqE}z3yG_d_uN^b@Tok02)z+jh9o_<`cb(pC5j?!s^^>|;dik9j(@Ng+kPQT`uJBqT zmWXlx4eFf?#W#`L2rbb&uECtu!$BY|(|FHpAqdoF0kjcX(GCodR;?O!TIS~TG=Bra zy3%s|t=<%CskIdt zue3R%FIty0Ly5bzv${sV?!d4n4Wbo01b6Kuoa&l_aLTbGool&i@K6qf-W<=&9Zauw zz~3$d1$*5}8F0_@YW1fefCyOAJRKndSN-mw z$8-KrnzIwkSD`K|r%H$8kE`x^gAH07a#-@MbYLee;Sg@w%d`vc>9euHLXNk1BXQC(t5hcS{+W6HJeceCnpKAw}$LHnVEPXT5O*w}o-+Q1U}l5r^ENWzMsC*8kt?g6AyB(e_k_MU$PG+ywL14Z*wFl zEbmW!$wj%LL&HAwYZx&oQD5>xuH$1ovf3T5yl5^7m*$u-R+9V6;IkL1oAj-zuk_#a z^*<0UJYRMHTXh#N!nf^&|6j-TTXz2*w*qy-3z=4dqCzGA%|H}y3raiT|A}=gmHvly zu!cl@KaGlSsOFA6*sreJ zWAeH|6K6hnV+uDPgEJ`M$)0xcQTe3I9{g;9SATf42NNlqxqkr#Z=|Mu2`+1D>~U76 zKzyJLA?H2t+MXe@dp|v4QeT5FeA@RJQXivrC}x6dzz1 z^hODL)VU4!o@%-LFhBg@HNzXH$sx3#>rMm(yRg9%)D6?l-|4NdJ5#QE_HEsxpC35d5_zCQB+* z_1M2@_PwctA-WtuN|mg&#SfI}WO6(NUQUxK;UGHY30`(k!~G1W8;(t%;$aLHE4E|< z2z22fx?eyLrLs1Z>K#IndKwJ}GwJCOPKVh9#ivJ;wMLQB(d%t>$*i=Y6~tu&j4?#! zk>qz6l^r4}_%PN~X~=eH%~7K?Bzd~VGxC_x{Kx1OKWM^SN52;wfqIKE4Dc*GAx&{? zIv#ycOvYUe<2E}g3{p!bFuVk71J`*A#Qq`)5&^bR6tF5G0|y z_OxrbyOjSJdBicU(%~WLjw8$-Nga<51TjntmKX#k?rmeH@C2jiPL%sz&5= z0#qxb$oB+BXj2sZd;*hwSCrI5{f@rR-&Y^=8j(G8!v79N(JD~rO3jw0!=R35ss@|= z`j=?Ra0qymgA#TF4~~9l-AkR;4M)JNQ-~*Zps6}{HXSt6*l7?RdQtgFLIn*+7<495 zuyhjj586ZoWaYtSQ&Ll1|4CUmr+3FwNjIGVbzCc0mcWs+r-69NFF#GQsEB8B1|x$5 z$BY>g7@XP1wbQnmX>&EIl5-_K;uAFsL$E+RkEd!jh}-Z)&4L{72^tDc7oMsk7Ezy* zPy(XR@h739NrP!4?zKisqz*Z&o$D>wrr9GJi5Om4FQF`^s00drhPuk4#li-|S_OlG zLnatWoh4-c7kJ5TU)y+sG$+q_ng7&1^Y4;SEc+--xD`t%^e@3*_ZYm)m{*Nkv&Xio z-df+Z&V5lm98mqm7p2$-UZI-R!3`9Ky-IdSx_4 zfI_`BnwFh{Tuox=4A&^)6w-|+rK`c+7*d}GZ~Iv4a2k|VW2Fs%;iILx;W3-bfHyk= z44GRjO*<{r@CyM2`@f|~IjnwlbkfN9tEVn9r6k6zWs;}vejwX0{??0XVo!JvVQ_01 zJ?B>HKnpxE7rbAcxZ7TsB2r+Rg#+q%ay)~H=^igVY3Q)LYe?LQD`(h=;P3;Q^eZ9h z*fP(#*?}z=@fJZChTR*(ks43KQCEF3p3YoHdNZDSo#S)UGuWcNi>Fs-VEbRen8iM1 zR{vdJ|3$EDME|02Xxi_r;(9C`*``}Bm!wDy3Lf-w^{K;<6QnF>;kJU7(?L{LFJ4ZL z8R+3w)U1VO`n`)AH@}oEp4ISr!rP#m%gF>%=~M~g2O$x$+g{wh|3gA!J%y`Wa{O;2 zU6WU~Nn(i?`z^Ug+P0Ouoqk!|WVrK#n9u}T0PfltQ1G$l$ocJbubO{Y z0v>n}#uR%J=;%4P{4=27F?e2ejZ0ULI4vl!-m!*H#z$X7SNbMU@-?I}3DoaASf)aA zY`Q&@jk*O6nHFTKYMm$zg z(1k)XT6DB`neDDSM!QVor(B}y3>ITl9Z*u~xUuc#`eCtbmEyn{$bzb27g<+fa}gJD zjpU3-CJ7K*|qCUkrHkjFH5hbk(bei#M_!yT*h(*Rqscp_Iv%HTjCBM z)^EzaFMUNYD{Z!3e()&E`@hq!B8eK-o_PfleLo)*uO&-V%zWVJLQ!WSBUY?`MNvd_UV$H%gof_lO^P z!MFLixK-aIJt-ME;=Om%ZpU}Po@95axMamW7Vno9PuixlXl3>h|W$zSAaV zXDK@~1SqXXN)9o2R_dgWHc9dFM8o7Qw}t#N5zDPfmR8ft)OL$?&X3Y-bmC&;NwYI? z#=jK=rs(C`^mcWZ8$@pxSzwUy&^MV5W}^A?GKKN5;j0cu&g7S+;2&5IcTmDH)cwDG zW=4*CFKM zZGBL%XR_Y1+qA9k;ClMH9k$Yff1q%~cODWC{4_sa`?4tEf!ESvcT&zxM5L)y^A@7B z*7yTKLe0vXcS-^ZyCgl0YU>{}wow$HBC(^?;i2>{T5=1TyaNhedlCUH)0P5S+eggD)5npL^@Gd`=`)Duu%6(A=@mZ8&jxV z7CU>eERRO5_Qq%QiKQXTk`JLh4D97ts-pUCpN`qtBT>Td*`a$~Qz;&GwS!Wnu*I$6 zsw$yV%iD?qi>vkeR655LX`o^opRf48)P*00#I&%{No+sLe8rL&fi z^Ifq1xQFJI)>un#=KP}lxKEPB!J~Qq#}k)2ixtEu^7VddbPwmv0krlWHY^(tQ06_f zP`m;VcADOY@^&7OSlXDG1^ra193MZ(`;I?RVu_A#D03z6Ym>{K`o_i`q&}#to^p`J z-$zeN9g_Od$l`WPy#q!#8x{k3%%whuDC<6=!{vu1uamH0(KAbn3)4Y?g^lOqhQs9Y z0CMP#NWu4)AXV~6=cfFA6%MAEqB}}>0CGNs3_jd#$!fLgN96DtKI90Ud5B)l#6A1w zf!&WBPAHd%`8XOmJjLkZgqzV-7Vn>T;Uw&0hR)u=+QPMtwN(LU2RMP#JuG7=jANg=w-plMiP8~p@ z&OA5sr8DqA#J86U_5Ha&(q-!YQ zQMlz~V^+F>iCPpBudcZpJU>BxPavi`o%X+km?r6x6$FMo85i9B4i2Nluo_J}q|+Qw zYO8^QUD;^=VO{z)nZh>4T}FIXFP#oDuNLW){03=YI`zvDAKmc#mC}oO9_0EKv6yVy zH18>HTnA9ZThPfJ6%UZ4jt-Jv-LqCt0Iz3I5}bjbsm7W%K10P>>6Gv{GMA)N?lUx~ z1P#~?x<1Fftb27@It_ddy07UJ!)d9Lbc)N(PSQi%>$E4OPLEG}SJ$v!t3S{s_8}Ot zujnlAGPb9OFZ%J9ja5*>UJ0Xyy6s*->BUnNv5#aw3q{HMNOk8^wCe???d#K$HUHf4 zuXg=ScknBGY;RC{?rG9wW9q*?BT>{@>v!5MclaB5F+sVKi0Eq7b!_^fz3B;hqLAD1=!|wL&?5C!yRp>TkM$nK>p=|U;PXY^m zIazwoxbQsie~aD}ngRvp`u}DMXwziD9e-<`9BkhDpg3keyu6ONMnAoSn<+Tf9_mtu z=*m0cOff@fO=Uh{{>kI2t#MUa2HIp!uGFC9$5vp@z76ZYJQ~`6a!s`01Ki4UxF}u* z$8|ZdVQI;;8$|)dnTAoxHquzDP15NWD0M}RfxGzLRWYu~yI9v`7m*>k%%RK7w^a6j z$}Ush3l=?CydMAmb6QV7VSi9IlS03u)efH}zZvuyR)({^$j|T`Hkpz$-qQWze(y_v zu7dn^rKcJ-GwIT2RQJgw=Uk-cGHGNkYG!0oRIcD|9(Yrldmqa>@3d%?h^H=HZqm72 zp`QBXO)B#RHu>cyHTojdP`|vL67)srrcyV`T6zXSQU=}56Kr&?vLx5|>(P~A4R2lR zC=R-KP~I6Oyg1i7dHMOKa}}D2C8A09$s!l@g@t*gh9?;!Q+hWGToE8x^%N=jl*d5s zwRQ|B`0#RQ&pJK!UDQ+-Da5H5kwwYirJEyD#D&%}d~oE$9erytC^1FdxV<$~{3hTJ zVC6gSby<{$x^`)xr~rzaO&Vw3?D%QDNFlnJyrpg$8@b17S?r}@ns$Y$gos#~c;cc) zWkEAYF%Y{p45s~*|WgpT44W^jo zLoz|Ct^805L4G^CAj!Y|CGl`na=%^==@wHqdq};Qay=+nydBZ&wV4=EcY18-SJ0s*O1lxh%8HJ+;th?$qxaetDFcNYu5RQUN_esOIq8urNrV(Zp~-w zTSF^hCD1daRY^VzL%kq$zk~*VDp8W^AEc3criQNCl`Ozf9uKwAGm1yPUHNCyviRta z2c3s+i#6vH6<&Aws}G)(>Z8x-X-SR0+V44e8=-qGpHmR0nJ*|2sdi|#q>xUtu55Pb z*19x0124`0Brp3fmTqfxq2-r?OQVC*_Q_pa=e4w97`4Fm$q=)vyLgui7w&^^>R(f4 zX~^;WYce&49J^#noBP)Pazdb+c(t57(?grMtV7QxWn56m#nOM}Xy=l{fmc7Wo)YQ^IXX-!}_ z(2dSSqu)d5-qBDK=>62YlmruO$CM>ojc9&vIjFh#xIo!zjX_|=GrY_7J2lNJwwVZ% zk+(Pq;t{;SCZw2L4#(v<-bRVWwa4B|dnEJOH|};h_2+6Zkd6%ur0;U_)-r9{mjtN z;}6n9mPaRUMF)3r;w=JRk>?j(OXtuMGffToiK3%6C`US&?{oc?OS?qdSrVluC}-wS zF7sLe3O2A0{_|hD-LEuQPq90PTq{5U={eNMN@FSL45SmI68swfwHyko0Nc8Q>U_Rm z!Xj+<{ zSUKp5cnFGd#cl$>Bk+NeZLmpOX0GX1%Jq}vazuIgd1#VWW98s#&;a=+5T(W4pk_4= zrSLhws5e&wsjrqA9|Nhk_zSR~sDqt`zwmqXkrFK+XHV4TUFfsN%a(PnbHpFDdCP_< z``1sDU( z$eW?!Ke3RMi5H7y<$m)$86CFPXp5AoK;s2#$fuAtYFTCn9~h>z5uCKQb42|^Gj2+Q z#M+R@xNgxDI#^wdN+nw3ULV!*3xU`9!~+A&b$6*$^wmaVrMnE08W=^BQdylHviJ1X zlYB)9mg$Jq*-lU5qE^4umlR`MqwMh^ov05RZE>dM<|_5foLucN2GWq5m%zD@t28*) z7#FrLO9yv@|H#5F;C+FjEsWWF8NkYZ(qheuqylo{uLl?S{7>-0D2k=ue^~2lukrl0 zt~^F^PYOw|7=)GJgY#vcZ!ko;XJQ#Q^9={tOyEsKYhK`>pAo`rLlxb2&{)|QKcH(t z@};82N;r*++PKjEHx;|ZU)HDsh2_xi~IpkeaYp16v8=m040`5C5rQzr7d)CdxJ;#lA zvp?>svE$8e#&CbUjeR-u(4hU=`hWf(>k~O?$~%X(la}Bnx`8h$_ioa4Chl2?jH?mV zZ}l7)8P|?ZI%yo7Uv!r?JSU>I_MfSHDT(G`zgv< z>Aac*Mw&fx$yZQ`0J%IVGeUI$cF`zf^uv%BHHCELVqu)OBiqTe~)1vgx6zY^`uZ zd4BcUc=4F-jMX@$%;~BL^7G9v_=ZUI`z~XCnb=4!uM-#)_-o+sF{AS{#*P_6s!WZ& zWx<@F(O`p;pwZNEyrxQcewk7o#mZ&vVjC%3tM-8Y!+-0qZ(8QS>KZ+IaQ`8}-&Ob} zc*sD`6g8-{SbK2);RAyLzat*k`BtR-USs)YP=Gu?Ppp%Yvs5$N-07Ps z2I6n-YvYWBMn2LwQM+22(uU&8XEf@O#*rdAX`HG^FQf64;0?aFi@W&UqG-YaLx$Iu z-b150M?vpf!O&d52M(k<1#Zc9h9xP)(Xaw_x}m8~sg8!_`RWcOS1~M+GIfI{zD`Q# J3{6Y_{|A|ym}me1 delta 62341 zcmeFacYIV;+wMOzFp@zLLoZSSA|0eoATS|7kRn1*O6Y+Ei1ZYiXo8ATM2%Zq6j4GE z>>$!bKt-{jf}((;Mn$oqs0i5jeXqUOAkXvj@qN#E&pCfNAFsLY`&xbN)%G5;Et+3` z>6_*5X;Q!b&OKKIdmlctcFJ!btels>y4=c5&voiszQc^Y_dHs<#uG^w*A4pg=~2+X zM&O~Of@uSizAEPPmGb%WTVLe!m4lbSm%=&O<1$AO^;`V1_~op=vxMi@vhgQ7vHpsA zCgi0a2wzO>({L=DVfl@cK3^I9js&W-R+cj+`EE z!74a6E3@$p**@Q-+zHc1PE5}jg06nPj{KEx9G$0%j7iIGJZfCp=<@iN`0{8eh9cCy z+$$(2BP%;2%jbIoUm3(#^IF;%R=hpvYGK;QiCGh<(o^`9k$+=#ug5-s)zX}_Noga- zW%#yJOT}LgtH;J?j?ZYEKEk&Ozf>N=9T?=DpD~3oKnq6TtL5$DyaX*^Wf1kRBU~-+ z1ZyNTgH_QwHr=(gy$WSyk4zhvmY$J>uS?n(CQ5!Bto$#=$x~O}UB?^9Gho&H$}7Es z)A7}^$MKax52{x z8SaRQPKf_B6QeUVI$@$S_}^w)t@Bf@T2pVzt)n1~2nuSPo-saiwUZXCn|eR0E>HH9 z(Gykvk1f4weF>{tH@EUG=ZJ|D$BjtK&Pbm)J~t5CWg%`lJ;fb)8p5CyocQeanVZ}S$)-A7W{vixSc-9m03)?zhT~s|Uy^A+K zQea)y_OJ$EL#tP`z8}^&JCW?gI}B?az6@)8ZGe?-8LW77t)B&JTn)B*H(2Gg^1}1- zYhx&b(w>liwzHSP=de4@U=_3jRsm~lxMTfUu+kUBdjopnv~igea(ur1*Lv}H!U|sl zYrq%4s^AQ`qSlrS3>DA^R)I;d7V9aQIT;!oxw%@AeZGl|8O4k0HbP`h=0+ z402|KnzUIq)GO<5%Pod^b-xW?jnB+(JbK*35x&51uM$}qY3b>iS(92iMWKp$SEhOD zI9M%s4i3ScsiLlV?u5+olO|^6JjfQWHRxMd;n^c|-5!kY&-2g~zb)z1qmwcxWRjIH zx)^NXLh6ziKfk!hDHSP9>THI^IGUR7XxdMmeL>&81bTwFb`w(W*Wu=20S zTBqjc=455kFyAVC4YUxfZZAPRh5sJ#y6*(6^0RZYCghIy`HtYL+g4BZiq9B1CM}EI za7I?fgmkv!HwjlcFTwO?Ab*pSc}b1>h1p)Sr^5PN1*^8z;Ii-oM6UwRbJkx{F|W~7 zuh5#X+L$?hymorunkil-7s0C3JnPT2Jl^U}&$)VsYt&xC0~ zUjC%)aZ2Z#Nd#TI56M77^bJ^}Bvjz(FA+x>yNeX|X>`RKbg!53cvg~0Y1!G|Sp8F2 z1@>~h(YOkxKn{*xytQsTE@t#3x`|9x;F!9mEx)NO%^B!2~qP`oC5qCb|=lgxWrueC_4hH4{@9N(Im&eb_$euWE zN``OSGH=wZgEhKVz-k$1@`+O?u;@MLb#Yg86`YbDKhwH*~R{DH#a3-u_oU_UsreDFjR72p3 z@MXlW1vh%wt5{iB;WZv+ch>~`Znamy9=b@^EGvr}B5Hhajn@+|!>Zu3u&((iZauX1 zkI&4>A)0SH>C_Vy9`#!6ht*>z9`U;Teao-F8mwDjUD`E|)btF4pq{wH@>I*?9&rYi zsh$^I2%`6@bgVmHhdt?)^9rnb=?FU|b3#V`spC#^WbuO&W8{Ip)Jy+|N)cTY>20DS@vBWM)qsaYM$)oXqUBtgN)@zF%p;CB6hQ*yPpd zKiyA9@3$R#MlInkdR%U{&lm3$l&zSzbE~(wJO!&=Gq-ugO}1QYyI1W2u*QQ9Y>mfe zOrJU?b0oX4FEcx1nikrJNgpD7)w5nc23Gugc6jn&cv6RAur`NTZ$aRv`Jbfn$zf>&^b7rl7nGNw$>_48eVpqibv z5sKlfCFvO%lNx7c``+FCuNN-5YV~BgYLc7};n|NrJ1xEn!`eYWqBnhSx&ZO!$rbH1#Xtt6ed$szI1@r^3DsshsZ|ZHu*Ot14j#b5? zS7^ckui$7yqC@cCE9zB{?IBvjXwCn=dXLvBR z;fU9BD_{-DdtvqH?XY?}o0FegAM1~VRZa#6+03l$ob}G+iZ${EShX#zap~UXa2AM|LJZ&SCAc6b?pLiM1Mb}JT4r@TIBwXEC9ai%@Q9=0^AM?@$ET@eenK6lz z@N@VI&zhLaBPyS-9Z<(GpZd_(|jxTz;m`Qw{7DkcJP>E%@xOK3{XvzX>;hUq0uZmkQx4 z@$W@f&&|eH%h%!8fTI;{=JPo%s#c3_U(D}T^!zi`4QW+N2RG!`oOIEK-gWB*Hf*WC zuDG+jex;bwow~eVy8XBD8^$!bD#l;TS=>6&-_kkE_jsprIMM&KlNwG8d|upH5{~#Q zIERrsJC)-T{n<`xd}45A(C2I73<)Rr_dADCyE~QJB>LAnseJpK#cdKp%}e-vy{KZy zDT)vKXE~MICi)LJscjQOaWOt$Z$e_6xHe&bo^zOx7o5roiT;L8YC>Z0F}nI1XGlUq zFoxmU*0nlfb#bjZ=dF*ix=Qo+at^mk3>93=q$J;fla?Ouq_$7=*K`*1J;piQJ~8mo zB~Fz{B$&(^GQg=8NeC{(>g;Ce=h}C4txi~OG5)zuYGPt==XpQYIh>g2@8eYNkm!HF zN#*-3XK{zbP-Dhf9}4w5Y35hcqXMgSOb8jQ4rEl^NehPq@0D?ubc*=noWq?G{qvm4of8AUmvaVoj`%w{ zi#sR!Z*mUv{j5_tS^b^L_k3q@a$@Kt^R7F&6m!zz!=VJ$JN5KMPEk1Qzu!sik{J33 zErJ$wirR%k)fmnywU|>#j2oTGS10PE2J5mk40eWeNeJGG)!V6-oDh5)i|$EG z2vuf!v?N_|CoVZ0>WLSR7jO#q#5;$(Ci-7ecB-UA{Oz37ltljmXK_km z=$$KkzH7;r!PGYFU*S~llNkJ@j)rNqJ_(_#SP9fNcZ38-;W2X1w_>Skq#6)k9A~)X zVBfm#NGHM*Si0nHw!xTsZas)`8`ceO7ALSYY}^>3o%Ow8<9VeUFwM?~_5T;|Av`yk>6{0%Fn&hTEYe-`bRjG zQxiiEHu3p75kmVqhC@Yo-j$8(7WOxB4yPsthctBuRBA$S<$3GN^H$TVwD24ybShR` zS^o7->Y&8nar|rCkd`dTon31hR!7&`hQ%-?HcRB-#85I-R}J0v2TnJ4stk#QI<@e` z5>DLX@i92M<)%A0RK zw>#qT)J!_G3tfe$0Zh@%%-uF79YWWiwH_COuJ1|tHrnWcgb;so9C4DJec5Ge7@gcW$h~ z)9||7DeM{_(}zdqI7}O+(?@u;G$|oen;704Ph-;c#q%bK*0oi5{Yc|;;(CTdzu?h9 zOh|?GzuxC#81kD2lRWqs9_wV6gwUs0cBNqo#`Sduo`{65V+Pon&3=40Uc7U3Ktkwc zEG;Hv!lK%Mvb0#TZV+ocUK`E$;KNw$+{{10;yM$OImK`PsPicxfMFYZtM^l}FGa{jH z5!DW|rO5gNy)B8YA~77g5sy;oZH{N5&+xpCOdA#sUCx|uL0F8k4)(%p?^H`l2;4cy zsWLMXcy^F8aAqWU3cZQ5tXD#?_FygctV_WmSgoC9#B~Nc18<514|+lD?WLW=HzfwU zGHE%u?rT>ZqqS45cS2~3EJ|ZF=G=7xPZyYmum#l|>K*sJI$wjQS{8GPXwPGK>NIy- z41Ooi?e)&geec4v5{K@>ix7*e#5H>z&+8`j$R)$Q{_)oOu6Tduo{z_>scT0r+s=o@ z<;BO~u&t0UZK#&&kPQ)PA} z@QO>pE-bT5&)Er~0xZomP9q#xcjI}@X5NKjMn%gi91-SLX7TNbp;>6&Oj6x;;r%&| zV@7*5^$1)OBLTEOY?Rs|n9oBO@EpTeAb7X$RpWsx!Gcj=UIA`FUk>K`mbc(xzox@WC1%cq8-rmVf_i-RbY6tk`2OZ=^hO3#?rOo7KCB{ z8lHx!cNOYQ^oFoIaf4ZS&7Gr6uT5B-qOby!>~Ifu!JmDrSNDqw&hmPQBvGQ(b zYEJh0%MJ5i?^G^G46R4&K#XGU@#ExV=g5%6m@KdEoU1s84#88cSVQUarFa?}OifnQ zgLqx>E>h}X`)sbfd(p;Y>B@Mk*Q0o?-5ZdPv6Pw?b_)lpRiZgIgB$O~U+D5ISv+&d&x7Px@r#e*@ zM?ya#YC?MJN&GY~0VAqIICwK2YexHo;PX){aM5&U;F3u2n(6LV**+n3pDZ_nLaycq zcxr`rbgVEVI^I?OP&{w;X+v0o$6+lsA@KPOr^*A7&`mdbZS~f&kMT4}@Up|9VKcp@ zfu((JIJ6E=MY`)!@C;secLV5n)A@0m7!JCVv?+i~|h@IlUwH+%g^-i*qu zo1G&MMgkjecB(uS2{p*`jzjG2@!`;|cwtH^r^_AOhQ|z{Kh9t=&;}#~JLgktXUH`P z!P~JKsJzfRtgGDm6?O^-KF)Wl6h=bfS<&mO9dL_(!+ ziQeF_ga&)zb#u#Dgf&oQ1b(>1sj@N>>Ts(!nz*J(;b0D)+oz#jSX$&+6B+9zZ##cq zHY6Mvc$+hDRU}k^*q$h*+%5kDJa%O+XrDz)avtLnr$E9_4dM8ADYhf1}-t%g#)>Bog(Q+U_AUg3xFG4s#g<|ye{(g>dAPT3e=5FVFTV(cp>*v2JZFt9wyB^?#J;G z2rKD!?L&ClOxWY;uJ`a%o>#f@j(4>=NZlM?9EY1+=G4ote zSmIRK5()NMD*fo@guuN^oh1k*AK+-~EZdS0d=jgxtkBO`ecYaiyE+^gyUba#H4-|! z%;y_*zC#ip^o9y`nHvt=_@FazTO_m#u_aL$KX=6!f5=^L;uAuhum*T3Ip{3KYmUck zV&&e4#~EQ}LZI_<=g9U*XvuQ#%91g|{S!P*eXdvUaG+74v*g)GV0fW()v45&V;}dt`ItoF#3F~UTd5syCR`^YrGaRbU2^? zh&RNIqMqu#))}}v5?Hv_SpvPb);Y2}5<0im8>3z;oASH*^N~=KN4*J0E-b?{@VE)2 zH+Ny#S;O!SJmz_HdGBzrGagqxo(Er8>;SCs&GFCX9I?wEU_U5t$L@-$ag_RnBx z_OQ(|&%Vaf?BQZD&#FG*d7LQ->w%}MO%Kfs2lAe9s=O2l?m*;v4owJ@deT|)QY3Wy zljqkc*2#D9yvk@1D)W>#<5(Ng**ftwr#){go|@@-ZPt0qd1d!J>frStj17Tx@56P@ zlD&~otM%R#<Qg*nUKY!~y4SDBEzt7YQ#BN8hM zmvSGTyJ&=}ZuF|=-7ECMQ~TKozl)E-(emNmQ3ns;xmPoI*(MEo-SBqB(z(N1pl-&q zd(^sc=uJE?D;;1eZl*HM(KQLd6s%FMwHa%GtU&24&XF~ddLy@Z+h@?{{t(2s_vw#* z3B@eFy~UbymmgT~>}pdfuxX34ksgjD!v%UhmdY zHxl)?dG&G+s-ZjZG#D6MjO0DmmQ4 zeAMt+_ojcyv(bUT3KDqcS*OZ@Na$xP#<;_J+YT>^cRTkJo|?fy_e^}ubDrbvB~$P^ z5JVNZ*oW}?xrJ*sG}-A@pFII@99~<(@Mz4#c*@ef;-OEhM*)OY-{s}$-N=r^>r71V z9J&rqUBYg~3_D>x@6Mvp?&u|EfQQE8X%3Wh^Q`=Q)T3Jhw>|GHc{dW+@q%;Y-AL%l z7rjnriJ)UA;9aGkIzkU(sg9J~F&sQ1&pqE)*yFW?;XXec>W$ahjiufEc06zJ>uB=2 zjp-gR0vEmHR5=_8^?&Jnwp?)sFN@@4h8KL?U7ct>x)bjvJdFr1=0-fFqe^u3&o-ua6lnR1*AdXQ88J&*ORN zw6vYU^On8BUg1!SSH04`qt9eK#pK|}ZnnmHv=8qnUMs>%x;OY$U-R~IwwCAPV{kM+ zyvFXp>wp*IM*JPGH=ei3_I%yD&a8Zlxx4WC66SVb;M3QgB_Bls4fZ)lK8l3W_eEn; z>A>oJ&cKf&fiL$tOQ2eBXbgn7D77_C64`deNzy#5`4r_F-rXk3ZA@vg!1w#@h6at3}H3ANcDJ-!w$2nTN6?;JsV z9kGvFg4X0V2fSY6`2n}8)9~!Di{?1bk%yu1-hjYX$Rc1m|s>i}>XkGpqL*FEeljqcnGrQ#`#H%XS^ z=|ZtO(U{^#ykS5X9rO~On(b~Y!E*1r2TC4>4#nb;GY5)?vAp`K{Lk^Oa^vF#D||qh zyNdL~(xsv^c@%#i9%r=<38B}q+MzSlPR9F>I#o_Y0*Oc6g?sYRXjX-7!l6PuWk5x^ zv-}8;$Bi_s@`ql7*(TZNQ}8(Pupbu4a^vepaz9?gEnbx@{ZVwz#?6S2!BLQVAPU`u z*BFmwhr#zUo|g%I5xnkW9cFZh+J@EDO{3F%pvXCLG7`GFC^|C=8FioG*>eHi*x-{3 z3mJoVzLP?W@U#?Afji=hfOur z#?!cA+oT)s!&6LeVR*~NWHFx|4ix{w85kc4wfy3IOW9P?@pyPZ2QI==r?c{KZI9!r z5qQhv{l}dpXCk4=$GzTkpXh`(;Hh9LyMbYi$GQ7qej)zy!g-j1r%v+D6RYvO^+&hX zC%<$C{t^kb{mK))I^T}hj|6NT%(V~jdOAn%VDbApYP}q_LX*Godcyl9cQxKnQqmKx z!=WzUddC{iTY}f+eAvf$-j&n&qvi>x%I}fT;1gcKUV^9bG@M*7@XHD32vOR8=M7TU z{cGc6a8yz6qP&UcjTjA$%HMl4fc+>l97y@zsd6q7nvdu$dTHyzp*Qfn?$ewubJFuz z3)rOk;r$tNKAt*_{)s2+ALs|SSnd5)fAsEd7;AX9;0=q01%JR}J>n75vp@NK>F&Qb z>3xbma;+z^I0*BQ<|iyw-TOBNO@8*;=xsphcv=;`Cy$HphI;t=Iw5els@P4O>wOsv1Yi|c%R=l!L{DU@~%Z2zu)$zgT=p`;9my)h}F*=RV}&& z{QQ=uxpgO&n#qxpP3lGIcj4cnRmdS$J*mD(F|Hz_wy$U@3pw zydFOHNa`yA_W}C+ci2z7>)hBL2eA8s;vf|i1A{Fy9Nmvt@zQ|Ok8uB8v1j;#@Mxe6 z#)24-4K4!Hfij#4^bsqgn=R+VN@2k0}$XKuLEUouZ+-U$?E0Z^Q~ zfj;68SOipur9htxS?L~dRgabaLF$l;B~YiarV| zg55wLvBF=F!{h9O&~`tb*9a+|PgFpaKG>XG4Eo z^T1{P%iQt6((Go=0_uMLj@8X)Z9K6GWx;VjV)?&%?q9MR!+PSDM`Uk2D3vBb46Fzx zVfE6bum*csSRb+Uiq;n^er3y5Vf9jV8~%5!bT$2yuefo1iECM|Er*X-<`sM?!IiLj zpb@N@(#q;#%WYs)I0EYE)x|Qi_>!Jub+OV< zh0DNmtu9u)`PLWnU!LzyzRMF(XaoM=GS~mVQ=nS3%2rTZ8GncM|3|Fx|3Av$f0*8# ze-~Cj({PV%+5d!f?ccNch&5Y2hD*cW!5RxEqw^ob6@G;E5i7zeSkvuStN#@%=r^t8*1wPyzlqhwx|FT0FIITi`eONY;;qrf z28b2V*81Xr*;m0|(Y(`){X&^ujdm&A*T(H<<6g+hqrcU~@&~}G{2=S=?_RZ7jkJC` ztdCgnGc1p?I^4jGaDnh2{o-apMSnQ291)_O{CBMK@@+YP#R{Kg!!Km%w^&`Q_RY3F zY!WK@V@$Pd-ockr%&|Pz#uWR_O_lr=;}ksK%3}F``YvHst%H*fwX0@?g^Mykk0TYy*t;8|D~>MdB) z;vHB6?E_e!|36brziC{BcMmE2L*gmw$Cf{VRnDgpEzAGR>c^}umidL{FRd^(vN&8zn=nZVCu2cQZ1|E=kV3Aixg;Cekpuq6boxxu3*E(GAr|?tg6B);Br_i zW0SnKgxMBRFgh7;6j#uoz=xM`|+iW z2g1s5u*CnsNki1jelcRNZ>~zb32#;;b%~Ufb$dSpBb9>FU_{b=})Vgt|6?SP|-3U#yH9 zSiPau#fsO+`eMavV*LwQ@tRs)tcJC;eqPiN>zcQ<0b*s?&iZ2YOd_ldJ6QcfmY!sF zvC?<4zF7HpgO$%UF!8VS^|TSh3g~V93%Qv2y@tP{znH03(_h0hs_Bn$k4?jfs?A|E zd<8roRv87bK4R6ufmOHrtp0bbcnfVhW8?n?ySt=M0ZOpQCRkztoU1_<94eJ*k&XC6|2TOZ1{z&jCP`50e@=4#nO+#N_X7qVpZTv>*vW(4S%qL zSP4#9|3bbJy{fw|c&yE&4!$zH5>}E1He4*dq4mWwud=@7ynh$|)>nqj$e=2G4J^N> z&G152MN-gp$1~W5ixq!}^~LUO-cT$2udrrEx=klm4~~b`bCawtR)LdYNmDG}2&;m5 z5;gv0s4M46_z$dWIiGN4c&CjgR)KfJ3NNs_SiWOD$EXyp2Zd!L62W zgVh6bZ1_A_pTA?JpKsIOX?cN7=eEBG5d_ujzw>(v(cE~-_<#7jN}hgLaX(_W%V4!| zEKpDU-~C<1jJni+sk^!S^P9>)zp4E5n+g-|pWjse`Ay}Y-&FqPM;+}$|C8TRNbaWp z=QkA{dM?+2$Fj_Sep6Ae{PUa2KfkGHR=B^d=p_EnZz@a+&5VD3Q_*iLS}FheO+~-0 z==QkDm z$O%I%HBshs}D?5fi!_df%jpJ}_HFM@{TK z(1#{d^pV*u`q)%1fQrmy(I@5=(WfTvUg$G3U3ARs7kzH(JJ1(qmgu-SEc((kyAS%x z%oTlYibUU-HVdI|O#x)$7pjR1Y2tS#>3;O@&0^6>b5it!>1LoGO(A5u8X^Z55&4u! zS%h##!bSN%ixJM6^%4dwMkv1o;a8Kk1R-V#!X62~o7klYTO{Nz_4f#z z^O@(D`umwNOHt}PKoq~3`~XoZJ%DgfLNOD!3}LT?*~<`uX1|1K%Me;Uh)}}JdJv)B zg9yhYgiN!C5DrOL_z=Ryrbxn^hY*sNBa|`)%Ms$2W1W&v+9VYs9G9@V5Fyr_l(47} zq3;TWvZinaLe~`t!IcQ*P0C7yGb{X;noTSH-T5cb{#6KTR}v#*6)`HC^%4fGLMXo) zp{hw+jS#aMVUL7rCiY>3EfR7cMyO$SOBnMoLY*}Tac1%wgi31=4oawP;?^SUl`wlP zLLIYT!nCyrtsX(BYi2!yQ120hV-o6{W{)BqlCbbmgodU_!kkADk{?58YziJjh<^;> zl!T@x>2ZYP5>`Ks(9E2au;_7wzE2>uFojPbbbSIL_#{Frlkz0O83`LDgpL0xgtbp1 zWITn?#;lhx;3ktx5+B$@obqISTv^TNq5w=LkU5}7xc1swu9-+?D2uWu0(+HKG zMmQ*;lZo4auvfzD4G76*zl3QU5L!KhaJ8BB3_`tU5ROUcW}0n8I3!`=MuZ-wNWz?r z2+5ledYXbw2=SW`PD$uxk~Sk8m#}&>LW(&lVbNxUzFQEkGlg3ax^6)TZbj&8Qnn(T zk+4xhf8*cA*V?TJ8QTz2&3Xv~wjq??jxfliZAXaNj<83<5EJ_>!WId+&ms&nyCsZy z7NO1#gfugG2STMC2nQvMG;z-%?3FP4IfM+eU&6HK5L)d-7;R?lM5wnD;h2O>(`*;Q zAqfk2A&fOe66WkeNZySw-W2Rch~JHHO2R~w_7cKz342~bm~3KSMp*PbLhj25*=Dzd zt}h_e*^7{CChtW!BjKQgsV43fgtads%zg!7y4f#bz#fEFuOi%NX1$6K^Af@_2{)N$ zuOV!au<$j6JX0iL%*zPLuOrMd1+ODi+KX^X!mTE0AHrSUA!a|qF$v2|vv(1;NLctT!b7G=!k7aH$?qW)nu7NbD!q+xO2SH$bO>Rugw=-- zR-2O&roDsE_b|d5Q+ODm-a&-m5rjuf$`OP^5;jVB%=q6&nDZ_|#`_3QnDr9k-$N+> z0m4%z?E{44681<~Z(@%kEINdcdlX@V*)5^#VT5BJBWyIyiV)67SXhLx*%V1wdjui* z6NIg%;1h%a?<1U&u-znmiV*Vw!s<^Ec9@eAwn*sv8NyCe_!+{OqX@xc2)j+nF@#DV zB5aiKg7JTjuvbFH=LmbudI{4$LMZZ~Z3gCzSYaQ4UJ^&Tnd+LOCvF_9>K;ese&| zq7&?>t$+4+5B%sixBQIK^*iDm`{;)?S2=d?`X3Q*bH5fD#C&BqW%m(g-mz2&+pYv^OUuY?09S zGK54^cp1W&5JE5(A<3k~B2+4guu(!M<1d4-S3*V^gk-Z`!nBJK%9lmB+N705sCNm% z9tqt{Y&nEO5{`bv5bO~!4L)WF&MAemfHg7DGhk+Xgc5%#N^Ut4^)kDa=(vPBVWcUnim+Eg@N$F< zlX5x2vK0!RvlqZC4@Z^#+%q02=SE>a%&(= zG`l4nmr$oB!eleKCc>gB2nQu(n>bCVu2m6c$06jJ{SwYdXjKbgs+m;_VeRDz$0STQ z&1xeIsD`kxHo}djNJ30?gybs_ZZZW|AZ(FvNVU&0v)tr{a3 zGpjMe+PVnGBrG<~njj3Qhp?~-!ctQtA*Mb;a#Mt5rl2Xp773>$JYu-c?FN0`^XAC}D$%<6X3-YcmAi z3#5a{ehFtJw2DXAY-YtHtZj~POu|;vtPR3|76=R5AZ#~95@K2+B)3J_VG7zJY>{wE z!cN1h>FJMF2&)qicAJwDDz!%F+YaFcQ`in+uY_QGggqvuJ;Jmw!bS-%8-E0$UOYlZ z1mP94Ucw;>UBcM=!Wp6Suf#`g!0`HzBXyy5$1G8*dyUv6WaqJJ{cibEADpz z^L&p0#}FxXu0c5&Fj?22Eb4-CP|A-1Q>!OR*Q-%x_e41rFbAZZk<#i~l+yuo%e5$L zyP_PEayDR^_d*%a4P{|3lwSkp6Dcv>QIdP3{2nm(_D0zv<&>0j0n;%BWlRs0)hSfj zZ%(FAzY~+UpRGNvLd^4MZ4lJ;U+-fegp0rbt3eUt%N=B1Sb+FbH9b zgi{h~n54l7WBMVi9*huYPD-fMAEECMgxaQX2*O?o!J!CsOv+G%X#)^8N~ml6!w~AF zB4i9hsBhLwI3%I`aD;{?Z8*Z5fe3pfG&Zqm2=Rjua?=o+n%xqPOQD0crX%C(ydvIF5j@ZCnF^U8FF zw=QRLrUvf3Naa4&a&wbufr0+uS>6D3@%fxfW=$M7j{kM4Z%EtCC#DBh`2Ba8f*S*6 zgNdDq_Gjg%nP+Ya?5gZ0rfB{1m)zXUbjX*H!XIFp*hd3ZP5yM6eZGLvs(Psu{)T}+ zJIU{SJujS5i#xe3HXkn!#P|c|ru@MC;OT1oF_Krus)N z0*#6VV>j9h^V%iu<>W%}H~;zOttEka!N<4QKyMT@T1qw3(!3h~sr_|l+~YSnj|3J4Lf@N9 z9}Qe-OCxy+uYc6yK#f9k?PGy?fj(z6(wh6d0lPW&iNNP8N`9QAfBnUu`CenPuPfH( zYX0EpocEFXE+azyp`SPPiTWBS`r}}I-m`I(Pgz&tkDbiP>xz|afB1srdP9{yN35p5 zjj7}+{0)@V^e^)C(inX{FiF>w#ZeoiKWeM(26!(rP_5iQ`Lo(bHXdVAZ^?5%ADaSY zQDlQu;dVAC`tAe$!EnTCdJlrK)!!O*wAyE;h%EB-3Iqkkf^IhGbF1m!8%O^rEBcBA z^@HF3^-uIQ33_#d{&r0H=v4{oQ^wf&KW_ZN=2rpjcl}hx$G$=#&wamF^eXT^1veA* zUNal4+Ec*VJ zU#(ajak5hI`ORuIusd4qcUa}s1f8rVK?TPFz5hiYztw7Cm$6#FYPHeITCG@~6|X?t zt6caLw^|)+z1K;fpw+I#ZeTUNTtb~x7xV}El(g~cVGnQ>)(NZC#~*Aj-6dAbYk)Y& zilwaB5UropF0~rVw6B}hN?WZlS`VvThNea}0oPcqjMbW=b+=kMoAxR+{=m=s1G@4y zVl%{xY{ZH-Vso?-Xc~BxtkwcM#%lWKo$7^_;1Zj*8XEt((`Boj;Wceq-WllIVzszp zl&{_lgP##Kl4}uBEr|ywt#*Y?+y<>RrD=fHv07W~uxh~PN~@il0zUPDG)z=?Q(@*dGP_K3cJC!k?M5}3y z>4jDU?of>K6|p-=u@SXuOX~ryvRX&0U4z!lYI>oF;`Ic2w@xj%v(>J}c3T7`Tdfzi z-j1eE7pwJF`{S(`eIp5{1NZ%ISHk+2vkK-&;A@H@t-IB(!+r$lqkmbedU0g%jg-Kr zr;XPaJKa_IgHNmV!yhC~{ol)qn#20%6`GR0(J(!fqM?N-@V8-blTzwJ~Trtac-;GBUw-?1=hb?`2UTH-JSp;>}hYi}o#cG8|p1 z$6*J^MT0Eg#v6~VH{xlK&9d4AY`qV#H++lLCSpGWGbdLt-fwZ&GOiM9)y%a!L_V#S*f zpU2kqT57eMvG-U_Z?RE^>aiEG^;rh1;C%3s)gH3iEVLJaK804h1^We8iN5WI+-^mv zYHPTPh$`eZa6Ov3XtmX5WA{N*%OAGd?bzMX)bce}y92u%np(crYICsnVXN}d*XPW| zenW#w;-fa=JnUDo^Wn#=HXr*nt37VDJJH?+YULAFTY&u`(C103)zd1(=d(c`mu#2Y zqIsld%bMAlGcqQQYGjsAD0bQAF~f>A^5^M~z}@2>tRvntj2FF^;%9IgoB?OSFW^`3 z8_;p?4{#1>korLY6a&RU5L^UGfEW-0CBenu5>N_U3Q7m*hRZNwK^agMlmq2K1yB)G z0+qo~3QGk8!5}ag=uI&?GByV-fFJxyn|}ktz;K{fKwS^CKP7?=K--PBm-adeBw(}! z4S{y!#^3=4*fQ`ScnB;9g1e1Wyt63li}XIq_R^E&gT1FR0LI-u&cjfcQta0I*$J^-(Qmx2DIQD@edfL{BV3v^zs z3v@=U2kHa8G<6ljLkp)iL+x`~*R(Kdm)C~N!kMSHe!JVbR#v@nU?3O(`U4$Ybxyq= zTnG9Bol*OMRFDFC0i98GChZDz4%NAnbEbQ&ECuU`SQ1y6$L9V~fg+G83 z;0tgZ=w%se!K2_Y@B~;19$|p#EiIRW8lWbK1GT^v;2j$AHrNlU(*rd?d(uRJ-cHn* z9@cws)&RXIXQf^vung$!Jc~g*5%kZ}?*#V%y)Ni3umI?Fu6k?7(;yzd6=(_C0G&nM zvnQXuoz(z-uB2o8XAAeK1#i?ki!Ij|G#0=vO8V7=a?w*lj6un^o2=7QyP z-wp5}P!H4xSAuS!C+H1ybgT-l0($Xf3(ykis8|d5!0+^!UJt5QivA2vgEQbP_yw%; zmu4PgJPg)=wPr^~vFq|yV6FuBfxE$7-~mto9s~=){or2UfJI;lSPYhehrn`h4=`XE zcoDn+c7f-?POuw12lOu1G%ySd){Aq7VCdYcV`@uqHRu9#^jrhhf;2D^qywG$bX>iY z0j?L7bOL(8Nj%W|MTUbkFboU@V}MSWI#KEbsh7TN2RhX4(xlMqT=a^U>WrrvK(E5m ziQ%A4}v8?f4^}*NB|vyj-DZ)lVvQ>Y4RX=7rX~_YSbxF zM-&}r4A2oKPn+w{;79NiI1NsMAHXSa0(=L)2j76Nz!%_4a2)giI`wNG)*VJypeH|i z#-e90pMViyFc<=cf#Dzx@UquDUqg&`pfxB4ii03Xr{x(yFKB+0-gq250iFcw!P8&^ z*aS9%Enq9y4xR-&z;j?H*aa>ppK9P!>{q}y;9JV~oxu1G=6Kn;G2-BOR^d}UJKx5Dp=xtDgfnIsE5Zn*+0;i>58JGYXfLc^!Ir%KrqNpRP zj-*|Hj+{DT>VL)U{q_f@)&I!1~K3q8UGG`0q=p=!23X_z8lH(Ca{9U zAK@2Z=Yw0ot>88=8{7`&fVp4;=u7-IpfzX(T7nj!Ie1df#|kJo8;k}=Y5l7}uO+_% z^rIlX#Hcq20zIhFgP9P}^OTd|82AaC20LiwT2LKZ&r!xwNE+x5`hj;S<1J7~zFpy7 zd3;?5Dud=A4qOfjDSRks1R8@TKsV?aB-H(p-l(K|>9IgBKhk}$UXG-DU%f184$v*H zUInGMHFW^3KntMPLNx=iAW!$ey64?VjSqvLsPzxvNubvy>ReqM)@|%1;4*LoZ2{N@ zwu7g@)8KA!FPINz0o@hqE>L%%x)JyVd<(t?pMzt1J~9~NQ(9aH^aX7}8|w#P-FCJC z31BuYkHEUc+y-=?I~)uJ(bl!3G0j1=mAcE!2YOYM?k@i|9@jq_@xp+=(^QH3fB_4^ z{oo!@0CcPR3cdIu&>dwX&=}MOpVH7dU>DGh;2vM@Sf=wR+vW3OEiv2me*2 zE^O%{;#a01UAF7Nwct9SS2ya$PB(JpfGQ!}4*Kll>kXirve&@7WO4``1=WbG3+ebdJy&B6@y!7JEC`2DX4rU?X@2YyeN|T=5jfli)Eh4NL{vOD2FmU_8)@ zm;90j!B3AQouR{1N;Bp4OwILX5jM@19s} zbn(2Wu(f$T2DFi_0(HSk@Gy|BgN_b7tAR9adO8G27f0>Ov9$?S0qcM^L)l*f4I6EW zZvbtIo51Vr0PgO%5$73mGPhXM*l3u3FJcNH`*Vw39lH%vd+0u(>QynRxy6PB-@<&; z?8q%vHSTN7uYfYpj;n$wz%A&{{F_}yhXjFk740zEZhisUO@0QaKs2ec@v4<~8dFv7 z2hM_MQXg5U+2_C?KzoFCFF~7E07Q$r$QGwx14AGNXj9Ywb3^{c;8IWulm^i<*plDIAw-9f8lXB* zcpS_V3h&;sAx`wZQkzh1pcStUTo>rRQ}>^O!Y*Mp{rSAgrVQ$QnZZOfXI*McVaJ>kZ1Lr@l|LYmvkN9l*agTWw> z4${B~Fw(M4LpOkjh&xW#U&a)KT#y5_`3y&!1ZRURpqA^S@M%DW&WGoL)!-2@7pw(q zz$!2Y+zw`g+rX{h7BCCsgFJAvzarO`%x2(B2RDJ4;6@WWgI_Y0{=(pu_)EZIV8B9f zABfiFzb@}z^Hbh;lism;$iEl+9)OK1>jDgN*4enl71sl-R}pBz-45x3|2%=$Xh{EL;USKPo;?LLQi1x60SFKa;MLX+Z?5M7aUD#7mJ=)WM6&B6s z(F^j4YEPiuRh8B}jYbvaR79qz&GJHz<%(S)!v0a0Y%^t z_!t}oAArN)eQ*SP2tEQT^ceUI=;6fI@DJd7pa&LpK^0IAl+}4!k#+g?s4W^i;KzYeO@o#=K%w=7A)$Sxvf+#DY3Q;AZ z33Ruqf^^C}2mcIC0i_fE0KbFN;1_TfoB_Xr-#{GDdg>>=4=8S)1XUnfm~LgGHIHi1 z3Pj_ng{qi(AR1S#l&+gM9Soy-lvUAE=!&P?C&eW!&;4JvM7t>(S&?KbQ5hnu;AnxD z;m3l~K;5q%DMcd`Utz+9@&7%J?p!K?ilBn7zZTc>IC_euLwzqYy8^BaY60Ei)C4tv z-fdP5=$1!MxWw{#GT>_jmXcPZJ(WB)gY;0bDUf{?tS4mMfzIAKgFBS(-dNoZClk;a zR3ULESm%@uupXP~5t{C|5`peO^*BxU%3*LN@%1#K6=;Or0O+nn4=iJfdI`YrE8lwvkcLUde9zeC!)9soh=mV#K-aylBFszDb`dts}hOi&d?a)Aw3i<;* z+17KypE=B@pQnwpuiN|!j`5+YL?vt z|9igk(5|K$v*A2&Gq?%N1a(PsBYX*%22|%sKtm-5o&s_~Hpl{#fpq!e>43E@&;9*C znax7T2e*J*!ENAnFbCWL=7Mx8quG5IwmLxeNFaS7{(V60Re{~nIs-LM9km>&@(+Ne zK$Tt+=s^r3JczRlJOow(B~pa-;9;PvqE3AZJPDovkAufRv_l{DI`k2wXos%FzVJf* z?{w%I@=&Kn+Zi2+8kK72zqRq&zi8y2?O8{HXj}fk{vG@RegnUPvmn}@0_641@JuB4K@MA+ZcUpzYAv@*a9|#tzaj34(tHWg6%+=90G5G zAHiPm15g9rfKP%G;2ZERH~^G(KX@H{2@Zm{fXaJSE2?VxHh2ZR3|<0zz>6S>F{H#w zpv+XD3X5v0hzeF_DnOgotFZD?!LNaRKxr4$px;A%r zv7v%Uxp=P#*b$L>0UH{z#2{+a#EMF+iM=LD5KZh+v2iq@K}Atx5K9CrDt3)siJ~a> zf+fTr%m1F8yC7X%0V0tzRcW@5nD#`_v zTPQgw=TUB=@coM@Oym3S-@A@`H&7UN1%+4Hae4T08RZfRFTJ^_uc0u2f!v5|#&FGz z_#St}*WB4%lshOa;5`&phKKJV3TyoUZ;P5|@MILmvU1;|a9E#)!b4x3Gb+}| z5#S-Hd!TSw_zWcmB^re#FOA{=49D!z_`MJ%2xTHldE93K*P?K!j6>mwwj5;+%2*Vh zk}&t%vsq`f;lx?Zs6BAujpB<^1En&GD~LX*>!7%x=uwzS71U;YMPRC;RKPusi+r@^ zhTpYOxINSPLAaS`HT>rGwNN}!++~b{0YA8rD@s3ZgxZKw355mW&MM(Pcfw5h9(Pt# zyXH=~12c2R;tl^Pvh%p=??AZUjvzHaVK&@^b!N6rP#U3pgwg<|J_;XVzpqm;?ggRL zL#c~mKKOo5C-o2=wIi>~3S1KHjd}k@}4V&g2bF2+eeRhU|}zlq$|d zb)MSJlwG9z5)GIs>kY5atQ49hJegnI>sEzyH1qTJ@eaf+rJn#a=%J4d0O!8z*xSqW zsw?;J9l(4m)2W&Aczo2+VU|4Jz?Nl3+b=ZwWy+bww}JEbHbD=oF#2N_DsDW@h=ZKVDF<*vn$~@v{j+oHl(gxq$rpg7jcjMj zE+#&*M&O9m8(bd_NLcxs%E-st*VpPKC~VsCX}>*7iW<34r3A6jb7hL0E&EA#ta-+Hs~7rh#ufFn-4V#}`_v}}+~)6U=s zbpyS9eM(WK`4Gz;f0;&3&~>JA3vkt&9^hu+sFDcyX!XmIFjLQOFE5aE{@!Tghe!(w zJ5GsIudF%c;;FT?nFlM4_uuX@Ygdr;3V;VJU_P=NPe7_pWGH-SDLXb%MP80=+}5wv%ri#f6^G z+kT|HGUT-YUR!_>w?(7n)h_kZwM^@1ky&Fds(-+#lDU{Av!=WSkW&*-$Zrk#KhRn; zC&e#>P%ZGcdCY1#DVP!VbbTRa#3btbquduCY8~S$l7bTCS|z{4VW2%k-bG&}pwVe+ zB`GdaUU^DNfI@$Qst0xPpNStiH;hh%6?`!|m}WL~DgmNZrS1WW3%-wXPekh`R1cM* z9sGdJ&?srZL6>I(9;>amkyR88PDHCgv}+OI(X^f6lL1HIkF7Ut=>O5o?~br zVeGjn)m}I3GNmM1`-m7=hSvTh`x{EZgPHy8I-O@!`?W!cr1Ml)0hozi{RH;z3_@Z0xgTLk8J9e)6#@nV%0tI|>SWOuSueWB+ccO(k6n z0<*WDk5z5@EeT2mV=y`7Ud!K7VW-=x6RKEh$Q?_%CFoU{sA8bi1uS1YV0o{9ORW)5 z2D2aTr8C&i=`P@{-7AY> z^Pls@m|csKzLj(ixWm!7Hfpxm-FiKH9`uV~iy`QF2l!ew))49Xy%&xje|-%UUT}Pa zts-dPQpg}?mC^hG+u#MqY-6T`lbtRDE!k3-GhWMOJ)-r4rI4jDWiErvy^vGE3t}I6 zZr$9cWQMz>gTU}P9LG}La^PmsUtCqAp@8ew&~$Ef7l#8pB{DjOoSC-`TfVog1Y0v) z>#Hl3Nyg%7mLQlKc>7;j-ERCv`u7D8{EbC(F$?^k+3NjnG?R$l@Qw4gE1>*o zTK7)XjSjDnTLpIV67%8WYEw>!&E0;$Ap2vGG2NnT3ra+t-Ai2#WjScB1&TYhO2P1# zr12?W+mRCZsv;fZsx$54l|x<2oLsSj7qMu8qApr4x>5AiN;E7a%=^m0R__LSUXb45 zZVetH?CbwdP(aX->H^^+n18ssF*6#r+PpxhD}&mh`b)6T)>Az_S}g}?{TTBwbIQRB zMw?#tj+x&4g0`xm--0p}`7>Nz>tExc-K9N0%N5Gcgs1b2d)n7}^}-5A&O6|5BmD6* zTzn}A%(W;0)|AjSvOBM>QETKd{EdZ_HFAd{`IYd6JRFv&*Dvyf!onApZyxE}0V0Ul zW>+(gyGuJT(nvU%qRwy!s*@^POMeECDOC=aMg)@ETG^2nrXtyh38aivWK_O%H&u2q zh9dLg6!_!FzPG+xrW{g32K)&JXKE|Gsc1ye6myT?t(AkY@^4)$w-S{Ld8Ek|q`Y8i zm?rnp1yJ|(7|*RV;?+|*uS=Q6cbzm?wgjTPUH);$F z0U;uMb?A}*=0#l3Ck~hsZqd{_@aDt)>@b*{3`8H6n z7{vbiCcmImg+o;>l;7*p%k@}qpK6G+ep}znDEM4wL6oOD8;~aZ)>Ai2u^Xx?-F$9M zEN=m{(I~+W$F?qOH~EBxGPoYaY>@S)*+3xn#y*Q&7!#0q=#2%j5fm&fu{Ro5E%CTX z*d7bzWIZ~9wuUD_xB(GV{g+_Bzm7MvAe`t83s$$jV9`D|bIIgK<11JI9YJwH)6n8= z`wW|Mu$P50v_3^_gkUp);IKL2lb^o2yQ);U1+fwoBPh04PWXDgJp9r^*;AhqH^R46 zCwymaR>JBw9w!g%+PS%zi+=Xo9-`=cI28qDZWy`#iXKyd;8o_+hR16eE0#;KAhv_T z^H2Zch3}__Oua3X6Jay}ZH+g8C=Z0sM?ZE?FJ>!Q5YNLX35Y=3rh>^FX8afcX1;V)%$N5|R6S_{bOnV){<&HIZo@*WCt4`O zno|8u5NxW}t*3nrf8F$}ODu>*O=$=arVSb*%IRfE+e!{kEQtM}uwXaiM-(gxeX`X; zIoFhSpsnFP5G>ggWlg{CHo#YrXs@?Z(V8w@ry4y9^*QfnXanuJ>Kw zu$3N)1#u#R!ZPGoEd=Nqq$7ODI%6U61HpkOk`_P$hvJ&^DCc;uZ!Z4w>W;(Pgz`mO z;qwh1*LKQ2;hdocLtoz2I?yLuU`L-%#ipS3ChMi&8;8}<0Em|OD+fDdXW7rHE&Y;- zG^XpPv~dfz!2>^~n4PjdeyeO>Vk}xCaK}Tj0=r1vB_Du<#<2cA+vm3e`@_ zh@7jwRg$}u|zmikDap7 zY*=Fr>w##xa<*)ZF*lo2zIPlN25g%(9pauy<= zKV@ejHIm3?4-ESLvZT6;x-|%(PykGeG=|Z|x+OIDVfi2cv|O%QPhqA8f9_m&$S$xS zC{T;T<$#_va}R{s0R*S)o^@KheAdOGKt-sQ|GVj=AkAaS?uAom{wQh2(RHQKd!g#I zC|Uzs83Q$I?j9GBH~7-lNKGJE3QR8p@$Pt#*S@#@$hM2xC;J%|M~U%B&03nfEHppW zqEZ7|yANHNCAb$wulIrBX>#7LW}~0%mz$P~>LoI&j9&EPeq;z`Np}D)=Sl`thMK*F z&RsYEF#MFhxILKriM^H|wLSpmfAyyC56FI|?7rgQWx~F!c3$|7N(Bb9TiyhP{Uv4U zz24P&)@Tk&0Q?W(>QP_HKLCMBko7^N45#{w*t9$Hi>m?IHSYk3;Di+`pvY6AfZP3P z&_TrI*J#U~RBf~WR<*4K*t|W)9Ud+G`H_Rr$3R=Ta;Gx~ks5hYiqHL1GJKK@i2Hg)6>JSMDk$r zI)dbH`A`~jMDAm(I9!D3)5pCtcORTL73%Q3gG2cYr{v>uth8h}RXZX38Jmv~uGepP z>YEp~KljIsVhaJ;b_9(8LN|?4PN0kNBk95kIL-8tLeivDabJ&htC*k~+lRwu!bq|^ zi8XE`5S&arbm`Q;ZmH(pTIWC<)!MGyTK10yO+3VA7JeRLl{=Cmx$R>h`1nSD;hy`o zrHgv2ZE;Kr3y%_c*Y~f6m9ew&Kc;a-DDfIaYfd8c;qBDR%%c^McHnU&>&lXAhu82) zA@V%bzab{*l&3a1=jJNe>+CGCUI6-40U(y+1A<_t#uGaz`FMqCcAGHY5B z#AbDR`2|}I8B2?qM-g4aH$>Ntbn}c{(HI8Hu(x;p?VE4ATfO=Q5+cO2R;@;n+gVuk zeY*ppS#==VvPEWuZadOq(eB$S#Ru`+DtZ(RLR;hecDJ;J-S1xzcHeduE}c1+;(kYq zLr}~KJPYdQhkn=oY*n*jNJ~f3uxv~dr)b)ljh3Q?BkxqrgXk7bWx>Sc8!cu~kGmO9 zHyxbuNM)ji=$J5JmkUwZF zwLC9x6tp77Np(1FoLE83&WId~w@8|OX=4t&Msp!an6!`i`d^Lz7D=UYk>zZ=h&09Q zj(kTt`aLzuh3fnz0ekW1T@0aHN`{Zn#u+{$4kl=4E>@SWl#`2eN;J|VZrWZ#2@5?~AOcMKqK5dUy8)iT7Fh+z2)6dtc_9TkF%;pjb(1FXcy;OQ~d@aSG zU=<3a@mJ*jbo`23p|Jl*&8AcS6*Rxumx^62YKaQsIdb#|5v@EVkGgT|m8}p#%L;OT zpg~vR&$of#Gu>pz=Cd1o_3<#(71iN=`~xio_kRxJ55Ys~H-k!DlfzA^Gem}+?3p`# z<|0&-2BmFIunL({}_Ad=v@ax&jJI z_%get)U^H4DWGT(p#Ll?dma6co<%jTV+>2qrmna)7IIkY%a-@CS~;8IuEWQ#&Zb;O z=Fb-AT-G<|n+7dNEv@#-K&z*-$^M4yS*7tD5y-lrX89iO`F2QR_K{PJ6k@cVOFeEt zisZR;!CKK9AH$;Tjd4$wCvB-HPXN--TOEy?^C%Ta!?Stf2(rzh&&MVlID3>QIrceN zZ5$}?27EMTKD}g?ar3Eb0qSM*$>%1--a4ORZemFG&KJV$vak2Jd-xo9Rsas1d0j;p zM{Z(?S08#g7DEKEvWt(u1s?D7^oyqmzTYXHV(-gNI6xmAk3|H6_jsHzdREB_IGg3D z&Z*9_cuEA;xF3i*KrCE;@6xsEiyK=IPvYq~a}$#4ja5mU*h<^$JdO&Rct*`F{P>vl zBO=$^Kt>Y9v2NpuKD`ay<`E_Feds*%F6yd8ZVv_SKJFW1ptC*t?vhrbWAFao53tkO zEfkBGxdr;Jf9F4H0U7><_rD|1duhn~Wh6A__@U%ie-sPT zf73?O*7Onj7~!uZw3OP?H~vgXHcGv z%s;a^U;$D=b64oX=Me@2^}c+}%@&L31=mX#k@r0eXWAk$OTJ6%eathY^=7TtAiOHH zh@$QR`Dii4-;=|Q6_Z2^v%NaMnupKl7gZ#pB;LhHqSxTXy!H3d0;Xy60K7jm4Kz}R zLO8o;so$3f_cTlSe`r**6om{Bq(Ij1gI74-pB$>i5p{%o=E>nuj1!&rWaKHPy16z% zO#PRM-1SJ{#@_S7>mllz$6yL5?iihso9yp3t!JBLp@1hlz}w08-nFslaqX5&54oi# zg>gi(h>yB&LOPap+m4U`w^!Xzldq78I}>d<`@EA(US$-E6lR_uP8f3wZJf-#xA_nm zvt00gUjsW`!v=_EA>O_ZfT)7rhYWra9M*CFM)(s#Ck$-`?rONzLL#0OYeC9XeuY?r zntnUCVX~=zCfWpxm|h7K-k+5?Ykeu8`FFg#)+k;pC|3(`&k7LW%;Q*o1@-t77BtsI z_R690otEL!wiJrNoHFfC5jv(`=>Gkf`RTRN(NkiCtH7I%a zq$#`wLg#G26i~{+7}p+!Oqn$L-q#jN#wtogTjN0>IEq)T+2YFAgU(o6xaX{*SOp1~_T(r6{u!_w#i=*9`)zys;LEior@A@yetoH+VhA#<{Oj$x{}PAp-WZco-c zoE++-^#K!kfdUa@eM6J0Mt@hXf-0Z-h)W9EBks=>dP z(r9eojG&vJs>38TBTFktnw@}7QC@pUlDm8Mvw4iQg2^UTm9$Sv(MTI7NutP7j&; zFSzEg=v(TKyPnM)@V?MO+;PC2LLV)wvioeOhOeO|dhw~DI97teeRhZ}p|dVAr`gk= zhNwcS@l1g9#!W!*Y{>7`xx>Z!JHs?Z(RSAk+6i{1LOL{wa8;-Y%-mH)3+Z2buSGM3 zv}p%*Ws^ki6ej7k&-Ce?me2Dchqg<}*hO(bNN0CZ53F{^7&s@-51-*D_OyH5;W?0e z^oyB;S(y6<{&;=Ye0#;S)YDyJ5|-FKznS8vi^5;TR~(9~XCJ+GldG&WpP!?A@)m}E zd~}N5w0XC9AeT2KXT-XQLmWV{9`jl8NlPvr8MYC|LpSc^3W7wY-N)W4k7m z-b2-_6+e^H9-;Ern;!>R*ZufsD8zHhg!hV|DsSjE92__2qrPjZg2Len1BSLU!NXKE zqV-%cQ#)new@%ExS3_-!wFL7}Y!{_g`{)V!H{RVZ9Qm`hha-C0ZREFk*wx_3Pxez- zF(ur1_kcjuNolzA#>6O|^%y=zL?5IzKp1Kq5{Q8{U87ddi)ziUCaC@_-UxD_>cy2x zM*G9U0T;|`wC8k2M?LuPdtsRQ!rposQ(UnxxePEq!V_;B>BKulJeP;eP_3=k{K3h(Q^kmi-yM{6P#ZF10%y@S_W44mfTIFL;j`ce8z}SM1bAnj|DQ|% z;|5J^w^1$AhB>s{sg76(ueyUy(!4T=FmFdXuZ-d^$y>>(ta7x70n}5tEoPrK0>&yQ zMEw8c!uZM!ia-At%sHqb&(X%h_)lSpj@!beZXi7I`Zu~m=IZ&ykF8M!ROcDS#M>Qq zEs;g8h$W`NM!-*f2cw9vgoCC+$3$-!b4EnVFMo7cTP6ICNH^8JV&Ox@>+t_u!164w zgiFQG(l%#AySVZqWUeU>OW^o!UwK50@@GXDUfb!^j^NXKlVP(U@kpWSS#oedbN{mx z#r2`Hl;(hzXU@_g2gT2!d$yQ&&&zoH>ewjhp`>e_O?Hk-UFmi1j5_Ix3#h z?Q`jC9F>kbsqT3y>w*xyjw(4TE~X~uMO+-XXIV^W?(c2YF;@?(TYN^KAo%$2%Pw^~Z$G6}Q4#7q z9CMx?f|qHMhDeC^vc8`6G|$r898m1gHep+>^oHN86FUagqn4hhhI&PB*Z@R%ATBm( zeBol-7pu?~ym>C4rlESg`m5c8aLY^XCBXkLU4u5GxbSNr;I5EP3O&tA0XWl;K<{lw7pk}!T$r zdgv*vQ|B_dRs=HiG9@x{8IUaA#`smn3n#mCI>2_snqubp%ViqCEi~Se#^JwcIW>=x zz{!}DCwyQ3)7XVGR<`H$f&0X|Z0>V?9^Gf;qs3yeN?3TP!q9;kHk!teZdV?8xU!k^ z=rh!&GvH|pJ>sh#=snWDU6#c*C$9*rtzTPg?rGm<(=ENBmmRLq%-pMx&(Yc<2vwBR?M>eQ5WTqjRA zO#0v(^tBt*`{)L(;ri@Nx{TV`>y|Lcr&G_Sx^`??3d-=76#qo1{g>4n503u60@HdA zC@A((e#V-2#dcw6T!q{H?Xx%Wo)@z&1gHIX$ygb3EWAr?P#e=Uq|3E)C##I;fX9Sp zq(eR}u8g6poiE-@8|3_6$x`Ea#C9O28UO3 zEp0U?Sw&#2PJu;qbq-iCpb3`em9RL?HCA^waQJ4}7mx?q@-4ETADk zNLd9GTSsw{P3F^vKtpXcct^GziKxhE1|5D5@IFP)k{quQJlZxgsd5I zUak!}JD{~aTHn3(imOV;>(eAbK7P_>_~YpVfclRrUczc@?t{w1Q{N0|W+sM^5}d6yN#K zM-Id=GWFj-s*4U(0{+fQ8!}C?_mnX^h_lST$Wso!s41$_xYxgN(A>uC(8o=dNg+?f z|DnE8km6ji=BHy1A#UE<8USwI)%)$N}U!TOfbFtK_}+fXe`_%c_wPU zBQ=m|M=%nm4ziO?uplO4U_dJ(_nC+nfW_*1ybZ({{z@xaP(C>WB&b?RtHj z)3Xz`tgFOGpJdRXx=O?9pJWK-z7GyOqWik+>k|B@Sn*G;Zmrh%Q~1FR-F#{1R9TRWA6X4 { props.config?.forEach(item => { - console.log(props.configData) if (item.default && !(item.key in props.configData)) { props.configData[item.key] = item.default; } diff --git a/src/components/manage/PointGoodsItem.vue b/src/components/manage/PointGoodsItem.vue index 87a96e2..49e8fc2 100644 --- a/src/components/manage/PointGoodsItem.vue +++ b/src/components/manage/PointGoodsItem.vue @@ -160,6 +160,11 @@ import { NCard, NEllipsis, NEmpty, NFlex, NIcon, NImage, NTag, NText } from 'nai :line-clamp="2" class="description-text" > + +
+ + +
+ + 上传原始图片 + + + 请上传一张方形或长方形图片,将会自动分割成3x3的九宫格图片 + +
+
+ 请确保您上传的图片是方形或近似方形,以获得最佳效果 +
+
+ 原始图片 +
+ 生成预览 + + 重新上传 + +
+
+ 九宫格预览 + + 九宫格预览显示了图片分割后的效果,每个格子都可以添加下方图片 + + +
+ 完整预览 +
+
+
{{ i }}
+
+
+
+ +
+
+
+
第{{ i }}格
+
+ 九宫格预览 +
+
+
+ 附加图片 +
+
+ + 添加下方图片 + + + 删除下方图片 + +
+
+
+
+ 生成九张图片 + + 打包下载全部 + +
+
+ 最终图片 + + 以下是生成的九宫格图片,您可以单独下载每张图片 + +
+
+ +
{{ index + 1 }}
+ + 下载 + +
+
+
+ +
+
+
+ + + + + diff --git a/src/data/obsConstants.ts b/src/data/obsConstants.ts index 0a90ca4..1841340 100644 --- a/src/data/obsConstants.ts +++ b/src/data/obsConstants.ts @@ -36,4 +36,18 @@ export const OBSComponentMap: Record = { // settingName: 'obsExampleComponentSettings', // version: '1.0.0', // }, + Example: { + id: 'Example', + name: '示例组件', + description: '一个基础的OBS组件,用于演示和测试功能。', + component: defineAsyncComponent(() => import('@/views/obs_store/components/ExampleOBSComponent.vue')), + version: '1.0.0', + }, + Controller: { + id: 'Controller', + name: '控制器', + description: '将用户手柄操作映射到OBS的场景中', + component: defineAsyncComponent(() => import('@/views/obs_store/components/gamepads/GamepadViewer.vue')), + version: '1.0.0', + }, }; \ No newline at end of file diff --git a/src/router/manage.ts b/src/router/manage.ts index 350f9e8..32bd13f 100644 --- a/src/router/manage.ts +++ b/src/router/manage.ts @@ -93,6 +93,16 @@ export default //管理页面 danmaku: true } }, + { + path: 'obs-store', + name: 'manage-obsStore', + component: () => import('@/views/obs_store/OBSComponentStoreView.vue'), + meta: { + title: 'OBS组件库', + keepAlive: true, + danmaku: true + } + }, { path: 'queue', name: 'manage-liveQueue', @@ -202,6 +212,24 @@ export default //管理页面 meta: { title: '数据分析' } + }, + { + path: 'tools', + name: 'manage-tools-dashboard', + component: () => import('@/views/manage/ToolsDashboardView.vue'), + meta: { + title: '直播工具箱', + keepAlive: true + } + }, + { + path: 'tools/dynamic-nine-grid', + name: 'ManageToolDynamicNineGrid', + component: () => import('@/components/manage/tools/ToolDynamicNineGrid.vue'), + meta: { + title: '动态九图生成器', + parent: 'manage-tools-dashboard' // 指向工具箱仪表盘 + } } ] } diff --git a/src/router/obs_store.ts b/src/router/obs_store.ts index 822e026..82c61a5 100644 --- a/src/router/obs_store.ts +++ b/src/router/obs_store.ts @@ -5,7 +5,7 @@ export default { { path: 'gamepad-manage', name: 'obs-store-gamepad-manage', - component: () => import('@/views/manage/obs_store/components/gamepads/GamepadViewer.vue'), + component: () => import('@/views/obs_store/components/gamepads/GamepadViewer.vue'), meta: { title: '游戏手柄', forceReload: true, @@ -14,7 +14,7 @@ export default { { path: 'gamepad', name: 'obs-store-gamepad-display', - component: () => import('@/views/manage/obs_store/components/gamepads/GamepadDisplay.vue'), + component: () => import('@/views/obs_store/components/gamepads/GamepadDisplay.vue'), meta: { title: '手柄显示', forceReload: true, diff --git a/src/views/manage/SongListManageView.vue b/src/views/manage/SongListManageView.vue index 2f283b1..c948085 100644 --- a/src/views/manage/SongListManageView.vue +++ b/src/views/manage/SongListManageView.vue @@ -18,6 +18,8 @@ import { NAlert, NButton, NCheckbox, + NCollapse, + NCollapseItem, NDivider, NFlex, NForm, @@ -60,6 +62,18 @@ const showModal = ref(false) const showModalRenderKey = ref(0) const onlyResetNameOnAdded = ref(true) +// 文件导入的列头映射配置 +const useCustomColumnMapping = ref(false) +const columnMappings = useStorage('song-list-column-mappings', { + name: '名称,歌名,标题,title,name', + translateName: '翻译名称,译名,translated,translate', + author: '作者,歌手,演唱,singer,author,artist', + description: '描述,备注,说明,description,note,remark', + url: '链接,地址,url,link', + language: '语言,language', + tags: '标签,类别,分类,tag,tags,category' +}) + // 歌曲列表数据 const songs = ref([]) @@ -550,63 +564,81 @@ function parseExcelFile() { // 解析每一行数据 const parsedSongs = rows.map((row) => { - const song = {} as SongsInfo + const song = {} as SongsInfo; for (let i = 0; i < headers.length; i++) { - const key = headers[i] as string - const value = row[i] as string + const headerFromFile = (headers[i] as string)?.toLowerCase().trim(); + if (!headerFromFile) continue; - if (!key) continue + const value = row[i]; - // 根据列头映射到歌曲属性 - switch (key.toLowerCase().trim()) { - case 'id': - case 'name': - case '名称': - case '曲名': - case '歌名': - if (!value) { - console.log('忽略空歌名: ' + row) - continue - } - song.name = value - break - case 'author': - case 'singer': - case '作者': - case '歌手': - if (!value) break - song.author = parseMultipleValues(value) - break - case 'description': - case 'desc': - case '说明': - case '描述': - song.description = value - break - case 'url': - case '链接': - song.url = value - break - case 'language': - case '语言': - if (!value) break - song.language = parseMultipleValues(value) - break - case 'tags': - case 'tag': - case '标签': - if (!value) break - song.tags = parseMultipleValues(value) - break + // 歌曲名称 (必填) + const nameHeaders = columnMappings.value.name.split(/,|,/).map(h => h.trim().toLowerCase()); + if (nameHeaders.includes(headerFromFile)) { + if (value) song.name = value; + // 注意:即使找到歌名,也不立即continue,因为一个列可能对应多个信息(虽然不推荐) + // 但标准做法是每个信息有独立列 + } + + // 翻译名称 + if (columnMappings.value.translateName) { + const translateNameHeaders = columnMappings.value.translateName.split(/,|,/).map(h => h.trim().toLowerCase()); + if (translateNameHeaders.includes(headerFromFile)) { + if (value) song.translateName = value; + } + } + + // 作者 + if (columnMappings.value.author) { + const authorHeaders = columnMappings.value.author.split(/,|,/).map(h => h.trim().toLowerCase()); + if (authorHeaders.includes(headerFromFile)) { + if (value) song.author = parseMultipleValues(value as string); + } + } + + // 描述 + if (columnMappings.value.description) { + const descriptionHeaders = columnMappings.value.description.split(/,|,/).map(h => h.trim().toLowerCase()); + if (descriptionHeaders.includes(headerFromFile)) { + song.description = value; + } + } + + // 链接 + if (columnMappings.value.url) { + const urlHeaders = columnMappings.value.url.split(/,|,/).map(h => h.trim().toLowerCase()); + if (urlHeaders.includes(headerFromFile)) { + song.url = value; + } + } + + // 语言 + if (columnMappings.value.language) { + const languageHeaders = columnMappings.value.language.split(/,|,/).map(h => h.trim().toLowerCase()); + if (languageHeaders.includes(headerFromFile)) { + if (value) song.language = parseMultipleValues(value as string); + } + } + + // 标签 + if (columnMappings.value.tags) { + const tagsHeaders = columnMappings.value.tags.split(/,|,/).map(h => h.trim().toLowerCase()); + if (tagsHeaders.includes(headerFromFile)) { + if (value) song.tags = parseMultipleValues(value as string); + } } } - return song - }) + // 如果没有解析到歌名,则这条记录无效 + if (!song.name) { + console.log('忽略无效记录(未找到歌名或歌名为空): ' + row.join(',')); + return null; + } - // 过滤掉没有名称的歌曲 - uploadSongsFromFile.value = parsedSongs.filter((s) => s.name) + return song; + }).filter(s => s !== null) as SongsInfo[]; + + uploadSongsFromFile.value = parsedSongs; message.success('解析完成, 共获取 ' + uploadSongsFromFile.value.length + ' 首曲目') } } @@ -615,10 +647,9 @@ function parseExcelFile() { * 解析多值字段(如作者、标签等) */ function parseMultipleValues(value: string): string[] { - console.log(value) if (!value) return [] - // @ts-ignore - if (value instanceof Boolean) { + if (typeof value !== 'string') { + // @ts-ignore value = value.toString() } return value @@ -680,6 +711,31 @@ function resetAddingSong(onlyName = false) { message.success('已重置') } +/** + * 重置自定义列头映射 + */ +function resetColumnMappings() { + columnMappings.value = { + name: '名称,歌名,标题,title,name', + translateName: '翻译名称,译名,translated,translate', + author: '作者,歌手,演唱,singer,author,artist', + description: '描述,备注,说明,description,note,remark', + url: '链接,地址,url,link', + language: '语言,language', + tags: '标签,类别,分类,tag,tags,category' + } + message.success('已重置为默认映射') +} + +/** + * 保存自定义列头映射 + */ +function saveColumnMappings() { + // 由于使用了useStorage,映射内容会自动保存 + // 这里只需要提示用户保存成功 + message.success('映射已保存,下次导入将使用当前设置') +} + // 组件挂载时加载歌曲列表 onMounted(async () => { await getSongs() @@ -1144,6 +1200,99 @@ onMounted(async () => { 此页面 + + + 导入设置 + + + + + 自定义列头映射 + + + 启用后可以自定义Excel文件中列头与歌曲信息的对应关系 + + + + + + + + 请输入各字段对应的Excel列头名称,多个名称用逗号分隔。导入时会自动匹配这些名称,不区分大小写。 + + + + + + + + + + + + + + + + + + + + + + + + + 保存映射 + + + 重置为默认映射 + + + + 设置完成后请点击"保存映射",设置将自动保存到本地浏览器,下次访问时仍会使用 + + + + + + + + 文件上传 + + + + + 直播工具箱 + + + + + + + {{ tool.description }} + + + + + + + + + + + diff --git a/src/views/manage/ToolsManageView.vue b/src/views/manage/ToolsManageView.vue new file mode 100644 index 0000000..634d688 --- /dev/null +++ b/src/views/manage/ToolsManageView.vue @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/src/views/manage/obs_store/OBSComponentStoreView.vue b/src/views/manage/obs_store/OBSComponentStoreView.vue deleted file mode 100644 index 5575e43..0000000 --- a/src/views/manage/obs_store/OBSComponentStoreView.vue +++ /dev/null @@ -1,376 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/manage/obs_store/components/ExampleOBSComponent.vue b/src/views/manage/obs_store/components/ExampleOBSComponent.vue deleted file mode 100644 index 2042d03..0000000 --- a/src/views/manage/obs_store/components/ExampleOBSComponent.vue +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/views/manage/tools/DynamicNineGridGenerator.vue b/src/views/manage/tools/DynamicNineGridGenerator.vue new file mode 100644 index 0000000..903e2bf --- /dev/null +++ b/src/views/manage/tools/DynamicNineGridGenerator.vue @@ -0,0 +1,499 @@ + + + + + \ No newline at end of file diff --git a/src/views/manage/tools/DynamicNineGridView.vue b/src/views/manage/tools/DynamicNineGridView.vue new file mode 100644 index 0000000..bdd7350 --- /dev/null +++ b/src/views/manage/tools/DynamicNineGridView.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/src/views/manage/tools/ToolDynamicNineGrid.vue b/src/views/manage/tools/ToolDynamicNineGrid.vue new file mode 100644 index 0000000..53046a4 --- /dev/null +++ b/src/views/manage/tools/ToolDynamicNineGrid.vue @@ -0,0 +1,608 @@ + + + + + diff --git a/src/views/obs_store/OBSComponentStoreView.vue b/src/views/obs_store/OBSComponentStoreView.vue new file mode 100644 index 0000000..840c30e --- /dev/null +++ b/src/views/obs_store/OBSComponentStoreView.vue @@ -0,0 +1,421 @@ + + + + + \ No newline at end of file diff --git a/src/views/obs_store/components/ExampleOBSComponent.vue b/src/views/obs_store/components/ExampleOBSComponent.vue new file mode 100644 index 0000000..28ffd15 --- /dev/null +++ b/src/views/obs_store/components/ExampleOBSComponent.vue @@ -0,0 +1,182 @@ + + + + + \ No newline at end of file diff --git a/src/views/manage/obs_store/components/GamepadStick.vue b/src/views/obs_store/components/GamepadStick.vue similarity index 100% rename from src/views/manage/obs_store/components/GamepadStick.vue rename to src/views/obs_store/components/GamepadStick.vue diff --git a/src/views/manage/obs_store/components/gamepads/GamepadButton.vue b/src/views/obs_store/components/gamepads/GamepadButton.vue similarity index 100% rename from src/views/manage/obs_store/components/gamepads/GamepadButton.vue rename to src/views/obs_store/components/gamepads/GamepadButton.vue diff --git a/src/views/manage/obs_store/components/gamepads/GamepadDisplay.vue b/src/views/obs_store/components/gamepads/GamepadDisplay.vue similarity index 100% rename from src/views/manage/obs_store/components/gamepads/GamepadDisplay.vue rename to src/views/obs_store/components/gamepads/GamepadDisplay.vue diff --git a/src/views/manage/obs_store/components/gamepads/GamepadStick.vue b/src/views/obs_store/components/gamepads/GamepadStick.vue similarity index 100% rename from src/views/manage/obs_store/components/gamepads/GamepadStick.vue rename to src/views/obs_store/components/gamepads/GamepadStick.vue diff --git a/src/views/manage/obs_store/components/gamepads/GamepadViewer.vue b/src/views/obs_store/components/gamepads/GamepadViewer.vue similarity index 100% rename from src/views/manage/obs_store/components/gamepads/GamepadViewer.vue rename to src/views/obs_store/components/gamepads/GamepadViewer.vue