From d8eeef5c5786fcb100549570449a31d290a5c959 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Tue, 1 Sep 2026 21:01:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(panel,=20netmgr=20=C2=A711):=20MeowPanel?= =?UTF-8?q?=20=E7=BD=91=E7=BB=9C=E7=AE=A1=E7=90=86=E9=A1=B5=E2=80=94netmgr?= =?UTF-8?q?d=20=E6=9C=9F2=20=E9=9D=A2=E6=9D=BF=E4=BE=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端(patch_v2/meowpanel/meowpanel.c,/api/audio 同款透传模式): - GET /api/net/status → 0xE0 概览 JSON(接口表 + WiFi/BT 摘要 + 速率) - GET /api/net/conns?entity= → 0xE8 连接表(解析 entity|本端|远端|状态|寿命|域名 → JSON,transit 截断标记) - GET /api/net/dns → 0xEC status(mode/enabled/upstream/缓存命中/查询/deny/resolv_modified) - POST /api/net/dns/flush → 0xEC flush(写级:HTTP 层走 require_auth;IPC 身份由 netmgrd 判定) - GET /api/net/log → TF MeowOS/logs/ 最新 net_*.log tail(256KB 上限,1000 行) - netmgrd 不在/超时/应答异常 → 503 降级 JSON(NET_UNAVAILABLE),面板其它页不受影响 - 新增 --sock-net / env MEOW_NET_SOCK(宿主/qemu 测试用) 前端(web/,MD3/MIUIx 双主题沿用 270 落地件): - 侧栏新增「网络」入口(#/net);接口卡 + WiFi 摘要 + 蓝牙摘要 + 每实体连接表 (entity 前缀筛选 + 5s 轮询)+ DNS 代理卡(统计 + 清缓存按钮)+ 日志查看器 - netmgrd 不在 → 显示「网络管理服务不可用」占位 + 重试,不白屏不报错栈 验证:宿主 cc -Wall -Wextra 0 warning;mipsel 交叉编译 0 warning;假 netmgrd IPC 桩 (Python 帧级桩)联调五端点含 entity 过滤/flush 成功与 403/503 降级全通过;headless Chromium 渲染 #/net(服务在线/离线两态)与 #/perf #/audio 无回归。 后端起二进制 md5: 21c70046476d3bf63e76f3d63e9eca2c(mipsel 静态)。 遗留(主会话部署时决策):netmgrd flush 写级依 SO_PEERCRED 判系统身份,面板 exe 位于 /usr/data/mnt/sd_0/MeowOS/opt/MeowPanel/(非 /usr/bin/meow_* 亦非 os.meow.* 包)→ 真机 上 flush 会被 netmgrd 拒(403)。需在 netmgrd classify_exe 增认面板路径,或接受 403 只读。 不部署到设备(留主会话热更)。 --- patch_v2/meowpanel/meowpanel | Bin 220668 -> 226716 bytes patch_v2/meowpanel/meowpanel.c | 252 ++++++++++++++++++++++++++- patch_v2/meowpanel/meowpanel_host | Bin 147760 -> 148080 bytes patch_v2/meowpanel/web/index.html | 4 + patch_v2/meowpanel/web/meowpanel.css | 13 ++ patch_v2/meowpanel/web/meowpanel.js | 217 ++++++++++++++++++++++- 6 files changed, 484 insertions(+), 2 deletions(-) diff --git a/patch_v2/meowpanel/meowpanel b/patch_v2/meowpanel/meowpanel index 693a7c44048b2985df3ea89440ec0041fdd5e262..9b0768fc523ec1854d8d6a8a42a5956249d08036 100755 GIT binary patch delta 81778 zcmbTf4}6o=^*?@}Cm{``lu$}3wS*)*NlK|DlnT{V3|Nsd#wsE*tr)N%C?W%N%rO%k zbDd+P@}Nb>FhGT>%obX-Dq`KxF=dWT=BJ-owJ0iV=&CYh%INQX?w{moDf{gAt*?0Q zbMC)$&pr2?bI-lc!a3J8Ru1T2oX}b1L_hvpj0^+i9Wp-+unPHAC+z%3Xlh&iDnD3N?YW9E&s7@z9PAis z9(&-#FQZM%94xd|XNT}>!LJR!F8q$kXTs61z1OpIo4}s|-u}MM3VQuk<9W8k#QMkp?EF_TnoIt#>Qs+3_rj`P4g6eiWVIn)Y!Ta8hhQR zv4bOtnT$=GAlO>XpTz(6q-$*AD3PyE6tKHjzIU|7Km`l>MLuPx2Q>DwOJh{O!Y%MV zSwD7_7ELxm1wH~X)WAqtfHMDa5s1qd4Lk@!ZNPogl22vmkLu4a5cR)pAz&N^^~(X0 z07>A5$$a$xJ&gRSfug`}NulcCQ6WXi4z{5I`a56#PmoU~To`rlKO*o%ul6nD7bA#x zM8(Vc7~zLtV~xze=sfveaEMxH!JvBoQGEm4APx_egmC`ff=VZfHTEnhys}WRSk1Au z5z1dJ3Am&W0x19AUO_-+9|T-CNMqlW^@~LP)cjLNR3Ib^6!g&n zv7hN<3ic!a`hYTVwC4}OMqj>%ZiyQ z`Ojh*o=--oeimeaR>6b5XsYUZ2+ZSHBAqDk1KB`dtAO%LC5x4!vTDkA(MFSG@i-~O zz4I&O>d>Qd1QtERsDS{aoJgyX4Ir8Pqx{?d!xTIN0_$YHQdG&xNKpRma+O5Ck~-g7 z;8!TH_CGW*BOP2qJtD9#A*K8s=wJzczW^smo=7#5cKix@=EEY5t-ut1?a@ZD6_|@3 zLGR~){a%cE0Se^-Rs-h)?jxU>m+s3v1Jr$37(20gJ{@IFPcI%`G4pEAqNR7NTYzxku5wtiH5--nxj@xlFDkG1~dgLvad z8ygr^J@))|3vXP!WYtRFCH`vlyz2H<^Op+5 z_wHD@V#z|vUApv+B472wWtOK!OIEC0b>qr~3zw<<6$@A1zVyx;Z@ayE$)Y9AFATj% zD_FE-=|bNnK3|b<>5^sC()BkK`D70vq*mOq?56pv7FIWZl+&o?@X;=;_FV$}!Xn?o zWvi(B=JmNVY&JYJzj?v+y7R&dSKfZptrspci`_Z>mn~d1cIB%1tL`u_b#EI!cK-4u zV+nQB?aP*}WXZ?s<_`Dberd=lMqP8f@w!WutX{TqEOl$1H3|nLD=fXeIpCjZk095B z;Vit=KYrXw&%$N%7c5;^eW}0NbI0a{k!no z@LP>vJD$6H{lz}+#|{p&vs1%+{toB%eD0l3&#gm5nQ5r+L7JY`5BX7!v{qb;O4%qp z8^0z?2Mx0GY6}rWKsn0oyU@-yenzS zl~yo`e&Q@(CZqFCS_8RhFxC zR3!v#kr`B=0u|_4{ixz9OCzc=f@{vx0kxsZ5dpKWu(N9Xs_NH`OQwIN zm9(_kS?D*A75wt?V=qAlKsw{4=6N&DYSB(?uHJ%K>4Jegjr6W*@L91% ztD3H{Ntegnq}F#NK{!hq$!Lq&Ri4I=_va~K2y zR{cq19e}6b)R=Q1IQEvtiU2otXlw>x=v~wUJb4uL0FS(ndVq^RK)omuRUe_lOt9#0 zs0hfqG&UE|^KW(sXtluu8`^br7BbJ%9)8I-3DFyPwXM12zEG z02VoP)&ST9c#xi*Iy(ti(O+lLY`A)%bnN#5+Xm}wF5u>&I$KLHM`!hbiD9S+XdjM> zfDu48n6c#-U@r}rov*WLfJa8?Y$;&vNS&<%jCjy7;0!PJ?11}xIy(ipYLw2hvp}$4 zkFqclH35VR04obo5pdNQoizdG7wPN>pyxtV1YBOMv)mz=im^Hi1BOC6s|HK}#sJTZ zLx+H|5)cenHXZ>2z;-}aHe(wn=&T%Y&Bf>s@ZiN!ovlH_^9`LP01pA~1DtjlSPU2m zqvBAA!(^R>0G*d3ZUIW2z2rK_;$5JwP@Mu@HI&JPo+^TRO|n0f)W~4gpqu z2U7#+yat@Y>WM{>*bKyhMW7gP_RVMj@DyMd;L^o9%NPcsx&;IPRxbkqfZ^LQV!%Uy z3BaZaHg*7T#zY(I09+1u3UD8wGZ%Ayv5n;eE(R4=u#V71GpS;6JXh8AP}$< z@EG8+u#IKpVf|N5wlPm0<^nJb7@lHd5x@q(7~mPe&45cUx3N~hBY=khy8w>?=2l?i zaRFokFc+{2Fa%gX)5fX*L*KDMP(dKzTELD<3=A-L7C3bQ*8ic|F!%YGyKBKBz?!)> zRsooC9fCQ4MOCN>cnUB9ST@hb4g#*Z(Z;#}BlB%6dju2~U;*H+1vWMf(0P-MRns$I z4Dc}ECO|s^Lrs875hOYkMWSVqjU5Nvw-^n%!6LvS!0KBtM}RGWO9{UeQ$zUM&;Z~n zz=MFh06PJX0iFiTUxuj}2~GkUfDM3Qz{)#qY%btZz@>oofYBHd?MQ3{WZ$>32EfID z`v7YJ4+HK3JPvr|F3gz+gaCQ~ol%Swa4ldJU}X%f2CVuqMhdtOa2H_HPi(9W@CZU- z#{p0M0t9-2UvG;t1BqknA(enEZex{z`v9u}^K0RS0d53b2Uzg{rU0-Bumy1425cGoPXtr@8e7&vSMD*y@t&0MRnhW$uX zWX2|$FMam{M+F`ZJ#5arrcht=OY^R4^7<9*072&bsv-RwkQdslvr6-U`9mBB@D$r@ zzJ84_u=H0zYP^{y`|L+GQ{P~Fz+T(W0LlsczAaFq%v`o4&kW6R>J5*Ym(20$l?ij+ z9Jk()Fz=q@yYS>Topqu-NLgI@sJ20Wz*Y;B&Pj!pVu!Xv{lJJKzjZVx^%$_TcbT8e zDb&wAXXag7s4srWoO*5Hz_qVH!_n5fBD2klqQlJP*Vr%I2nEhwg|Y-dPOWF!qgpL+ z#ET}t2IO^#S_l2+)~X9G>Hv1r>pG)Ss1ftceN@}1o3;)12l~~*Z=jkCH46R&O^0Wc zX~^WH6#={af6Oh{1{_#ftmvru>a}hM(bV<6`3bNMNJjo<=FN3G4k20jcXQI*fa5fh ziI2@&kTfv%>MzZQP+%I8&acep=H@vTBbj~H{OeqI+BzhQY&Nrd?$97jEIUTY&F49+nh^IPBb_xB(ousX}ej+k5L4KX_x*aKl; zW(>ia1SJ?w*fN=XxDn(>a?Gc{8|c3d$*Nokoq137C`T)0e@lH2>YqV=%>?Lt$;u&B zk7^I<8*Qe2L%#*XXoe=d|=Dez${sxk3u7-9n|Agfhri`o2hpGbo zmm+!m8mI^J(mBI?FxjjYm{oJ2I*|rTT@{bQ(?qfX_=9uIvuOArk~6L~-8bYpjw5;a zT65A3ZdV4p%o*Q>6%j)%Gd&B2JAtc)Avg)C80MIbr^@TiCvI>%RwLQDzB zEWOR#KhHg79g?S@x%UZbS~bhWa~Vf|({dxpW2e zvS?@4iy(O%=AaF&pw-R{i#QYj6+?al z%)vpiCQds@UW<1DyZnc+HlmZm{d*|~4{9E!PO$15nCYIEV}>L4^ix2U{|Ku_GuPjc z(?6S>>$_==Uz#^8otRVxOl{O$AMvF}$kUEN4n_6D5&QJDKvmv@p`j#bjYtM?_9l?m zhP*04QJbgwQLRpY$o8OpV?WceA?*QYZGRGqgD98(V@N{IKy!f3(VLJ zc83cN`rNgqdw!lHgyiY9=A`)nM-`GSKQ(We?{>tH+eetwQ)Gm^*eH=h8u4ax92 z^L1c5kUY80{M-CMeQ%SzruK) z0d7?*jIhLUyXk@+e%72+o#QA%a^17$b=7W1C6b}%&AY2H8YI`gXg*QxPD>yeX|tI( z&Kd4#L;7T!`AM}qdJM_KKeh9j!%XJVlBK152Kc2lNxYNrK(TCWB5Hx3A;};dZA3bN zlY;Id(#nCGaX;c2RBm==uC#L8+|NZ`4f3Yp6okYlnMsYULgry)#;79xh?pASDu0gM zH6bLCR5k(pQs65Ik3Z_T1-N~{m7Di08sa#Nr_(<-&o0cFeiBIo<|;xZ@kb3X>}=Ko z#~a2YH9*^=1aM)b(V0t8PGv&K>s)8fTLhUwa>g&ryBFm+mLj?F7u3mw8YJ6(f%pzp z#ve7f8Mw;z=Qc=-x)ph~>&*`r1^ORDaxQ$026O(LA(^x!?ASlC2kf*+-OJp0MR>Gt zKmY<*`Xhp9E4F-tx$NdVM+C{^JlUT%WD(QO7Mt@I4Ra*$bkHI^->;Jp2*kPXc!eI4k36NOokp9<&SB!!m(X$AkZsA&*9YK0HdI%CfOn zs6vKEWN=X<9#o>jng`9h7YE8{LwMj(gw3c3{)nzx;3^Y{>u?OD4X_@#jleAyI%YZd zt}gp-KgVHYoY`ugT^w+nL9%SSS-8aKHn1N&`52;Y!b%npNkm>b@SXWLX2hW= zyCT!6WRvJxi@bssL=Q!tOVI^3umsgZ9?^(;$yMG8d>8Pggr6($)Yf6(jlD_!DmfXz zNjr(mbx)gTZ^>~uvClp7jG1?9z+H-D$Fn`VpzdY>&z>{q-Rg6%LUQf%a=FgP4dO6WM;-}D9U9KMBo!IpsI%wwI z=5`k$dFnL;A%Uhp8fzFhb_h+`&0_40DsQ%zP#mG)Fan)a27g2a#T4p+JH#=fYAtZf z|Agjj$*QeDtvS+D&mID<132!=qB`~33Ebf~!EL*F7QNDXaU!U2>aS+rGG8==WcIrV zsLRfXfC}Ia1E=^!L!Jwqy|d?#sqAv#J-}P*uLZ6HxCrv;kIHQVuKXxs>l`C+yC^u) z0%Vf~*@lAE@1?XaRXzgTVcwPJ~z*D(1z=e*XE-ili5zd7`$mS1H1kzv( z;O2fvgP|v>J3UC2BV*Nv=FHpO{Ub;&J`PrzSJ{SS+1X&bzYEISex}>i?@V{)1LlU? zCq-kgc?}oa+L+A}jXKlHU8}s<$=!#aUOxB0mBzkLS%%-^K}RpfovhR5VK3kaa+qEH z*wGh)XWTC~o_6nVJmr3-vCI8*<4O14#^dgm#$)d0#!mO1#t!%H#&&lT+P|k@KiB#= zX0J&we{IbC&hq}>bm?0gac){ZH#puPxZ7LG;Suje9M<@}hDVn9)=00BFVnVw*T|LW zGL*?SA6$NIUa&~xBJ0w(HMabUIsL6|Hou4Im-A}-DE5o`x6Ev@LKt8Wd>(Y8`CnrF~QH%e?&TTv4K^i8(?`H ztdC;~;+Tp!rX-H3iDQc5n5sCYERLz;)5=D^@U39&NX<}l@m?3pc(&Lu@+2XQO|Bir zJe(*8=4j1{5byBE-he@DWcGf>Pz@|83$u=K<|QjHiFSS>ihNldFhrG7QPio5#&p7W zeld1{8+d;B+lPrXnXZobKa`F?8pgU5_KuMbLmZS zGqNfdbDhe#ikHn?Y(Xs+sHGOvSbxT92cAhR1w{>3sh*3WoXc9*eJbW3blJw&kVxic)| zYp>s!E}N&O8a=cC?S{VwP1i=iMt6CatF5s;vl*&GEC2oIQlm`Y8*I;bI!JAuc1@I` z#FzQCjWmfdbo>o8?hi42oNT-!BhlE7ALV1o>i$qdcXOF*(+w7eNrTqT*dAxNSJ9qP zAJ^EuMd{AVS%2u9E|B74sQguHQ6zoj+z?=TV)S znZZWwY6pCC3v*6G8u?f&lM7yxYjNz?q#7AycyKxKX!VKEdK%wvCko!snxye{Wd@D= zPw=5caSG%zuvqZxXT17PVyMGdkQTNR?fy++5TY5S&}nu+(#zf5Ii;og&LE$sf;N2~ z>ex}o(3^IK^h9G3ewXuh>_!1J-c+PlpD-RW^v8k$ecMjr)&5f~!-YCmr$uE)Ku$+N z7l^oCc3!4$#f)qVp47HM8T(3?vTcnnaAh{0`vWcpbUA#+X~0^*Lj==&#sPv(pV0#7 z)P2T5KvK$1<~6!BQtU&G_RRgkfh@~NkFsHWs%;m0jSLhzoUt`{oEOr{?Ov~OOs0Q~ zv|VcU`jFRf%5)3TXJnZgq)*9o9nzgL{Trl@$n?Amy+*rCuXB5iXsdiUIM!>l$@C>d zyv9CNXrkBHCDUsQy+*xEKU(ZHHp%qNQC?%SOxFWHO{ND71aX)$l7SQ1UV}-zhQ1mE zK3cwHwAVNw3w?ip*JzUIPS~}WOrJ!B3R$@#!)vUO_))+YN&IefW=QtuQr(sN~cX3%Ry zWI8*`YZS=zL2xA`(_2u!Ql{@h$6=ZNQIssXe5gjD(~^j659VH`Mi#lj#M-6`B4P z1TbHwe}r_lB<_zO^oYcN41#9M^s7kEkm)Uuk5XB_3*0>@@$=A5J5NWo^0i>sVpRc+ zZkFkH(9l|$)_{-5^b%BFF4OO!gIw9cdFDn-g5psXz@jcWf(L*Mx(AJhyymta-5*8&@dEe~q~b*rTjTAS zThD1?B%1JVV)}-Ja9&3_bJ)k-9&Yn8;Ph@b$Pe-8BP3bbuw#sc6DPH;aTj=VOnWST zT-y=P*LTLby+>J{O^y}}myXQQV$p!VDFKIXC^iWD;}}o;19a%$6w{OWNE5z&ER|>a z_a#Be{PWZ=)9ZtWGj;~;(tB`%Kkb>(7Fgw&o`#LUWk3uC^@p{V#!=4MjP@Sgny;u^ za~K0cK3o>5kCVsZD?!JJHau^Qd!40>F;4;>cU)sZ7|!~*>VUlIoUMXe?U_4+R6m)g z_cOxw#P;mTdP^L4Kmuc&CK}SQO5vV!)@cTV!Nhh8F~AbOZ_wC1wTszA?!LS9mPWyL z^Ka2SY&!(EX)I361}@2G41y#Dl#l>_1~WkTfxrhX_)`*}34E~y-zo7Kz+Ys+ACdSp z;4fieBFzD2ZH+t4$@dJqxTV)H?~^Q`5`!7+9oYPOfrg_Rhr#neI^|_j?GdLfwaI<7 z)*eJ9@(x)_FwI)RoODlK^gyrdYzu=oN~e!HX_uoI0y3O53e8qdGt>(F`&esPz{jw+ zW4czJp6kQhw8Y0aSK<1Q*gq+8BT*zVY=dm?({_%Jd*EUJ3UrYilMG{#a~UR?E@Lr- zeHr^4PCKp~1=6*!D_b|y?+rwm{&akdYXTe4%cWJx%@Q4Q$&X&foa~t%AN8crR*bh7; z78FY9fqNQn(zeAjnU4!GEy<0kvQe4{oAC-)fEp zA+5}pP58-p?q=RliwaJ}BG4oDa=USlkB;9}Il9rTjVzJ~PRI z`rs0@-JbbauoII{!T@c{3Gaw%LbRHBf%;&(EI@49lwydo(lngH6UEe^b)Afs`9#b(3o(_ljRC|l zS%&I{C7#w;IE9bu9!rH^r!w@@Oe{)beX|9BOyWt^y=%d@Nj#~#;kMKi)?4u3u;6Pr zKB{HV99GDTm_|3{aGXW%<~82Z5xR!w!3K?zRz*h7Eoyps_+3U9CbvjTP-_rqOqw;*dXcHDs#)W7%PVM z#ta5#@OIHKsS{ed)CmzzZCl$^f*mFH{$4eT&a9HXuv<_~!l)#e8Y2SX8*u+YN%93u z2=ZNjAxW3qH49^TaXrtD#~zlnQCYq(n?dUw%}JGtyFWB1y38XBcuG}`^M7?d>F`%poi=f zxc9{yG*@W``HVD2{+LHsc?od4hE#hLw$db9d7eT`sZbwfr~|9!!V8#1-+oJ|RT9cf zu$Wd12@MHJ5jrf8ZJm;~gaj#Ch6oE4dcHwO6IE7*#%c%Bf@htL5X7!UIx6tM`aKZnfGb1X3Ny`kOPkF5 zA$jA1Trka}Q-Dv{b*8_;DU9fU(L7wwlTtCjRu4M6SQl%UaP679gM|CpU(r#>qc?iY z9rwGVr>J@;rmJO2ORp25J{9sS1rx5vZ1T{bC!#k}8g$Zg2zeAH&QKg0Gh4$tdo%;43AbOw)@N z{4`7X{e;J2=9am_lJSzILRjKQqM>Ij_;QIK4*YHlzD(kYQ>tU~kP9TfKk%x3!bd$a zgRJoZ*-$>@xeF}ca)4Inj^H7Qr?552p}&Cq7*ZQe@i$P0z3lQk@NUS-C;`Y0|M?iY2)iZIBA_ zdVH)~mW?V_Uiyb~ss6kV1>1WhMBweRF|}0~0`Fc;$7T!R$-!Zo)(U)-?|9#o4bc2V zWCfDokCF}dWZ$C_ujZ6wWuu%^k`*iKx9&c7Dyd!v`uSFCG&O2vdt!Uet+0<5KDX?q zms25H|0o`uv!Irsby+s%c&)Ge5b%i`I?;}GqRCElwSnD zRfE?~%Q54%o*bh5>_a_qRBl-x<#sfSa|cvl8fd^<4b_zL3NT z`%jJDyFZEKQ}S9{&u1$0lNWp9h(KZ~xr&CICUO?Xv z?XS$djU^@OxS449c~D#(pd-{K*2G;@zD318i}LB{`MERZ-5cHdH_n(_Ho7w(c9(!s zcRBfMX@2w7jfK(eAO;_>2vC3%gVRUB_|OrmvVL|RC%uT<3i2&9RvlP<;x~=dL;@>F z9YY_L+gNq(O9ar>0yx6om!^XjDv=aCEa$yZ!Gm2 z)^Y=JCY&A%S;{e9|EZxp%RPQkz{q6{*oM-oi|{G^8*K;5*uWlJlDb4(&oiH{o2t78 znrG|WdUk{9-sE??Krjt46w7Tr!+P`@OhDW-6pr!H4sx53hUsvoz#fG zHq0$VHn}2@-|V`V;@Z%#M+EdyP_$LTs2!ojJ(wW0?<`>roWY)i!i#4FZHmoLHqDtj zt8AR$1K)OO<(v<-CFpg^2IWg>>~hZY?xGUIhl7|Zmd)j#U3d|PpN=r^e>jjQ*vZiI zdmBFI#_N4ZJ?)IlS07%aPi!zt9x2IvkB4z1`swa)K80`xG%#m(x63eHzs#w7VzQQ1 zcXFxjGG38OWAU=lBYrqX8JGhcKiahmbuOKzbxd*`@QD=U%I1&eXn2? zLP470XOsDk=2fKaOzam7X&)mCmr#-DD|~TQKU% zWTV|6LUnd3Kb03Y+9n*;iLUNikybE0bt4MT-|DKdiZsFY{3$9SNNYGwd;CU|8an~6}ZQ)&l_)MhgZ zyldqh!5})<%Fo~=F}=*k)$iNjOb688nc&obzpM=x@Dh!=_|Zi@D%&EK#i(Q>blRWI z5J7<)r5B82sV%RmZ(++6aTu*NAW#Q1>^q=|4c7 z5PO;vkeDbIQNCXhm+a}CM}3a90p61%;fqo&QU}yiV&Vj7{We^CXUxS8KpnjtZz&Uz zQjC|aMOpu*2y)#9ot;vhjFCbGt6NjU6d$2pN+An$A4gc5Fb<0ZkI9Nqo<9+eGGThc zdVdykP{-8h?IXnXxS=>B-;PexYfF>mD1Rs{BEd`i0h}Aw2P@Hu(ESO$+zzJzzf%0D zOl67RD7B~bH-%Pss0F$kpGDHj%PmSfrO*?6W}ZQ1rO;D(ojh;x_`dSmc%C`VkGX$Y`Q;8`re5-d`N+0FG?R;YhSANQ7&nMrIap&E#voRKtN8SnVTk+z zMt8T<|4}ysKEtp-DMWzssJv=JJP%0LIm}DjwJ7ZkM5>? z#U1gykUyLAw)>)`Nug}hg-B$>6BiW{PYH-a92LxfAjqCC-DDfsgfxs*u+ z@qsfg2~!G{pttGDaXF_=h~#Zgu<=fRA_8UzbCY2q2Hq3rbnl8ke8McL_qi)_Ns=J8 zp@Pzd$I0JaDlN6l{ z)x+zM15s-4VF=P7Y7FPWX5o%m0pb6Ib+2;;cOt2uAA7}gDf+@snA>(t(7)_3|GL8$ zt%8byiNb``<_C;}SBUEv z)TdBy5nYv~_TCsBFiu`pA5`_M<@~T|e5H6~;rELwC%F8^%VapML=4y2vE_)d={kqS5q`{pd)x7=# z2tJt$Y99NQ*Bd73El--6kLTzOPnvZ7zq`x+ZmmQY$HdJBi zXkWMa#1of9JKhnFh7cZ)t_)>g?VV4EtYsCQk->e_>0-P2L`@PC9<|OmpYTCn2!fPV zCIU&C`syV6Jj^(lmS{YHUmJc8W8X;iXUVyt4MsC?SmR)_`QDR0y~JxecFl}Rtp2Io zeg1ZrFhE1tRfY||g+GzdOWD)7==Iooal{BglC9d=-avQvJHgZ4ZTRBUn}L^PT^eo? zxrz|FGKTXl1TARIIMez;P9KX8{926mb1iJXvFpMl4X=O(e?v?^AlvDS3u>ANpJ#1D zhzzPv>qWFP7$P(n7g%>U)(8%8Ew@czm zhBpTn=MpIq{X6fPTN?AC-vLF`$HkH&YT?It>1A;)jUb{^t9+n15i8)huue@W9F>23 zqGbc8AiJ#Xsxg|dnTxonZ*1WGNkVV%8 z8G;Se%UieERy5c*vv60wVK!Nk?2f54?CB z%+zCXuovg>Ug2QKvMINe4q5BtbSgkrpe^k&l=bUshp7~J?*S08Li1wh@Wy#m@A)ff z#?YKc#;ftjQ3?=f(-oii^E;KI(`k;Sn za1|i6{4@AGIPPmac)=bX<9N+yPI@{J-GWQ=WwOYAFC0~wz8sgamAmvdcCut1s2O?_ zBrMb05Ya4`>AZ2NJMhmUT`BRaOH=pZJ$Nr-n#BJz*K6Q{zOAvj%lz=^5~=rMSi2Fj zBY|h!Ib@URu}j(HR#lDG@6gw++Y;dEkq(^nMtxdb=nF9gfS_ zz%91mRsr`JTp~O4CGB`fD#(5pu)Xogjl!<~U(X)VMwB;VMmG%AQxVE87jgs{H?Vl zi^PXPbaPR*RG^EWElH#J5Qc01qt$P&d)CQ|kxipwJ zl~;M>2$5P<&vZIy&8NJBuE(g|A#u7<(KFM0<+(sqp=cB|!L)XSlhdh(nlRzvVFvwT zY=7L4BNzD|?gZT=x4d%gm0y_$i4Jq^n~d+xq;~K}tHrWuqCL|ET#tN-$*>l>5{*9m zrg`7dd*yG_ifuD#pU76TUO_PVSJXyw^u+L52%$$9` zq&MSZlkJKS<#4aJC_~c5!*-vS*d(piGOC?B&(qEdrkP*v8}SXR9;=?R2O|k{%TL}= zHsXBB!6&b%rd;Sb=@FUVd0{AdLyKNeas(!DtpIgUfQ#629grja8F!?=3?w(e2!J}+ z5NvvH=CA(IMtIkRRQJ?{*u#Wrx5gJdF;l7UUVE2ll0PjI5{*sx?ZS^LY?$ar!@H%; zCjxPG3Ia$wR?3frRGh%0cTH9PfDocu)FnZrI!(Ruh7C^T;S-!V(30Ek$MNUrh5&DBRsKR?Zj7LC%zl}6+7`?V<&z%)PukDN-(GK4s5R4e0zd5P@!F-NY}u((tIq z=Z6X0D^yD;p%3e183j-;G*l;4$~2r7a&}>>LwO#VcQHav*qR0l*bWE^A^^y9$-I|> z2v*@3B!piPew5E(!Dgcjzc(5}Jf$o`8ZlZv8o}2h)-%c`R!)M?{Kx3%oCX@u00MnP zfp z*wMQ&e*&G!$ZkJGZqLbYLVl|t<~QJWkNnYK84oYvB!Z|4_t601ca@qee(U4*%3nqf ziHiFRX?fT!+U@QZT<-2hvzU1b4pa4yCEeD1!jD1NGn;Ma>VcMfDjFQ)%%@N#4@8JF zs{u))1{LEzFd^FYj~9X&t`{4fuBJwEUG1)&LFQ_}w&{srC$k&m&(O>-=QH2m$dc#d zcGuRr?rv}BD9*D7%4=ZEg&mIc4VXNPQ*Xi}coI~rVMl5;M9W*HI`j@qtwyq^ASe#P zaJ9M9=5oCdEc+P#b{72YEcn}5&os7XJ>A%nwYRY;tEF*QR&!%R)}F@ttlf=?EE-4x zpTCH)c9*!JLk?L8gW!xrczmu)+{N|39TldypIX1DFc%(21uig*MTK^xXM-b^;K&Tu zsD)5^D&eY+EGK_R~6k3|W zbrDXt%kT_t4mt;K#RgY6=j4#*A|1v8C+fdI98@{<-Eh8@6F&k@xpM9ckS>t*??4$t zrb!gY$)k2|%J*{TFY3TPgXD&;EvI9yVT)aUEWS~$&yoSIwGTfQ4vvG)NZVU`$4`ty}xRKqAYr&+- zM64*Re;^&{^ww+j>ShYZeirD*?kO&lEVScXfXe4eUy!05}P@W+KK3D@`gv`3vm@}56(V! z$IB5zTn(*^+9LqG0GbjmEKl<54I9S4-n5S94>R zYfs}z*Y3vSQel1QN<2v&zXy2#NFS~yU0!2jmv4HxtBG3FSbY~XJD zVXW;OdDVajxO5=B$c)=SHR5`~g9teIG3TVr=-8iZ`jnQGAHb&%{|-%gZ_TF)?SitQ zrKz@*9uT%v-Il=8BCQ7Jn9pgLZ43Szmgf+*l8f0+Y?-zOBW!!H5(a)6YY0}c$AM2Y zR^u1JuL{4}_(d!6zZv)`?L=CsfIZ%5z@~awLt{R?gIw5`Y$y(LDf!#MQU>g}i&V;* zgXO4Gh97whVg*4*Ku-v}E9B)tI0?k1j-WUzKNCbS7O!jLy@Ifw9=b;uY*H@CiXJX# zo*X~D${kOyy$4r@cgCx++eauOJ{!wx8l!KB)W^fPtW?1sN0faJ2!C7>UM~r!uWW2h z5~hR{(QpVUK3CH7CI?+8^XL$+ID{+?VT(iP;t;+#gpdm*8~j4B{qze#BkjdTPul** z{Iq8pbJLz~%ud_e=t{$jziG{l&a^#^_B5#Ww5CQC6q+J~LUap^0wKpUjdfF_5=o~M z6|AX|^^><@Cx$wosE|ggyW7oKdC!I8@k+3Zr%MpqX4+oN`P1A^sGtt(w-wW~ zwQ&f$7Q)yG)s0|`yq#yq{*#Bza8YVQ8Vhl$R-KKOo!u!VmZ(0S8C)lPtc1?6?Gqu_ z7^WJW?RrCD;t{C1F=bzs^8xszEtG~pP}%Tb%g)|M4I zX~}rY((!GWv}AArFLZY$7~KmBCnG$ax+3s3X)9`YObM%`-&XTqayh1m6^BkGUPS7( zRP2q2r)l2(IqW|zug@jb^uA35o=P1)%!8%J{@%xEK9r-`47FSs%VL{wf@jCUI=z4F z$Lrzgt`asN_g?)B-9Ze^$IGnu>3`?n^(Ve)#+cmSvH{L1I2<0ux})9jdYr#wc1gJl zOXx*>-G`_X?;%$Qj>)O;lg|u1-4o(33R7SlE~47=e84{#&+tLQMB`liXnm8k{~R|; zW6%yEr=F) zpj^_O3s~-%Nd{5dT@=EWMSRDIT_`?N_9-HrVd=TdDih(&*;3MlgPZb}$n#Mim4P*0 zicLWXn}adViTZTO^nq2_ui8pY8DhuKCQvUMlj35M3Am zCqb!A{2OC|kGm&vFJ~HiCQea5k=LgCb365-x(CN-BgHO)2PV7$#(W$8MaPDC2i#g* zSmjRPXGk{#%s?n`Kir3_0*G4T4cWa|8THAl%rpUKv~nEUISwryhqjJGYsaCzxi&9IgEmJfgv6nDJBk2nK94JX z10Al%$q99;ZuF_bV&sYQHfGK~P!`R=F0xung#+ozhdQ34>uA+leXzTGGEM@#MN@Gj z;9p?l09?|cG*LMlURqVJ`e{;4Q2i>@M>)tG-qn4Y9O+OIxr0>qy)I_U_*t=;`Es5k z2OrWxz@_+Qw~xGu1bG;!syvPgJp1vr5;nD;@$u*8vX}F8fcsybQ!H50X1fB7r>26w zYmy4R4b7$|rLX1+2L>dc(?N^#~$L~Q7_M4`FNM_wt^oh9ZgugnP?9_n3Jh8qey zu=sGr5@A2QzzW&Io ziK&R`S3GUb`F-*92L6RGk3L2+N@O!WQz~5e1&@Fc&ElTs3^_ir?TP6#AnV6F&DVcl z5>?HqYd4~~$bZ=!gBp+N$GJ!C(U)os{Ph!J-&nZm#5THdO+hkhca2=5e)yA;Bs2Qz z@RAi{0{C{7Fl?PDD*|pfJB6cUZHwBWI2G92{@N(5aK!Q6!!*C%skz>dh6eO_>)f>YIpj2}qMfz_?CRTY^+i!i+HHZ^9tC z=H3&Z^o*HxXadR3^g~l{7u;NbXsYCV*m4!U4e!K>_vmmk+(VoFUlZHctkKdIg4H@ z5;{TQ)g>C50u^trw;X&@jQLcnSh}kKHSFLC(oSB-58KTvdC*X4f~C*|wEigeS$)D- zSD_px7|bF%^@Ov8H{^I!k=W-)w5`~a32%iyNQYn$_G4Rv za{-s?&v2VcF`p_~#y@V75z)o@?%#1VRUz?1FYqQ~JTsA2u^;-Pp7NCb0erqFALOUJ zDyZ~2zL2MaNIyX#6-0V2&n*0N9(~4j>YoE8)5J?gDoO+NP)+>@8 zRTw0b=ayOZk0FEv->?#5rd~ zD#T1jrRy**k|cHO#!@y~zRaR7t%VIl-#n0!8&P?wz9&u*Hr2pl4G|XnBKT2b5xKD< z`GO~3qmAt;r>Y&*2XRQ*@_BF) zXbH98P9VK_Kg8ldTqv(-U3VdM-)5sGA4QX`FQkT{EH3VhC(DqzRAngsg!eKopiE4N z2vWvw6+z1BI6}wUB-`G)bJ2dVhW5Jnpc#sJ5=2{>SH!2i&aJl9_Zmh5)oGU0>Gm&i zx=iILzx|$``RzZd4>}#$>oXj#^>~*Do+@>1-raFYRKvO;Gu!^dtq6q*)9bu=f^h`T z%A8i?dX+MpZ(Ht9k%$$@I`lY~Tz!@jlq2F zh=&dHy|*XLo4Sv9sNTA5v(cQ=i}n5GoF4h%4$Ot!2-9VDECvto{zRBjJrYk+;o`$f zF}&_19LaQc4W=$Z7v=AMC$Cs#er%z`cTVTN1%;M7Z*2~Gus)~?Jqv+~ zz|vx;X6r}0-;$$+Sv}s^teu6eq`B;9PR^B>oODFEZt0HX5X5}OuYAFL4_)qQ<*WC+(TzQe0Qtlps%{rP7%U3c%KfZKuz%hxRdjZ_xk54g;B}X zWE)?xWUE?VFz3CO=lCW!DdyepO^qs_lGs6O==M?(S(`NcB4c&Gmo@~Y_e0B;j_&Bw zT0S{-gcIRiMn{4|71p+ag>A`KqwTCS$KMp@G9|nZ+6ezoAiZ^t4*U?#Z{d!`c)D?? zIp=*JoF((F_wx#sE$h5BWy?Bm?R|>WW`ph8|Nawnsp^(vg>LmNr<)X^(p*)GE7g0B z1p-Qlu1`t_%VRMTa(zw`i_E=7ix?im1jf4xLS@=O-^kzg*d%kqNFpyqwwYJQr)Bo+>%DgHdIy zRznF)B+%2ssInv)s!YlX716&o+|N*jtPQFy))&bgn7Qo3z$|MKb@BG9j8va=@wTt# zl-)mTxeP!%tLpvchadWA-qSxSEK&1*MW6F7+!InRG@3`mTLp_gniN%XJyBM(5~&9L zaj#o&@1Hvx=S+sR%=sn*Wv)#6n&cW;IsHIEiZjG$YlDig)NGiy950-ruFKQw zgX&)ipyuiB{sB6kOBe4vaF2(dd_+jF-#lJ&H5DNTaLtJzii%ea=x`*LObt>{{*f?Re*a?eO@PKQIO z@($n~Ml8W6P6VQn7n$?dUO)Gz6_d`DF!5D7#iYJwaUqX9ilty>sI_b#?Own?cc&UA zI^Tx$wBi^RYU-B1`JzS1HGS^;fUW;wO{*rY{VP##OS-rs*rdvK?Zd^K%W*O1@|H&X z<;{)k@;&B&zYm%tkc;BOFL5?H_&@?F>$#V$_0AwrK5lD*YiYvG#lG4kUS_FoKJ6Q;2 zRIKl(7F|oRK2=6d8+E8O%PYOK&*>>m@iS9)$02ZW2wofl7&i}p?24)iDODuwf@)kC zO!ZmL$woR3Ih7I_0=CBrt57Tkssf>&*b2GqRK zDBkj!cYfl&j!?8uAQ4d0I6-oord#1Sr?IgY9T2 z$tO9{1oT<1Q%ViAoQ6>H$0C84bN6Hy+C6kPA0T{>jkv+@`(75-1O6) z9qpdi8IY_U!%98;&C;NH(+=+m@{1`3l#{wWCB7eFKJ^d$TX487h^_Fe{|NAR=?v5+ z4$;>SlnAVBGt;|#mr_7?F}D99Df6`DR{`D83J0nKs7mj$(q*EEy!Gm>n_s039VD)* zhH<<=|8`4m-QY{KA!ed0H)=gM+c})RDI-oQ!e}csVNAT`g!_pjUJ{BTRnKnxoR$vC z<7E!6zKGlBX$yzrJ=zj?%cz3VI_rD66?5TBSAqQz_~O;_pWj-He}1bKcaAD>=O~PO zM&_$U zTgbI_XAv$N72qDBfxAXN+%@um6TR;m;Y&1pN((G^jnoJB4A(Y%NLtug+$%7~T0Zu& zI-SBGse4Cc*oYHmG^t5E`cEWli5ordjinq$RffKULgnfw`q6NGkgojT8W8?TY4L3o zx}$*SIFx1GFPV>iHac(QZ}5*>;qt_} z(0uQ+>nMOd>GP84TOW|))TZNVBo}D}73jhN*F~uiW+!x6XX?TrJ~j_4Yfu29ck9%n zhs|1Fj{|+8MXYcSg3jXdb^##ufe1JCVgBRu{?YNczE^-b<4OysvEK#dRF}A-^nCAd zX|*h)+P9XyyO+nM%38}CXo>VC~>4tT3;NYQxqsn9y6c#QjCK>M}c6&EngHz9lwPN zm6CbBIry{}%dGshS&q5LF;Hc#Wh`^Rr{FL&;1RI49f7K0U;1^BGU>~JUNq8N^raj3 zqs;rhbmw&r^%-_{^}5cX7r{J~(0ezh#UbLeryJ8diL9BSV8 zRe)%G>Z=L#t*8&bDkhNgHGi7zRan{p%6}`kCUP6zU;r=di2zk}D^N&Yb`C z1yo?cnZg`Z;4)c&_;(HdJ(e^4i&U?k;mzy+4rHo=egxGp<_Z6HFS;4}kjCo|bqYf- z-^?Mg{qM(4v6Gb5T44Fw0d0mq{f+tDzXLhk>~D(6FQ<9r)jso!f6vkpTAY41PkgQd z^5%7BK_11o?9?XMpBrYK-4T2eMmL%cnCs6L>h6op=LGohtS=c{8L3u~+)zI&RIYL@ z5PMF#7DRNNhkG82x_vofF^RDpz&jvR6c;zPbO&bn@XCjH)H3Mbp|E~3ONsvGUR&`8 zUKT0}_hj5kRi)Z_Fh`pnxL+0_LULs^yVLT9^FP782VQ>gKCNVe+WxJ#C@wl1R=uq6 z_9DLTEgF>!jCu68K6vmG%^h6{xh8v;k1d4KpVXt(_Vp#-s%h)on!V=MT1JKV1D17- z-9g>YHSLD<(+K3}>vXBF?lVpEO{YjT-O;7Sw@n;x(6LmwKMqC`NA+nRlEI1Tb{s*e zON5+oGI7vNbQ5JRmBD*6M~mxl3%vxks&0d>T|%$d*Zon~hEFwlhr(i%V9ExwwhL$) z=uSvJ+?jlNN==@_bnIWa9aS~>DIF3#Z>Rz>LQ=>n4MOnou@Ga(}?84gHfb-{iSfTSbxa{iT3Xh`e zF2tef`&zl6GxgjF2DjP7aa2UdKS$5YFGL#}z7_&M#7u8}$woY&jVaL-gR?7~6MYb|B}IhILWE5aK_{{mM1*{9#Z%al=Sq5#(tAAIQ=hS@g zX6q(7wH(J$sKq^hsk_dpO)q{OUsEc;RFEt%l#TyR$zop~THT+WTH$$j=+&~WRU<1k zdy_>!lGmWh(!C8OmwnMe-w%WFD1WzTsxhXF-fXQOpCs1WQ6~%rXAqQu^$p#%*m7gR zKGk2#iSm54NWcC|0N1W52GOnXctUxjMv_lo}zuo=^W237-4X>xyIecN)!aNsT}pqZ=eN zkSi^3ZL6K=VM`E)Y`SVgGESV1t10@zVxz26RDd->8?%p(*5wS)3P~qX z`S|$={x2I!wsY7r2V&rL?__8b$WG=A)Z9K5dF#EzHysqqcG`z^b5O3BPe4dW=YMt> z!eooL4b*12RmfLG+QYaorZHUMf~kP1%F5JylPFe;*ChA{y6}v=ODZQt0_o-aBTffO4H0CD>9n$(gG8*A{04fNgpR!~ zMjc#@X&n7~=5!87Y$yJnFChFC%8;6*GRhCb0aBEQEhzR$j@Wq$owtmdfUkRnKCSJj zGNl$NCOs_5%n%eQ5&Wc=2&#s>Wh>xKAFXxDrB0(DyXhQ|3XhNeecd~QH1~qZutHVo zsaK-~H~of)3x>IRxiR^@ps-FeX3c9%nn&af=$UslKi#dH=Yswur>h?hiS4W?N#sckc~+(VfV#GZ#Muu*pkDRXDq$H#O*$6BaQ_>C3U=MH`P^$)zC+uNsMO zGSYXNj@kD@x>|x^dlNZuHZY*>3zt@sr7C?U-_B|NecdI4wLHtmVCYq$x&?!^>D;w! z9IRbas46|*IbW4x|6@0%x(_dGdh0)%Q7hKEX>sF<=aQE@o@O{zUTIz8rTJ zR6hC7!r|$x`)!uyovJc&HTqEBJHhw6_viR)6WF!Z_qc$pj<$)#Br3G%tI{8f8{E&W zD;%O-w?HlM{U)VcQ5qP|P!=iJ;HA+`}aWU);5Fkfb2jd48Wl5k|zQL94ik7`&JP z#)<~ZOVfffH8r?|#orvD{ava;UGXr@9Z(#k7lEnq0S&(73p=+{0^skiBTeI_CONr6> zY>Ksv#isNSHEWskh+5r?xtcdmH89HJ8e=a$2vg#1z_8 zzg;(JxaPj@Abk3!Bu;$YwG~WivM}kJl1a37n_#%r#Rg?A$bBZf`iJc(jWzuAaLrdp zulqEiJ@jvkkl%wRLr!IeD@MbRH+R+PdD;~DrAbfnYnS5vNe};M8`V+4NgB^U%fQtaa6z?rrd`Wt1(ix2$_|w^bQ6 zcpB{g$J+bAM_C+kGPf@k54p>3(}Xcv#Y zm;JF(c6X6yo7Usy;?f#jDKrlnjY|_}&CJU0!C&p;2*hs{P{Sd6J5QV9*I!^N1 zYzsH0ixgjU6>Cyx)7;Ckq0xv3_9$rY=QlUuN zSQv)mgMHWDVtpu`+qe#cNK;oM=!Df7TE(UJCg%CWI>z#RZjkc)P`28O?th)Kt}%e0 zYs$vI_22iCEsoVS+Z->@KmDRhSg(%gTk(wvL~hk*c-GH{a@H2` zVh~sia3kTc_uq$sI8Pb9gLM^TiHB z283KIW`a&nCu$~U+v?^Qu)4{FVOk1gEf6+%SJXHyQ<)l+fu{XT)0Znt;#i_C0#W0X z)8?(?--+5UV@DZvo631vTXrfAd%I%1)gMf{sqNs#xGA&_YrN>Ozl;e%lFtp$^pNoQ_;|xN z*}ELt{{tV9{MKGF;yhXt5+yACp9+a!zP%6FBHg&{(S1O>cwpJJEOsBTw}G)4*a!8= z2P)aN;}KXt_8VyTmuFz}w)5?+!S3(>kFDSz7OaeqbL<2?La~MHB~*XfR**+ehD8qS zNoji+2TC^cbGEbPHf&%rKGZFSk^IA-5jq|t!?Bw*c9g_xnko4>HnM}}(9DCT8A^cD z17Qr!+=6G6$#27ayl%Xr@N+;L3cYQlw;ht~^|m8M@Z?P<^ft}z3GLA$m}EHNB1GHe z`=!kl86CFF^l6*SL_2$md_MdoW$MFUZl(x_^%O^$*>TG%$7W`{0pegdJyRbH7orXy z3^!)B9SpIoaIu1e;ekvD!|YxH&vmV{l3zMw+)FTA+Peg0^%A93n}HDRMIs9CnL;)Y zqVN&50*WfouZqD7^EkUK_hZlW9c?qMmF#vIw8u`G^_F7`hWe?m(e~ckF07Ytv)Wwk zvhSQBMA~HyT%ocHx^(B&_{NNu-&*?&gbMCVFBZ^Eu-<~9Wj7Wq_>G8hV_{$ZFC9b; zSva0&rqiA*U>|pUvbU(#J1VC;Zu65evGk%bLE(JKKv%HU(@3C#kV4AA7 zJ7(^E_L8fw;1|G@)ff8GC-zc#UofL!E;aNO-h4gFMG#y?!C`Ejj2rvoJ*CzXvJm326dyo35Z)?ePH*Jf$aUzCk5sNB$WE=v&EfUCcB>q z=JL~xmZ=$`4(~+efPS!o?1*?PR2uf@=lBfG{a)UaX7+;$gqf_ZXJS}drfOk+$iP78 zMr&Tjg7KDFzu!uSs>k~MC+s)ZTEB0GQ?{$E-y+7dauR;?OC|2JFMivvm0rj1VaAd{ zD#LzB%!Q%{`8);aR(OXivKr_J3l%Q&Mu-;YfX8XB3`LhQy!ysA&K-e2(9&>JgVAKd z{Y{(FYaD*7(+2J^0elS%2BBKCwH-}n^!YEm{1_L9wdyh=N5!;pmrlPNOD`h%fs+l$ zvX}~&#-uw$v?0SNt#%lr@R+d4o0;ycHgs9AC!~}9*5Nw&IJX%_70WgLWS88+bko_rZ(hP=ZgHQH=6l^SF?{- ztfL-p#p(~R+4XRT>@u4D7>fO{z=&1atsvlD3i2N{ zj}Z}dt=7y-y!?F8z_*CW1H|;I@A16bCdY5^+a^bM3^}%kM;)6SlkwXo$KT-hD2swV zf{#F(9LtezljB;vTL(ERYJ3I1ZHnvJQ$337U2rcPQ%RTwn0N`tBfCG47cz_))i1P} z*wsOUuI?`K2ZEpB%5!6$2-CEI!pV^%1BDM4^ZYSu>!1MZH>O29k9Dj?F?rXv<%PAT z8ReNat@2cqC!B2=Oq_N@>@6Y^(-70AomX&1CrqQr1Ekps$UJZ##IpzKc&Qau4-%u9 z)9fDv4*t(~DQU16%khfAf*n{;!(dSoWDc}NeE`B8eyg>UXNTAw#+M&zX8+UP`^Y;) zWasbi(=+s%qNh&4V5hc+#x~bH?`MCUfq#tUPAJFabvrb3h{$T=$hhrM>%-#6n}&#B zd$!_rz~aoWtau%8WVx5(@%MLS zULQ;igUxqodcN>Z_`j*o{n>l&nHIZtA6&-X@Skkk@aa^(7|FuR$P2XaGT{OofY>Xs z+pn$jqess&>4uSZ?k<+l1cVueSubw8-7|%aGL*HqBD>7Iw!XEnVV8j-6n)k`H6pNr zIv0pe8QRrxM8cd(%>cLyIpI z#o6^%pKrCku7un-TmP=YKOtQh#UYC8AJ#X5emQv;B^3hQQ{Sa+)+F#|T zI}5QkKG;P|3q@}5JA96j9kbf%D7G|b;TinXu#72=6^hY$v5(RD>$A4a0GHQ&8cP0j zE5F7OrA>e|F#Q*hl;SgJ`7dyh;d__%{6drr*SC{pZBDOw4`LF~--hzb-PVm0dojE8 zUB+{A=r${4#}FKc^iWYGvRosP&S}8m;v%f^jz0RfNR$?~xX*`IyfQE2I%AH0P=DOb z21_YWlN4F%I)9sLj-TxEWB5^cLB8N!svata%U!!^_fYIX;1?%`iZRyv^=KV7@BP6t z@7?w;RThgexoj%HbioEkwsfcW4Zl2wvcMPaEgUgD-IN%#o^&f2iRE{~BdH5aPTR_ken% zeTot3l!9mYLyb5{l*ipyhXVc?YX9Q9QT}|5*7y|37Wa5O?+J!l+%$HWC>@)KeUZn( zZB6MM{d^v0CPJXWePQ2)hSy_z5`8xcUt>^$8^W+<{FqWF|9K1PB!8~ z$wny5k9)9|T*F1Mn7^9K>y~{j>96HtbpvjDPPPHZJWg(l%W`;o7ya^&RcVJH-47T0 zWTYRByhKcw;rD3!C6JU6_g*Tdhr{o2ebKP)eYSEk#%jju6Ujyi|Bc za#`yx$!da4)n3-GMxLIK0Z;f z^Z)b)_(W}Bm^glKFa6asxb$hj7 zG&j2JsCtYabw$IO?dka{V*Kwz`Kk!E1{Or{^jXs)=)rCy+6Uuam*YIf{cq5|!& zD2)&4It4%48fUX`XMinOxDGc!or3scGcq-qO0LL_44oe3I=7bMu^A%!YiE0-%n;9+5s%?fd4PxGz{o(re-_oM(HJNB{`6%J5 zQ1#G$#Mqn{&5y`(cCsDQhfMGp%|>`YY?(-}SF0jtrk%4L%Dz%e9m6EY?>(nmc!ASi z9O_S_4nyZjW;cqgc$QhVK6g5ux>770tyyA`y41lV1qdr;^6L*6e?<@@w6w$*KGAeP zUilao6Cazocj5)N8~{ zIrimr5Fnf;zVIDyGVMZejOJhpV#XZ63;y(+^Og9;jlwukJ-`Yqx(bZy4*7%S;`E{q z^*Xp1A*%=Y4+7PgYr)u9bMTK7l0gU z|NheYJsLMvoOU5L;Mg_+d-7NaFk8Q;31dZgBs;sm70jP;V4}}Ng)79t#3IIUP^lp~ zjlZeHznKEwIcg+UqE4GX2&8j<;&-%XtjNnP{T?%pw-5YrH(kdsFG6`cJ+xP^WDZ$y z`un$3{A&n}mB*bOTm2*KU6A42lqp*|JUpgdr?Z^w<|mc51;m3YAU^6c!p2=A{Y4d zOZITA1yY>r?M(*h`u?_vg*i3;w2xQ-?G*AMFaiJ{+Kf0B0Ym9mx-y2qi@T^5&7&#w12$F^{iEG^2)&HN}X}o$o+NKd_-C0 zBG{1yI5(WwGfp7H(XY!zVDzrG3jU>>VSCRojNGMLkjKt_+|VD|>9*zV-@nz;o&odW zPMFKEGiX2$+2^y5XnVORb@8CtPtaeCM^=8=jjp^wT+t(bAGgQS>V5#IiJqMW<>2`M z1N6!bBB0#-@V>#f=&9EJ!ESz_WW^29l2sj)7$6F4*FEQBpV7DNokJ1K5WDLM883la zi!97X*c@4J`A}qPo)?jUb;ZEWemFX2emYd;#~GvO`Wr>3N56mKL?hG^!E zBG>ZfgUZgA6l(Q1RqCL>XKy~V^F~n|u27@=0m`^$EU~CNADowz48b??XfOXJ;q}-q zeLjOs#9wO=_(($aKB~A0Wc=C3wD=}5A!`TPYi*UGbA_0l8tnmxvL}e_;A!VhMDz{_n=W3r9Jk9eAY9%)d}E(cikTena^4lsz9X{040eV=78%A; zgtV$cT*r&mbt|+*pZ2Gbw_?#IHdE!TVgje{z7-4yi}(bGIPLl-isIb3AsM0f*~t?~ zx3#rD{BvJvB+TJ&br@=t(aociqP`27Y5qji@7hdjCt`=aw-@c3i01=Mc=lX?XU~J( zjjIN@*RINO|7BGle0CudpIr#yvkQJahfY(^p^F5(O^b|LLu4#!HZtm(jEvQF_(qOC z{qm+b37cX^d$V0pgi~tWGl0*?z-KxAVC)(AHV^GFeJbubb)K9988#(JGR&uH@U^27Qk!x+CjXgozQRw3|(8mZjr4Q()t z^yP4^oYUGd*r&B)r%=M2pmDroppR*c)7wnIIe_V<&S^Y=wP=7<+FNfY1sHQ676CHc zehF;U04p`XP7SbB18mg*Yc;@L4X{`PY^qnwMQ*CD!Sq*5&5*^9+5$P zZxcN(-__++Xu6lA?C3J9`u#3Ts@ogmlX)mCu5tK&mlqp$b=ld#r&C3Iz~zoEGaDR6 zM6W(5g)K`lwOs7RxB!@Z<4}{@~eJoDa&7q3txCFcaX{ z!69S0*%OSk;&v$c=L{Yg3fbR57)+1fF0#Y(0Tf&5@{S>8Td?{tw=C%(B`$Tm@qWWJD3UMLi8OA0d6pAejlF-C(PEn5-dCR zqI`Ni@CY~8tFh`~mxA;jpcf~JPQLr0nd6SRA=Sv><~D48@(JyqB<6ax_RKF?P~+!t zJTn(!a9euN>^rco7wxBpJ8&m<<9>Tr`U}hyhXRmcwQ2iF-YJ4(vyjJoHP>ZL0e`ud z=?f++cpI9mxcA@v(R8e7MQ>a_9dCkRHw$Ghn9--+A=dqBK(y!ShCq0(zM zL%ehFbYfNFrla;njG}i$;I|uAxRiI7$PeE2MNf6#qr@rL&GU#DBidVy!T0p@?}CmN zT>a2p!s|Msuw+2+prqeJ|9ArN417P}#C|INy$E{LY6tcL&J-a zBam~w;n&*?`pK9RQGNBs7agyS*AvfI@{E%+ukeRh?81I<#|(e{Ny?gr)d;2i@M$9G zy0>p3mUlB><=;6?p+pIYL_Drq!bt28W*O5=Q{Vu~jy`3JBuM7Kk zo!rv)y9xI+4z&~AALt+2hIH1uhOmvQodfER0i`HVghYQ#;$2ANf|)UC%aB%vG~R>l z$`0WON062hlQs)!+#cTYb2(a7CGL|?e@@vEaN@O})9eW3ukM`xht~d^1JZXZwx_ zJ4a(N1^Pg4w{GqXIrIRP&lLF{zAI!fD#IDys{-M&Wj2WWir<5uofaHdlpvs zn^~HK?6x@MM=ET2Y#8P9TaDrz+X|U|XzKxCMMIP||D_QUI~aa?+;%+0;PnHpXjyJw z@9&+lzZ>-0EYUyi<34QJNhfA$fx+{D@Qt~?_t`tsfQCcRX3Q6sC6y~@sKQ!00Mv?P zJp-+6@B9p$FL-un?gPSmX=2+OKjVy-?7H4%ZBOg%dd$Lf-VOMerQHV=T`4>yXN%!+ zoHQkyM$Q&_o{<(_w2-HTzv6$<~kms2w7Av=-JW(i%CB|vmDVvpsBQd8P2C->>L@2jfr(Kj0O}o@O z1nq=qZkHQjrA>hNjWjYJ5*f0?5XyQ8R!U1SSe}xfj3N)8Qn?fMUT0HD?38fc83S}st&mK;l=^fw-1S|TowV3Th9ApF|AcdMe>)nlmHAAz?vJ@%_HYQ zlIj^{TX~?afmAFKGKb%Q;EHA4Py4G-m%1rXE_K)Fl65i3IJf5%JdFLH*|M zbg?KPl*yCUH?gr0&g#Zr`10g5Yz+fpYoj*3-loK05(#aXx#kOMKv>)(hIt$h*^d!5 zP`zWAz|^(@cMk1QNJzn8J-9e0Zw(F&&!lQb7Wf5m>(gZ}Z zy%?XCAnvqd*-J|ucDadSBbS4S5-rDw_UG%NLD ztU4u+g5Eb=KowRv7iGDP^;UQY;Rvof3w5{3*t-121UE0%8hY<5Uc`Lt)CYMT7RgcI z-Ta%G!(o)6$O4f{(-sP6Rw^{PECku^Y3wFi@PgxT`z192e~vNO^>k014jUEEnR+u zRh}uH%P&1g`6E{Qr>yc!URL|RI%@~63v>tG3p7AX3+L+K9Mkt7=*vryC*YKp>4Ev* znIk+$ga1$T@c%I7XPv_TFtukbf3AMjN}2a3k$N^d0bQjv?);M&E#$T%6#lbV&*A<* zi^n;fUMGrkKKU9q;?Rn;JA)tDOeGd~c&wK~IZr@Q4Nm7-BJ%S76W3~oog1}lTG}tI z8D>0H^M&GctRknGOK|V&IMR4ziO3e*nC~eupTjjziR||FLc56iFB9F!u}ruX8|G~c zPJ-3hihrYg)-r6m2*)fF6+y1YTO1zRsxq+lsWyyYb-<7F9mHVp!~M%}ncCu^(x-*b zwc~=^5GxQ`y3p*WMOJX!0Fl^K6kh-_n#+Un#)bZtClZ@~q0_z`Ogo>(?O=;1SeFI~ zBo&``;KQjKpE5QK({3xcTvSW6xn{XIm3)D^b!%$#;-D{*MP zx`pzd(|g&3=R{%KWF(PTDR6WCoJf+>TWH^NqNFR|p7H*~3T;gZkR04fuE@w{6OQ&q zy8@`?9lXJDA#K+s5>ugmi$ZZ_{qrp}zh3Ni^KElFJ_r8K7RJJr^^`MIq{XoUYj8R} z{yfHh)I*z|*LP|Mo`<5a!#Ct@fXNZd6^k%mJfBBBx%CEI#GZmdhyzxeoVKegEo~4b zRf(y=`W5Ouw8jDFUHXmT+|o4&Yf5;aO7+(-gJRzm$+1M^0NRwOUmW5u!KN7()pH(~ z-O-gTFlE8Eu56uVhWkOZ!nOo=!pjtX9Y&p^!|`aJ(X_4WMP2KEg@`b22#vr{`6^@{ z_W9IrXyz)Bm*g&FPZV0!3}W593L4Q(A#$z8Bw_$#Rzor2`Gyv+7L`ffZ`i_v)!1;n z3cqA8zzlV%N@EA;IGtc2WNayt?T`CSmL7llma1O>!8v-+$`^z$YggA`9kl$=xQGTG z%yCaB^rTxtE-{SPI!a?01{7yF7;)deAi|xubR7@bQZ&F7O@sSeI1Mt~RP`<7$D%c& z4?|bEMwEM5R0#OTL;M?E{XL9Y9Ux1DX&Fd4ux;_zHDv>+nzr zA8L*R!J&=fm(U0LocfX&?R^<_UH(hdl%;eHg;Fe&hA+OM11|xlr597-Uxde%Sy&9& zJFwsYysZ31lslWPa{l2-Q5ZaiH}KoX8eh2wc)pBhvXD zdDn``^4;%f{#sFz?C*gUI5=XytI8J{S>Mr-wPK}<-Jk>d<9;(HoJxkOmF zPWW=8v1fnW~ftew*k5b`!QRvEs z*^k8IO0+Y3y_lWFaW*6Rv~^k7VPu4%6%E^IKOk)w(k@kLl=m{Gd+AXc`?46L%%uXE zQU)?R!vtwr4U-XTR0IA&tb72MWse0Bbz|y4`X2!o<165oDlL$ij=F=Oli)IR>Se9g z_iaE(fE8gkMVjbi>A%-~TVsyB#2H&4)|ZU+X$6Ix_Y%Qu+&mJN7(iZKTNCURX| zq(l{=(!Ytv+i?4f@9EepxFasuC{pEx-_w|l*alGPz(!FS&+TDC>6H&eSGw~RF}1DQ zW2)L1E;+JEtVyQtF@>p@s41L{DSPbu#^hIp6kNcwNfax)x;elBU!yFLFRp5ZfAODu zRJlob@>`ArY;gE#_|~uqZe+)qAq>Jd(vu+^@#R>Zxg0MA9iiF$-E`bZUGpPtMEwa| zMxx9#!7i?I6&LfH%X)G;o0{=6?M25JHL&+HpYFND`t8T>mDX?0dlA3&L6rR(NafpL zM)-!%$v(xQX<^EL4a%&eo=x*opc-Mt74Nj`xjsKpiNF?@$ANaBC&GV*;gnDJl-78- z>@;ZP?eTG(Vc|HBhvT-@QY&b;_88O3sQM{lHLeFbh5QayiW!~d_2`5P$60pv`-a~0xitUP-#*wW^Ce=wY>a>**@`t^H5 za4EZ_r;(Bonj)U*`4Y+}4`t*mgNtgkTZ_ADs|{QO^R;V7V+t};flUXf2ZnH`{*D3L zh)71`jO}!1vcbQ(qf}Y93I>Szo1s5v;2AL~a#;-qR=F8M90s;$Gn}c|qChG*#eK&q z?hU+V`n962I?N)=W3Vv5K!5!s4M$#ZHqS8Bz>BcDnO$sy>x&$G)=QQkuUV5M&uuav;C1`RkCeLuCXXFpHT4XyZ+CoXnbr5Z-!)F%Aqs{3-~_FI2OG-V z6OH@c5fwtdd4fv*33>6B6LjZ4Aq&qvL2LerMT-K5{wZ>qoi_U36<#5q`H}K>>%FjI zH)bc!Om*#Q$P0gBf$ge3%x@?DLt=sp@S*rcfeOQuQabze=ll^KntT-}k-bA#=^`HNVj=hKX zJi1@M+=)7zj`udu8oNVhrn9`w?YYrjJF7i+OnVuTQ3hb#{60=WHXNINq9gAMZx;8- zyqC-1Agy%zcKd^k{?%W$`c>K=S}FGfQQ7UN1tacoZi0S1I#5GABPHJG8FwIu- z?GeF*^Q<&3bon0fmPCg4Ls%`?n7#fam3#=wS&5foABrq*W;$OrwF~hvl`p4Zyj-2` zyh+}3k~V#aiN|U=@S!M7cqFFbetShPx%4EB-7E4E?1u3n=ttgutgrh!xK(5$loeJ5 zD%ubITFYK6Q8qY=>l+G%ENcAzBqeBm39 z%7k^uzK@{DR73nUN|R&Rl(@(?j$#Revlhb93SX5SC>@Vq7sovjC@ph7iQ~gO2gIlx1;V z6s&LrAolBH0EFi3X1or(y_JSHi(C_GW4gCl+>*XoHGE^;KQMSEJsro{&tGRe%*!FO zh!OgRpjQMB{Ea(uo}~%=e%;&;x$F zmDV2wP_R`0_Mj+sy^Hb?(`rEcgNf=)!7W-(mMPi08CG%%&&+BIh$)ad zppAengmxZwlhKY|J0v;{vfok|#gWLL6# zjQXgEHVhsy_Djf6Snr#^#9Dh04gK_`xRMh_9u|4#N+djZSX|651GXO)!{bwr3=8p! z?Dm!DRhW9DKi>NXs=?qLOd2*L-v>DHxnpct$zUCZ)OI*{P-vO=GU8H?(9Ex}*&$r{ zmGI(op?Yk*l9|mq!1!N#P^vRClXL2k5WTWebWgw|3$^2*0(Cqh0#55>W3c3#LX(aN z2aUr2obC?%*^XycwWTM@J37$xBbf3`*djc0M0AhVjWkFP?LUHt5g@bTuf@pr(}aK& z5v+Sk$yJ=(@HMI;ncn+a43w|v-b=DYeae~2yyZU6Sp;j=X zY*<=o9_Mjsj;}a!dfct!^xd}r58GMRcVf5VQ|3|e082b`kAiXijIN(MD$eVyXUmWq zB+u4WeZE7+dq+ioa|eDTd@nN6?G=jifKu!21wohL8x}7aD{vS$BsX={_hP&p-AZe} z7sup^%c$WP9;!%RAQZuB!1pk)MD?op6U;IuS-&6e7k~+pPQN!jfG_sy-#w6SJEBM$ zLarY~vG*~U7R<8pkHe|NJnQ#&gJ{AJVyubpJ;@+w&ucN|~$VV-lmI|YA+L{S@0!+*vbhGXq$>Ca+h55{VoksgA) z7jmTrjU3}Ce58tPo`?1cw8LsRCAye5V6Z(;iM}SM{OXkG;W@3gWRCOovXvq?;Af84 zUH&rI+o`AGXls7};x6Dv+}Pm(wV|LMH{j9vvM~Flf!rYm17I@-mtkOak~QUAjDg%? ztib*Jv*58S@zLZ*PsyOK=(6ZJ?l{;ldIUEeP``y8Jhvyv@MC;TU;{Am!;tTUSj~9{ zC2z*A(1%W1BV@K*ok;tI94V(KQZAG~93LZPw#Ob{Z)dLjN-2Kb;Zg1BaVhg8rgW#2 z6=Occ=rY_*0td|+ZrhIQY1e%-IWQ@3er-I%=)#+Yh&udb%xQv+@UVGXEcIW;B)_bT zqxq)Hk_*ylqbc$Dqdo02r6-u!Ue}fF+hec96Z`J^`96hX9SGC%(@&<7uQd5;{# zznKo&(Aq2&syW}H55vf5VEP$1faW@+qLJkeIaR{VPOu%ux(_tbPUg$6<7i=pPIZ+vnjdjZTNj8Em1wt?ZC!BJl zhv(UEtYBj!i(s3XP`9_2bF(I3&<^8LkW90ZjQ9&RiY}N|+RE2qP&Cse@01ri>6lBF z5C76e0?O25@&nEwxIm!x3Qk{<^Is71?otaOixXs+VcDD@3ptESlv4{8sTVa%n0Czf zgQ&1ws`E2DrOAQ4h)p<51mU7j0A~|E#nuk)bC%bD$TlVdFIYtT5~YWU?ik{yFQ%^c zV#>l|8VvHW78G65L0+fm08cB7Md&Ww`7mhVhCYEw>HIw!kuYf}?nr1;2TX?zCN}`O z{kDUwjsabq2KoTB#V;H*=!UX!(4ZR@=+7w7lRzH;c~27735IYgNqRb}exP`=bQgb=Bw`-c<&xV&~k#m@}bP$QagE z$G@4yz1B6wV0P!gMMg~ivY6ko>FW2H^&SBnSAZFN_4$VW)m8QnzmD4Xi)M>Bi?BQfCCeai($?yP# zsp(j2sY$dsT~^2iNt7GHnx1kwEey%hyrU?W(NYBOG@3Q>N$xU?g>AP|IS&u2xC|`x zfW0=b)(2$J^`YuR4RcI}oGbzE_6+HDIXd!`iw5-lZ3alVYy{=OzW|fY*f7@W{*E*i zE>-33PSg;Vca|p(L4UZnAAxoEhMVCI)|a6TKF~Cv4*{~}JWl6)Tq4$=8RznBECWS6 z?s5f;&zGnh3Whn*jr+-`4Lzmbt2>xk&wQBoYdzR9;|(_*>j}CBkikqjGV6Ub$oIVv z6Kf|L0epF>3+z)&c*`9REEFriT&sr~4N3HPrVIxe(2Ny9*j3^Spm@?X*I4?L-3F(< z-;wrb%F*)Oj+EC6TPV(oD|^X&mrw&%NIcRD{a1A-Z}|y^mTNPu1XfUh{}m@5Amw*^)4v zoX>giPmj80=z>mE-dpCmDx-ZY?JdL38xUt2q^5vObKM`!J=Pms;So25`^eoASUuH8 zj&a(gv=B#Ex~s2D$!bLnHk`c_G9CYBI2pbi1z!}7@7%PeuMGRxPJv567tv;47gcl8 zvA(i6_Xn#TZj(2u{~o7`Y!D{;sJ6m22tD7O1s;?+WR*$khk5#JL}PwGnJi3Jg( zm&hF;_Z)0@M>^5`{&KhrnQBy62K)QV$*y!O-l+?f=gJb-Z=?BZbLANMTrwq{FGnZu z?TXnes*|0%fTC6xF&DY>d@SLnWZHPXoZxy?)${Sv&K`hv$~y}uV-4|{9REDp?(PAY zxiIn>bIA7$M1Ed0UNI2c{ddW4KsnpR{X2~Dyo_h&$-E#wX=1el_;4kZ z?)(N)iyKRBl$)2^Wu0kH9x#LQaf4)`cPg_Hl;bi3T1SEN@rP~Pq4LgDItVM_)y}kL z5ZJ?Wo$1&hh#Lqe50;}{Q={y9l&>w+9a3 z!0qn#=(WZnYYtew0vd!XfHIsmY5PT34>(CC4U?X*I(@E=9iM%uZ-UbZ%+HD<P#3W%RQfZ`EAGfXtT&V4A#lIKD2L`43=^pU)4nMRVVx4u3Tw5SmV)l%B{oN zUb;%1bWg)C)(T#wWE%L+#cD$zBqI?u-=AQd7lV!_cBO?EV{KpAl@1{8VR~e9y&Prr zu3>^UCFv5ZbCg*O`zcjs$G?}^IvnGQEpzbfWwNg9%5+$UJ82emniLPjUptCFskOuSEHeIJ2p|c-f_TSXCL3JC zQtgd`l1pT?ox|ywMkCzSEQ8qebPW@) z)@+nP6S#C0>aQIk!!ZOHTaLaRA#<&btPTzct_-=1K=wMQsrb9jfTi%4fCU@WnqT6) zI{7?0@=GktiRV%FNV&AcX3p$!;s47<(9uiYD`dFpTJ3z?a5 z9sBIUaN3MkZ!|K*bwa7*F*CA9s9venO2i z$3vJuN@n?yGdO<8mZ zbuZ$&WoESQ9Y;m>q@yzAvg*!{9~I&@#7TGfAErBObZ{FjzmNri!9j!TqAj{$hd57u z>ZS5Aa-pjPg?Z@%Nck&Snth8Ex5-@_sB{5FeW5$LbJ?Nwx=bfVO!cqiR8N;Q-G&SD zmTS@Z(AJ59v|p0%TA3fzEpoi)}>LyI1mu(Y#t}e9cjPp1+~Li zndaGVl>}{q*6ZLXsEM&!`Wrd9ilJsK<0~#OfZqs%=oe}NU<5ppo>m^;8r)_?aCPQ` zD!527hp3d?#lpT1hwEq?XKVK?Y3Vg*CfacZ#+t6lrE;u`r#QW(oB`icienGfOZa+d z5Bqkfk=IMF*Pce^s7wmNSdz`(+XU)oUayY@%dZEjFHNHp*UP!VXRX1(cd*)Fbp7Uf zTM_kscUlewkL!Ju>+N?uxp|q^RKTuoUTf=C-tv`ik9jC3jHg3f-Y`C`m&!9x zbG>2QUyr)^y#dJWP)7o<=bIyU`h|&XfzH7 zVRB4|&j;%7tsTev%Kh|Bd(qi96i;#Y!%~h32WE>3*9;5axsFJq;+rAXEd2PPw5JkefH3!V4Ego|JTS?y>t1xhiZE{ac4#ADGF~wW`YdI_4szNU z&|Sb$*s2u#x$y_b89j%i59p)~l;1x|u2uak)BP;HLuNaFR_(@xXwq&x9{B1G`D^aF z1Yi4*gMw6fr`#vU25IE)020FGzr%_}xczqk4PoA0D2J5{YjscIqe0AWsp309%C(qqD^i4{qv3Iw%<)hVi%Mr3Vole~?JxTLp8lImHuQwnoG+a6b!YQz` zX^PBEZf|Lm9cb9VeI(N3?!jsc1u6F)kY%?ZmEQxP-%Y2vNFUx!0aAvYWN1#Jb?vuIn{xq3(&O%qILc_CEBN1#++z5m^8#o&v4WwV9eD!^@&=cUnpi^NC zhlvXhz%M@x(thOmR9++ke&tW*wWIUVE(APGOyP9tarrU?zK0~FFM~>_gF<^|(Aw#k zVYvS}G95yx2j6b0!uHG7#BBU>J*@u5J=$1UB~J*Ml1ce9Q0V0hxE_&XMrObPOGZ%y zE&yN0>}-Z}@+QV47=2qhjPy4HNJyPA>4W7nJ?~OBAk8cp13=_w(y1A;Bq@dKVn$k9 zM~6FwY0ONyhx^UFUrzRLUM5VsFNJoNy&DJWX2@}2+IYX58Ropf$P3gxECZ|Gku$eM%E55!skPwEau^;Y6v@@A3gio` zbekJjtwT9R=rH4@8a^{uXVBvhU>T#GjSpZm>(G;uW@8B^^`x=0K{0l{n|o6AY+Y{6 zY%Hg|o^*`E;XNt;L2R^oJZn~+-;*XF&h5>85KMC}9CAGB92UftYD8V>e^iW#*q;eh9m9LoHoyjFgkNi+WlI8Pvp zZx+CV6!C(5&oB+`6q?wJ`yE=((wSk*oZkv~{wRx+`>Ax;IRGA4PT0urMY+|oS|Z$3 zjrsnjC;4i??h1QRX^r%Fxt)YL17RGj`+_smFf{Jy4^9&S_f5TMcMaz0fnMaTmErs) zC=b>P*z{%&N~pJmFD*lxfM;lZyDWxJ;y1^a)h_QvQ)|)A`@LvmEjU9n+O3s~vnt?q zh8JZjyhe7j4i*;*JsCa1n$tbJAkTqDXw)MzMZTh{&z0|H(bz{Ztu3m{|Ae}s^`m;9j<)Z! z7;SlU_)(eY?Wr=Ob2|jWD|AUlzut_?J89NJ*(bcacNC%LodZFmP+_6;UGP9mS=Twr zGBOz|*zXPCkj+Q&N2}`bIn@kz1e!CR;bFBuw9W{%gEJ-5YUnx?7Pu4px%GZEOT95W ziN*|U*%ycUGId(+`3=00zaRfrTKs>NMk(8rPhm;Q6vT1&4PRJ_^YGLQ`?LVb6wsx^I!Zn0{E{?oH%7=$!?!D~(ztmsyoZdJmkVURobrFRf2(y?omK7`R&pbik7MH*29r@35GxXULXJtQL?!kZ#Dk+gH1!Ew(ZT}kz!P$9@F4Os=7bCm zd40(aos3ha47J7wava}ZIqe`m7WgFkKzQUy(D3(t$@M4PL6cPZ?if2O7V7{3F%%9&EUg|S}w7%SjVb~&>zrQY9(3j#CqYv=WB5+CwhJNO_h(t1bf;>MpV^86q^T@HcL`v4sxNI{0zTI*n@X3;k_i!O zyjN%IF~D~_;CZ!y4;Y*_3G$u5i&!ql{t@iQDlk?8+daJ;*Wt0)^=y1#{7FxN$1e@i z*r$Mx$T*t&6nN%!{b}b@kocNZ-|SyqpPSyzCeJeI%VPZUK9ugxg-yXs>9AHz0NN)#1MUb6i51S|B*b|iu>HME>PK12rMGw@ z(gQ1grS!%8CERC$YnJT!D!iTLJ=^vaz-{svOT}PLZAscsb-_crbBlJEmvy<&PV;O|^ zzm6En^SXXD@}&7H2gR%5PP0Ll7urqht$k?y zpZhaL!ES)v*46;9vc%vA2N{d%+DHelPZSt`hVRr>5Sh?@?kcb_^s#uA9NPx2UG80Y z++MBAWv`aQqhOX@3x^krR!g^Vbk4AHXz60Pv1>xZSLSQmh;*ybB*(9`x-eiNoj*?(+$_0JB{05K=dMT_h2rSz6erV zn@fv1zATq^zKFS4pG%`(l3`WH(&loV*)Kt-_!IY=nywEp=$CgZt=v>vUoN-*CA4*0 zZlmWf@^K+u18B`!IWm61`H(3xGw9DR%kD}24SyFN7`C&5ZRb;NBcwKj)s3J4ga;Zi zqX<3gAk83bScmiHHZ)*>z*{gaNZYwihDZ0nEh;20^_AyPtA0qsX-=diLRaU+c9_N; z*A}B4K#nJ38O{uOyh=jia)daI7YetjE$=!g}kFazDC>i0@4Zy11gc~sS z8bA#jXoP)3X&NYgiB_nR}Yapy*vB;>^d z8~48==L$I>k1AgUM9<~X#)S{6QKJw4(q)r~pBz071xrNQ8M?ZNl%+!MAKW;7oAe2J!w_2h7Vcwj7y?k-L1UmXJ0;*Q$H9Ai4)PAYCD*7j z+abfuA3{gAV=*I4ep|=O--cG>PeW+#+mLw@^XbIfz>hbd@^{F`lM?fpa@kKBoGj$i z{v9&c=gn6ltW3faEM5r)&V2Z5fI6lIWpdwvuDqFH$&47yX!jj?s@u*CVJybqm-t(U zzuEY!#EHAMhw;d(q0Wu#cgiE?BW0$8R_vCE<_d@7kt@wEuADfBk%+&7RNB2;mUoSO z)lPM&|F3=;cG+q1y6mu2s(eqDC!`+XQqnkjAGeiaMw)&{hu)Jt0(W8M8?8+zTU+5w z+xpkTFuLO>0%O}_l=Z&!^_=zumlKiLa;ZqN%VjRdq0BJp>-Xe&X3mq6zC4K8c#>A4 zvYhxQ+KMoK!(!DLt$JUc7r)}q9O*%Ce}^?yhYFvgLLHTSfC`6~QU!u{gu|9ksRChq*`eql#h0{_^Xk5$tq7er{-8UhocCp_ zbeK<5I0kqfm+E(yYDc`^f;6a5ybU6&$8QuYoW=2j?W! z)~E73xvnp5<;+nzbcn;m^U3uQnmjsy3<DaOQx8AXQGoLz2C+hq!>|a@0SRR&rQ0 zlD2aA{uOixVf?ZyRb@p!@!LjoMAK6Iw5y^Kx$P>d*azesyvC#iAV=OchE^gWe#;nL zzhi>wjr&!!Epx}ObjkP;*KulT_WdBzn{`uWsKVs+NO)@Cl#vR`YDUT0iMq*}J<=;~qY9+Sqm`-^xq1?<l1_v?xHLX4^E~M4p-bw6&y~wm*ygjUocGram8LNn}YjvKRmCp zXu9eszP5@Jt4Ng?7l{^^qh?Uaeyrc78JyU98WphsXH$6E{hS}KC!kJ6tmdwr#W@{m zRWmv~K8seOIr-9qw3Wjr=h7h#56&gmrvSBR9v9YAClAk~5+s^8*P8TYqUno!Shu7= z?=zoPB2#8ApsieJ+Cq)gx*ufwIEogGFI&Wsc&hmvhy!mxHbO1=6vpJ@#7Aw;4Q*`wPXQ(yr6>l)AdceR=%=nybTpbu=#{T+tjtGS@dG*_B z#?0Ect>Qi)`)!jhcbFGCUwWHMb_C0Sr(fr~9UKEAgN8UYe#1_V8H#_&<2&ilHyF%6 zqiOLG6~XH_W^jq`MxilNV`0-t|coi1=xr#K5}Fiu7Z|ePYscDJG1_ zHG_|D`jks{q}vmb`I%~B;ZHKt++h7KG26#|76r?^`g7e4uM}zh=DBh%`0104Tk zY$Wu9RSZ4H9oN6r(yCVxs~6`9&H+;gJ;(i|e=~EGiTI>I3kHAb&(YDy4L@tPa`I;` zX`v}}O4HmaPP0bRq9U4p= z9+1LwB2>U?tvbvh@yo0TFYmbaIz!2G%i8M^)-kI%sdD1=x+`;`i|=H2^Js#D5{}}> zfPPVI$m9K~5%Zl()jJudiYb45RFQJtv?VNNyCxW4j+K=@x@n#iMRA|n-6>#rI zH#bk@RBOs-O{5a60eSNGl$BuikatIiZO*w{119}b=+H4)7+)}jYih!9F47T$MoIHL zIW-2#5%T35k{_|urs=Mkoy6V8zb*1PI-Mh$ zKAm%_IAZZrbHhwv7%WaAR76pBzixzQSWcTot`lf@7N>#f9>P3Xzcnd7pfhUrA;bEu zCR6=xr7M`b&Uw(P%`13^6;acC^g&wbFmI&l6Y^E6>0mZBzU?zRNGdob=Q$_NQPr>u zv_OEZoue?Z5L{2pX>_&9Qd5qYOBK@GDCf+jm0oi?Z86QeD9vF`GZXXyxYURgJfTyf^c_~vt(}sY@uR9^%GIg}CSrA*nQC5Ji-{0sp?H{9I?Y1UF<;j!Iu0_P z&(%8WQ`Euv4!SkoyfD7(5e5Ke~X68;{;@_N8$y z93AFEO48Bgj}?yv7(c?PsVS1k!wO0U^bTd zl5SFoZ`)J^oR%dq>$k#V=r6jIip*Q9>tAscM6#=qBg{7Tf*$w&)j^k^!qId+RdfNW zXT6N+W8r1j%c@v}R=dsf#74^Un2Y7CjZA`ta=}K$B;>Y@RMOQvB^|F&Nh)d=yrKsI zx2*l>_O518W54svdxR`|MNzig@(N{j!)T2rI@HaCJiUoK(acu9{u;T4nLWhoRFa0a zro0}V7#Vq;wjxpPLihuY7_ak+DUHAJ?_9r%u4t7*%w?Ow!aAB4nv>p$)->nEMqalf zO@1@eJgy^+O+U#b`DlY##_RWS)4wIA_8dDBZx+x7hY82u9nGZ1X+d*avRu7|N(KU` zZCe^w4m3A9%%g8w!!I%m8aL#d^^SOBn}(2S$IRTJ^05fBsi8A2ztEW1T&7dWe~p<& z1x03`_(|`?RGPL+R|3b7`X@CNnK#QFyD4iZ=H%!e+B($S_kYGLavx$juolywzTSno zlKBEuq`{fFgPr98$V^C0z^w29<`Dns@12~FqB9GrJw*DN9N%9le;BEDSNgs~2LJ zl{gb#0#|FlWMT-J{xb%c-wyx>q7J;9E*HzJ#P$HlKJgBCr!KP^6OhgW(rhQ*F)=7K bPoD*pXL?aMeIHPa^<)tRn4g^28X7_-axG{6;zUvb#RA3{^v>Z$t6(s{F{F*a+OMvt8}AZNql zUpyT?bgiAOcv@$!^*VFl$;MNOr(C`hj-J9U?{nmP72xsrb(V3c^D_tUUW`6X?;Y3sBEFCV1wYIL&x^^Y3(ewXqs{TDsx zJ4|HU&`l420WzL1xb<+TfZ*YkQyaw3yuOm}q?UKhE|LFcDu99(Im4)c3~)K&>tq2`nfjyn&;QL3%s~S)NAx^PDE@PF zfXWZQC8wJzoZv(x`2OFJa4P2ci^xX>bjPF=KNJ*fMI|zGnW^=ij;AH`TWD#*rS~e00>6=IK#Sn;VLrFejdO@6P7)inN{D=%rfP z{hp?CA1W|6wZItJ&DGl+I6F@BH31p5E*KmBRCtBYzgc^sXMnhdI)k zaVav{khl_0%u+$EtbB&05!8S}q-z*tW2^AQ@I>$||1O2?1w4Rf>R=l?lxJg;@kH>n z;N2KvV@vVu$_v<7GXjN(SPQrhk?nYb2(Jg62mAuSw!EENEZwK9D%=%zm)?rAhAnx+iHaz}IS(o%T)k}EGT8uYI#n3qD*T-rPB@Au{9-&A2-6ev zsc={Y1gw)0l%NzD=v_UOah|0RRT#lVJybwtsC3kT%JXb&2A-*S=HOYBivQ-FxAXMW z(^|>V=WT4(i)byLN<4uVFy8W+1xQaw;!6=OePO5X%ClOy9wzY-u>W4DzBt0omul<; z;Ihj!mW#PjI9X#=fXe|F0WP>)V>N(#r)aDRu0P`J;9iOJLAYk*A z8Vdnd&C=K^!1nnX+Y31F4vigiK#4_`Xe_H2V`qM(u?oPwkn0Nomp_CIfG1WW1K`o0 zYwRds;VO+e(iv-eLSvF8?bO(e-cX`bcWW#{h?ijk0j}B)H3_)rbtn@+$6M%824k*w&?CV5chMuj;BS!+ z@XY(j2YBoQVN^@&RUj0tx~a{|yE!VDkxdER4X~uh28Veg6On z0T;D_^qF`EECp=&1{DI%`yY+10Ne|>9u1ptHX8k-Dw zr~?%PHl*mRmY_{%djXqLbrwE~Kz155Dirl%z-+)sFP&8Y8tFQl19+@A)@OjRK01p5 zF3!~1KEOGBb=C@aFbk`teprk3(^&wpWq{6R0M=&fY$;$U7x^fDu+9zu7Up491Xw&o z4>L!9RG5#Y7U0yO$Oss8>TDTc6X06F1;bDwpu?rJqksoIsBi#!;zd5dcEHJiReqf< z0z3n_5^&i_o$UgwDMUWNicvZ{16Y0@8k&uv9vw!72rMtr*#f}DV~`QBxKwBL^bU9c zaM$^0F<|8dpwK{Mybu%uET4dUfcpST!TseEkst5NuSUgy88dX&4A=m86wtUvXYGK^ zGj*1q!&rX!dbAvYcECk|E9U5I72ty5DXa<5W0MSlwXE|5XU=1)?7C5a1!e6M!cHZFykM(P$9hoC{N+w9pX1Ie>)~DQq#|+KbRL zz(eCfDZmvIQlOtOOD+M0hJcqYO#!2UXC|evS%AkTBOhR3N(!qTg89GbiWC+HqUr}w z&43F4+X2^4OJTYB=mB6U;Cd{>s{rGG3jj|7MgZqrg$4lDO-Dxn8)l#!z(as%0B6j^ z5Di50WJfabxR6c1sDO00j>w!3wU6D3OfpT2r%4+K>I@UbQqZHc8nQd za1odZaOz#?DPRNOa=;jz4>f=XeuRPmkNpGa77Am9-|hYJk=bOAQp56S^%EXU9R zt^k|^So%{80buN>DRbEh1eQMl3IMWj3Ra;Qk_d(bFz{dsI|5hIA$xbPgnbL2_$y;+{Zcoa!AyjNy6*=B6e zOnpttAq=fiU9B*W8kA7GLMk&pc(0yUwH6tuyCd=hTazHXpdoGb;ED z1gJ>3plXA*Mt?k|#)fz5%U%@ZdKTgY$`S?b9l`r@4A}ZD=2zDh=vBMTyx9f%zE{mj zvkUsP#B~PpQqs7aCtZt{&p2R~UGM9MIF|JuL>YCaGP60w{Cf6)e#h{31iq)mQ1`&b zQq2k159yVKLMlJfS(|y$b%WBWC8fZWwwNDY@3V&xT=B7~&+*w;AvpP%Sv1EPZbISoFs+vBM=8)Yy48VU^QP{x7<8?=L#~#7b2eyC=xb9< z+nUtJ?KNpcgj%FoHV6Vz5TQQHQZ&Wyr4k2YuE=rhXJHx|sTRc74oPAAMEuJ1B$dpI zZ|pP8g)}yd_6%nVJ1*<+ch^Itsc>N>B+|6>veZLmOh)`6w`sr8XZ@O+k5n-}1-PRI@Qclh6)EXC1rHIeH1oBWb$6uF|ZU8ll zvQ(NmH+k$41RE|j$KRA^k0Dq)$((zWGyMR90ceqAJl6X-j+kX z#7+0SL4By67GNr7gCorCHw~CVGOit%_UoZ*5e7MHG${aGc+G~L+&l-eR>TFnuqdy* z9BFplV4k|!V-F!{+-N#)$+JfgJbI%!{uZCT0m0&%&4s`oM6m5<^D$uC5!^f9+;fZ5 zo)4q?=nu`05ey=@Vu5)UX+sFEyv=mZbEdCAumw8lAT!^)BhL)Yv)Rcoue;q`IL~P( z+q`y>xq4ns`UwObcR(45gju)R?Afrq<9C>Ox8~VP5e(gFj=L3d3&H%m&H1-FJu48j zErn4c`q)Xv#}HSw)ZB8bv)2Ix>!Ifw%+a9%_Ex;jxYzvrR$s3SSm=kK_;SsDw+}H< zWv^0Tjzi@&a8Xk=-)5fy%-Z|S+4Ft&2!b^~H6NYt8`^;2F=)6psu_PYK5^iVM4&#E zmZmf=H9`C=|JvZgD*+ zBU0DeO|#?HK3R*9X8q5gv`LQ45K64(hc^3K;E(;>T=zqd>AJx-I*!+x>h9-C06AMJ z9;&qxwm!NN8)!a0f5;Cqu;Mtf5e=XY;E%Z61>C$%FjEMDKVsBU;B3z&6m^zT)GowT zA#OS1>dX&r8e~>2u-TUa?+5rTsUPv)-yl$}l7{W(iFyCF^ z3_DO~{BAftP!t-LOX2|5J#zs+XGsF@AUrj%9REdt=RAXV!cE102Z38G=$J)K4gpuO z6pL_#LAS)%P~39FEkoR7#;)a+D&v9*tHpnDL`D#%KWa<^aKRthIGdMk9Z7f7__(M`=0Jju4;zs(T;>v-m zxz}_q%(2rt?$EvFxP^JWXen3mWAwm$p0im++ zM{S=6TxhvD<@P-L3ItntuvZ;|RX>H-%DiadpoItUwij}=Clv^u zP;o?~Gl*M`xCIo4KN_AatRs&B$LS_{h{_27&%$QrqMWiy1OspqNj7sSHk$+dRN!4m zsYaH_uoU=3VRQB(Ur`LfT|b8#kCNbzT0tw>;A3#_a14qDYzA({W9GI+KKn@oPyE9C zc#$vNg$4%x3l2TqoOXAfmzp~n{~fJ{-$$4R0cs1iD+GMj8XH?_-hIaquFh!vTWgwk z-r;dKA(;OJ8Y(jJ4p63M;47kN3CX}dglPjNQY$fBV&`I+d*CTE?@s4TS}E5*ZR4zk zw47vBz{P>%PI74Vu3~O6;!m!Jql+?F*qBJX3UO7>n5*y13D;AyXA&e%%;Y%mxzD0_ z%05fXaLU>O{8Zo<2u@3kGR2)l+^!AaZ;A_L#&pS|MCUB5xzEIG%poXIyg-Ce&GdpZ|f#6c@%1!k}`wJTMOJS;CQ?6PPlsDP5{S8LE`oS=h_YjCEn?e(j5YB zGH|Gu{}JxkAU1|ISrSqw+mWyZIP0Wy0Z-ERB&CIgbxV#Jy2qAR3RM1Xcu)~df7H*( zzy)@jQ||VZEJm>EW%$N{EpWB3pqLa)C1*(-uXV3=mY_#~v+cJr zxZ(I8WjhXB`|F^t4JM2;Jqr$v`~#Rs^qOZDFR_KofvRYRi&XL5>P)N1TI@D#>`^>= z#pG?58RaKfhS%jnb+1=DSZj)ly@oBSK{oZ|e)^jKnDh06G45i}AQxOPoXBT>bJe%ZO-XXA0^ z^m~gksW>}JsSs6~tM4revt&*^jRk37nZ~~J6*#`pAL zilh#eG@=upwT|XRZ5>8MLDzMSKVHJ)ujTQ8m}Cdfn0PSz7-)DAni*4BPi18XnFC}n*5d95puvlw-3HmPGM>OoN_*R*^VwM6|KalJ)UI z!{{Yhg0Ts3W~(?`p~4`jp|<9H|@6HE6N$MkiamEyX=f{^48WEsy@Gj>xT zo>5n=v4;xN9hb0PkOo<&&Cl*D3p?~J)q?wCde-STs@Y(TMcil=^B7sD-)wX{9%gRG zr#clgl?`u*1HSwWb4*4U@!<9ef#1m4^y0T9v=~^kUj@;q?r`yH>Yq){ESgo+zpQq@ zk$Q}GC9Lc4d14OWNi`<5(KygVGWi0dE! zgS>ZkBSUZ6nybeev+=wR91%QA-_-af!gYs@Co}ZT{!D$-R-)B7;Ifb>H7y*p5s?V_ zHbeIrI>lm7^W8>mq_k8Ntq0#z#T-V3k_Fw5>SS^;YScM(kU7!3p+9%DVA zL-!a>fD9dQ;M7427r6tCc;6dW_(ZAOSS!Qd2i(Rg8IBaXjff2Y%k4H+$nYb;7t8S18E71ajCf#mw%a%^!=E8d ztq6xJTK#ULNk-hz+ik>T_(iANSSG`bXk4Kzv;c)Jm3SNQ*%JT5K5ipl;zt!Dy$t_6 z$87{;c;-O2VaV`c^nRHZ-qEssC60svBz!X%J6MSUoOKTR2-1u!Z1i@lP}v*&{5flCM0r5{62)6C4L&x zx61Hrgd1e|I*jW<8NL-EW@Xe zC@8~^4R;$AGQ1w)av3&}zEp;X1EAo9+V;dhXC0S||@ zip{9tjEuMp%(YU6KN$dKkrlTiLyZid0{5 z0|uWV!-R@a1USUK#!k@VjIj#s7{90f*DuH@C^t@WcYHVUo6AT2rrW1K1ee| zhBu>eRWiIAlncp5{|%I0F2nl}o}+CHbK$TRB%Otb1KQ3;o4%jxGaOGdMshiBH@@$X zVj9Yn>2=U&smA0&Eu$vgZd~NoppaPyK9?;l8LzJ`jp&JZgbD8{;8wDJg=|nFzK8rSz0SWk zW2^rJ8bKC-0|biW92qogM1L5qzZi&tX#HMoSL1NU4AzbwbZDN!4$W@#F7~h%t*)A^ zjzt&=Z!C`Yjn!^PDPznPYeyL8cA@<0s#OJK=zb|17th@4r~HXHJ=F-@I47NE90!YFF$14Z317_MjCIWdc0M=V+R;csc5~f|ys)A+^`#Az zE*`4Eduum*ic5e$Ch>iM_gnBsB|a1QA`8A*;xm9BYr*f6_%z_hu^=_g4q|Prc9>s3 zGU$T!UAj3tCK!fN^kdLRAoG;rT1GmuQyle{;xZ}s&{j)sG6Ai*`%((C>JeK`f{dCq zh56MZdEo|20SwV+ECgOF4L7PJE_*Qm&2UgJw3G@Op&0O^Fv9(Tk6?wxbgd#i*MnWS zUDYEUOIcMIvzJ~{8=yJB5?FoXrL?Bf;`@s zOQ+_)hGFuqbTKu>h*7ET7PN`ti3Wv^U5x?9Cddt!zE;vO6*MFg6iDuYiCJBXIx?Au zGqDR(a(Oasm9mP8yj8=3%@aixmO~-HlDGu@wXep%<=1t zO|Py3^|!xI7Ii9Ax@wS1Um;scmUNy4zf9u$0iSKbFSXz^C7ybGAqAO9dCmUW;KGESG>pdTXU+GC$#iGCxgbrv*P* z;%PR9b1f0MmJIjnqNQmp#Mhcspmm<~mhoL1Q!dNsjl$1Z$__|8&9NI~UX&TuZI%pA zBqQ{rOiW55@j8i*XdynA$ZoB=#$B4FYk2QxP$P&b^K>nT_@V_XZsMnQSq6!@nnc-5 zKP2(JSs0Q4BsFy|)7TervAiS3qe-i{-#W1=Jt-)vh^P{h9dMwMNs1T1h**ts#Zv`_ zCgsB*|9`ttluNUn%I5b3sO2^7dLQm_W?}~7!&C1?FbWf z6_LD_&Q@4D8_(G3uR(fYCWQ2xh2p>l_zkNDh4+$hLys0=&M#28pgswACsgx!n2H*^ z+DNbU=<`sD@Q{V{Ya}(MT5weoS82grA#tU^k;j61eXV3jtm4DyLXZ)XDl0-|`A9fQ zW}>Nf5=>GBol5E25LSA%C4mp=M-W!>Vy^|i3t=TM>Mi&>goV5aGq%DK5kXi9jKvoG zB7~KMoMFM!n&x4Tmu%4L^neE)+2VKTf}+ju(O9J!WV+E9c_S{U4-vN#)Lu*yHVl>W02NKiF;7kK1$wq})vaFL*q!S~BU2s-VqN=Te zn<%rA_f~PN$uSE!>Jp0QTYln|ig~c+8_C&)j?L9~fx8L2RS6ypV-u*h0(ct6sKhfE zp*SLyVwl=+Zf51Ot5z*zb=7Zi9l+Qhk&xV4aHp>MSQ8?eSe|Ugap0BTsS0A0CKw~~ zQ~ZNRP*K1ICG@z@M>Zp<1^WqG=otAvYZZub-Jdc=8)UHZr&=ALS2_-)Ew4DXnnrZn}M;Wbm--UEmuj~kDNQxth&^M>GEBi0&&UA3mflo!nnaSK7oL=0M33PYwBVz>=C z+>cu{I1$1@6AVNl^NU7XjV#5rq7f7~5OGwYT@e^@2W1>7;V~9`Qo2Km&$mRZl^Jr7 z;UNn?DfaEgBNqG|nVxjhlNS7Bi6<2lv*3f4^cx6|$qfIRORum*Y_eo1m-t~QsMdln zmH5HHud(2ZCBB!XVlq@+5>ICSb25D{*f!h((k_0TX5kk9i!y>dy~Jk>4_YeE2AS#xIlcYBH*c`oi<)#!0af*3Yml)hCz`8EdSywkl-YLs8ZGIFW(R?R~1v?E+|cxWJp@o zVEcs6P$F|&l9_CngHj_DG8Z>JlxeX~rXeG0e^@3W@*lu>&`@{-OeZZ&Jr$yWVUK1) zVVbm6=V5wXqFH(yqOv*54*8QkMAu z7}IJvYAn5aS*D|5ST6Czc&}OTvjjfO=k$Atf;*Gelz26!#49T;ykZ@eW)!$$XR_x? zm6SD|+v|ozT5N=M<<^1Q&&@y$SlGqFQ&gb1`#S_Bl8hzzO08vxr!M$avT;N;F1W)G zql#N&J#edvuk9gzRiZb^&UED`vqSKcmARLKPr_8VBBScjWZ4_Vu~x3W&N7Bm#TfG4 zf?F*3N{P?Lm=kqMVQy+Lwuuoxd8-o@u!=&0&)@EZgwWaS4|anayDOQF#L=B*|4q0=20R##a zI%18q_6Y#e`j+BnW1&O}YQo=zMTbKOt14xfhLr4I+Fwg?8Aj83@Sg^^0Ig*xL*3!g zt2$*U78!;kG2fJfg=X668xPs`Hy*UT)YxqP z@u?vtYRiztY4p(SX)vx3Zs zhliQ>t}6(aqlp?@>mvsr`mAq&rl4&=rK)V)PdJtfZ&LOeo9C-L{AME+5yKQvTdAMQ zb)wq4qz2HgH*FECwFNBVnp9~?%PnHadL*QcVLEkCci1d?I!_0f@^qP=)owoYw5MQ% z&%lNyx(8i{Z%Jg3+cZZxnH=!-!l^`)?#^N6dr#+#`zIXbS!|P;9`W$9v)aXmGT(2< z>R4>jGW{7jHdKER=#AQ(>pdfD&uDAXrS??Bu03P(QGYhMlLSXG=I!gR3g1!Ug>zd4E$)*WH}k;?Jb1ko-=C5(U8IbM_ylqHlf$}L2y3j=^s z9VP4{luCo4@Zz2P8|J!aXHGK5juyS=OBbzz_r9hCbxmB8D^&tM;J_)JJ+j2`umRXj z%jT>+aO7AHKgu`DHu$iLFz0T_ad29qv}kcmD>Umjl*&Zb=!sU%)C{vKR+V!xZ47{vHf1`nl5KBoG55qCuzR-R6#h_i+{OYPyuf8H z-00-N>-^^Gjm|J7crq}YH;Tf2MkT{8PcnR$CCzAO692FT-`5hZ_9fHY>raM19+C`i z2n-i5jWQ!`dXqS8*AC+qr z_h7R#z1+iv=MqrnYDlSjeCD0c`&JusRnpAQ&j+jG;ywBlzt zeUP4D4w_p06Cf2Y_w&Pv!*uc%*~$J z-+-7jGpPlN3{x_@Cxfazvz|Fr?Nl4({mt;MtuPa!){+#0CG1|zMvHiTFwh%kUx_03Qrd(~l{L248rTuQ+=SqTLa z#QujEAyNz!=bZ+(htMWLy%&qvsbXsXHTmK&*7w*YFGr>6HKmDk6#u=9|6;h$2-@oW zRj7od^@c42!;WIFQEE#{Ygz+yHw7d$<=t$N&`IeX<8c=wuae%$xKB0QlQf;`dBECo(*#g>g=q zU^M-CHo$@1Ds)3AlUI3T%>B>jq^r8Ko;N>v-s8M-5U~e%uQ((?joj575S{iATXTQg1)DPb7Z@!ey^0}x_eKR5%$tA!wr_FDE z=_}H4daW4eCE{rt{iX6yNsTvozH14@DZH^EF5N1@rK>0)74q=GkrIomV0izB+|^u|0x?1=09o=>vlWGP}{! zpAR$`i3DOHcLtcN8*{?srX|N@KHG&;9?~I^2A7ZY7m!EHElUc3A5C5ppWpmQ73EWS z%mr}30Hctn`HmZykKjZwQSY_^$|Zbrn=cinjbeqxeUpjF=uoUc6_uYh zXEu!sZ~MKlHv~tybfxjSE3PNbvZht-OtsiMmUcoDZ|5WScfkc=D;sbw_(hv&kW#PI zKw`1(DtWnovVYb}n$zIq#}mgh5NkThKV1$A$(-|m!^8)X&DGmI`lrLp9owfBNv!_0 zTp7-KQLxMac9oF=Bf%Ss>7{HB4k2w`jf3t*JDmE=7tLuq@-k^^IMPzVj+?80{;hfM zjS>}?e0t&ix}$-=tpjvB6C_b_w84F=_>*&xd42VUrh<9FK|ZK5k&My*I0i-zVH z@wDw}+{8u4N_Lj<=6Sge$8s6X+j(F3KCBGuFWBxsadBc2W(4i2n3$XSr2Gz4XD+*O zizZfAG-10lQx_=z{N5l74BqI+^$`esaY$=9SpLqXTE+ak+@*-)!(N%xDS&G?9jp*hJd#0CAH!p^rNp((;RQMsz@5j@2%VCUh{XoMQwr}>| z{IOZ|QjU{0Yw1;498^i5zt@P{>o5rB%`cVB@2=##@~PxqvgAmYl4<%xpyxCLCPg+$ zXKGn@Rh{UUsOs!XIVGPC8^en|I)Dft(U&R30`*Pr=C>^4?~qhP$Z}TKXnt!>+FQc= z>@AP$Sy*V0VL*K>heu9~kI4E6naq0!rYC2Zxqq)Sd>G0;p0-n3f!NpshYKrEDEzx& zFbFF-q#p;@SmXYYFmgrOX=S5vym)gpI*d&~w=f*QK19=`H5r1zQCCgI1LSy^#nUz; zu~%1%MJ0rj?Mw=8B|Vq*AU*$Gp3S|x6NcD?`*)d!TGnG$2`WsVR=vBt?@J@1Uskfh zEf(#fL=-P0jM4gcg^cK-kbl>JH>56HWl?WWSsGv=Kcf!^CQPH%7JVV~p?T_+l9G2| zfq5elwp0o;%3_`EGlIe&p=SHQznQaN^*C#>{3gzs9OPQpz}{73k+fnl+1I^V;QJx$ zmBm0edpG)*0#eC$!ET|$v&}ces*gt4H8qZ=uBh3MYq2 z2~aU~F(4?z`dD}3jP_xeO*16^?(>r8aX%fMJZ9YjygKX6a&Z8eZA@uA?{DUseI*n5 zl){ELiNy_=jov^^|EDzHaxd6e&Dz|>-?H<$f0cAArE62V69g%W`f#sOd87FcjgfrFIX|5{G?!(R$@Olmm5c31cG?&4X< zDV%E9(6FxQshSGdyA)65?3U_2MAZYQr12cfJ2cfugEG?A9@mXocH=Thm6Z^Eq#IFj zBOaW$Fdx{TqeE;zxxb`8^_qb>X-ArNwt@b5e+k8AzAj=((NHWIoj^~2y&(M1Hqlp- zur3TH!N-8hm*I19Hm-K_*=A}2oG}Rj#G11V&^2x) z;)2EIeQ{@4MN!{rtZ8})Yo}Fzi|7*^WY7~~I3y-{L&Up;K$Z(xIXx>%2ZQN@ToxxB zcYl_2rU_+P8yQ#{4dJf3??5bTqEZxk`v+#p8}ofiYN*pu4t+GY)XAD@x{OY~xb*Kn zGWWlcQ$)tf;slCJku*b>i-E(~CqWtZ7s^LwYD@3DeBy-W(dX%D{OOcc4c>ZU>OXlMNT4vgOJ0Sy>@u zWYX#hN}Ke2gN$ct+o!`y!00>uanEk-MxI=q#dblPhqyK;SH2JsE+u-*i+?pZoLCjZ z4{B!vuoC_uzgkAC?(^jHsNW&L+QUM^`hME z(puK>ike~_cS-)NQ`@S_*YhJg~xI`Xe?-( zm6>XY z5I+1|ml&HubVH3R#eIcwo8zgkp5@tEO1OEv21om!+g!~z}w^O)$sbSKWy%Q+Y>HQJ0Z#$mq__Qw`~fNcT8xOiNaj4St<@BKO_ z?E3?CFU`PQWmr#gne-{l=R(%m-zKI@j8B(&aC%a43~Rka{(9tx%a59LC-w`@iH8~C zZ4>e7SP#kgaH0Up=t0H#>^Z2qO}I?I9~0vx&gj%6PsFY`2|u7oR6trcl&W1d#$@93BS>(*U32~MdJ@NRGTiYZKOxD8e?ZYW4~C-SFB z{-^wNkRRy`pJM`>fV>(jF2sfm&x`%`l#Hc?W45enMGnE#8V!SlS;i)4Sjq`?oWN>ld;zIvnaf}x?5tEymv`DM3 zUXG3lRW+RJIvXil<4U5>Q5%leWIZI`mF61 zb*0JrNXg)AFm0lPgo>PYIRxG&#z|Vrc2xg(hgtNeGGdeYf0~GEZsrSrnk0#gNd`+q z6cX2S<@rarDiQ~GtbEtg7^+5C(=O%f_jAXaoDBi&W8c*}qU6i}JCWaQE&ET2?EADR zybq#CTq3Cq@jO21eP5MQc^fc8-#jZVUtg4g-0{L*yerTTkG*6#gXy$$9)Jr}x$9?93k~HUj zR+3K6#RbUgDKOW4mNzy9b!M>PKCL5Lo>~g(>9}f`&K@k(@CA!(%<@4QmvE7E3RVEM z-)?^K*|0pdCb-&S8_<$q)GpKW=d$oA>4>PZxNGS8fa)X_bRV3$1gR*}{WP6L5lI_h zj>R@mdA(Ue_LDfEd}NYPUiw-{6ArBI(zcr){rOfMtIhGpZVsO;5H0{*x%F4cO(=tcTV+~Yv*f;lqHAB)BtAzgSPTChTbD}dXf%Pw0Lg8G0(Bd!^N zdMb`~Jx7+~8}XR56_$8v5v^ARJBRcl$>y}iorQFl9R>B_qr6mkLs;qRph#~%{P_r7 z`=hz-^PDNQBuJ5LhRkkbvHoPB%|TMJIDia+vgYAVJ%h1gNrRqc{xvVWm>XS;;f9Zm zilJ5(?iRe$wdntiaO7bSO(4S21l;ZGS_ZcxlFbWSC?Dh-UaAkOfDns4M{W_(?~v~N z|J-lUFgU2-mk7AH2uc#K6+&0BLaR=RH0CxytZBz{gnsTXC+jmrS1PbuN>^sE`WeKRKT7)vNP6BZ_;PwU`;VA7kq9@o zVvzP!1|7sng-TLPMaq}(?~L_wsXD#XXAEwq2`BJ1DfoN_qmLWu6$i#nHzwOljrNZD zs~P(tHqc!t=UoLipZ$c7K9^N=B2T|$k2&Q; zNxG6@x9%|?J>f}+G}`Z=qoe_hDi=Yxl{8W*LRVbp^A7PEo9;`2q5W3J1l}#-L3io- z;Dj&Yf_)ye^r$D6E5>2tQhmGW|NE#(D$Qqwo!L^Aqw1g`QQHE`pew0PQdYDr@ZcVE z-QOPzb9Y%=gel`8%if>6%kF^zL9>M}>eC&l0T$z;P5Mag8cEg1Q>e%dDDvyQ$$?QS z8b=xuX-L1SG$FPJi->+hC=#?6{@uv!Vz;dioH;nLwEwGnulNq6(b#Aou6-k!D@I-V zD;!${-HweZ%N{at!&=$3VupMV?o;tC4<_Qx@IMBVVY2QY;}%ZDBp@B!a{op@Ngqmn zd0Clp1n)}MevfagDV;jQvJF5ke#J%fkrCoB%3lVZO)z57<15CRORw@Ejw558V(>&WYzJK^7 zB8@t79ZxA9YEJt)r)-~-j-$pgm&nN;WR#3#6v=9FyETGyaKeO4XV+i=Vswam-Pd{3 zRPOF9n zels&iY3(Ovjpb+s=GUFyl=W8^XZeyEtcHWvd%oH4q4{P5r?mXE&VT6M&Hg7KfAFnw zcu$0;UHXane7^rYEix?Y)S7}CK)DNB&n*)kLR2pku3KzoBjL zJ#s(^CpM%QoqOWOkhdld!p0L?2?L-kCb^=8dOPGr5Yx`k4l# za*Mg-lxLDa#lT{NjJ@^`eZTAYfQwLSqS9)uw+Lw#4w0K4D3&gjcnXx*$ERN4 zhr7NjaMCeeB2VJ#kknh>8~oV9d*AuOirubH@Dc7+VJqoc*Ce2Jl+KDZ#&of3o_QI!QxyMn7U9Vyk}AlmWmJLR8J#tfN^9lE zu3Af_;pGiRODVBh!yQd5@yy5m>6>n?Q|&jOpOLJS_M1DECyP^d!mci7d7gRM)K7be zJ$$DNN)&rwDIxg16MG1AhNKlWupb<=uooUWJwB|a#Q8FtwULT2Yr1UeL5dY@;lB+2Rxd`eH`;kG`W36+n=pxmqcZ;$GxMx(n%W;NwG8MN#%K&4u7qR%oxagS zEqv23jC7YLfg3FuBFkQxFc4vJJao2ztnF=QbL>)xzI)aerr~cNpB#44J}gvUO>%ut z9DSE1jq1z1E+<4(8avCz*5l6-TaWGIxqBka_biFuh>u7rcYymf`Nx9F3Gw< zc`7!fpC@~&Se-gzfJar@_VGg6tJ4aFmh@j3V^C)p27@GJ7EV+Ma{6(d zYC`+}k455<3`itG8s!bV!y-Y+8>rH#VWSSHDR5C2nbJP7srt;s?bYm(9o4o=@U5jw zc2z%dLdy!P3`qgQGOP`-Do2e?Fwz|paga=ihBqM^A^|~Wh6WMoJ7|kbDpdLe3U=xf z#wdvzTf2XiqBcZJ*oYXS05xvZi^tqPqtvz2U+juC7UBuuG4K#C(Ed54g)5I+A!>Zf zWJSaW3P)vO2ekh^z7o1u#CIPE7Z^b+7cC<)A}s8ZtC4^r_;scl4|B0tqcQ^s-wXHt za^asBLd&H`0-g7+vlD0CT)N@f>^EE+&GZ01WI~&>Qj%@XqqUk#xUQs^U|JaF01EEr zQj`!KYK%)=#NC_y>S!rW#`5pf8jw!nXep=>P&c50`hK|vAZIUiAbA-n$a*J+WWuUw z+W;+_pAj`s1JRXk=_rnBcs1%v(L6ciLav2Vp;*o#awMGnFgiCyBj<7S0fKjY6n!>D zD+`Ow8zH>c=F(M0vCkevxyf;3;zS>gY|PvzgiSIZJ{e3?3+Zt_l3S|OgC5G_TmIbV zAj%q&FpQK`s!U9+=$$sr84cLAsR5ejf~?bW20;A+N84g{NxJJDpoj!ojqxo zxKc%SIC*YMneYgc_n3SXl=dlaG&4=h@vI;fMhD$tPt$Y|?+_eq>ODFsO&gc@HF{4M z$j*h)b!pmcI60!H(zFtNY-_Z@p*bfC25bfAw_@oi{cHHX8`csAt#G@RLuI?z^wo78 zLFw0sKIYJTVHey@0cd<)9)0xXwWP>bBB850txTq|sxg&zco&tc(h^Nn8jFbO%Vms8 zwE0kUd@n7hY=ZQGQNwUNyP7hSy&S+&jt(fK2TIP-ts_T7AM2$(1nm~hOxJSq{+T!q z4MI!ipT%*}@#)&can{DujpbW$W7(FR5cu^PSGKoaOqxf=hykZ`oiw~edU|U`;TF(Oc_9={y3+Vp|Axl(U5rzewg(z>5+A~H z^9V@U!gfU8@2z=tH0D%q&8OE7jyf|iZAX0-9S@ktIy|7m)vH*?SWNTHIQoJ!`_Oa^ zLteT!L%UDwPp3oZb2$e)=5m3Kg7i#n$+$LbzYrJU+-Smai94u0N;K7K4j-1n?D! z|5C!dep*2e`3k7r7qhDp^8bS&(b@e_2l71BPt@@W-ZNENFB~#x-&g%K=b|OKbda2G ziM0yR4ZWin^FQk+N%9cSqeN1gv0+$r zTYqi(Bq8u|;sM`&>41B>cg+MY2I&M`(y!4ULP6Y>S1TWHZjiNhgm8;ZHy(ODI%$Ab zpx;;)T_WML12j)UFskp&sD;!DAs9ayp!vAEfRi$zE{GhHhS5SR>dc0^5OYj)`9d7( zptPe3qcgKL-}I-v>RrpA4?9|~`>IJXp$ntm5*NY=CoAyll@N7Y(5iBx?`3OKd~;+P ziu;4~e7W*7NJEukBEP4pq59%cFRD`8Qu=o&O+Pq`HF;~ zR6~!WVLh_AYA>Z#Ltfrx$gOFV^Y=HFe#2snUXr8Tkp5@5c=L5KJ)$qc>@hIWso+` zCvYwb40OyrDGcL|6?sp@3U! zE`B5W$zUz#%7wH!Q%w7?#%glBSsRJa&8Z?20KINnSdq}+knCRG*Yf@)}he2;T8LNp+vs|GCK4fq5- zL<5>W<${Y=ibMt302tr#Fpv0>`^NT&=>cCN`4h#VF){t0M!c|DtZ~F;u<~J4pBoqB zakCQ!b)3EtDi4ardE68phYxg7Wv(ufI}$fi=zxh2$3DHQAO2LNrAlL+;wK^g(oXT4 zA?{V9I&ZbX&&N-{hz3p@YH{RQ`Io-&hq>j;*Ot)ST9*&ys#b7Y5^gda$$-Eqdoy}C z-y(FeMim|{>Ajl8zXuTQKUAAibSZ9&1~3FPPZ{#w^rqssq=l8VCZdlG)e3rC+?C0^ zRzaHVV*Wj z%UQVi4=jUPewpQ1y3!AicJTu#vRf&qhUjUF-m(r+l3LOChQajFXio-zH%PV;REuW1 zG*9^d*8U``DP8qv%l4t#`LGYeib9#Cb1Pgy9D7>jPn(5J; zg1d^vDulSJXKN!!ihQ<5n-1@Ibejj(%jCl7yB^Imo*aF+s=}|xGg}(Mb$&zRSaJ!4H+&l{7_NErfq#om8?NDJ_wZ9n!s?9ZG=Cg@g=3Bk3i^f=9cm^& z7!FS~eviI5ddHq4+V$i;Ja{0B-~V!nN)-gcm5t zWyK#8iY=(qXjtRUx5oAE95-H`Cn0l-D0{qDv5_i2aY5!-DjPTiHrcLoY%&-!@V!T; zd9|D=U%`$ePFnTcIj1|4f^97{^FAobm{b%Z8unFmp^E0 z;Bx;k$4vt4rM@^T6(0cePoB|=PVs9_vDZn?UOb@Sy?(41VF5qu z*YXO;6rk#cp;VFAo<|lJD*Rk0@;AFID zgjP}@ej=dGw^o$}&mHxLe1-fQ{#Xf+*^AZgV5eH8YHze`x04r6AJ8~U88w+>5H6uw*MG4^?6%A0sLSL!x32&`Xq>p|+Qgiwg zRmsmyW%sW4Boqs=3@%!CTWP(3)N{88XfZX7D*NLfKzNS-2{C~ zl|Ma9>?-UsgrK7{YNU>iz_DOG0jZCT=8e`Sh56D5DlkipFc!Z87t+;^4lRfUj(+J< zt|fsJ9}tTrJ_)7T8jxx7e=VkAa)WLUbayMXp*#R?OHG3grpxHj&qrgEN34*8*eBbB zldZI?XRLxU=p%@vz-SUHUn$7P-Ngz=pXgVUi(0Dq z*kogw(dlj~?TOOGN@X01{q5xTHZ_JmU6x%s-*^*efAUjz$uF&J4>!_&H<<)fDeZCR zYt#rRFfbe6HpK+Kg@M5Gz5- z<3K0!p*OrPR6^biVI8`-h9yN&+1IKlf+#ThRVhqtH6#DiAsb|Acuzw%rulzYLd~|O z>VvlJ(O-Am9p`f8?2Z4VFAU{0looXNV+%G63m_ zm?KpgfY5k)nxWEArOU7{)^0Hd=~j5YEaPrp^y3S)yeY@f$n@Av|5mA;vUEgE!#x%w zmUPdlccSAf;5}-`mlPbS+wnP3;eS-ZlG>x}talQ2R`jt7Z5%By->wh~%r7f6-*_>w zNg3BJk8#k95=XXN*rFv3pK8ohi%%GxvmpDh_?&i;=97!hdA=)Uf4zHY@#(TGJ~1QV z>c-;p*^96`If=~zT+Ef53HWuFRJHUHiowYlJo?#1+T3vMyUgLvn!stM`qb5^S2Rl= zElD1xy1+s^5|1h^(Ma*YwFw>&Yetm@{JQc58tSxkk*%dA@Nk(=$3U)PI2@(Z-Ta_Or0$% zRZIjGa2Dr{V9PLk9mXaMv!Lz;qdBnoMkXcB9DOzcZdIH)%A2T7DWgsAGkwLa6uNG5 zVxfE0FXV45iNO!T9>!TPC}V1y_(E}X-9#LKcDFKTHoD{z?CT)S=a*=n5~{cDKCkho-y|)FEuhnV2Xq#=D!t9a z{Zic1g2c&Nsu6rP@=~Ajz*Hp)iReo$c=f3ys<6(2pKM8Q(_}f(p_8;hdh3{I*(9x` zNHBdwkD>i`7Uv9CVafKBgJN(?IWGF-B+cVfc~+<*QSCu(!fM)BPcMFh+tZj-pCGON z#KEY3nO4&OG!~0QYr&uf%!BBp%d~OfV}AyHa0H9u-j@qXGUWM#dlD-C*RmZdohpmk za$=$Q^tNE8V$S5Ww(6Qj2qVVpBH@9FJfy;%wFxt(YE|b;8LhOjkT+S|Mn|jOovb|& zUW9vkiaQq|thn=acal5*F(k>I?FcLGyaZBAap$|hEAE^OyyDIWapM}?$+`A1gcSom z>*Y7LE~}^+ImXbj=bj>e{=LLSUtoW5_4dTi4aIcQM|3dj5WK`4@E4{)R8a@BKA+G) z+=(+PnNx6l2ypxq9Qol34;-K)h7>qwv}TItNJK!Psfe6Hcyt4(KxHB>m6>wz74zzl zC5||iD!al`32~{aBy@$P5@J(Ij21=LBZ8W@PjK$)2YUA7$3IEzD$zOkUoJbn6F2=CqK(pva-!p=VV_ZnaO@!Q*+W)5j)&ei z4cre={p>VxJaj+O%HyFyy|4TcP%87z96BZ{mcBtnLU;$gSXGLnok9JLM4QDjmoafn zl++8p7{u$fesZCQGOz5mP-=wI&B^1UV$(-eOlg#1@KC}qi0-*ko0jmx4_5?$A(Z9j zhLE!gYcBexQs7Gglv)73~RL0URrU~S8iL|cTBqSDZJ zA+lVt=cc;rqra)r`r+3yqMuY@f3RUl^mLV0FjHKjV~Ni}jX>cv%3fiio%1=UVjiDm z5Tu{hP*xRHNbmGr8gSHoS7|ey>V#SlC)9%HoKTB?b(J>G{si{di-$&wrfVKMS*nAI zqBEy!6DK_&+wt3u1AMvhn~t|QybE}ZO*EqR(TN{IoGjC}cD#mV*6X;owH?>Cni{7b ziheR3T$g(~dUiTy$jBklf~zreUVJ|~`)aMkLqE#sjl`Jx)(##2r8OuS9r6IjwyU-2 zPU}r-`hgwwaWqQrgP|}32N+>Ml+A#__3*Ih+!;7f)%JdL%?vD`a9ZyZ#21P0YP<9g z<=z&ZM9MovwC-m~~>8Nb@V1l${E0~Efo_{DhX{I(w-||6p^-Rn{NQfOXwV4#3el6mkJrwm_ ztIaH-(*-o4}CL-zJ*MMmG%o zfIbmWjGy)yP?2?d>1qdiuwaDzG$I*a7>kLsw1=kgJg%<430vC0dS$anzieFdp1|yo z+PSA^7;e{tTvySKD}ATzjI`M|exrcfIzB z{_cpVeUA2k-u^-K(K%pBydTDUdOOdrZF}s$qqA?&@)o`eOP@4bioE)q%ceKbeR#$u zG*DXA?yKb&$J7r;{Y4U&>c7VlM@KtPTH@}-uP~5cp-FLr_TCQ8md}x&>V<<4?Qn0y#D>F==__(+RYG4;9KJ1!dA1Rb-oKMS2am7SY(sxPoU2XC zS#?;@X(WDGphg<4=<~Q6|DV#n2Cm8?`+sJh3-@|OL_|c=>*aE}DjFgZnGqow85x+Uu&5g#+!qT`q7xuIqQK!93|(d4BBq}o3h5hfx_++b~Gk4qF)X%Ow(2%1pQD~*8CBk zIo{bCzDsnh2@?qr6cV)JN5EQWWj|iU^fKEYR_zFtb+io;6@=N#2$_W#(77A7J7MSB z@z$YBe^kn>ZzKB04m=9@4l&(wy&mJY+P(X{4gV2KuLX`-#+&Y# z%HrFG2l&(Olne579DbuoP4#F~xEOypSN%u*xO1enz^gL=Z}eTTp4;$)VpB#-eoz&{ z*Q0eCs;x)Vi$HqoGQnQ&mInWr_CLU}$49n>;F32}UFZND2f5O!Zh>HUCuKs{>wz72+&TC2c;y{frC>1F6 z1@BW?>-54@$=^e!MR&_G7RkwDv4&3gg7U{=?L=5SRt6$W5hm1Fky=CEU!|Yw#>&aD z`UPZEXQ?zngUnXRsCo}Tz%^^aJ&?ixvHl*|5#j>1X~np_;x6`qKk+6YEopzX_q%%S`DDWS2tjPNz+F0wZz@;qvA|x*l(7GqwkA|RiFW?Xcl6Ch(CqW+? z@0TelrGP^)KFvaS0iMMt2+a6{eVZHIe z@SIRUxjz5?)cXAkJTf@#5Kc#0!vyYIN}$i=Hj!tX4CL2A@4FXE1ry6ao3r)z7!ijU z3yNGYpirE~&rS1hK9joku!tx@ozOD|Nay_7KheB#G9zs_^7(RLlz0thX|Cf{SD?I| zegb&%1m%$Rs6ju`>2c5z8;($5yiCrx74@CC*9miZ`Ics{p1h{6E0kU5KjSoOye!UP zTJaZ|nQtdUcyRmXRbBK6I~soDv=43p*KTLJ|O2r zn>sqgKR?;J@CI?mPCEO5dD$gxf?S|4Dn5N@q=EeY1+7xb=(gACWO3n@*i|5dT^q=4U?6&Pn5oR zK8_7waM?MX@6yHX60XEIKj-|&hoIm?pGbK~PGJVGdPp{^M|RPoNir>VHp+3Qpb|ns z4TpZC7mqeV@+}f*(KW4D6r`URZdTqDbY*6Gz26(AL`BG;)e8N?wLGnwypXd?AQhZa(co z2d2mr-|x1ip|@Rx;`##X$g(df;}IA;9zRa=9+AEj^BH}C({rXcg*V*Kz`1dIzm10?wKXOcvYO}Kf390>Ph^!?`D=CySGEw#YIajmDG&!j z8%kjz!fmYZAg0gW-4qDQB2F(0V!be@Q!H%`$_U=j?g+}9@T)SC{3E)PXF6P8TNZ;3 zdQP?bH|0%7#UFN4$#iUje@UbT(`7Qn)TktS|1sG;_t@EY%N$~9Ow-w!Whc)rEo&pj zMDx7lrJlo+XJ4y1c6NIW@04`cz1gDa?2H+}z23;|Uu57o1eS^KWxry{p3xSf&baCV;k~yWy>=9to~~=#jUw zHC*0;K49@7+AY^=2;e(~7Z;PvuZ5lCK{mxF%8c99IQr%bv3{}A=z)o=W=UV<2l%?9 z-#P@^coC(|k|~jgfD~We!qKXMp(~jMspQ&2vu0txj&a?J_$YfH%afOROiy4~KezD& z#`dT89mj)}^*xVV#i6!5f%JhQ<w{YS8HorW8vK5o|(4yJW zmopQ2ERne`Z%O&%Im|rptl-a?`Z;|fPG0SFSO_&Uar*WIPN%c8u?xB?Nk;I;#d^EY zJ>i?zJ4y*ZZc}o(V|XK%nMhzeZ88zoVT}{M_lb1YD_DPNMty;~#(B+{Yc5f5u)t#& zywv<2hBpMGy{M$8AD5ky&C6LqaC6Y|-ZH&&2}&@K;ne7faWquc(Sch=fgZ zWnm;wr&Zhi`o(X+&3IA<+^e>mTnMf&dQv9m{0rj1)KKs+1H4Q$-mWnJ_ZB{_-lI5A zIob}m7xQRxeO%cOal{{CoTDx3TP815C(~(k8K&gXuV_*kMDUrfXk8iBNr>XcGRU^f zy_8cfQ!;Y*GHVy=bvqxwQ+Ub+3si!)Nv|KK1P-c%g)uPAt-&;XzI^CjT3If0^~Ky! zNA0^}Ko*1vuYkA*(E=56psNUQnMJ9h6bBAv6*4@2)%H~Dh6gwsXY06VFIsC@cBBIJmRZn3D@&dm%2~8NQT1*0# z_XL-DPk8{!aGRxKP^uVs#Z*Rb?_LU@Cr3s{z{%uJQ6JUZ9IeMkG*QVs89#D2#^Yvu zCXmN-GCbF~>%TwZO$xovV&Cdwam?bL>*2`RTw*G-MLo#HFksEyJ5T!D6}_`CbL;t7 z*!?t4>G%_c;h5>RTjj-Hb6 zN8rt3b0F&#r|~`b*KwuJFP_KN#H-VKB5fkl;GGjngJIM^6lu`^LTOyifwzuLc-gwH z3u(tBZ?l}3uv@K~tr1e1>7&ugp8$KlYpo9SiLyhd0 z);AgWdrIgCH@ru#waV3n(vqweV8AFPxJQke}r_lllrkRGTZUNZ94L^k>+icHW6tkHyBHIOTiULEI>hC zRqe_S=?L&{JEm3IOr$YD+&kxTbkzd+sA~S2HZ6b&KdPQQ1dS`Do^lB9A3WHf<`K59 z#r3qFaMpNdI&Z_W_2ivUPe%wx&!0k-bbI-cfKYnILZ}5$L8mP=-#=KpPzF5q`v(En zaI8EDeVUv5S;ss=JzGzw7s`RLe00LRh6O|K5nMPP!0|-h-{6$9x!z=MUMMc|nkMwG zLZ5tLmDGNGn7767CxpXK5*8BE&Q$;tfW$)NE9+!=wZltZw_%SQ3m?7+&UHjo*81OaKx$MT!)f&NfxBIucylnz|^*q41viS)?nzmRLhBE?p zz(;2>T-8@uR5R5@Q;l4Vw4^AnNDBNbbT3if%#@E z`|U(&vkuQAJOi%p^#@gqSOGsLJ6;KMR6#UDg&KW_Wvmrg5iCY$|9CxAJW|0{>GkOK z(x>^GaqgbeF_gRt{H`7z19&h{-`qcR18RZx7pXn_oGg>-Qf%V>4h`eseYEoLvP9jv zk76sK6%_4*%_PbYX84#D79ylcl`^mNuL*bt&Tqcb#IjS1CMfPF@yTx%#P*w0xt7uB zq~qM5GriVcPNCQjvmR8d(C;sDN1#$*qrlWPKTgVNUREb=(TOb&R3UMdSx};PGp)A( z+4#eikKiE5P8(uvpRUFZz)l-#rFDW6Ih-dJEya!^KZ7A)`dfu(ueVfBDD zjJx%3d;$)?vB}VGI;PR1PK|(vNG6^L{v&k;L(#N(lJmZ4H5r8%Gta$HLd>xUV!kf8 zR8RkwhtXL2zx%Yisdb?`Ftp69{*NJ`niX(KUHL6Ftbj3e)3+4=JXW~X-%>8ZoaaK< zWMTO9+b*J}goq1$mR_jOLmlqu->r!dgU-g{0GM8V9@~vq@c|%4nAJ1Q0t5J|R%&=& zW>MG2WY0D)>Ymhzc29r$Tt_N+OgdPDE_zH3q}d8Wq2`6XVzbnqq~EP?lkAvBJ{`hjQJSsJlhAuFE$u!q7Q$2XMndp546L zHSGxYVdF3ecH2-j7GD&Z>kvJejc9* zruEe_Hk!+GllC(!Hyot08tKdb-@rN9hT)iF3o#gIYO{2;NrL}?ne~bcoU^T$Wgvw~ z(cyPEnB6`Ptg@G7Je_%2M&xltF4Tg&S+TkKuC(*zod@XNSFz=6dPO?Ui6tm<&UD6P zPYrw}&Oyff*UnujW%ap95xGVtp9>BT$GOrO<8!6|7dW0$a~heB8DlT*;b&^_H2WHq zjKB%dA1P^0EwlVgt2}c&mtS_C@__+n`HTT3d}c2T{!Qm>AjhgO+^WF5aJ~l4GkpJr zzv8Ll6&azKjAh^-dw3pz|0jOCUX#P6 z8u9~Wydl?dc;pSah{LkAGAH#m2!{e#Aj1A2k8GjRns&I-7DL&uNIy%uK&{Nk_-|4x z3`;y}mp8RpRz6rPFTYDmIyS%4yjoeTf(L8Q*2)ygz*7Dp=W)2zN!4Xo(T8cZEWwNYCv;@U!z1fp z(2EjO@=xh;yDmxdv*9MHnHKz0Ci_;V$cVaZXQtK|dlo>l;ykLKjHtidOuMK*?fa)p z^I+pp*%hiv93Iu@&2yA^u^c`aHmtO_aC8rt8{U#=anzJ5f_b9VtJ(NnWi?S-LfjsX( zFSFY?1Wki&G-zYmJMiEIUDm&YdI;Tha%Jr0yu@IGhW)eNcDh7b&6)<u>sryHp8U6~ij$3eXAuo)eLnY#hTHNKG3MucVJW}AbT zGtRTUgyLWaY-#iQ>Rvz6vJG-a)F2$MC(bs+bw6^Sudk+UaO`sg#p~Uu>OJ%`M$q>6 z%%hYvlQ5N}FuULq&;jxPmY1IO6hM$G+ivvb6PCF*()s5I)^pU>mRr;E+ z*`%3pkh(qFv&efkGBE=p4&4>6~o-2CH#hO0d?TC>5JJKl$3_JKr---H1}2Z}bqNHXt7s@Wt2MBDd-?V zyw_fd!NLIH985Tvp8_2ZiZRe7Weq;rQ8V`t-qaCMRPIupXxL`ihq0TsSr*2#T9Du! z1GR2=*>QMmI>53F9r>p>!(8CxA!VNWa;Q-1*pWVde z{fgJr46e_YEP~nM%OhqRFj{H5l}kO}Ls|XdvQu#uVE2#Xj0?xPKOE;Zgy&N;csJr_ z=9OX9ljWKo4!HDq9c&vD9o4_l2p0~w4lCI2>Ps2#W1{`{Mkr%9qzjzqN_I=1_PYxL zj)3)$h8@5TdZr&txOO)t(sf-Z`QKndl+F7$jDNSV0Dy^}C1R@V?_UPj;Ut)1d2)?_ zQQQUTg;!-Y;oEXqoyFWH?v`}y_k&5I8f68?t!C6;xg%cnIe#tb*`PKxcLyrIE<< zDb9n3#6ryOaFL}uyii|~uY{DzR_bW&vae*UOnURmgt;yVIQ|zQW|ptCMC+_0rU>A) zB>LuS+1Wi*yzB7Gm8;)7LTC4a__L1Cgs-7hA-?2mS=i=1tIF5(+gF%|-g-IsYP(Ni zAn02!z?v$*EOT$ZM9hZSc|Od;3-M$pFQD9f>w)MC-)+BKy83+!<|p*7Lv^IOdbv3I zM`%=~;6`rm7kmU7?U#H5sm_uk+LRnMGgX=vHMjmj)VP^5(q$5JQ20KG{&Y#j`(z;Y z7}h)-fmGo0rdp-oa)TwU+y@N-VZ%P`6^F>g>h?f1_ozvmYmbuWTT>KfeJe+`Wf90n zZjeS#uU_7b>b{jj3zzXofc^f+l34oTk^up$M@r~9M_1Ca{m|zz%`(1|3z&1Ze#ZyrN2%dEInZN{1o+Ehe}>7jfah-eW0Z3M zUUd2J{7K|F9_93VkC~mkzOi=B0huM$jmK%r_gGZIkJmPSFN>wR>Nt)10UG0X$7se6 z(0s#>(}o`~aZ%v(4>FBKYHiAoGG400W0ZHuTo0!lLJh>19fHe8DVxl&uK(jWt86#) zVVQgIIGs3zrxUkYc|u4WIwYjVTLbf=K0p=f*He`76JUhlAQ_zy1;4+xGUq3mpJKxI zDse&|-u7WVbKA~AaG~|;8L@5W;JF6@kL&k3LE(+Ku41<9Rr#pH>9|e;<8hS#kLj#$ zGrR$S7iPg5&R2?$pzyrTpm1O;%di#JtOGD!}7++$E^a)ou#KJrAhkQK4YbEp<9~d#|jzAKf_(Z zrtH5@(5RomIe}lO>}Ob}SHP*pja7&@rEI&0lWkd|>n?Tt1a1Er1CJ?l;%AxFw*4|J|yin3eE(YCHw_@I2vX>9(R)(6QJ*#`aiVgtP?Qs|9FZ< zo{(tZ<&`iJGsl^6K0~Y&?buDCXEyaUR00k7MGlC(O_%1iMi2G0 zU*HOMzfK!o$>eHxn%4ayYvQ%v+3aBGL3uV7VMP$vo}w8iWwFJR_`c3bI&l)S7o(eT zN_vb^jOtCNZXlARQtOgBHXE7?(oRY&`pIYg>Kk-sUv~*GGX_>ADpQ57EGS_$6 zDW+FP|94R0c}$XA*#d7=L%Q-Qpek#7ingA{CL9gBf0dJR%}G+A_%w(WODPPU zVbbTPrr%_oi={TF(ze6++{nnYa=5SmY2k{(^D?db4hKLO3e3L8o~A8lfgkSwsb-nu zz8>YFtd(OP!qIWUT!Qi=ZaSiwRoF_`2nyCE-m*M zfpQTz1ON5ZGj0_yemE_j>8}z>UD|`8K;h|Doy|tb4!sjF9ba8---8KDGX0Z#ic0uQ z@?JjydgM}k9%m_>Qq21?A_*!Hnqj|S)+_mq22AM~9-=;IgHf0a%_AGE&pgS~@GcSd z%x9{@#kR}8zyt2~)V5{#Zgd;t5Yhzf^$zKDfmGen%mPuEQ!#$KlHH)`JtI_Wz>pPK zsEYZdWrtL0h5_%2wn|;k38R(DFak&*rLN@5?|YTXb!P7z?B|);+fco-vUm2w&Gm#b z$ae>`h%LuQ{c5f!tm`vtn@&Jpm8k77yvEAR?42~vPyvN-ouT3rA4VPS8_#H#vJS}o z_x`GMS!V0(o&KlasqEGkuKjwwL3!%#;9D5x-bS$Q8$&^da!>*ObIoi`(I0D!e36y6Ru`)#>#Lt+UN$^;B=~P#&G=T;ZzSOZxg;-qei-1Jjqjo2Gu``$r9mG z6OE-P^O#Frcmq!`?m0A#x#8B1V}m6W28gJ#GkCI}bD3&)hWY1mo*mz|^Y`%qW}J*R zKo1Mrz&2`!7FiwL>MyMGEOIN4@n;O+Ki#TJM{~f08t|K`V2ne?_iokC7>XYkv{gxo z_6)_YK%4RQfTas?JL7e+3R`la7}OnY)flz)6m4p&PN@1^S|6cea}VMrgCORE0mX5u zH7{cD%;tFO_x%?pzy->jFUfe%W32UCAl-gd;kpcpZ>MtNPo*dLXIlAt0e7zTJN+V> z)J}~u8i2%S?bL;Bi!(T2Uacy_PvRRnEOqvFrL>O9 zry>-M?5IYm39ue^RQcVRs^KEh4~@_7j`QJC*Yefr*u}yjxX*KFpnHt!WPA;BTpXh= zG&tq%7}YEOnlwDjQtHg?U7@fRV6A~-%v-6fG^&bGp4cY7>y0$5_iU6FybwD3(cTyp zudYd>(=lpfJR72uf?jNiP{zC$>~9;qNVLTcp%Y-74o5zWFE)HO)BygHPUr@PVM8aC z<1*K)Iz`z@DyE}dqql3A+9qBuXT1Bzs%w2OD5+(^vF3ijBr21yDPy$<+AO}p{VP*w zS**%RIop?;M0bELe`u7;ux*^nF`C=NDjeOv2sv9-{(_>&&dTSRoZGUYI|&(#M$uM! z^=8=4F+cM=tC1e&v2=|6VC1`?TXWt)#Y?l>f0IEQI;#}b$4N&zt9*4j93SOC7ZERt zQz@}_7kj(X)KA*}8x{D-psF~Pp)jiZ;#Bd-n+yqmn>vXdXF0>Ry@T8=UXfyaLvyei$(D!o2-pj zQ}`K~v06KDtsf&p-MSLr+#*G`DBhE4Y2k^Ma|cXzHCbzvZ0@UlN;fmd0$WLsgbvmv)v61Ybq!L0BfqP(Q+?}Mlfmv#2C8;!-GQeSq2A3%5SD~l& zOL)3#S^01)J*gmDWD7fu4g^%L8t$N!9%`C;&OtRjRH2&bpy-}zJ);Dw#wMrgZh*zL zHeIK?F&Hod+3X_vyHSYlrIx6l9Q0~0jPNN3?e3-0cvK>jRUU_F-0xEblmeX!&pEa?NzKv>g9B}cv)X7=eL^ykemI?x9r%_DrF@U3QMS>Tmhy7B#IZ(P#-xj%TP0{Ev`^`E=svr#cDnAs*BZh^;KKia@(r;f@Uk*Z$gB#mNCdpo15}E8%kSWM zI@D`;Z{Vy(m5mj$tPLd`ksV_>nOQ>t6ocgL6Hu6Q3Fg>*7wxzNJC>+6lrs=>dCd@7 zIZ%zx7~cl-qbVCNub3i4*o%3;qSpCO1muJ5iSmO12UA(pAZ6)LUTqka4AboV1^2VDD z%&2Dh%j>k+*#dDzTMEwtKLg3MER~-;!p#le0gZ7`#eE_HUn1({H-v%bW5<9BIT|td znn5DD4OL~SfR7PPTICa&K(se5kIfOwmfJ8mZG@YSWU1lmdN<`>j-?Yj#dVjff$m4q zjzz??m!th(J5zGD8Xe&C{b0{%!B^@y|1C`z0U^D#Jl(Pjve_wHrMcg1fzgny2Ikwo z0eqj9>(*FxSvT*ar^NDd?9I#DTj@8!{!jq75yq4AIS;S7qpsnvZA%jdsSI~ROB=5a zQUTZ3nm%s?XxqiATbq{5@Eiz(_H8L6N9|A`YUCBz#@U=iQJHw%X66+tCixMx&Cat! zpv&=Z#*^{mDcTy3acybC6)NCi=M*jh8$igFuEoYl;e%C9+JhDxhRKW5{~V_&gTa_+ zV~G`RKo~pj9QdHjX{(IqN{mz2yxP1gRkSqNTzPx0TB?Rd;DJ6YbHx#~>?)P(o)!@r z*&|n}N$$T}@h98Ugdr-={cTJBrXgyi>d}roSF7RCH%DXoWml>v+k>OlWb^czaW$rJ zW;@z?wJLIVXvc6pJhij(0B0}aOf|&kaeR!<*VFPq9!73iOFVE5@?UL>So<1*>Z!(bWbFTq6l_qL;wYcUfpi=++LLOk?{r0{&G83{D;gy8(WsXJrjVRX|f8Q{b5qQqR zpK)jD%Hq+i8|!aXcN)s7^!BuNn3|Hp3M_M-UNC}|h7WD9MZ*_LZ}6~~U|dIEuL4E( z3dfx414o-M22~#}l_77WW}GiIH>alSx~-IJPPfzS@n<+T9wI2Qt7Ckr;d+&pbH280 zW!+S)*`V`#PbhAK(->zwqv5^+wBsB6|AnTzhl4J+x2NbER91$K&j8>S+WDN9E+Iai zb%Pq^sWo>=dP6ZCJJDciSmrCd1bDLr@Hu+}mIw_#=s?T%s|dZ9WZ3J;)xH@ihq$w-wS zorUyt!4HA(suAQ3*4B}b;{Bs2=O*y_?Z{7x3krNRQ3YKd(FR{$OmKapI!4i=n_!3d zE(#BwVaaO*+?!RSdN7LO|Ac;i5=8_5g!Cq~^C$53QI!7^q}@@ChY%dH(SR*0;6cg1 zr(?7BC(H-z<~^fSY(Vci*R<}Ry_>JYYX%q}7{33OMx#bS{Y9Ngqf}w+?VV&qVrqZD z%(gaxm8u~?jiZ!rH0SX-O$)s$)g&BjXhR1ZJ3_nLO3eRdtMv}|cl0fQx>Sdo?D+b_ z8a!mpmW5zYkN0gIsN@##(ZLS1@)pePk2}x_#ABHs*)uOyJGq-U!I0v)4f7mjYHn4r zy3Dr!EVKJo^s9B5gXb=j{BZ~7!vY*iv#L|4WdOH(j`CRpNDn>-}z#kn$$XQ~V8N;F5m_aKQq#;STImk94H7cVJ>3>_}O6 zs%3e$aOUS4{(lyNCt@i1E)^&}AH3EK%Kbf`uzw=P9G5Urpw&VaX3SXTBFOK_|8b#F zey-z>8-tNi-Tl?tqHdh0AT{1)ajwbP;C#FV!wodObz-HB&T z@;wlnU&c`3J?PxXeX4dhRy1VaDCGO}>p_wOOExri?$P z{8&15-FePoeug2>LB>DNzG` zCVR6b#k4$_@LFI2#+(x9)tMFy#7~!CP0ov@lyT78i(Arb#;FCdi-Ch12dJi4$kt{r zv^8oxrv6WzY0-GdXT;Yd?tZ7GZukSxdAZyJD&PHMOZux1s3NtvGsRDU74gPv?ttta z1N;rfKW_qdhzYvSTAY?mfXGYlOzS6rflz111Xbu5k=M&l_2X67*wI!=y&BD~6iIK^ zu@EkKP)#ajtXaU~vnKF$Uk`uiSIQG02)HN9tvo(2xL*WuYUY6nI9m&c7A?7xMSYLI zHH>q?Jx5w%`5zPQI3r^X*Q|+Zl$(b*v8j*|Zz%q~`dN;>?cYy<5G)nDy(cZ3EPZI9fXiMw<~R z*E`B35Z^aRrDYUYLjlLSxy{X6c**a;1azUCgqJgy7vkG$r5_louNLC5YShhpSWUCG zBoF}DYVhFzEFHTa#%eY?j*=%UUy6332nI3C*Zb`Ui||;M#?KTi0`@Fk(!J`rIGTbw z@R6h?lhH4PMg+DGWGV#7uAQ_6VaToZSQk1wRjrKY!(j$+%mUgHr}dAjky%&vH@`x5 zbN?j&=y)IsZo#wJTEOvOzKN@}b~>CGb;lSnK8w9CjD}Bxj@vC>y7rItVGxy{^VmqY z|L#QX1p&MkOj83R`lAfv@dCdxQg95H=9)H1H=V@?nHAu;OI1qzC|#x%48Y`e0AqM5 z<`xLH4&_vLJdjn2WqNKr9;-t5csvybLD1Flv^I!+aCJPL4XW7aYQRfcSRi#cmO~0m zS9$RVkvhLfdDk(R|9C_L!RG zV;ZtI_d^!|etotW-<9bmlpRO8-H&0g#&@N&kEuy6PUpT;-AtT)SKvSGia1ug9um7E z>iF{Z?Db3yGrbxdU@R008zx`F+!cC8w z4eVd*O4DYmy=q5S8vQs>Lb&#EOkae19|vj(bLXHOrZs%mW3xJRldd@Nc8`O2dOHSB zZ?nHXzo|7oOyTKglcVzB7V8mk5*34bvSh?ECE7-f5#z&X{T!T);rZ`TPhcwC(+v*- zp{>7kqpeS1xqPl0h0j&PBcDYZLIkTF_@y=Qnqwz?0Yk9_mKLPljN5sP0J^N8BEYEK{+Ok)9U7kseAb16u)bNf|WN86MhR zrqZJSVp)|P04#7QiS*cVOufpkc&G<#NnL3|Igq{{hHa$h60-$9_KD7>Mp$QEccUHN zo=Z%X8M;lrbA9gLW*Kr9#3#rtC?Md1{!7=}sf(sf=h1c6JcE7NIX4 zPeJv0SgE`oN_kqP(ZPAD>v;=(f;ZfsR=LR*%?NPb0OTc9KBW@Y ze5!u)Lhig-XJmpAhhotk3}$@6OOqC19|?Hd7pWx!hbDj+6@%0OJS}Nj$m`W$+*Zg| zYgT8fS5})a*RM`TIVR{}@p?J$r`>p#=~>Kbz}fmN7P`k1$g>zTa!vvjFUI;}*V~^! zOBS2uHY~>MdNqNA>?C96U*!yix@QcJniC z25>VMbPRvBt&N#VwE=tvRZmAbmQHMp#cZvBL*ty4fHT5RTUSCH-0G(TE7g+Z1Afie zB2Fx&3#^@n4Nq%#LGY@EM>Q`f&%l|j%40^i(&lh7gg$fGW*Ax78(5zEV` z<694_)B^7Rl2vMkTHq(o8WkH3BvHFCg4orSfUji)tzt3{sAANmNnCx7x;}}DU&1inhur^8szKEsp-gKsJ&?p? z%AhkZsfhUHIc7K8ZnXYt*Amn60aUVqJ}jQ(q@(GCDg2m=ZVyc~NyzodOiO z8a@JM$$XU>Fbfs6E>xroji8llu>MU6(2g~#glpu!0{L4Ope3(BgdpCCc;uU?$&cX+}kWWs|W3U9eu&fiF^Z`9)ybf2H4>zq`v{Y5I^yTDvNwe*XM6r$V{ZoTZ_Zp zQosnp0tOgc)?z8aId;QZRmF7{)T%1q(`ef?pYgpChwDHh%B<_iB=}A@pQ1L!Hjq{my zcHHhO`gQfy@rvM`>c(GUq4~%{reL?$GZ{zsG z=7n{===9srdvLHCSPv7xx4mf8dh9vv{BJcZ<+o`v<0mRxkMixIOsq!9t_8wXy@LTlyzw0rDi}(EI*8%j$y8JaCH~=L*b{<-fFLcaQ^Vu?3~lkWW2WbP zJ}bJkH$}dS<8`yVPu$v@(%yxQfv*^K6@j@plbC}1cr*VoF+{!sUBjQjgTk8toNU*; z3;RkP;4wkC9QLm1%#0?C)VVs%%2Uw7A5Nx$8&qzz?JS&XiGJWZZvzMft$))7^fA3R z<-Ui>i*U(%D#OF@l<)=l5mRoZ(6VsOE2Q<5Jt_m<{qP#0aSGTrO}!W~`$q~2GB(RM@T8a1f; zhu*aAeW?6)I&M;E1dx8q77W0rxL&aZ%p@+PNgQv)1Lj*WAdU+u z`9l@Zbu3dP*BSjG3}RPah<4)=O${6E@=ngQ%xRM)ms|HCVAb}iZTwIzl4?W>&G{H2 zdGCd^`(q46Yzn!zLZLudv=yU{aQ#*@y>Y8r5Qt5Yu9KxvnE}^Ik>pCi9W}3>rkpN> z!`}q1MxClpRABf$I04iueMPqLH=9>MIL!rBJ_5EX7wl9;Ksd1?2kiiH+-*v7C8?98 z3d(`Q&uKh+7^WGo^=(rP8tKUGs?d3yE5+5(*B`5HxzWPgiTM%VNXg9U%g~l$<1o|T z?3~`yb}Y0ZnfX$66+!*Tz2mnTQ~8zD{(WipcJwx&WCw-3H_Dg+f zskC7i#`fb>ivJQ@$`O2j;B5U;rTI)aVAP&L(d?ATzo%XYKg#)b10#f!cEc)i zJhiqFp;WW_nF#&X&qV0Ae*Zg!2KF-%`l6qS(4KxKLV%+YGU1#bA(YbyA=C&VjQm=i zRm0P2BkR=xslH09J@JhiEmfcXwIjb(9;sgLPm}iJbn@l?KrzZEE)uh15~2#hF=JAZ zw_(3}RhRh=b7N0`+VmZS0Kx_sqDyIC%TlYQY9`YK$hhB=f`ydR)$tc65PEM!7gX(NNGco_W2SyS8w)G7B zU5CH#l4>XYpu!y#{7FR^3mc86uQximy-kKVbJ!5KN~-xu6?R^=BTUye|JOf-UG~18 z&9Zk&%57AI@!31MloI>zc9;dt|ATeoXiKB&o-iKrLp0Z&X>P`=)#ks09wEBnXLtO0 z=ac)e^7PpD440F^*5%@mWS5Jn;Dy4VPa0Jh=gbAVFqL0u#LERV2LMzZQ58aG)ZcW2 zRDKu*&*(^Zf_HO#_#)15(qR`WJxj?=sFeL2<#Fg;Ld6`eT1j&_9QFoParo9hX$yzD z>ZpOk5gTdF&j_QoQWb}vu6Y$iZfit6}3HzTQqgQadLY)jGh?t&nmhGscID*z>fm- z3WEvKTt}&>q*gg`I}srFN6;1yH^SM5!-9_FJ_f2x?#!jz(i{~-b z9k<8kAnMBWav7(E?6w5j!i6>_QZa{%1LQuAa4a6l=WzBVl*gg>QYuF1Jd~+x(>Om! zoyEV+!7?^x8Fa7T@W{)l0R@fJK?ePJ7(IDw5G9}B5z8@a>Y<(ADq_T4VHS1HAIwEc z%|Wfck|QQvoC|X~ayeah93AVKPwroUlVdm~BXl}$Ff%_n3JSVLn81wtZq!`A;5V$f zn{T8lF1hQb7MN=4&D6kPGDm4J>f|kyd=iB=-)gl5aO(Bjs2GXLe>=_LaL?^j#bIh8 zZQ-z~kQz9AvxwZMPag0~Q zEXq5B#KnK*#AZEyYX9RjhZ8Hxt?HQ4s-l9bkZ63qR5wNici^tovX+J&%ek;YeNTWm zQ+4EWI{d4OcRsH{oAbaq@kNexr}oVdj#UP=#jFjl;L$2mu9Z8?Ln>44vM!T+uKm$?I=& zL{hmE)A1kX@6}9{f3#GXtwQ3#LfN&XqQpGu|-{P3ig2;K$ ziZJ5N^tW4bjPY+9^hA{5QR_oZ7_N6hznyXKn1xrj14{b0)Ra?k@9NH|J{zc586M}b zjaET!Vq)va!d4OEt&JhrYS%_`8)$m*CQ3$V-1%WB&w1a6El4_7wT|q!B6<*9xR!BE z6XfoikGXt%O-Ez)Rt<;>qK%$LwHeWpEF?+(?eTFrnZV0D|WP0sn!{mAgtV}8#D)L#Fwpr zeWW8M--Pex409qnckMB&X!hOsRZB#T-AnFp;90NH4XooK=C^OISEmoM3*?YMc4h z{QXQhq(fs1-cX8K(A%XWrZ_a9PSJ;rSmkh4HSeVA9uBohPtGVnz#XlZ+{R^U{t*)s z*HO+iXM-{SsM!fE3=ZiWC@qIEb&p|wwKcjK`;VhO|L}Klu>Pi{!@&z!|8mmmK1LVk znyy+I)6&Jcr&UCydMGafq}tcHz@NA3D+fK6kbtmw8vq@B7T(lzp?& zM&3nR(lJf#q)03)MJ+|WEx(=Pi%e8l-*Q&!h+$4AQ@6F`{Qj|AOcJjY&U^TGNKW2o z=4b$ibVN{J7Qpv&hQ*8bm2d>oGz=N`Z&vXRm4IN<@Pv=E3NRkkRz!>2Jv!1%pPT~K zCqF<9QAYRh2h7r3K<$5^wxNSD&EdLrf=&(6Hm4D11Sf=gtUj7hTNP`JHdH2*gLvag z>KiaFr?Plspqf0f7Ad2pQ8%%reD*^Gkato|S7V@Y>qDUoXZ1tegw!jt>!2C2+KZVK zDrQVHe`^7%Dkf1?H)FlpHVGFHjlIsyhg-pzX+|srgAlCz2H(~*Hnu2ck%(!W z10~~9Bbz>P8(oa4(?ZbH{%N!&!5Hlnr4}-AAY6X5;ibl2MkFmhtRkE}b)KN>PGE_* zet*&xBBhiXe3(zKKOTZ-WX}oxcFml_Fu6~>TpW6WiWAXN&nG#xl&)hTx~H5Y)+!t| zPnV~|2AJq+^LIJ(OV?-2QtfXuE-^9*QwS=YTu4=Z&}ie|Y8(6@zp?6B-84_M$l9$v zjDb?sJzMMUW$abXV~ZIA`1=Cm66dhzIAW?@#xdOVdkL#+_!6@XO~9c#ViHij{&%YC z14(eEl1s28I0{MNSdNK{WVxK&7lQSwR{+ih#%0DC{J8fdgk;YbXv>Ah5>@>IGh3E= z>jgdK)iK0VjI*lGDr)G9ns=@;@vclY#+i&;a)FUh+qa+5MXK4Wn4zbsCWL9|WzQFB zPJf7)u`e+)T84IU9>OU<{^{{n<6owR{s3F~vN;lN2#1#)^u!g$V7e~a=%UWNOjWmF z9jq~@3a2^e)-Z%pIvfiMf3(^`*YrSF7On{mrtx~K--pcK%*I{mty_$C>J?qEwjjfB z8O9JZ#uD6EWB%5ILR&pXO6{IYjEIhE*DJU!W_y1rq8@D4W)I-EV< zF!5m~F^2s^XYp)Hp_F_~*^kVW1;fz(o|}w5&V}n*m0$683)+tLW?gRpjI;P=qmMfI z4sE#^!_svl75~ZDYh-RVOLsJ`qr*w|964#GGTvS3)*eQGDn~zQ>Mdxj&j&5!Himo< zLhd>)(}fO38+S9L%PHkHqky*Fj{j;3`PXem$npZQN4+3_<0e-eMZ*}pko;!lWbI`yF8?RO&%U~Uv*YRH@e zn;uH>zf17PweYfq2#$l3**N6gL3tA~J!furh?(1|WTN3~Q?WfvRBTsbDE)0B7K?gV zYwCB>dSr!*U18$jPC78r2q=V+58+|ZgFBTdm_Y*{GH@Sn6g=vTKv=I^4Dkqcc*yAZ F{{RQ{oN)jE diff --git a/patch_v2/meowpanel/meowpanel.c b/patch_v2/meowpanel/meowpanel.c index 9de2d58..ec35d80 100644 --- a/patch_v2/meowpanel/meowpanel.c +++ b/patch_v2/meowpanel/meowpanel.c @@ -93,6 +93,7 @@ static const char *g_notif_log = NULL; /* 通知转储日志:/notificat #define POWER_SOCK "/usr/data/meow_power.sock" #define LAUNCHER_SOCK "/usr/data/meow_ipc.sock" /* launcher 主 IPC(通知活跃集查询/撤清) */ #define AUDIO_SOCK "/usr/data/meow_audio.sock" /* meow_audiod 状态快照(MSG_AUDIO_QUERY→STATE) */ +#define NET_SOCK "/usr/data/meow_net.sock" /* meow_netmgrd 网络管理(MSG_NET_*,期2 观测层/DNS 代理) */ #define NYAI_PATH "/usr/bin/nyai" /* 固件内置(权威) */ #define NYAI_PATH_CARD "/usr/data/mnt/sd_0/MeowOS/opt/bin/nyai" /* 旧卡上路径(回退) */ #define BOOT_DEFAULT_FILE "/data/meow_boot_default" @@ -125,6 +126,7 @@ static const char *g_sock_perf = PERF_SOCK; static const char *g_sock_power = POWER_SOCK; static const char *g_sock_launcher = LAUNCHER_SOCK; static const char *g_sock_audio = AUDIO_SOCK; +static const char *g_sock_net = NET_SOCK; /* meow_netmgrd(--sock-net / env MEOW_NET_SOCK 覆盖) */ /* ---------------- 增量帧缓存(GET /api/screen.jpeg?delta=1,阶段 C 增强) ---------------- * 服务端缓存上一帧紧凑 RGB565,按 8×8 块比对,只编码变化块(外接 bbox 子图)并以响应头回传偏移。 @@ -234,6 +236,8 @@ static int send_err(int sock, int status, const char *code, const char *msg); static int send_json(int sock, int status, const char *data); static int send_file(int sock, int status, const char *ctype, const char *abspath, const char *filename); static void panel_log(const char *fmt, ...); +static int qparam(const char *query, const char *key, char *out, int outcap); /* 定义在文件后部;网络连接表 query 取值 */ +static int tf_present(void); /* 定义在文件后部;net 日志卡根判定 */ static const char *web_root(void); /* 定义在文件后部;此处前向声明供鉴权会话路径使用 */ /* ---------------- CSV(enum 名/标签)非改写取值;定义在设置列表区,先声明供 settings_coerce 用 ---------------- */ @@ -976,6 +980,242 @@ static int api_audio(int sock) return rc; } +/* ---------------- 网络管理:meow_netmgrd IPC(MSG_NET_*,期2 观测层/DNS 代理) ---------------- + * 收口于独立 socket /usr/data/meow_net.sock(--sock-net / env MEOW_NET_SOCK 覆盖,宿主测试用)。 + * 读级(STATUS/CONNS/DNS status|stats)netmgrd 放行任意调用者;flush 写级——HTTP 层沿用面板 + * 鉴权门禁(require_auth),IPC 层身份由 netmgrd 依 SO_PEERCRED 判定(面板路径非系统身份时 + * netmgrd 会拒 flush,面板如实回传其错误码/文本,不掩盖)。 + * netmgrd 不在/超时/应答异常 → 503 降级 JSON({"ok":false,...}),面板其它页不受影响。 */ +static int net_ipc(uint16_t req_type, const void *req, uint32_t req_len, + uint16_t *ret_type, uint32_t *code, uint16_t *meta, + char *out, size_t cap) +{ + int fd = ipc_connect_tmo(g_sock_net, IPC_TIMEOUT_MS); + if (fd < 0) return -1; + uint8_t buf[MEOW_IPC_MAX]; + uint16_t type = 0; uint32_t rid = 0; + int rlen = -1; + if (send_frame(fd, req_type, 0x1020, req, req_len) == 0) + rlen = recv_frame(fd, &type, &rid, buf, sizeof buf); + close(fd); + if (rlen <= 0) return -1; + if (ret_type) *ret_type = type; + /* m_net_*_result 统一布局:code(u32)|len(u16)|meta/pad(u16)|content[len],content 偏移 8 */ + uint32_t c = 0; uint16_t ln = 0, mv = 0; + memcpy(&c, buf, 4); memcpy(&ln, buf + 4, 2); memcpy(&mv, buf + 6, 2); + if (code) *code = c; + if (meta) *meta = mv; + if ((size_t)ln >= cap) ln = (uint16_t)(cap - 1); + if ((size_t)(8 + ln) < sizeof buf) buf[8 + ln] = 0; + memcpy(out, buf + 8, ln); + out[ln] = 0; + return (int)ln; +} + +/* GET /api/net/status → 透传 0xE0 概览 JSON(接口表 + WiFi/BT 摘要 + 接口速率)。 */ +static int api_net_status(int sock) +{ + uint16_t t; uint32_t code; char json[MEOW_IPC_MAX]; + int n = net_ipc(MSG_NET_STATUS_REQ, NULL, 0, &t, &code, NULL, json, sizeof json); + if (n <= 0 || t != MSG_NET_STATUS_RESULT || code != MEOW_OK || !json[0]) + return send_err(sock, 503, "NET_UNAVAILABLE", "网络管理服务不可用"); + return send_json(sock, 200, json); +} + +/* 连接表一行:entity|lip:lport|rip:rport|state|age_s|domain(netmgrd build_conns_text)。 + * 把每条构造成 `{...}` 对象、逗号分隔(不含外层 [])写入 sbuf,返回条数。 */ +static int net_conns_parse_body(sbuf_t *s, const char *txt) +{ + const char *p = txt; + int first = 1, n = 0; + while (p && *p) { + const char *nl = strchr(p, '\n'); + size_t ll = nl ? (size_t)(nl - p) : strlen(p); + if (ll == 0) { p = nl ? nl + 1 : p + 1; continue; } + char line[384]; + if (ll >= sizeof line) ll = sizeof line - 1; + memcpy(line, p, ll); line[ll] = 0; + char *f[6]; int fn = 0; char *cur = line; + while (fn < 6) { + f[fn++] = cur; + char *bar = strchr(cur, '|'); + if (!bar) break; + *bar = 0; cur = bar + 1; + } + if (fn >= 6) { + if (!first) sA(s, ","); + first = 0; + sA(s, "{\"entity\":"); sA_str(s, f[0]); + sA(s, ",\"local\":"); sA_str(s, f[1]); + sA(s, ",\"remote\":"); sA_str(s, f[2]); + sA(s, ",\"state\":"); sA_str(s, f[3]); + sA(s, ",\"age\":%lld,\"domain\":", atoll(f[4])); + sA_str(s, strcmp(f[5], "-") == 0 ? "" : f[5]); + sA(s, "}"); + n++; + } + p = nl ? nl + 1 : p + ll; + } + return n; +} + +/* GET /api/net/conns?entity=<可选> → 0xE8 → 连接表 JSON(可实体前缀过滤)。 */ +static int api_net_conns(int sock, const char *query) +{ + m_net_conns_req_t q; memset(&q, 0, sizeof q); + char ent[128]; + if (qparam(query, "entity", ent, sizeof ent)) + strncpy(q.entity, ent, sizeof q.entity - 1); + uint16_t t; uint32_t code; uint16_t meta; char txt[MEOW_IPC_MAX]; + int n = net_ipc(MSG_NET_CONNS_REQ, &q, sizeof q, &t, &code, &meta, txt, sizeof txt); + if (n <= 0 || t != MSG_NET_CONNS_RESULT || code != MEOW_OK) + return send_err(sock, 503, "NET_UNAVAILABLE", "网络管理服务不可用"); + sbuf_t a = {0}; + int count = net_conns_parse_body(&a, txt); + sbuf_t s = {0}; + sA(&s, "{\"truncated\":%s,\"count\":%d,\"conns\":[", meta ? "true" : "false", count); + if (a.n) sA_append(&s, a.b, a.n); + sA(&s, "]}"); + sbuf_free(&a); + int rc = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return rc; +} + +/* GET /api/net/dns → 0xEC status(netmgrd 对 status/stats 同输出)→ DNS 代理统计 JSON。 */ +static int api_net_dns(int sock) +{ + m_net_dns_ctl_t q; memset(&q, 0, sizeof q); + strcpy(q.cmd, "status"); + uint16_t t; uint32_t code; uint16_t meta; char txt[MEOW_IPC_MAX]; + int n = net_ipc(MSG_NET_DNS_CTL, &q, sizeof q, &t, &code, &meta, txt, sizeof txt); + if (n <= 0 || t != MSG_NET_DNS_RESULT) + return send_err(sock, 503, "NET_UNAVAILABLE", "网络管理服务不可用"); + if (code != MEOW_OK) + return send_err(sock, 503, "NET_NODEV", txt[0] ? txt : "DNS 代理不可用"); + /* txt: `dns mode=%s enabled=%d upstream=%s cache=%d/%d q=%llu deny=%llu first=%llu resolv_modified=%d` */ + char mode[32] = "", upstream[64] = ""; + int enabled = 0, ch = 0, ct = 0, rmod = 0; + unsigned long long qq = 0, deny = 0, first = 0; + (void)sscanf(txt, "dns mode=%31s enabled=%d upstream=%63s cache=%d/%d q=%llu deny=%llu first=%llu resolv_modified=%d", + mode, &enabled, upstream, &ch, &ct, &qq, &deny, &first, &rmod); + sbuf_t s = {0}; + sA(&s, "{\"mode\":"); + sA_str(&s, mode); + sA(&s, ",\"enabled\":%s,\"upstream\":", enabled ? "true" : "false"); + sA_str(&s, upstream); + sA(&s, ",\"cache_hits\":%d,\"cache_total\":%d,\"queries\":%llu,\"denies\":%llu,\"first_seen\":%llu,\"resolv_modified\":%s}", + ch, ct, qq, deny, first, rmod ? "true" : "false"); + int rc = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return rc; +} + +/* POST /api/net/dns/flush → 0xEC flush(写级:HTTP 层走 require_auth;IPC 层由 netmgrd 依身份判定)。 */ +static int api_net_dns_flush(int sock) +{ + m_net_dns_ctl_t q; memset(&q, 0, sizeof q); + strcpy(q.cmd, "flush"); + uint16_t t; uint32_t code; uint16_t meta; char txt[MEOW_IPC_MAX]; + int n = net_ipc(MSG_NET_DNS_CTL, &q, sizeof q, &t, &code, &meta, txt, sizeof txt); + if (n <= 0 || t != MSG_NET_DNS_RESULT) + return send_err(sock, 503, "NET_UNAVAILABLE", "网络管理服务不可用"); + if (code == (uint32_t)MEOW_ERR_PERM) + return send_err(sock, 403, "FORBIDDEN", txt[0] ? txt : "DNS flush 需系统身份"); + if (code != MEOW_OK) + return send_err(sock, 503, "NET_NODEV", txt[0] ? txt : "DNS flush 失败"); + /* txt: `dns cache flushed (N entries)` */ + int entries = 0; + (void)sscanf(txt, "dns cache flushed (%d entries)", &entries); + sbuf_t s = {0}; + sA(&s, "{\"flushed\":true,\"entries\":%d}", entries); + int rc = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return rc; +} + +#define NET_LOG_TAIL_MAX (256 * 1024) /* net 日志 tail 读取上限(内存约束:不整读 64MB 滚动文件) */ + +/* GET /api/net/log → 读 TF MeowOS/logs/ 最新的 net_.log 尾部(同日志页模式)。 */ +static int api_net_log(int sock) +{ + if (!tf_present()) return send_err(sock, 503, "NO_CARD", "未识别到 TF 卡"); + DIR *d = opendir(LOGS_DIR); + if (!d) return send_json(sock, 200, "{\"file\":\"\",\"lines\":[],\"total\":0,\"truncated\":false}"); + char best[512] = ""; long best_mt = -1; + struct dirent *e; + while ((e = readdir(d))) { + if (strncmp(e->d_name, "net_", 4) != 0) continue; + if (e->d_name[0] == '.') continue; + char full[1024]; + snprintf(full, sizeof full, "%s/%s", LOGS_DIR, e->d_name); + struct stat st; + if (stat(full, &st) < 0 || !S_ISREG(st.st_mode)) continue; + if (st.st_mtime > best_mt) { best_mt = st.st_mtime; snprintf(best, sizeof best, "%s", e->d_name); } + } + closedir(d); + if (!best[0]) + return send_json(sock, 200, "{\"file\":\"\",\"lines\":[],\"total\":0,\"truncated\":false}"); + char full[1024]; + snprintf(full, sizeof full, "%s/%s", LOGS_DIR, best); + int fd = open(full, O_RDONLY); + struct stat st; + if (fd < 0 || fstat(fd, &st) < 0 || !S_ISREG(st.st_mode)) { + if (fd >= 0) close(fd); + return send_json(sock, 200, "{\"file\":\"\",\"lines\":[],\"total\":0,\"truncated\":false}"); + } + off_t off = st.st_size > NET_LOG_TAIL_MAX ? st.st_size - NET_LOG_TAIL_MAX : 0; + size_t buflen = (size_t)(st.st_size - off); + if (buflen == 0) { close(fd); return send_json(sock, 200, "{\"file\":\"\",\"lines\":[],\"total\":0,\"truncated\":false}"); } + if (off) (void)lseek(fd, off, SEEK_SET); + char *buf = malloc(buflen + 1); + if (!buf) { close(fd); return send_err(sock, 500, "INTERNAL", "内存不足"); } + ssize_t n = read(fd, buf, buflen); + close(fd); + if (n <= 0) { free(buf); return send_json(sock, 200, "{\"file\":\"\",\"lines\":[],\"total\":0,\"truncated\":false}"); } + sbuf_t s = {0}; + sA(&s, "{\"file\":"); + sA_str(&s, best); + sA(&s, ",\"lines\":["); + const char *p = buf, *end = buf + n; + int linecnt = 0; + for (const char *c = buf; c < end; c++) if (*c == '\n') linecnt++; + if (linecnt > 0 && end[-1] != '\n') linecnt++; + int maxlines = LOG_MAX_LINES; + int startrow = linecnt - maxlines; + if (startrow < 0) startrow = 0; + int truncated = (off > 0 || startrow > 0) ? 1 : 0; + int rowidx = 0, gotlines = 0; + p = buf; + while (p < end) { + const char *nl = memchr(p, '\n', (size_t)(end - p)); + const char *line_end = nl ? nl : end; + if (rowidx >= startrow) { + if (gotlines) sA(&s, ","); + sbuf_t ln = {0}; + for (const char *c = p; c < line_end; c++) { + unsigned char cc = (unsigned char)*c; + if (cc == '"' || cc == '\\') sA(&ln, "\\%c", (int)cc); + else if (cc < 0x20 && cc != '\t') sA(&ln, "\\u%04x", cc); + else sA(&ln, "%c", (int)cc); + } + sA(&s, "\""); + for (const char *c = ln.b ? ln.b : ""; *c; c++) sA(&s, "%c", (int)(unsigned char)*c); + sA(&s, "\""); + sbuf_free(&ln); + gotlines++; + } + rowidx++; + if (!nl) break; + p = nl + 1; + } + free(buf); + sA(&s, "],\"total\":%d,\"truncated\":%s}", linecnt, truncated ? "true" : "false"); + int rc = send_json(sock, 200, s.b ? s.b : ""); + sbuf_free(&s); + return rc; +} + /* ---------------- 路径安全 ---------------- */ static int tf_present(void) { @@ -4456,6 +4696,12 @@ static int handle(int sock, req_t *r) /* ---- 音频状态(meow_audiod 快照,只读) ---- */ if (!strcmp(r->method, "GET") && !strcmp(p, "/api/audio")) return api_audio(sock); + /* ---- 网络管理(meow_netmgrd 期2 透传:读级任意调用者;flush 写级走 require_auth) ---- */ + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/net/status")) return api_net_status(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/net/conns")) return api_net_conns(sock, r->query); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/net/dns")) return api_net_dns(sock); + if (!strcmp(r->method, "GET") && !strcmp(p, "/api/net/log")) return api_net_log(sock); + /* ---- 实时画面(阶段 C) ---- */ if (!strcmp(r->method, "GET") && !strcmp(p, "/api/screen.jpeg")) return api_screen_jpeg(sock, r); @@ -4473,6 +4719,7 @@ static int handle(int sock, req_t *r) if (!strcmp(p, "/api/files/rename")) return api_files_rename(sock, r); if (!strcmp(p, "/api/apps/install")) return api_apps_install(sock, r); if (!strcmp(p, "/api/notifications/dismiss_all") || !strcmp(p, "/api/notifications/clear")) return api_notification_dismiss_all(sock); + if (!strcmp(p, "/api/net/dns/flush")) return api_net_dns_flush(sock); if (!strcmp(p, "/api/key")) return api_key_batch(sock, r); if (!strcmp(p, "/api/input/tap")) return api_input_tap(sock, r); char seg[256]; @@ -4585,10 +4832,11 @@ int main(int argc, char **argv) else if (!strcmp(argv[i], "--sock-power") && i + 1 < argc) g_sock_power = argv[++i]; else if (!strcmp(argv[i], "--sock-launcher") && i + 1 < argc) g_sock_launcher = argv[++i]; else if (!strcmp(argv[i], "--sock-audio") && i + 1 < argc) g_sock_audio = argv[++i]; + else if (!strcmp(argv[i], "--sock-net") && i + 1 < argc) g_sock_net = argv[++i]; else if (!strcmp(argv[i], "--sock") && i + 1 < argc) { g_sock_perf = argv[++i]; g_sock_power = g_sock_perf; } else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { printf("MeowPanel backend %s\n", PANEL_VERSION); - printf("usage: meowpanel [-p PORT] [--sock-perf P] [--sock-power P] [--sock-launcher P] [--sock-audio P]\n"); + printf("usage: meowpanel [-p PORT] [--sock-perf P] [--sock-power P] [--sock-launcher P] [--sock-audio P] [--sock-net P]\n"); return 0; } } @@ -4601,6 +4849,8 @@ int main(int argc, char **argv) if (env && env[0]) g_sock_launcher = env; env = getenv("MEOW_AUDIO_SOCK"); if (env && env[0]) g_sock_audio = env; /* 与 audiod CLI 同 env(宿主/qemu 测试用) */ + env = getenv("MEOW_NET_SOCK"); + if (env && env[0]) g_sock_net = env; /* 与 netmgrd/meow_net 同 env(宿主/qemu 测试用) */ env = getenv("MEOW_SETTINGS_FILE"); if (env && env[0]) g_settings_file = env; /* 设置文件覆盖(宿主测试用;设备默认 /usr/data/meow/settings.conf) */ diff --git a/patch_v2/meowpanel/meowpanel_host b/patch_v2/meowpanel/meowpanel_host index 62db04a473c913d4d8b48be24164c669f60f8f0e..628146658fd5443f038e573d40f025e43f0506e2 100755 GIT binary patch delta 57842 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

m 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 K5bm9zcm02M=g=Ae delta 52827 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%0ADuQ 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 音频 + ' + + ''; + } + + async function fetchNetOnce() { + if (state.route !== 'net') return; + const stEl = $('#net-status'), cbEl = $('#net-conns-body'), dbEl = $('#net-dns-body'); + let st, cn, dn; + try { st = await api('GET', '/api/net/status'); } + catch (e) { netUnavailable(errText(e)); return; } + try { cn = await api('GET', '/api/net/conns' + (netEntityFilter ? '?entity=' + encodeURIComponent(netEntityFilter) : '')); } + catch (e) { cn = null; } + try { dn = await api('GET', '/api/net/dns'); } + catch (e) { dn = null; } + if (state.route !== 'net') return; + if (stEl) stEl.innerHTML = netStatusCards(st); + if (cbEl) cbEl.innerHTML = netConnsBody(cn); + if (dbEl) dbEl.innerHTML = netDnsBody(dn); + } + + async function fetchNetConns() { + if (state.route !== 'net') return; + const cbEl = $('#net-conns-body'); if (!cbEl) return; + let cn; + try { + cn = await api('GET', '/api/net/conns' + (netEntityFilter ? '?entity=' + encodeURIComponent(netEntityFilter) : '')); + } catch (e) { cn = null; } + if (state.route !== 'net') return; + cbEl.innerHTML = netConnsBody(cn); + } + + async function fetchNetLog() { + if (state.route !== 'net') return; + const el = $('#net-log-body'); + try { + const d = await api('GET', '/api/net/log'); + if (el) { + if (!d || !d.file) { el.innerHTML = '

暂无 net_ 日志' + (d && !d.file ? '(netmgrd 未写日志)' : '') + '
'; return; } + el.innerHTML = '
' + esc((d.lines || []).join('\n') || '(空)') +
+          (d.truncated ? '\n…(超出尾部上限,部分被截断)' : '') + '
'; + const name = $('#net-log-file'); if (name) name.textContent = d.file; + } + } catch (e) { if (el) el.innerHTML = '
日志加载失败:' + esc(errText(e)) + '
'; } + } + + async function renderNet() { + stopNet(); + netEntityFilter = ''; + $('#content').innerHTML = + '
' + + '

加载网络状态…

' + + '

每实体连接表

' + + '
' + + '' + + '
' + + '

加载连接表…

' + + '

DNS 代理

' + + '
' + + '
' + + '

加载 DNS 统计…

' + + '

网络日志

' + + '
' + + '

加载日志…

' + + '
'; + netTimer = setInterval(fetchNetOnce, 5000); // status 失败时 netUnavailable 会 stopNet() 清掉 + fetchNetOnce(); // 填充 status + conns + dns + fetchNetLog(); + } + + function bindNet() { + $('#content').addEventListener('input', function (e) { + const f = e.target.closest('#net-entity-filter'); if (!f) return; + netEntityFilter = f.value.trim(); + const cb = $('#net-conns-body'); if (cb) cb.textContent = '筛选…'; + fetchNetConns(); + }); + $('#content').addEventListener('click', async function (e) { + if (e.target.closest('#net-conns-refresh')) { fetchNetConns(); return; } + if (e.target.closest('#net-log-refresh')) { fetchNetLog(); return; } + if (e.target.closest('#net-retry')) { renderNet(); return; } + const flush = e.target.closest('#net-dns-flush'); + if (flush) { + flush.disabled = true; + try { + const d = await api('POST', '/api/net/dns/flush'); + toast('已清空 DNS 缓存(' + (d && d.entries != null ? d.entries : '') + ' 条)'); + } catch (err) { toast('清缓存失败:' + errText(err)); } + flush.disabled = false; + fetchNetOnce(); + } + }); + } + /* ---------------- 3. 文件管理页 ---------------- */ // 返回带索引的 rel 显示面包屑 function joinRel(a, b) { @@ -1258,6 +1471,7 @@ perf: { title: '实时性能', render: renderPerf, bind: null }, bright: { title: '亮度 · 音量', render: renderBright, bind: null }, audio: { title: '音频状态', render: renderAudio, bind: null }, + net: { title: '网络管理', render: renderNet, bind: bindNet }, files: { title: '文件管理', render: renderFiles, bind: bindFiles }, apps: { title: 'MeowAPPs 管理', render: renderApps, bind: bindApps }, fonts: { title: '字体管理', render: renderFontsPage, bind: bindFonts }, @@ -1280,6 +1494,7 @@ state.route = id; stopPerf(); stopAudio(); + stopNet(); stopScreenPoll(); $$('.nav-item').forEach(b => b.classList.toggle('active', b.dataset.route === id)); $('#page-title').textContent = r.title; @@ -1299,7 +1514,7 @@ bindNav(); bindThemeUi(); bindSlider(); - bindFiles(); bindApps(); bindFonts(); bindSettings(); bindRemote(); bindScreen(); bindSystem(); bindLogs(); bindNotif(); + bindFiles(); bindApps(); bindFonts(); bindSettings(); bindRemote(); bindScreen(); bindSystem(); bindLogs(); bindNotif(); bindNet(); bindLogin(); bindPwDlg(); // 首次进入探鉴权状态:启用且无有效会话 → 登录页;否则直接进应用