From 57ea2fb2f6a8c964a2137697c1bb4dc22ebc3d70 Mon Sep 17 00:00:00 2001 From: rustfuture <121799572+rustfuture@users.noreply.github.com> Date: Fri, 2 Oct 2026 16:55:07 +0300 Subject: [PATCH] Add --top N to limit printed results --- README.md | 3 ++ docs/demo/offline-search.gif | Bin 0 -> 89408 bytes docs/demo/offline-search.tape | 16 +++++++ src/main.rs | 85 ++++++++++++++++++++++++++++++++-- 4 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 docs/demo/offline-search.gif create mode 100644 docs/demo/offline-search.tape diff --git a/README.md b/README.md index f87480e..64863c2 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Repository Intelligence searches local code and returns verbatim source lines fo > [!NOTE] > **Status:** Experimental research prototype (v0.1.0) for local code inspection. +![An offline search printing the top three matching source lines](docs/demo/offline-search.gif) + - Searches code using text matching, offline hash embeddings, or local neural models. - Responds to questions by quoting exact source lines instead of generating text; quotes match the source, but relevance is not guaranteed. - Stores portable repository index snapshots without external database dependencies. @@ -36,6 +38,7 @@ cargo run --locked -- --index evaluation/corpus /tmp/ri.ri # 2. Retrieve evidence offline without calling a model cargo run --locked -- --semantic evaluation/corpus "index header" cargo run --locked -- --hybrid evaluation/corpus "index header" +cargo run --locked -- --hybrid evaluation/corpus "index header" --top 3 # 3. Query a saved snapshot cargo run --locked -- --load-index /tmp/ri.ri "index header" diff --git a/docs/demo/offline-search.gif b/docs/demo/offline-search.gif new file mode 100644 index 0000000000000000000000000000000000000000..c43e4ddd1d7aff2128681887afda90c7c522feff GIT binary patch literal 89408 zcmZ5ocRbYpAGh~7oPExnz4y*M>x^uYlruvJNmAB1dz}#%inEot zXjzz8#h96)%q;xOKp|!}Ar^K?Adnx(CJba31#$=jIi%Ux1lc$x*|=ocfqd-jLhPIp z>|A0T9Ksx&A{<;&9NZEd+_IdUqMY2)oFGX~up$?i2p6{~7f6;1EX4(u;(Yfi;?^~{drmGv2#+vlw_q2~NLP=$?wSFEcxzrw`Uv4>q@mPKltWv}XD?*19?t`f^e-q{Ku-M9_UQGBP4w zA_>CJL}#A~5!ETtJt`2qy09&pibc$^w;J0K2jDl(hu0K!C2`1m&-T_7_oP8|6G29` zC4HG9)=wP!YD))lWL*36jq1vV@>FhppY5wFA1Tm|rr|NJuNW(aXNq0zudkdaw2U`=|DG-k!?03(0n%i!y}<&i?&B=E(i`qhaF>!;U- znqIDbsCFHAeDO`g&rglF*1inAdG%|qHJX;!thsSxu{TrPX}J0I*79hvNrBnhrk%Cv zx*K!DZ{O_x!gVB_@|wSE-rri8cz`<*POkR=6T;?_ng5FDzqMt*hk;adHq z-3@kN87i7Vsg(ok0%Nh+92Vhdj_g1`=x(E|}DkCrZ-oTnFA zsUnFfqGY-k(5->sTzf=r$h|qFvYc;C*OttZs=B~o9m_~_akNhZYdT8G$ZnspUPrkm zu`_8?;HJxYdzN?@f@pc-pdSdxHM*K;UQfg2k ze6`ZIit^{7Il_*JcJk*PCryB;r+$Y&QF+e~ACDPaxv<_!>GX2FlZ6+B?-kZMS})^$ zakMo$cVC@x*zo4@&h+&c$G>Oq{5syn#Yvy+E#=%i*7Lu^{wo<6!qX5Z;WWw+^8V5X*W3Z4yxwnlW z6dw(t!%`W-+nICmC=pXE&86OUwkCXxOfr`4I=q8x1|O?3h-J9b+W|hn$7$0Q0Z!xK zoqSvy@o>{3=A7P6A+?PJi{v6;IlN2EVI$Fgu!!wdZ}gue z^`W<0sc9p{Ke-sR4DV5!*+>l;EC%oP_Glh#q(#z|Kq!rRVO*Q&c+(O-_P$;Nwas*N za*2SjQJ=BHW(H=kL`b=>&n$E^vyiS-#L%eUDt9xh!n9QEQeVGa)8>QftMnKR2j*_&ub7sredrqwZrXZ;PcBzqHW~??*?PP;SgyI-=QN< z5|N9Q#+UlXvzxX{Wl}0luNzO~&TN;d3{{%l>7RIfuwAZA?|qMiM8r&)hvdUel?D=x~cq?Jf4)oYRaw*xbN~j27ynZX75EQOVBHC9+C_^RZ}XPwc*@ z=@OGw34I2aa<1uXD+CpfrbkdUf|!(+RnUENpywBV??o1c?F`^!ZZ@Y5o?NMRu5#{#PRL0CnYT_T6y)V%d!bVw*d(*3ULYUO$}Fur|}C3^bGu8MmSpV56_%?8>sQ@Z&p5KdIB(b)OcrRf$0LX^`cjH zP+25ZwBKd$#XFsYklL}|wqURaTBMkPgG>l)XXRw;dE`0pa|7+`xsegC6>*Fk*nQ^S@cGBo#zpb%Ac&3D;EspMPN+l7RVr zsv1iQusYebPK^J2cN~*&Y`uzHabK*6AkAf?(YQ1Qw!n-??1o!U0;|(Dz9!19!SDSZ zV3m4HSU<|zdon~Zm0RZ4V!q>aclGMKEOYX9eAch!y77{%u3~ zLMmNLqH<$wGLE5b6f=+#vque~-PJNXboHrlZnbYR7_aTv zl8r}_F;L*(r+|vWsAzJ+aX~>r_CGL931D)ZBd`oS+WF*+!2V7x&NM!N{AvDPQWOoh z8fZ$JuPcg8R?26udeIQg&XVe8KW;#ireud8Oa|S=EKZ}q`uXJoZ5mAe?L#}Ci^S<% zS56LdTw?OPr_8#FJeDi^OD>EYN5i1+->C8g+p7lRpA4s-W?Zhp3+F32=SGG^Ms8Q7 zM2u9S_o57^n*v9^*bnsumcNRyb@7=-=np)-lLnZSOlBKn0;Gw!e}t}G<0H;gF8Yk* zkA52PvFhbL4~3us8O`fiZJDdg5IH^n=RjZGE^St>Q~)&-GIl+N_KKAcQ%5X4m?n9D z>qA=8jx)>pV_---Ly19BtFpYeo>3|dSkrtH;KJ8I&cgnsMHxyKc93Rrx?xYa%ubFz z?GzS7oP52G3nTevh>JKS9Jl|BS{nk6-2cV#4=D@VsIv}!Ug@=%dr7NKMxy}t@1_H( z3)x%s`eSwDnJL-ob+DOost_rkAC1+#it$XssmX;;Ku~Hf)!O^L{NGwYnxRxo&^B^3 zkEYFcw-x3xZC5XwZOo|Gm4>S#w`v`GCze|P>Iy&?#fw)8>5X40{p8FrUuhn?InCRiZ; zfcqQHq;YHfS--!$dx6*D)uBb2zS8;99b@)q)Shsg767}R+Ut5*@*n=@-hVhI?{PmG zmhaz2E<|TvNG-HYITxWpCD5s*PK7N*LXA2hC>Aq&Y|I9A*8KH<0etNoQU3spXk!UD z+E{$`!dW+5oQx}fniLC*W!T-Ih036Gm<3#>an1qG1}UIZONa`;k+65L3Z5f<)U7+^ zG-w(!-9|3r>&NUbk}w7xjsSV6uWr+WUi*GR3SPdov1CcBl6ds6%XC)SHe0T`GF1L+ zD_E;Ge|(CPiiJfnNmIc@MxWW@lgoId$&|=vup}nApWDU5@u?{1AkpB`G7p7#JRjTM zFKT*jUSMCeJB3MXhr4K8?r4W@zR$)xrhBmWWlmAZsS11)sZp**A)nk#sWxx=k{1eLGKdJjUrtzm#|%Zd^%-32dT5YeFBz@k&j11^N2DgHc_Oz zAwV~lg0d%7P&OtcN}r?2r+xZjvA>K*Uxchpe$=iHb&l;f5mwIEc+oVj&@XR`aK))= z4i_55?i()}VsDoi;QYteFFBO+o_>TgQGSskk)gmQ-PV0(8ZQpZa_;$={@8ov+fjU< z%r79TsnigEkK|)(3SSR-5v>Rc!e*(ELL$BC!Hr!SiK zcUC_QgGsekBHBid*`{}y#@d@)x=7Rs`&P%pj{?_` z{OUlU#=(OA6A@jfUczqp`RPRDDxg-rff|;?rpPRnKc2(sVjcl>S%BSIW-rL+t52OsUF=?{SU4<9V`NPq3W5u#py|8-_@f7<-F`|)E%UK1RuEK*CWTg8 zcGdwl)@+2CV$&ugN^7XuYq24PTh%xvsQbs=?YS0uM@YbU=Oq>qrL3jYNBcJ^7@$Uv zMXvcEmu8=wDo}N%7YC-YDa3aR9By=7%ug*Jzq-%4+*O1!N!z}YQEn8@5Q9gkPG+`z zIzIaP`@_Z3)Q<(WRZ)`_V|^j8TP*}_CytFN3)&4`BC$z{4@yfw}I>JCHhEKhOQ2QdDNqDI^FeRuPp=(Enno1 zYT0)F-Y_{Mwx2ani&s9~L;?QP@=JrctXFU=8_;2Kw|OyJ+`;y|MKwvmXncTM9N%s4 zkKI7gmoBd@SVBhqwc$KvFQq>v3OHD1J<0Lmpdird5{lY_BiuCb&#Yhto^bjUAw zuWDd2D~VuY@$G_afdFr{t=6*6hM1>@epjB!((b;KRCA>PYu{V{LA>pe^0fkO9t>{7 zs!`H%E=dHfO*QCn<9sJCaya)8#^3V9uC?qAU)$NzAnc5jBVC|)lX9{+U< zf;g~rx5z|HRbH*Od?N~LQn$wCKmwIDUgi~6ADpig>9aLT>TQ3$ z)mO(qE&n}BavEC!!qz)FHKov8!bI~%4@;^QWk36n$`Tj^zh!1m-ioAF{_%aA8VK+h zSB+H<5&io3GzbdUeQ}wbFLp(v{l@faiz*~*)+-Yh_uzs()v~X6Kr{_hMLi!djqFH% zMw7{#z0zT*&#mMsu(ABYspb2J<7W@C(LJ4Lwj>1wt~pPpyKr-lkW+@ohOx9lQmq9e zff^xEr<+>}uoovuFV1XP;LdllQR7Bp6;!@UBcXKJ~Mc!<(~C;@CGbhm%~ zQ0wTRjTTdZJ3V5)bET|R60GN$`Im&z*rM#)H2JA+1|Tr>?LA{BkH)HsM-WC9cKmWn zYsA9Q7F$fG?j=&@J>IaL)ChFMkqbB=prhS1bZi1ag|c$Z$&_E&Hh4}0%5iLJi9g1^z4r12~G(Uad> zVpH1Q1YGa^4mWMqd=XZZNXu@D`%vKI6MSGm4V}^>IiTc@Bt4eLA#K{eLBbf?8xW{} zNt-4DqJL}fKZ}ciDB0cQ>cup|CI{@UF7~wbXd_iTO5n1^l#DENJO(KESPvPJe;UAI zC^dylgYu>hUSF8&151~IkmSRcNHFy71|^<#g{f?}o*W-g%dPZ=DI_u1Z(vjEOSSb= z1=MsXb$D%G$ffLOxgT$R6GJ+4Rt1!W@rl59=<0a6~8M zYD5ipdU0FUYBNZqfSmy@(Fr{TFE_U=_FUQ;H3`n`pRqc*GgQ5D^ty+zr6d&yKpySs zs)q#aJ`V3b)8IXE(t2;Te^HauREFKcSXT!IP(gRWJf>71eV&oJ_*Z`E7#Sf=rysft|au0$uEgmCEnv zj780Gu#T|=RR@d`qUAkVzY1{ELrS;%40O{mCt^Xjnm{W2N#a+Q&Bi7@>*hNuNpC7x zc1XRqdq7ueeAE+NNF(*r2D@auy*AUp+R^zaDHuBw!5c{Dvk{f_#+v!s=+_m%LW}v0 z>Onv|87(OIMTyPj{D!YucTR0|rZaAED~EoswY*T2=5)2^^q^Ta9mPoyM7^UfzA(q`_UT>3;miHEJp~asVyePO=Kbrqe|_Qo1QZg!IFWb`IKHrpc8<&YKE|0(KZ(6(<4Q%%95xjwj+6+|5ip92lcF;60#FjX zOf`GNSYSzan2=?-#NN_$gU{3F8?s|R1x>M}ck$C$+N+8l3)8Z4*iq5ZOz>&tf$(j^ zMsJ4_fr zE5AC4(Taz{RfXxIN$tNw4kf6A5mgcPoWT)OkPa+qM!s-`l28e#b#AE(P?)6fU(y@QXAK zf2R~O{D8U*Vj~iW1UCYZqec2DMALBotoyRjHuIGhZAi8yLR!b^=pRMRY!wn^<4o^9 zrY-+DW>CZ#Kp`p4-aC#rXU{og#q!FA0Tcqi8!gv*55=w(KEPAkR@;jPo&v z((JBGkzOJzwV6zr|GZ`#;O>1oBXmz!GS~jbTE!+WHS)}hgJ5-2(*?PQP50B`X;j&T zw->vq`%N;1<3fQUozX%!zqonb`anr+^bqD{927(bQwZ=h4hmuWL1j=O*Y)^t*ELxw z_+z!L^{yYiL5gJ;&7@8ocb#dvz(uPdeyC%m;we)b_F^6zGr{xp#48Ier5OrIxGwjb zvYBKh-dE(zsnF(=ZdAGVO7hbi2iTWTHb+A^Bc0cG&l!aZ)7baUSFg9};5%al47ICp zARD2U@aIvZBA&(iwA@Ny3)mK6BJ6KJ3Ilk|$X>J(e1UbYlRl7l&fi;Fu5l*F`XQei)qHSco?2yg!Z{Z~Y%f&J*23 zZcf9wzWCt} zH-GN4T5VBeP@@tn@vzo?g6HYUoA+I<&+f%R5IP1!a^Gqz$R9(I3&~({>C}n@SD3fQ zlYCnops2lr4ys~SK@?hh&m~vl-X0tufX!;zIzB4hedQ~(hZmc&aF~qOJT?e7^=Fui zjzbfa=~?(eV?TLM;+Q2Jpf9^J7iAFB$%_JR0?6RZ31n6=Y{tNI2kgrKbC!@S@&5Qn zYq_5tu=?EmKelhIpq(@mfZ`77D(&W4u{=Aa@@@P}z0pDnfwQ|7ye$cY+ZO1I6{cVm zx~_Q?Z(W!OmQU60pL&)jAwpw0j%uteZKYPxQwbCv&XMwpTJTx2-}2~<(3cymwDV14 z61|Ml(^mz$4a+jpz0R|B?n-8pHP0yR&v2<#qzAOQx)%x>WLgcdU2PDOR&%-_fv%8o z_A@Mkie4W@4qTN`@=~fvmsfIskG^40Qq7<8rNQsRQamfon2(u|iUSBL4`&fl(RX8@ zki?TQAXUr?;V_ggB6gbd9eB0FFo{FSbWi7Oi|ub6(lGm-QzhhDGwVtbsrCX$eB@OOlX2%bbk0TfiUDwd7{Ud$eb z3H1%l7EGm64SvH%6|MH0?t>AN47Mxd1G5U3zn85dX0}$dh1sT?NvE)64{v8?Z>GfNf>7E$sQCdInR}I+f@_d@F^sZvUU~X zVEU()8gRUN;#)5bw`CM&d+pxl3sZG)B8PYRI@hbfv1t~f0iRj)2`j}wlFq7mchjG{yaAyDe3A&B!n%E3RwV4LV~ zZ$QcP{#g?GF81JvslQbhryWi1i*K|@J+tR8jsoJx3h8-hG&F-m()s!_D3#@W8s+$) z=_E$2Kb&=YWBkOt8kQ{6NA#05tjEdj-ZJQl(DKfj3~~Nun9Y*lFqtqZJX(6_lk1=R zlUI?>nnjB2jX6QenUmIF#N<7v(GI7j)w1uOer~udd2%D&Zq>GipB!ea^XmH?*8H?< z<#6J;eL0&mpN(1__DZ8P_ZDFR)q6#x=-JH@W_~g(g{|xHMe3x9@~V4ynSgncn{#gy zzG*nr@;QQg(g+7As2IOI@GwrvlSyqW@|>YWM*R1(+5S_-K^u~~{?SS30xcW%zje}C zV7Uw^>P#e;6>^-eo~tHN3W)@T$QB#K9-HdtH;xy|Kj_R^XSQPUO?W0#|j6XD;*+*BJ6gvz~)E`VbK6!KUz9 zH^VFv+eEj@fW?6(QHW}wVw*BmblkS_w&OD zK;$U}CQ0lpF4vZ~S~}F5ZkAL&6SBA=lOlO#XD*WumZAP}K>52(vBs^XJyCmqS}wiS zb~4TkLzg@c&ba%7b9Hquz z8DN2CI8)FOfBYhOYLvR^v=N~w^)65-2oLbo?SOb?g7EfUBv@G5;oe1nQ3kR&7|T&L zxDv-d7$jsj6|}U@LQKu$;kmtPS=NdDijmwZ6CWniI=&W4)+85qDevc?zR8qScI0CR zZnfi{?1Z7vTDL*xGN115db-z})4>dxMDPtbQ+$!wCoWaf_rq?7Bg4e-bv+(WEAK0y z&XC~ELl)E`SGs2{YdSgQU8aL59k#!A-i_YGtVAPA?^OV_Ep5#hR?BXDJP5(Y zm}3~!`lq3RuM~9A3Y72gg)lfHE5B)>Z6o?{FrBPp%W(V8Fh5e6#_+tu(MgDS8sX)C)v?<|Q2|Y$s#Y z^SUwQY-Fzf_||bj-4u1RlP#iB>pEpI4;xvJLMiR&F z1NDz|RB?)5Fr1OK-ud~$2kmko@iBVyi;G06OqYI=nY`w@Xj~<~K%O7mI#b23ui$52 zi6mzZPw&Dsy3R&6!>Me4*!1!HPvWf89AznWR0c}L@u}2c@pt}P+3}tIXlK%bd=_#_ zdK&vy=cmMr!6wP*nBm@Zff4bbXL8&2`$5>-Bk9zS;iRdbYsBTtE?NAwC{NzG{leB; zLY26wHdW3<%HbYVka{K^mrTQ&kBh#qa8`4o;0r-mz)JN-wLlvXJqs2&kt{t1nCE;f z^X>Qy9TMN(0=@HlQ{)_h|4jG7Ho8T^-s~N9g0QHQvE7&LKrpfp_U7#JFGjs6bx$I% zvZoY`V2u#OQh5!wC;k-1wNEi5U<_s-ukm^Pf)|^1sy&I}d=^bc3k|Ardp!mnjo|fg zxiTgBiJynP|L5$Ayl!W3i`t;Tb-$dZ0H5s5A5=gyYQeeQyXh_!v(Gp=KO97S(5Pc~@C9D44t{=CCr+wh~wUwLFrbsRPWM7AD!_9@{!jjMtV3+ltU6CQoOemv=BfNI8FG`7KhAK*jjDnWgPR_@E+*Kc`p&4&A zC3^XluTyNz(&}chwjwOlepG)r|CQ6?RI-5A_^Q?wQ%`$**YliQk*h)+pZe<8w75=N zFW+N!{qaUs%%iF?(q~oo74J)(N|Wql8nAlM`j34%zj|Sn?&tEe{2Mb}$!||CFn|2u z#`<9YV8~I{M2Eh69ZT$c*Go6tk8%n>R!p9!ZtRbG*UZsio<(jRGRo5={VDe9qcRB$ zCbuR0__5)xauqTC*MYkj{6xiJ(RvExnUrc2hg~UikkpK!_2G&csNyQyr}ep&l^pN~i~D0>s=J(+d97 z1M>ZiIk*8_s=<@HXhV23qg&X7D^$=hjnNC`Hl_=wq?U`M>%&--8oIGN8sER=f~@rY z==03dITJcuVthK!iN!LB`%K{x6-{W~mTaj5iT)Ms65_jcM5`kz_f_x|XJsFGJbZI>Fp*ssjyX zUtamgN%+;8_{VhSpAL5u$J%p3)dOaRj?xY(B5ZtWZ`xUJN zmd}od*_AH#gfZ@HywTpAi_H|Ts&AU=8g5Tx+9r; zWr^NeesVv!C3&_ojA~RSi9+f7bfv(~(Ulta97PSLR-#P1*HRy`38(rN0dB0SdPFn! z_rAqEpL`=gd+eG4wSMb#7vAP-cOdgUH;W4eHIU9%3Hi_+1iZ)js#W8(zoMdzd`wXL z);BVbhYZ{GAL+r@I5fr<;4}=pa;De!01KuWn)f-9$J%2fSZMYq(jv*eXX;$!c%;z5 zo+U9JPpH)f_R>`fR^Z6lF_G9<&a&Y27{%j`XaIk@id8(xWf63|a6{ullK7L}g#?)s zmUHUw4*6RmV!}TnDniZhJk8ArzZ1T5ZK7&KTEwZ(w2Wmc!O1)XecxK{Axn#pr}I{i zw}77gPOR$V(E~{-q)fp}&g}#{{z%BKc`t2{I!pA@HI8NGGSiIrgZcQVy6BimGK@mRH``Sy} zjRSh!+hC*&aau|YeThg{`!RUABlzdlM$W5q-9ZOwT)9}TBna$-c!q!xnn5y#3bWKw z!TqxFg3v;D3WKziLe^2Hkax67awJQ+s0qd*$zzZ~RaGXBN#yn@=ZAHNhG6VbsH7Ql zDl26{5JU?X|kmP10Zq#aiAYA0`(Zt3AqasY-Qx8E-pCp?jhRO#go zwpHyapnS4!KGq%{4z<$$M*XFEa%96`hWPXw`p+3tdQs6QCVC}tRJvbU)8%h1wD%I~ z^(Pm``3>m&_QHK15<56MYdWH~tC>g`3S=&5(t;(FS7O=83_~o^7Z*0$V#4++DvtRS zBaRQE3>bgiv?t|;U2;&EC#3NPNneza_1$EQSYB~LziR<`N_)Jo+!40-)ewC(m>Sv{ zM#CJ!i-bT|a41GT&rABJ7Ap|s`5WUp0owm9K|&FPFm9Bjj@JIf9=%ey^Ll}=D}qg0 z$g%h4;=5D@%~*AnTBp7g5%TX;&QUR`KpqKr^(e7{LAbQ4f$4r4vQ+_iM78$Y_e!}C zyWVTM&_EG=uhUKuz-`G(PrQGLU8PcFEwfF`jI57jE{!EqnF!{A(oX&$C)i2Hq-}it z6`oV|H7v0)QtvUR)hGPvMDLqC3l%P#{4TZr7xMRb`sLt!Q0M&SQ6@IcXUh!tP zb~30?sU632=)$pcIZ8Z4ui9pvTgCThq3t_~?e!L|({LQF%_T9jFTTAVuBhUIyw9{6t#dv?TXgTaKk z{^!~_=zmDamk^8~d8-o4Sack93>~l9(yq3leiT0r#A3+so+J&zod{A+?`dVXqwC{i z7bhN!k>lOGfw1cAgGzsQ%lo>;Z;^iJxmn2JuFuHJ{mnk_B~jc2nlCQ*XjfV<84Ug= z;mgJH#3r%j9SWcRo9h{=#ybigqwTq-2p^R~+kqY7>A0IuiBDugR*5_A?Is8wn$s^b z`BwaFZ-wf9dZ>8HS~u%T0kHX|@JMy@vZqsR0LSiLp>Wvs*Z!aSaCAj%JnzW3MohW#KudXb~F4C455Hx>I zgh>5Cl=XGTMuZE&4z;!n$_ORNV1+QkK=6-|ySIZ1k+d1N=a7t2=f^_mdG4NBp@nUn z_J2eO^qsK!nZsPo2aBQS{{ECXz(qgF7AQ5iS6!^l%S*l4*n88hBOD-TwnR8A$pNrX z^t3;p^FZ>UaX+xvwTsKWNDjD9D#-v$)>bwE^^=nE1T_eOENxOpt#cS$&5kZT7*=y+ zN|pJ3z`CM|u|5@q9JWc!Jo`%Xl3XlEBCTo7M<2f6nSZThQwsn zxti|Ktg3z9RKe#yFn#MA>&5^^*F*$}mLC1|_I?y4A=H|N*_6t^~ebELP26%SG zjJcI`K<3)ViAMi6vWU~;%A7ev5^9~PFm*`$oINR<-joeMuDej1bqEOkms^KAN7TPm zhYri?pEd+mOA8!Ar2tQlOSn(yE^WKQaN3FFlGy{(XeX_BW*x5j3V&>O9M9=xPv?$q z8d_!v1iWn#2FszlSOkO%ccq(sXu5sRz>u;%TUs^rNO-|W-n-l_;V`y~Y%)WbpGIO* z$B-2w=mxj?(A%k!LGK(2(p#X&b9rBVTerun+q@9gMe`$4fV=5hj@hF_g~c0=m8Y%r zF0$pH#YLs;9+JAd2#khB37&`xAP3&KT>||if6uYrjX7nG(S}Jpei`(B1^fMnTD`V} ztPiTM*ei`o)493ni}3DTEGL=meMCDHMaim(l>*L;#W6-JdCutIoGl4){_?~jzkr>4 zFKZmZ12r#T&gLxoybCFqZzpFtAr2wFyT2-o1}s4_kSOcbSG-YxM5Xt7z>BQ&Hs|MT z%6U}(D%?>F9h~(%=QSg+QdCFRt6kD)huHr3GOb7zZL~)RNu@~Nm8UuQh`&B{gzQP}$*AL~!!aUqu7+?B%OAz6x{wh$3Mjlld3T5G&% zT?{#RRkrx1m;i?--SdRtg(a|bqZgsnv+mjsUpv0gUK|%|`?EXcLj6PjadiX=(1|S_ z2J1L|hZ!8C z4WT}^(9uE^LBZJk^Yk;2Zz=rraQ9+~l|BoxCnA!B29Ap&qB;N3V+cV0lPVL!P&9(n z`j}81>wQsBL#uighPqOug4qF5ZYy{gAc0)CimyRPuN%e9t+_;;fs4NS8Sk(1I-sDR zR^s&I3bZ7ej8hwhn8eibGiIy#n`*z53`wP^9Szlgo$cKQX7uT^9Z3J)1y-@=7&Yl3cFOZPy(}q5ZY1rCD#D29 zzmhh~)>BXj%=YDJzBx~I_enD5yB3dVH=a66*qj$;F0z#uy5H5x&Z~4ESKZcO6yE9^ z>uYi*FqG~iKxaL?<My+a+WiAkmj*e+i7jO9fw0=#8a&@T1+6 zm9YbtMfUoUxs#)WspAg?_RQxmS?qZl643K6OrZ}yBKS6FUahc2LPKZ69HE0$QWtQX z#?Lp>!bDEC0>%mxQb0W4#VM`aj50+oz!YRV+!?t=W$e+T(C)r)&~D`sN39DZl<7!& ztviJ^n;I1<2RuN#TSjsHHoegEgHzp>*v0CRYPt&})x+Sy38M(VTc*W_ z68UwN>U(kbu*Tu+-l--Mgm{jDSIHE#Nm%!XyZchp_xoJC+0T-W@fW8S7we>VWX9;u zBBUrvF8gf#ZCe{AM(Bf=h0%0uONA&7EBL(0DZ-vT=KN>=Thrqnw2HE~Y37JVHFJARCdkMAdiojrQ^|^uki*Yc3XjxA#|NQ+8;IE3`;LiTVi4|PGYm(E4&O9NO~+5 zz&^aQcQdw?6KqDcy3rm@Q%+~no}V6AnwIEvlmPp+oTh$PLOlp?|1p}9UI_iibF?hx zS68nc(OM)FyibVtoWc)kcE=21OF59J!OHq^EjojFmEJ7F^FkAw1x2Im7&=_y0bjtD~B3NB%SaGSK0JIN1bJ#Tc4R6GvX+kZEHs)u%l zhl>2>5D_rWVYH6hlED%r)!K2@;o)K}j;@&E?x2dwpXs?G>ip1hV?iIRE_Ze_g&))6 z^_!$c@CE22{4u3dg!F4+KqL`!MWNZzadaX4UkP&aIWYgIsUFhnXKLz|Ikv@&J!lUT z6-}^lhPOrCR%C2CBe37-Hk=91y^^WVOkDh8O9bI1v0jD0a}TZ3H4>&3enU!H?MsfH z+2cYc@oLxl0hr=}7rt{1JpH3pWtI`(m?Kvg0s$Z+v$iG=o@E1y6fe1S?T;8-VlA6Y zC#e&lWlOeu&v)EYY)B92`|q?PAJDK=o=)fE|cl}ox8W2+JJ(H(OKEq)-coobf zAQ7T{cYnojNZ|nUhRv(L*g$^NuetI8F2!oS*Y;MqSn##M6v|qRT+dj!jw|3)>Cxl@ zErS{cWg%PdIrLKPz@eV0SpNgvFe)7cl7`v7FpBK$5)K7?=LSV-;Pstj{?&QvBw+iGocgB$S@`|W zBd+6kLT}uHKvXK}3YR^=S?NKVZLqQ0xhI}QhXMGJf6*XZNTaL@({8{B<&jtcrt3mG zFozbK7W>lFsTA22w-*}{61oe7wU|G*M=~o1^whV>0}BN#u#gu=69G7Obv-!>FWuPE z$q@`fd>8{Q{@9=d#B6{6Z7}&ME+FnCZ@!aLK@kG1=VD);b9#vUYOE6coIXmttKr!O zEz9%C#I!#kM{5Sw8^=5A#@!~|`=y4zMn0M*N!-K9v{4WW zJD-rW=m`C|kyvQV)q1=+770bo{I7s4ZWXiETlVkDg?o(~(&rA&}ai%#(z zB)%opcx-eG4I@LkL|^q4LSOFj;7VItT8;hFrrV#~u6yc+@o05(1KSK@^l_t6SH2BC z;K9i5J~Hhi{Zyj}d6!$~;YrQL7dOgmYr;~gtjPwF2>g)Pk;uuuStc2}UC^i<#r=$b zr?p#O%Z}4!N5nGkaY4#xIuf^7wD9(Z?Yn!dF{o(5V|rnOH|aNreD9cT$IJAA#mTY_ z#b$5V@Qrh7!rkWiJ@oN8Ny-tRC|4XUqZrCwA;6&+mL+z%0cQGRgm74W8`#Q2INnd= zbRrm!3K8kYx+%i3OKqeZekC>(u|V zmLR0Ap4qtm1@D9v&R%)d^dw6k?=qfjv^NSj8OJc|wKOups_v`(EX{`w0eF-?(rr$6<8I~)9gEqkW(xk{rnytIwLMpYm!<=f3{A*w zv*bT8H-8pSD^qne#gO~iH2SKqUxUJHp=74v)4R5BY2-@CHFwG=5ew7N?QU22>89&UT>ILAdu_;kh z7T-i3a^!9O($eI~2JkCaj5Kum)zoGsky57X{_KwVWWYE<*M0f!yA|i?zDLIQW|uy? zEch;FaM=L!H?X~N0I;9jwMPHz`n;+>)7oCJf|l?RtnTh&TZti9oRjnDK$ETmjcDT{e=2fJ#9hbpzPPufFInmE);;ufA_zqWX$$bR{e_7{kxk50(@d_uNSRI;Msi8%h^j} z`1}&S|1kHSaZRP){%Cf3&!&eSdJ!S?P?XTY8W1%oVyJ?k21EoKJC)D_0>&OdG}eh7 z#}+y|mSDvm0TFw^h7QV&Gv{~yGw0rOKlkN*&716p^{i*D^)1Uo|LEa+hvUl(5|{cp zd_9AahWs&5we+6Dhb6L>3FB9BK!maT#iy@4-|FvQ(AH=bnHYa<&#oggAK)(}40rvO zcVBrfTr3)2^vBdGY&&nH`oOG>Ds0}9PtOQ^CqH_>XBevL0`=QxcO5yuf{H9o8vRxH zzZsajOd=V#qZn*4EAv@%DkgZJuXho5YTJp@4F)Fes%_RGKQ?@EnTj-Q-cwTY`D<~y zGy-OfrLnNO5aeP0#cleeJIKEqr)#jOUyYLnweZK^ES$?6ll(~owo=nBB%05xWE^jf z{6!HEN?LRw80AikGzsUEUKGI?n_8qn|8%3aK?=}1GisXmW36UfBH5b zb*nslvHQAj4$cX!gjJ0f5NS@=5BfXRX=fScUYS0vZ`Spzr}|>+*-ORUV}7q^iI%v$ z|Es;Z4DDQ|X<9rgVMxuU$6sixwKfPYx)ABo)g>Y{dM@{~u^%5U5sIMdYc1ZdI-H#9 zk}Zpy-<&;^Xi#YRkMaGFf8MdbdK(g{RF}otYIMELGcPT+BV0FO^Wc7xjoC(tg_FA4 zuqZSpl4nZI-iZub;1h;smT#K4j;tw1IAtAriR*SPsK@suF~*n1?wV2X@MFZ_0f(j^ z7W$hR@3W-4c4<9Vb-#D%lajI@UI>tOw5+OU2%DouJMJH}pF2*KgvT~Ic{b;!cs*am zmZZJBwYy2LmsqoV{zwpk_sE$ z{0d%M?XwhHJea$7rMZdOFIL3*H6@eoZChpx5n3ZF%zVQxjjGudJBzW~f6=jC-#_|n z5_54p_Wi9jSM`6~*zCPt+jM*H@@Km_-@m^7CoKXE|MxJR+q3OIEy`A^-_Pf?0Yops zBA95K&{p&8(#F`Lh{>}l8l3+F<2-fW@w84SAKN9(I$n_^;A6x>&XxX_@Y<=L3&Fk) z9j!PbSDP@p^~z<5%=Q!2=D^Z3=@n6K%i3-}zb!Z2pl~)gY;ulecBXK$FT%dY-eBV- z^F-+~#cs?}uSrwSV@wM7anr&_hR)pvYv1m_{^;c4+Y*$wD&^%B9b+mL{8R}-OW-~M-BzZ1|BL7@6>6~?w$N%SP39!^U0!~9 z)A!F!CU-)D`xa|9PXSap6Z!O|W;24^#t~A`djFOWkaef}-)ZVUg4@+J1!^LIF9EPVEe5tbuJb4!HTq@t2#aZqEiD1v4~8y=g|7o z(!v|9!`~095xs`#=Y{J8i?SsB)zce#-g*kk8F^0&YaeCWy$BaG9Lgu1PEHG0lb|>f zw!X*lo@B{`{LdTa@`=osW-b>V#J{|EY;YG(n)lM8)zmd$zpon?o!agHXHbQvOVh%#f2VBrGvJ}0C!C{H&f$v;q$cx7+mngMzk zmQ1n3-q6rHM-q4aIQ3oYc``c6;K%oGp$67Z_lAVfF@+!6(|Ve895??R^ABDn-g|xi zq@Rw`rJF?_KXZG7uE>+?;815ZKX}=v`F!ww7fnFM8$K8Qvz?~?k64xVB3Axas}eHD zK&Y$tz+QrxiNZIjt^e76LZD;(@NxLu(@~}hm*G)uT1@$jm>b{DToKL^5ts5Ozjl52yx7@qrr07&mjBp-rrU|D%|eD0;rtj+0%-dwF>aL(@^ElkblT*$Ud zL&}0$aCyl;qR*mt<+Vu@`U>V9N!nty{@xRB_l7!(r0d&hJp0wT68{cK(3v5aO98j` zM(aid+CRS*mbme(%bXcq z7_1(cP^Com9GYgGOzS{o>S&m`+BUUreD>k#pWm3%9H{%5R>5;7bgIH1&0nPVt}#7s z1^@Cy7`?1><-pl|x*M&xtN;gSHjg^Q$ctxyGK~PQ-==}Una=+zqG|t6q3W*uuO4NS zu1C>YlLaWfWNMGrCL-CyHTlod;pWh)LxCIKn!JTqm+!8ZU6V=EIvZ#%i|QW;bWf{s z;Hft0_(*u8Nmjz7lL6dz#gpH+KRgllqJP)yh6LHZ>5q?Pf1nyUuPm^RZ#CLUrR{gG z!Qw8~FAVKg=7t}$78spOxnQ1bn9%ebYoNdH%F~5@haZ4hF1w$W7E+dd?=IDWaFA+WKz0`8;jJ70X9j`s+>c669Tn}?WyR&arr~<6Ruu0fjvR+c=5(xrFDkej5>~8h1Sy9K z?h2_hi;Q9-Qbzm#1y%g7fW43I;Qy|5`u?JWvbtruH_r9(HV<4)3DRy{Hr8r=S%mu> zAf)DLy2?#F{WcBs+eKDTO;?{{HV;SF+xq{Uy{~EL4=Ew~XUkon^!iqY(QEtL?GEbt zz<{5~vVt^W-Hg?Kn`2r><7I>odc|10V18M2+RVwb*&TP~rvC6*ErV|ptjrRy0UPyR z##pghZcvAG72Rd%$Es^VW4K?imqXO!7;LN}*fCi*!pVPewYnk9$aZ-7@XcVasoRh9 ze6rLn3u@f6%}&2A`Dap`q5C+S|L9nBb&itOUV_y_XETrLwCR7^zW=x)8(zcr$fO3# zw9BQ0J65wQV>~;%t-OygcHZUn##ZA(lGi%d?Q123p>Ong9ZURU8zN`}@|$ubVzy(} z=Xgn!@0R`UN($I`y{zc*33A}1tRlUWaxS&OHkN-Xt7oLcaK?wX51PKNww%*7 z*V}doU1lV#x`E#KsMy}pM%i>E=tb*nr_&&%3CP__z#y7S7c818Gt@+x z|40ibOdn8nq9#Axt_ktJFL84mu@2?mm3XafJNgJcvj7{{9L*1QD^HK98)E*Ny~|8(dqh%v^y>NvN-rj? zPdBs3EGxUZ%WZvg4nn{`lyh=X#@Yi4*p13RmyGWkhtH}vqrT>}bcZht+n2b0mc4iL ztV3D%&m4dBIbAmMRQBw^S;G;bN7vn)nSIOgZCT=$tkXYd*M?p7&0K3w8(%bGo4VV< zVP?CAn6x|K%2U95ld*SiNt|PmSMRDMzoM&$ETXQ?pC+e=EaBv>#ntW%TvL5((UDXQ zfgBOPNh=>5dGN>SyT+&V>~xK$@sDqB&R#r!f)Frg55t1WC+~}_Qn!?*_aZ4{L!!y^ zI=FK4pN?~|&&PC<%Chk>rF9AN66RUal%aw)-_k~=;RpW{(P01cF#p!W5G(#dG@350 zHsR|yy-H1`sj1oLr32h&of4fcWB7O&e%kU_@~XF^dZ}PJx>(WId^pjl!EGsDn4Km< zq2qHsJM&{~qD$SwFR8{-;?JzU((GXO`2WZzEXRQqJCedB1v$eewAMZTjv_FkpylM{l9hW?bD$fp7U{YIrLoOtDSA0cq9ult+wGJmJ|Kcd`-uYvP{z-x*X# z@cpY>tn~Z~W~*6#$?litFh<(jE+l;Q)oJ3lHJBJ~WJk#2T67e@_FdQj{h^L3=WPey z0zQ-HLkp?uR3v0PRXn+WK9C! z+BZ6i_63T{Df!a0Vs8Xo-}zspkCnPp{J(VtMQ@k3 z{es(mK9%X%HS$pNup(_*+s%|q5(Ctd3w`0b!2ABa8<&`uUL$lgZT{3d5&`nu$UPG} z;ywyzkvaTmK>94Y%pbL9R1Y!BJ#G83b!+_uS^f2Sx$(KRcF{&TBYhd2zV4a*Esk|R za|$}9`Q`6ZuwQuz(t1m2Yw{~r?AVqdEIQyO^c>L1dd3)@qM`gR3OU-`$J z;D^29Ycsf&)I4tfsKlvg@{i}8FJ@bLf6xAU_Q~FmAjer}{0kEEYrjQSUGs1LlrAoM zGh^2HFJi*xKR>TfOWkjM53w@6f{{a$aY$<(Hhv$c1mz;5MgH^IEBMDn{~NXt<@|DK z(7_fVvkY{ebc`X9%EX(PoYvRh)Jh2aIX1DP1?8DN`xry8@C7GCM4Z7ljP>gFTQ~1o zfk6BM?kgggkAM8CGs_|R#$+wswsq&J=@?#*#gb2Z@0#1U9be1ud9+{~U8KMJ;Iv)j zt@rEGd5aFe@I9D%c-HgOPH}^qUt#WcTVyV4yUjHGF3)gIwT0Pp_|IsmoMIg~InUDk zL|%JWyvb6lKE%i6hrIm>Z#UWOOjS2TZoTwn+&iP^&( z&eUfD6vhPG2yPf`LzR#ER-MHDlLjSDm@1+aJM$a9-zxwC- z3EJy_w)g*QO|+&FDxLeu5TKPFLM zR=kCiE*Tf^QX&ra+xAwOg`P-D^+*+j&Pi&MZ})zAwehyG;do8ytJ?=$lHJ*6r*rPY z4<9OA6+rtxPAOvD7yhR(`YS>-mjzRsCK$)}Kf6>4etlsu{+m2ffYIs9dOZd^H$@gD zS(K@JLkvhWwh#lxQ)8{20}dfwPGq!i^9fu&ve7>1z3J+{b4Q{xBvIqMN4W>>uqI z-Mats4(8amxIPcg{HjZjpSY}BS?46RvwNOrpPz0MIyNi!v0drQn|rqNSBKgi$ZVd0 zvYqVh^cmW5aO08HyT7f=y=yu@^SxrN?b|yJQ`gzQ%E+Pan$jcGjbAEVbtAL7nacue zXqcTrmvuL4{fDO_tp)qZTHhS2!D7X7kEff8KfW3I&42z=ryn237h{nB=fGtD9TNXh z$h2>o{529(KHF(Dg`M>_McNxCB7O}J4%iKl8Hnn7+O)}QuCni~M**D=Kj;x#El^OmZFC&sb$3C3US!p5lgWa#qIT&v{ zo0oxIsaSXP(dm##_kxy0!}RVFztmIuy(DTtKHDe$bJnMoM01x5JiDQYtpN+Y#rh)l zA{yxkyU!u0E^PMM%m~BgIoTf%Re28=dX}}*%un0hK`);1{bp&E-SDAvN_mgDmyLO^ zvGD}_sNdQ>8biU?K4DUG%hb_VJUdoE!QINjs7vpJ)}F_f4!UX zcEZ_T%sy$#<)xIr0V$n!+|2K7?_pjS&xqg`)5aR=l<0@+59fKd^lY}6@$)1sK3YPi zy2W7iT7aHybek=crQwKaseNbG87%Bp-Q4CGvg8%WlLZuZv|UUSvTPEXtXu5qi`IbB zfP1oq?d<%t=(5L+%S;J3tHijAT}M-1+_h)(ZjYFyVO9uv%ii2mt|ELqdI#C{x+#{` z!fx~4^v!eTw_3eARF?)gY`4;Kx>d#8K;t$M8j&{qw7BBy-1)P6LgVm;{2^aPbOZ5X z=-{2!mD{ZoCPv#eGKLo;xl-Q0@MGBZT~puKH!eH~^ta-ETBOS3ZPQIA)QA1=LD5&O zJhUJ`OhBtPD5U8ymCJErA5Z)1NP(AgzeF*2{I#&ouD zy8Ifut5;B}sz5EB6Z+|DqaDqDrr0o`f0$X1^flxksNVJaswVd%W4#{xBFd+jD%FFb zZW(jFRGZg3C%SXH-Rz$`$KeNRYy;yNSns1|jfbOh9EExar)uj&*p($`=QzhmqK!`A zcptmAb4KquY)wtgin}lwv%~&CFaMEk4&68H{#DqLu5YW^BtsV@9W=}1StiHAF`~jn>t*0}(BQ2u!4>sTKsb{RpnREM^n{@vD3h!#+iTkUT z2CdtJA4+ytUcYQQll7WAVLMvq9L3$A)w_c|jl6$Gf{-!Z)q}3es+e^oTYqM#x#uZR zKncF45{LZ!v{gqFcsRT~6lcUn*;o0Tkcf=jo9_x{I49g9{(=l8cID0yC6o>9_*kcL zb@L)z`vGbBv}264O5-Prq4H4Yf3}MM>wo9}pMNmX>5(tN9sYJ^#{GYD#2-(s(K+IO zasHo<_!|mco8p`%u_>Ut#slvYW-qE!GIN}p~FE9xI<%r+9 zo%jCfUyk^bi??qzUD2=qwO_Db|jR|{^f}O`60vJ z_53eK{8df6GBvQxe>vhu&PuE;YOOMw(w|&9-X5jZIpT+Z)&4dy3xx-%S#~xX1*W(D za>Rf5{c1_)EzIn_R;G=n!F@VM{1Roc&ClFUIQjM@B?RX< zdeh8R3vzfmM|_)vd$@fXF@F4`2B)9wJSee8cN>OUGW~uVQECz@X$=A@xkG`InASKb#tR!TC1bO0$wz*li4rKXqm5GY=f_U z;2=wHG~F!=-EnYa$FZg>BRjc=&S-WKH?*Olype-1GroVi{c`3H*mv5Vjm9gpIH9bT z(dP2i-sq;%C|8%H;3Uqg)@^Xv$i7{LuN#D6TChtI8k2SCfMWl{g^I9KuU{WL)I)YX zoUnh7S=W)aky#1D2y5&E-V1 zB_2BOZ^4+@2{fd$Qp6o4R^>~lZgQKyU4DJR1aC8Q%USJ1z2$S%w1^gvVnCCVic|TY zc6c!9VVez$VE~eH;l32S=c1?sf8V}BkK7%LHCWdkAner3L!Rg;_5=ECpGRX!Ggdq)v3&A!Z~21jG)=VYkui*MM4^u$ z-;7aUjdU7Drl12?iv(a^Eny+`U|3`bIh;d)%jiAbXF zb!oSA!6v_cBBZFh>Z)^fkW$R;!>$;^4;zL#l{v?~3=6&nb=fqkgBB1C>mjjuy4P?g zCYj+~fe2QsBb=(FYWE~>=jU95&xeLPammgd5^Cb2Q(;J_2~I7hKIY`1xiq!sbTi8c z&@)!7tefQ;%kE|o8dk2VMXzMGTtyO2gK!fG10G}KNBd#7EyS zPMqRmeZ*Y#ndsgTy;z!Vmkium(H7U$?W6h9u?KuWFL+F;g34^?pHkj>Bs-bjY2Gg# zA{y3?eG)jAJXX?C>x3QUHuII|Qp{J4avu|ti}bNr@B6yV5seld$Y-|koP*Jg;jr}C zF7-CEES!m}i;*`ykOGIsNigE|6gH3PbpOtCfMTsl!CSb2gJq_!7dVk^>)i4nOjz!y zxUKjC=M=ND5zPy{az-so&mCc`L=IQ|-X44WTBIeo{U=+(_7F z9$`O<%dYG+ZGgh+&G-llO$zT3yIY4F@I9G!7Q-s^G;*la`dXOz$N<`H$|_H2!fZEv zqKWc95?96E#6x5Z2)%o3s@PpA@UVf1fO<*QN@@!zJz)^eq?Hy9^K;wH=b1^zNUIA{ z@qH~=avis<0C~jG2|~=A6X$T38b*Dh>@|(i9S+sbq7b_~){#YCk((j{pSR*4b9* zE3+jhFQ_s;lTzWfDa%p+Q@3v$P_>xVjF%B{_R{C14RhLa5TAs=P@B}$f@d&9i+EgA zAW5wcw|J`Q_MGZREzmS!HCtognN8Kqbl5Zx24ZFcFx6fy<>0TfdQ4CB>Va*k=FcXg zjLlMkgjeHjE#{9#k%rRsd@psXF?&Lac`vU{jF2}NKM$RMu)RWlBON_|Ai|D3s%NP=A*hkU=Nl+h7~BTaBnIn-zu_jY_y1On$Pk&tF;ubxkH_%1BOKzT0ii?8Sar6A4LXEc>gwlNUMLh07!cnfxF0viBHT(L3xkIN z6b`+^L<^w|#41c&L8`$~u-Eq?=yPHeLJ+yIJbz7qO=Z-4r$3nZzBckwECif>k%7WX z@r86aX_2}e^rHc$f_rNXV|gngS-3n+%DHM$ZpA7UV0z%o48Lj>+*l5jz2;vTD*{9%$+N`b`_ zde;mSINv8J+|)(0?ef**l?Zz%Yig^vbluWdH_EpIuM+$Ala$D%3`EuxClnR4%Evsy z9ZrREkF$0oZho(^ZHtfcbv<6jRLcX7Iv&e=gW%)e0#;%M6DiLXkf9`i%jl&MK-C>#vjk5McI%}OmU)( zKoa0ofG}n}ZJ8Akgm9(8_l-fk1kKT3i91XPlBz;;kz(gRqsHs4Zmu~K3VQVez^pVA( zX{5WBN>Fv&)P0*p7U#yzrN3=81>tYL?Sw7S5>IhZE?zzrj&%HD;CUmAOh?+G^b*g& z>ONDvm9Q9ybY6`_vV7h=hwc5GPJF)cQe=|89ATq@t%p%0+}xtC>{^EAPyn3^d$ zb{7rLV=f%it7z8X4r@q@#Z;aK*D5U|de&}d;ag$2Ae4<|BA$8$X?+5|f{qixuq`Zn z2_0^hfZqjSb6^<}a?BoegA77lZ-?utaBr0>?k&W&Lb#1A)Sedj3Qbv)23NrfdfA3; zrsM0is5gds(>S;$8mT5OeaYYCTWr$z6f;kVO>e=yOmTzIS+D~QD{Q^LbQ zbdv^Sr$Hd=vGrS>Gay{P9C3w**^UKDRrqp;HtHrh$tTn(7b&ouyStTz4O(ZlkS0f# zV{AYKi-{9*b}U!oGH51l5O6@AKgmZdr3D5= z2@va8lv5y#%mE5OgdZKfSA!p>5d{J0&rR?xOk5Ei*FwX)U0K*F#ql_(qr8TCC00f& zT}np;!ymDU|Ad6Pzt?+0Dc>i&4!gTsefk9)~QY;S~>Y zd${PG&KSrUUj&vv?FEWeq(e%?Q|r&@fI78^?!^XT$sScA75kwM2F=a5yv~#mv|$>G?Ii@m_4?7 z9^j6eQCx`>9?nI#zz8F1LK6+YT&nM(#T2f@^(UeVI0qPXU^-6kR`lk@(!(B}(R(zw zN*d!ddjyeNq_~YLBwey4PfNT4qQll z@8Y8U)aFSUW!pKVlQ4y;617!RU%^5htwrp7h+R*^x2my`c6wGS%x-2w4Gc96hN_k0 zAA%$W3%`MmbXB9OpxwbPhdq=BE2NnC!&na$dOwXYwXzI+Elv!=*RX>0o&yY=1K~K3 ztK4PILdOJlFD1*OF`m&CRsxxJ>p^+i_zz`;gzWCEb?s?>CKc9AIL%YYO%vg^01sVroqO7@H`Ij#-HQ? z7{-#WXMiK$tGIYW3yYLuo@z-KD~Rid(C?U(jV$ETudurysey~zE=M1JvC2mZ_ogEZ z9*51BB8edGB@M@k9UrrhY@x3C%Tn_OCjr34MJ|(@P_yRPm$@$+X1`z%}M7~YK zc)tV+LE-}~aezy?!9mers2w1AR7HBP#Q*TuqcMs7T5=Bu<)cF2Gz7t0(px2IogA=} zqkFXEQ5bm`BBrZ=1#+B5PJW^xAJhUfA@p+?DG>q=(8@*^(kz1+uD z1FV9GUn+0)z;qj=P`ha4SD^ZU5}2umF9f^#)#OKN@@D{%%^`nbVnbAp9!%6_7KsZ* zdT`-xT0|wCobrftnh8XxFbz56ls80h7QB~9?uV&AanZ=J<+qgtaeyAxzuh3IeHw(i ztR|~ixb-Y}Wnr_+Az}gut7MUtO5KZvUW6r&(8(1XU^)|73*GBila6bwQ&{947N4gj zm#NJoYw@p@`Gzu7J471wAw6PZ4XM)EAa<{k_>qMNA%r^zHzdbyw%>1=i9Wb)exMeu z=8{HKq<$_bM+ut32*Y64GZsap`+h?;?k^UM_iW%YJEma<-;}mlm{)Gyw7s-oK9lj6dRe``9 zHSVE`6i`4q#u8+}NEfe>Mj^Z#4VkYT;!Y>sryUTVAl%ZDuV_&zy$DM=_A!j|fJ^R@ zqNne-38G;?E@QXL0h?F7w=GGx=;)d1HRsiTjHpRpwdgV}>46k4k)!mPX$I}S{<}y) z+-L4nO@G{>liq^_FVMsWBy4=#dtZt3ch$4zp17jk608B%Ny!>I`6)y`#Bz&69AY!r_ZlS~kR*~Po#V_Ij%ar&LdfzY&XU;*;K+Izr`7Z0~113Nj z0O=}Jzv}$nV6+{C`khM})FwU9Vm+lm8N|BJB|m|%VEvY-^0%$IBvTFM9z^1jNNOc2 z7<_m8>G?<6``{StHyF8u1(<6Ackb;H7*Gh29Wl|TR!xrMuEj7-|PljMAq^g%;R z(AvrWn z2L`mu$$Qo4jT+JsWtIMMU<-{rtR{%*Sg90X!-yI>CRv54q9dllRpVUM6cZ86A>Ct= zhhdbPASN>n5y3=8!@fm8ssK6Mi-ohCY`2+<83aj2>dlmP_#%kZp+Vo{5C)W_)zDyH zB(g7usRL72?orD@Y-vz)f)0+8jepRj&QLHT5LEF`X-Ys zhGCYokUF!b=w}?*SS+f#1Vu6?HesHg4BdV$yYqHvtp6JEorn!96n!|>JBwnT0qzeX z>iEOfm1_??ba!)gcC&T5agP=u4%TFa_4fZBZ~XH)6P_)V`JEZOt2chL7ZdmHhLk?R zuiTL~@OEOCo~UYP@cDtJLruKuz^vkjQrl>!?$9$+?5^z2>4~~Yw*GKkY0k}q>$lHK zhZ)^8mM{8Hr+c|EmM4Q&&nw&dF%{ENc#_z?^To-dq44%Q?Pc1LhsWIQGZoUj*E^et zsO9XG(?@TV@x7-`)Z1-4SmU)W{%4hRk-NTG_!~c)2h5mSGy0A@t+Tw^6M_?=zfTLyj5*E#HeO6vtb$b0PK3~^QIx<7C0nbsMHv*#Iw%FKGJ$`PMjnTS8 zk|w$JEoy{0=eyjl+~j9UTJ7RXE*ROohm26v^sIAe^249S&&yY662*04)v|W9;|N!{ zYtd_2_!O4!B}G}Tig{qS)q7D)6VbQu6&fV{%%kZQ@AvG|TP;hp5qjM?*aOCP;a1cT zLh32-#SdNV`7WEX(N(x%h1k@)%h_J4w1wK=^8xJ=d^TMcCu2u{z z9I!g`9Pf7Ig|$r)!r>Yd9!$3-Iyr|qJ{-e`O5qkgQXn*wCCVxqnnE1*#u5_%N;Hg5 z#L_}3TshA*p~Z+LSBc!{g!M2uEKZ7I7&ifgQJ%#$-IU5p3Rre=Z~|_GLt$ujtV)G{ zF(JZ|rR4=NgP0ISPvFeFvpMxGL0J#GQk*1l3-hrXG5Gq9)4sLAgfQ@{nxJfz; zQ@Hm{l{PhOTC>r6iOArBvTWhLFrz~;qG|AUz)H6Dwt&&*w2xHgF(5zY9{fFTbN*9oKTxmz!v#_hNLj-fE-S+iy zVg!S4Fy1H1oaqCH>y{=jR?J3fy)dvNp=L^mPfoWXhaq9)2U%ijph~jAzU9bX<{NY- zU6630)BK8pKjrtrjyLa=Ko2+36=cy4nCsvdFJ`xH124sh+ir4?F1Y$LWoJGo4Q5#+ z4EVwkxOVN+ucZqaZF*v`ou^k#6Zvl#Ls|NKqyVx`KPez4&uLalI9<-ec?41=##|E< zj`RZoL4u8;LUM2BPKc0gA8xUi3$t07BJyV1nQ!jv)W^yZ=KDCPjf_$odpg|8P>8(3 z#?btf%T^n8!8){PONO@TKC{C}95L+b*91_~RRk%cd%UpeTmN!D}3 zbfqXbnTL&-9JFkttIYT1Rn2@HdMUC9pk7TOy2Qom`AlFMPj$8OyO@XsRgY`q6xc}_ z2&H~dpk0W^k*Hl9tP>64DF@JZ2Q}CtPPgx1T=o3N8Ye0%Sfi#qSK5SFpM`NnD+L^h9c9<>ev+-SeEY+zCV$X7j~%nA znt2Dnp;?dSyGl{(_YKb5cNfyz;8`7d1=y}rp=3x1hyJGay`YF9b>ei-VFd!)9KU7m}$rs3Ri;D$6$v z@Viey(aw$#5CEl_EscTDUi4^BGa*tTDYc(h4w0P?!Q+a=Zim2ds|luSIalbkUyl^H zNrT7-qkT?DArgy;MZFXRfX8_hL;H7O|BhsG;vI`y~%Xs6d2(juy63?~Z@^6`uf zE`uoF?!xSfrI!oZIKU=qw7pb{AXrRwn9Bzig$lWRT#=%~qc0RWWJ4|-K$t`7Yv>@^ zRsJ10@dQ0Os1d-~YvdT03BGS~oa!#T-Q-c90OhJGTgT+XXV_!h@tl#8Qyl!cB8-2d z9x0ClM`Qd&mLM<288fXMkxOmJ;Gk1sXn$&>2`lKQ7uL%Qvs4yhtpzNc`2h@cA-#0@ zs9=904-UdWXD@pNx=^iKH_gu&Mf*aCe0vB8^e#6moC8a z++8FF3c=Ls0ns$j87UFPuNA~hpwqDkBMo5G2Vc@>c*FJ_)39sJ4pb3{)aBdwqSELX zr}bK4;f4c6e8hTCoN=DNo`EJp4Q2``4a9hXfYL^>ZWMu0!c&-HZDLBA(6okh0sN? zQZ|Gz;?}Lz9CwK=wI-Y}W{K88@G0LT9`1eU#d5xPY;~5jG>wk*lJaB*{QF$ggP2z8 z0F0nO%#RTlY7l${z;G^|!+@{a;H}ivxUfG;z{rIY;+cPzhO8}J5CgN*2v@fW^f|({ zG9-}>U%>T=X)z&5&rxc9W*u%=+U`S%frm@Q>nG5Qiv$U_JUR!nAP8#{gDO(%LibvL z23_4AnKB_Fj~yY)MXTt#rSd!?mG|KRQLaUC+3@HIJ*Sw`CI z0jCu699W_p8REvnPB*N0y+*bYRvN?FZmvS)OOfBbdTA9B3c3G%xuc273LUG3D`cL>z*10YlZ8xy5woGAjPV?~+qC=9hLJcB@s zDXq^5B4nZSw0uC+V4{LAW}~dB;S{FNQZ|eR3G+atc@eTuflf*iC%2(&VLTQM!!1H* zGD{ap_&!QB2P?q#A#!CR=Qj9q8s==GIBirE+Xp*=C{2}xoT2h;R+>?`zA${mx#6Uf9 z08uz0(&xrSyhyIIbKU?$BIVFRPHB`gtP+a?-2w0_!lVvFf73+FcN4IP ze56cNFe<<@x>H%**JXhH0CKHDh>*aO+MKBhL7`IQAmzJc!R?(Tc-@k3x@bm+fWn2Z zP>BO!d>#5>$1=yTk?R;JEZ3RB63FWyf(@dWC7vPYKmHsw%M6&u!T5|qM$T9Zjb73K znjwW*=*kf+;^UwI=zCzTL{`-U)8ra!1;9>BM)#r9+u)SiX=@b-ymJg^g71W-&TxiJ z`4)*YVF;=U>2e0{!sd?&0V)jTlp)qZ5bS;cp+b4>6fcy*w{J`$=$__LeG7;e!7iOW z+IsgYKaVZ`{UgHvBF~#vs!Nx$|VH z0ao*kW$;`Tn(2cLeSip6@Xt0-&>Cbwxce%JI8BPuhXD@vgv(f%ObyIT%@nE}}q5t?6-e2A2=8Q5)KXW-Q+| zAd)8KJG1z@SJp@Yd1-{n?9y}%WTZZx&VZS!kohd(lxNqS1*}pxkhi!P7~F(%$?CUY zz?n=@MhqsGDhko?O;mufT)6gjo3R=K1B->gBOjnC_sGyUQ?@Z_0uq_+o&}pDxf%oGu zNMO(EH1Xx9*&MMu%hIC(6Rm{(i3cnjY7FI&+W<0=R+{S!B(>bynGRqM>bgHv z0X15g4ZJ!h%w(6YgitX9@L1Fxw3MF%y?^)a>FN{vEZGSr1MFzg9TUw6r5&Jy2ojZF zqP}yL4YQXab*a%4YyGY?q47fF$pWlX#kiw&3y6@z>%fuO21Oh~^mWf<+i7HHJ z>6~kjjQ59OQkW0V{0RiGkl`};suKX73q;aHGgb;ruzbS-ewMCJ9e{SBcmcsE>3}py z2@M0f#h|d&_jpW(KS)b9TP$1vCHiKWmFn}@5_G0koC>=hA%&vqAk01C6qduIVfofr z;aZN+V47s|irArO+Zw89RT*He>G7erQ?h|)4Oy@(L7oEbq-g|;_~bh1`bnNY=!O|Z zZQvq4-c1P!e$>{lr5OoV3$ZdEoh9)Vz4;T8mT zYZ?lXLcC5?GECU5FYwgfy1s5Pe|QQnP8HS(5k;y6t5g+-(zjr0X$_i*5@WJeVlS5< z09-*(ZkqB>ur1^zz$FWc=GLh^(?PE=eBN+@FG(#5Q*~cLGti*KErp1Oe)K0VHP`_~+OJQ)t%J_(5ES_6)!A`zcn-X&4(|?ZTdl_t73yvJ z!jNGoMOu_Jy!re4n2nvwUHbl9C@q=}$mC4Zg;i8L61;u5z#GH;T0(M@64y!9d_*;k zq!w0!p#q#;7?55^oS6+meFfV_w{Zd7RGBj?P3|zG*tHMYD#AO4LBhD{3p(r8XZb|k zSEGNcJS&g5nb4)3g^>!7R|Yvh*6@o}?s*^;!)^B}^wTQ6ig5vbFE`GB>=eFJ1dymD$nk=AT!FVL3a$*$PL{wMjD%c3 zBVwz3nCb;UQ9>o;As|up>TP*=Qab-=RhF=BD6R>ljuI4|IKeo0#{y0UNUI-VBkAo7 z&QWWJeao6nt4{<5l7IB#4!0MurY&EjuT;@r5V@AvA7#mfiz8=7em2l?pdibDrIgJbu{ZB3%kUHqpaL7wMHj3WV=wSf8WcSSze z23M%rtM5a!MYBIu3frFtO|ip}7q1D3&-R+bO{PyPOG|w=p5-C94-3mI>_wO5H5naF z;j!UAzI6)YmU;xt)l3`*hn%m4AKyHrN073!%l{bIa%}VpB+NVKQr-r>GCFxJb8qb52HulM*3tV4(t(+3pr)#xYt-n@Ek7v#=iui2_*v^{6 z7wrjGbA-{(+3tZ0395W`7h}$zEV0`c&b$uFr~lMy+h6O|o$Ta1H=EGd%DN|1xxS$l z*pFpWNRlT^O89>Fjcrtk;Bk*9r&mc2+gE3brpxQy<~T~TW~JI$go&**rxDu945y@plP7{6e;O9E@G#pZh6wIb4?V*7`Dhbp8f3`0iW z&Wva?_xR5Dn*W&lHAwrBxBT)U#Op)xwFKW!EL`knOHA)5@t~hoj(KWh*2S@u$ywJP z+Ij289(qX|Woig3b}Pc4xS@;oh>rkbJU?h5vF+kEIX!HVrooN&tJm-My#{hK+i5et zjG}%Y1uskaGg76Up)W`59!8#IWrLI6Pe6ud-`qzJr|DwcdLm9>(rE9uir_udKE$YC zqBhsQ!uOQ)z#NWGmaH>$yc25QV95bK2Q=>a(&G4#d4TLY*&eB(g1mf{njL-a~em3o8&DRWryx-PbqM&RDWJ zUCr)R%=WvXgBV63_i;Logq$(ZH|f=ubi}W(p<;R8Ui(?2fK#z;#ZteQ{Ac=Tco^6# zH(1LanB?yzSvX2a4S#hU%f?PymIu2+Y0}u>99MJ!mZRuPEj<+_Su`sX2sV%RSd13tt-MA7o=-zc@)R%G=M?zK`vFzp#A$x_XpG-w zu!O0f;~Q*>_6id-EbD6r_mRfiBR`0g{zwfcGaD_wJ65))*R8}^up+X`P_l5zOIzQ% z*6_N0cv_#z3$W}nzlO^UG zhcV`lQAWZrN;qj6@J`rAPqXrpjCrjvWrQ#R&b4^RtgO*{aK@ex1+HUTMZ?d z0t?QDX~czWy-nTH4MAbWDsKiv+f;AWwEugLt`jqs9CW2DR02~5l4%Q!=2Y-{I~?XO81S zvNo11ughd_-6L^}eMHHNa$}u{GuY~_Qc-KM{F0ZNi6A8#G@0zv))w$xor-@F;ujSI zi?aplM3dTSb^7W2UAm%m&1#2ZrjGE-^1_7GlW`}|Sf3CxZA*wNWa+5}g#Fd@1&M>2 zY|g#V*g*QGsv0{VUAc|EVeRUI8s_bjUS_0_sFellf}+eV`YhL z5`J49x|wm1zNOQZy?9hf4;7T>RViV&XNYi#E!ove2LH5l&f>Es%KADb6kh9d^7at`BUmXV8r&U+v6uYutjA|IE zXDa6LTDfCdyn{ejlADU-^y}~WT@`_mjJ@n97tQNn*(**bYNu#DbDvC~=G(uZv+@z`a&bUZd_!P*r%^~~G;q4JBmF-xA?}39@zmY{_X-q8JqS6aHjTwaq?9Zd;hfHkq6r!d zj1olKQHF zRa0_7=6t|oT*A#kSj8%@ERfPUn>LK`L?=XzD!+O$wGANFLLzvXXhLjThfdZqLjbia zr-;Epg(FbZ)K(8GIXE3~nSk6zPVC*O^bKhZ9DxG8a8t4XraMFi)&Fx+F}mjvhs1s? zi#o6z#Pd}DTe2)r+A8D#f(b~(Y7Gog`{Wv^%p-n+=&50?er;BrH{g6$=zIaA=BNVQ zqo;gn2}D|*ytGp)l|)48od-G8VGJ)-&`6cvL5V}YkZpua;n99=plxEy6nBW!iQ100 z1h5Q*I=S;nfI%`qIW2*yEiCs^O0L-33nvp&UlxNoJ3ZA3_z*!mY78segtO$||dDU^hIgKr2f>ZHoK zKb>9$28eK?@|J*pWv3PqbV_FI-}8rA?8{o}N;1avp>zzz`(XqHVRaZ3E^SHu1#uWx z1rGB9tjPfULeQtOt~+1vKwJWe1eEwZY*IHjQ0E$wr~*x5kw}6UD23fEHVueFr)0{A zB(OZ18#9Z}gu->WpYlq-Pj(A#g#7Ze2+d-@FkIAr$hi)qrGvg+(SiECK@$=ZQ!F93 z2J+NF<6_%h6kO605NA<`2wL3{11%&uWJHC#+D=)b^zDtFG67I?DKstMHUWhoYX4d& za8xN$v7l4zSTYdXL`{Mrb)l7!F(p%8VfLa|~4RI*yJ>0@>I+vf1@`qY{jUX}I z!FdAmh{J3q!~snPYBxfxm-L8Rr_{xeCzO71t%3P10n!%xdVra)3KpsTMl7nyF=8qL z@JuRssM`CWlA=YNLTa8^RaiNaDJF@N;Kj^F%tLDo{sOsj#A#pt;?=7}VK{ep1Mwi} z<%bKYm-y5}+cD!#Og-WWt9$-d35Pq$GFRu5D8AX?n+-9C zltCg@+6l3Ln1_!~v|nl(&0W0CSshrVv^j|SwyA6zF~`1^DU5bnClZ9HovY9?ZNFf= zWfF>wW4RQ3VM#%;UK^?wM150#AzfkfrGMTN?3~RAc;vaD3ppVCySfb0JmJT z@CxweS+Dq707ei}*bq|+-2Jh3GqFzgxqxuDMA=R@2_d^ zS|ldMpf8>h{wx&R#~`IWE>MoxUW#3-&@gjQFhuNtBCsER8{@s<#`{hW3?_k$Yy{4- zh^=pHyrE&11J}2{8(tOwdtt<3>+muEd!N=`6$1o~!Nw|{LcmG=$`2nt@M{g$2YTm$ zK5`HfkP)T{z)LY2$s&01_;93&Fa5*z|%Q->!G5Q+|4O5z59Y z8WBQH&b>{@8J$gFn+jJRLyN&+ba_+I$jn3l$~CZJFv1Y9%?D%Y5Q)!}&nXx^YRc<` z^%O6FlqY`w*zLdlzAKsmZ1BQ4l7WI?j4&A#1K^Dqp$Kr)1275{y+ZnD$*R}U*7$?68lsEKmrg2wy~+^1@Il$>N`m`k zLWm@I)Bq#z<4j$l8ns()!)Y;aZI`I+c5$N*VxI^SrKp?lWxOZ$b^Tz!-GbYc^>dIZ z_bvc7Os_vH>Yb=cCNq$hC8j50f(Nr1o$DQeO9%GF^b>;T=>6eF?2nW~lpJMvaw{vY zj=qiZiSUu?`vK0mM%efl@f5Hs+amfZc~3(8=5%j>fc223?UDdxrviU^tf$7Hc3w(2 z|MJLA?D1g*6cQg<;)}mH+IpeECOgN$OKF*L?Lpc*i(L-P6u(bG;5r~^@o3YU_Sb|< zmr}o6&G>R{0ObuC{&@}Z5JThhqmqm3D9BY~EOMqcw?uEfHg`Xku0BuC zX_;Cp39M8H#ThDcrjjvakwrcC>y|k{Xngt9Mc@Bi{{2+i0l;@xY5K3%=Z0ow?%fi- zt1BlUG@f@Otq+)uTHeIon zv^iU+?cK6`!9Vh{t=X2WO?yMRZLQ(8>g~sGM(A5?^8Q(W^X4MYKg{E`siUC_-rbOW z&thp>x1ZV;Nz;{(Zlp!tusi|mvJ6r2|7^RdS$1H{+_OmjZ*!tsw&i}_niqL9?cfc< zw_44%Z5wT-t+o8U`sUZA;bPZczHYEOLtFn@^FJ)-!j1dOrm62}w%RnUUn`~ifeyVV z(hs1ESKXkOUoW@=|C||GG2ha`s%r_UZ3#|KA%1BHOjUDa2MA|Ew{F{7b|Ca{>dp0Q zziD0odl!d>#u{v7TWJ3nLhB_Zx!3moZ`&Tr*2fEPsBV5+cW2A-ZC@8(yq@hlo^ur~ zTHa)n`Zagj*EKV59NVU~sY8hU;H0>dCBa|!QuDMg@{ZW-_<6&Y1skTF*gcIpbmQzc z%-k4rYIj&&X8g{dn{-G1Uis%gxu-(4FDuWu9se$ljvUz*(WDM)1LOajdS>%K8*lDV zoVu}jgVIj>dG);8*$cwcJtNbjXZ!9U3mqgFe87tqiKA1=S*r8qq||W8|~PT ze{y?%xZA`pbMNHqqE0>}yNBUILU6tU!}{Mr{=uKeZ$;fKYVPbqC{>76ZRs#<;N%0u zv5Bskkqqs`qPnQM)DB85a{qY#$wLoF^<_^sO#k1u|JH8C+!T`5Z4xhzgq=EZ_t)=h zeSf|>ZF-Aaep<*cot^)cHSe4!oG5SE8Lz;gFVk^#DB4B*<9~&}d#0OzC3XB-oN*(D zt)&vpfUV5nlmp^_{^iy3yS~3zei`^#%TNT6d7uMl_By{GR95jEBQ|(vYv)De?WtYw z?!b&XZ27v0cXKDoQ|jQMyC44gF?t<-yWFqfYPIUdU8YRT?yujx5c}|M7g77|={+Q} z0-T#MBfc3c|1rO_W_ogzc<*YweXe-J;azFzmLt;qC%a4kKJ}eikN)!e9aRrDa&9KW zeOLHe*`HHToS<%b5%O`a7h+6TzFaO=6Ky^GI@KNf{AZJXl!16^jK*J5tFP9+oar3w zYCVBMSrTP%9;a;|{NR8VUnW!TzglD9rFZ3fryN){_teat|BlLA2|wv(@AH^{`{3$% z=jPhHH3^h!=3A#{BTwEoT4pb}vV5c0(TsxnLvH?U9%ExR!~@@j5S zdiBs|(|XrCXSG4;8lMx%yacLCY~)Fsmdu?kpX0j{A8q`SPxDxDwGq8qrTZ`CdxKJC^t++t8?gq^lu91=l-<90Q;UUaw-h9mRu znjkW-gW7uL^IF11%{r=?Q^9$xD0s(IcVz!i&Z(aXkzzOtih9?xwy1Lv#e8o z>6C)hbLOmd_N;dK)AVWqgLL#v1rtv7DP--c9K4~*DHc)!ymG)>yiMt@WnMDrI!#!{ z>Nb^n874V2H+Iw;o?9y~)H+(ll8@uPFZDj26Zrnk#h+%QwGNB3?@#7Ly2iO5nSHWS z4ogzEN8_S)9bIt{(f6$`^pW15?6`DO^(!X#OVg{p-9kPsD?0nfc6s^6sxfSDZhC`WFsI*86Le}>UdxefRmm~MUcr|Z2!$s(nGfQZ z4@=lfx9=&?-Z^M#G2j;79m`bj4$7Nvt;7Y0KMNcu12f zb9=eR_EQaCvi0;A(x!qYyYpnfqj@UtwJCe2e{onOtk@`$s|dQDm%!fK{71TdxiMqN zY4;hcSJ6jEe#U{_l2M$4;`y!CHy1bR<@9+c$!E20D@jUvcKLQh$nD7XJi?^^Yd*fR zwzCvk{=7t8va)V_riLsbui8gb#QI!atBY4HtI+hFE^{lqyqe&rdQ+&HQ)J4qOZ(E< zRpfg4TkNe3D&^otb*Z-M(>c4M)#ZznU4ng^oX60=YBJKnV{3YtpHJBg_Z6}|_Af0h znPRuGK>O{7Wwn`}rW2mkPASIZXM)03$Fd{$cfQpGX_GxDn|EJqIke$!pSFfYG89y8 z>M?zN`+e-U<(B`xSyunlNOZ7<`+IybJqRn_+%}jWa);<+74$5qf5|sD#k8j> z3b!S;LItwfQ%3%=q2{QaW7Gc-&kz)4f61UQh9_;ykezeTqj+0`n2PnOio0dR^1LEp zC{Vk*Plso;*zeyY^9*?I9V8n%eQ1rHDy$jD@9XRcy_`%jD+9}xq?Yg&8dax9F{@qF zLhvrts&^;q?7kwih}I+`DF%r51foMjK`5*zx%}|htGo<{8+GJp}R>C zIu1A?-;`>!0oI6!u8Ynxqc(1==#*y$hPNe%Tr~J;O#~lWCNuIz%1Tm$7!Dn)_{mRp zln}nsck-Rsf`c)7x<&}bH`TD6`#Nc;fRT03 zB#?kF?S0RvzHP?PRbD2;1qHnO$4CStYE@l%x}3S6;M*S0eU3n6OVUDnW=J*1C{p7kpMJmI zEueOF7Q%fQo?(xGqjlwOzP87@d>fK~P9_zE_ie10ueeB<2@u0kBVl9I%dmt!lAtOf zq0YJO#D{mCjtj}>mohc{LCN5a?b)JlbwsS~xf@``nyi=n7ujk`2B%_ETr2mB2_}$Q&=~zod;73r z&;RW!d;B$~`jH?s}W{p%Ul*#=T_d)iQ{ThGPx6Z}I?sj^? zEk8s~!Yjr2e%YRd%iaVn*0-Gayo4!qkD!)}uMl0_4Er_Z`7K3Tnv0Et0XcF?(!WK~ zS7im>#t)Muia_R8g!R<&u!*`*CaL)|R+(7$(jMuP>>;ag{IFZD@FS3QRsXh>v!Wxt zPdzQ7LF3eol4}MetVK8MX3RFUOY2aVA&^FkQStxd(U=PBAnMMX+>#k7KX@|AHb8>A zbFCMS6)%H&4cv}l34TyPm*=r4bC-3~>UE5jGF^Bm$q;(m7O(oD20QAAysWN0;Z-uI zRyup~LB+_(f6*PKmm&SyhwuEX&iI)2*elCN-aZQv(pwa<{CdTj8%)ECdHVSd+6Fpt z95K#|Bh#HfWFXw5?Mb_!I{OsO!fDRLn7peLOur}FD(XHbduP)O{x7s#?bQ7y&Ngq^ z3?219OVGfs?Q<2z(PcOPopipiHFTx2aOUE(FQk>KGI_TqKnju`mB*j*&0zA&cf7W# zCgYBY86i4yk~5+SiwN{O(0b5H&IwL`}{Ibj-GefeT$!BvTK`r^Zf&W^`h((D!f#Z$pvy=?T zRq2ul!m&brgc8aVEb3A6^gkU@$jDcP&h>JBrplFBU%ff+ReO#+9mYWpv~geDz7O$_^7#$(lvIzg2y$}t(}wK}J_3PlE) z|EJt3WEg&mah?l#)pAA?o^Ts=>J;<442}vxP$S57Nam-Q1H&@#7i5mlmApE12r7UtT$gdbf!CWHdkq0&``N|l6uN<8Zl~wZjmrl} z#d6+bG5;7yNios#HWJ%~zvPrdeo8JXck0*LdkApH9`W>YTZdTuV;%RTS#?)w*A_$S zM!DGyoTp~y(^*h$wNo>&Q&&K%6mnVwVeE6H*9deO#jyN52Iqc~;PiGvd$_ z2fY?JmsbZ171XS1=Rp(u*=ceF$om(`d#v79b%oA+0LM4R{PZQpasv9^xc7VWZ@m2m zZj^GO+vdOCD^M0-`@EXPLGNO6$6aQ}d?BOQmGA-J^^19jWiP{^uETe9%W{XVp3WIIp1!|kYq0&?m(25UI@&n{hEo~M%1Bx=!uF2WOpgqlG zbKAgOB>e9fNX{_Pg5(}@u^q?o4{G9GR+8T6c%h)HkHE1Lzqo(5{m(69mXv%KrA6= z0y!dBZ=Yn~N#$}zAg{;l6l+#lj$s5Z0r#@pDv_XGR&tsIP=tXq!(gjXx+I8y-Z6E2 zr5tQ2xuAW*OH?kb(Q(^A$Dvhx8u*UZf}_Z}rAnthkdtF;N6|60W)@HE(68j=V7NgY z_pZTVhk@S++JvY`0b=_egTsw|{fC=9kU%&HauI$`FaVh0R#36+yQbgVA3Ga_~zFxzWn1TT|qhthfr2dhPj zA)pt7te*EAni!vNipm1$y<)axKmIYwHB~dEcDwxqwwT%e0!qs5NlDXDHPz164A8>C z>;{DP3?2P4$T^5OJO|kVK~e=`+at7Am7_-yUYwBJavzG4FW82%ml&w2G6*p{$>okF zG2251j{r`K%(iJ}UagswrXweS{4@hos&uS(CpLoo3v$*~p-Tr+t`X!FEFfj0q_3F$ zX^L^^0=O(l5SK7OnNTO<X_>gzy@eI{$OyGPC1W0Tngad+l>8y=fCAx9+3cUzu>B z0_I(_e4T-RusTDNMe-8!vq9S!;g&@vvNOnPmOEKO%laU z!J*Ay=M#(Xd^&5coOfFY=b1>lYTgdH#|yKqU=ZJnax)B+;REFgv-7BFE$bdJK}Tpt zc{yUFMB*jF9B!}0Wpr}2VmsGRyWS_Ag@}Ed+%~^8D9dE?6im(=jEX?*It{jGO{BLD zN&k)S1-Jj3hsE=5R4IStn< z`Eh16Qk8dBUN!}E$>Nsi3~sJ?zYAo#*~+3DMBy6&LNQduM9U3qV+t# zZ?}OO?mE~)5cA!IxD9m;``v0d%O;ojW^1H!68eN^Y~+`G<^ZX1!o~LDzRI|Z z#FQwOTL|RF(-6W?TEBtye9RiIcp?N&S#u`TScxmnr$BplGdormhC zzk`>ddn7to4v>4r97zzN18~NaHoIg;-krhk$8OzLvQon4At?PY=o}CN`H5W+127}5IS`t&{YY+*S9ves~ zhL1qKpncT0z2sPdYxCdB4T74kMXs(gW}o%5LW#MR)?FPybw&5F8Jz}dpw6*RX)E0X zbHMC_n7GFcOgHlgLR{fD&wPy9B`>2UGH;8WFmy2wV0o}zQiK#~Im9yaL*EGEkm4+5 z=~@;3H0snZKdhHPPS zPzq}1^yqXq^b@`MDz7Ane+oN|uA{OzTpwj2{A-fYJ*(N`jIiTnIt$cP&DQIUxVGoPAgDuNNNf z5jfR~)y0cl!j!;($*E7tKPjfUEO4zv?b|@+!N%KMCC}Zw<*C=}b%H411K-sQ)FKW# zF+EC0nPKMjnt4Vsm!ZU=fE~xyIYiji`k@B!B37{g>X_OnbwBEO1S@lC?5o zqBXh3{&oUm31`!)Qn5qkh;jR7Tx%g?`cUUlH%rm_{%QW?^6GhRh6f=FrO?uO+t!K2&Bb*5Ecb5|BoLWV2CfsDGUYEG{4 z#QtQ-f$-RwiYkDWl*%%sR|jPOeQ9se#Z7Bpd`;`!>!yZ!U8;`bif z@0cDeTC~bLpfBWO+IIbaY{LG`*EjZDXyM%%9~*jbeCFO6zx@06$csC>ZD!t``1U2Z zR(0=Q%df;MCa34hIUx^TG1H!Onj|i-vi8T&?1mp#IQby$tUT*sOfeR7{AUZ zZD7q-(wBWxv;~`n6_e8(#;-D*R&D*e#jXYUy@T}nCxRWp(ces;I=NSLFZ>8kuEzZ@ z{QxoaM$SG7bgLOxF0k5(I*67$(Y>ix-A8Ro7hclEMxKdV1iQY;+qByAwID^a&V?4# z!&gbkq_9drR}%Hm>oHOEY$#bZc`z)+Vqjg#%OsMePe#?@SAjLH#O|g8c%6mt@!Kxgu%v7ZN&28-^t93IQu=q^?iXwTxqun za~mm#l$VCyW3wZUWxsl2GZT30_A}QVO7clg@4dR+8)J8T#NH-@uweuL$Ahr~W1NtlmIiF5YJ8hzxwKR>f`OZp$8C*EoMx2e0PX4Hj3s$LenyCPzLU4PV%mJ^e-h4a{K~cPN&QRGzGY*`_e^$N>_QQH zLJ=2Uj3Gtg=lYBikJnKt&uI&?K9>b(h`v@rTi~%rb(hCwB%kPKd5tRWAF_60xJfd# zUs=fP!-&kjg0K%5;60RM<2-(kc2YrEH!8<98k7e+&BgZRM4w4II6O$HIr}81C~BnI zW;dx#K-pM)y}@SJm)1#n0ts*kC5KURb+g8$+Pn<(VkINPiMp^W!y(MCLA4+|(}q}w3#~U4;rk8zOK}M2f?e=>?35d!+J>bP2CIHvbC+p8(p3(`9ATA11)5wtHv0qtv^7 z1c4osxYi2Q)mdf2OJc;nO>T~^bxcxo1I^|h4pDO~9Homkw zHr(bhF2#i%jCMw3V&}U;x^L5i&?#C;z>t|fE7jy0qigltC1=Q@RP=z$Kar1ZWO$CI zM)7pfQ`fZ&>;5Y7K{fYST&u-B&z3ZMi-7(quTWqTRPvh!d8djs(|VPy zJlW&K%R{xtO}Sw&`pEpgx){%hedOtlrb*|r7A_#1VMOno44uv+x+RqGc`PM$g9why zmKRR#mXZHN39j$42X3P%oM$9N-j$yX`KHP*F7Ak|Femc#GW(Axeo~80wc?uLnZEcd zwTj8um_KO$3Mmqn&Oe?xdF?`VUD;$E-X?XZn)6ZD;o>n$2V&w(bE5~ zPgS(AhvNz- zkD@!S;QFDb6Tl z=%^op!_$4rca!0OV2{$DX#4v^3%gqP~cwFu)kD_j$S?Ev}+N+w{DlS}ISGblGW6z|$(KAML zj4ygJYn1XuPjV7~N37|)i0m$+{Eadi50gC(t$2$u-sl)_6pV*boR!YDT7a`c_N>%D zPtLCN2Ed9AyoVB$=b*(*>KIx)B4S)Hxeji`zcf-1ZON9ag!@v<5<9H$6X^aCAj`&W zI9jLoQpS6Po@es%li{26jJHPmV-MUKEpr&7z1Oa>Gf{(A7Fx7GgOPC}7in-v*nlxc z6pXh3tHb0qn@N9ZTC4g*{fMnu_6S_4rC}n1P~hStB6JxUe<{k}>gi5K*sP!z#}MD@ zy`!W!wut^oPnjqE$w5YX$}IW~qdy$-v5bQ2w6u3xM!gYOVWhnWiUup`PI}xWPx?puqi7+d$7&g#^F=9;KT1LK{7@g9T2 z5UAWlAC@x41QfEDeKymfs8S3i3mO>Kx<;u0^n;QoGoLVF+oY233H~Aa0Qvc2(aNPG3Q989h34w z#`vhEtwX^{OyV;EjVyo^Oq>7doh^EtO3Nr@E-ACctp@_Vyj++FrK!?N*`Yqx5m9v()x|I^AN_Mln|=N{RXh+I8hRrU?;-JHi65f^crYqpBz*xZ2C+@Wf5+!kvyig zF#b$u7>uiySA)j@#@|wMoEBGRMV?Aej7h1_zTu7TbjW}lJ)?~Yj$UIF8leb;(2p`+>#Yk)x*88< zj5^NO?lRn@J`xa>3w(oR*4Sy&F2k3uuB@wW&+TkJaDE@OC!0`d3bW*gx+ z0lc&tH(P%pRtL{STyE$X^GvE&f#5mB=Dm($_qOicqw}*6PkI`RFbOC^upXluh42ZV z3%~qpBSGO@J&cIz%l5$uqNt^|xY-ySf#QZr;b`flG=dL9FTo}>LGSK^U8v7 zu*S&PYeZd6;||}xkbuD!diB4!f?49jUEXEYxJVPhO2vr7E-n+oh@k$A`0|n4 zR}yuev-I#bfH2wDB?5!{Bd!I_fwQCGEF)p23_iERHb8H^5dT0&&sc$rXV#y-(14(X z-7@@fAD0->wLr{sM%m7IEgqFw2yw`z=BHLe3_P4r-?t6kEF=6RgOBfU@Chd7>+v&< z7ef)a_21IwF}Q`vV7+F$V&s=5`cm!gS!ci#f~~)6k?_LMG!b#N0=LokT4ce_L==AS zjGK?qAL}<+j9?Fwu~2(!xe|9`$F>+b6nA(ow8<&WEG!kKVS6dl zexxmCf__bk_XBVNrnUebTM;at0pPslIK|7h;*j?F6Kw%#-24$_Dh9;$EVo2$*MMn8q0df7>Hi6R$u6xeF7DbBW_bCnYb28IGT<)v( zm^18+RqX1&RJ*(HmG-yI9YJI{or|h(E|=p%5d1a~!5fJU#oFgq;bs8S&UbfcR#+O2 zHFGvZl`O03T$+sAlXHJ*|9#}=2ip8YERXvJ-j2fF2UBJ8Y8^#2N*NxdvGr_4PUa#r z6r{)5uIT)=o_%TLSa0`abixLCuxK4`hu4+|KX2^p^=scZ^1wv`D~yB_b~cexC$QbME(70V&f9%(Yo@ufgJAMs>=1Wdohz;6xVwA{0_m=c8iJl zO4c#EpZO4$oT ziD}IIrTaj&?&u;EI+XL^NKUWEAMHQ<9$qWYNRttlNg-D?E>U*l_GB0DQ7a{yG*8>R z)6dFp>3j5?iW#XTJNsH>51& zkMQzo`Xnm>_2MX_xRaKl*VRpTsoHr+D#g#%XU3`FT=zZ+^Um_*dslyn&e3FgD+pbq z)M7gASA=#~K`NRZGfPJPOUrmaO5d()S)L4^yJYw5J===DIBp_(AXCHs=g>w1^b#6N5N`>i&; z;cB~N9e#lVpKSV#KJa+1`FGeRI+vu&x)O6Ba)BkeJqvHN)XYEp$rmy~Yr?0T0 z0?cW894T#Jn*N269s@ks#QDMY5kyA@3{GCp4ITx#(mfK!q$wt^xPiuyjTVmLPsnI{1y>>tLtH87pnVtp1@c69%tVRRNa_qd=*+~O?Ey2V z{$+)vY+El8ie6{lg*pQq8J1DD6Qmko3xS;y(`b80b}%xQ8895Cg9K8yv&u6!s-Zba z$Ruo@KNIp%eDXx!es1{FvjXR20-p`IefN(ERgmhL6sukD+Ye~575ptDAGXr=jR|kY zpjmp-Sp_KqvAo?BhzlMioYs?f_D5iWYIyZWV90|aAFYD*lh6dyh-A2! z3d@Sh3J(>U6_zC(wjK@wniaNIR90x#Tyu?@+gxAQ_d(65xkk-3*IGk!&9&-F$GOer z@A>`b%RhL*3+|hn>%Ok{hnBcFGF3qtAR=g9$YzSbHEvpsf@HW0WIdts6sa*RMyr?9 zKJ)G&7GsQZByaIo1hq|Zh}2xU<{*bDQ04ISY(XQ=xIo(z#IU*7-slP~%h_^nIj z*BAc4WiiuV{g|<3&40Fc#=h#m)E|MRp1nO7&;b9v?8ph26MzQXTD9*u$*$>md<4C$E3* zv$W}{G3#0KIsNc*j>{DEi1xvI(~Q#F^Jvsw9b=W_xhXiIbCPOIySVEbopYi%@I3uy zWo+TkjzT-9E@0k*{KR>+3K~h6^+8KrNl|OsPqfPtYOdX<|HJPbW8V}7?MXe{N-C~2 zTXU#YAbn}~uCxEqEotGj`8*b0=k2hTwx$L7t?3KRx3FH^oGO~tOK>c=ZWt)xJEf(O zWk=+V8S|!8n|zdxB6CORO-J^@H+>*w=1?ZWoYa3v<7qFJ?nW}w$1i^$#JO=4$;`M z&NT&Hx#st6^r;p}!;)=TurXqtD>}H!ttdspEvO&@t&%S^Ru45xo3_|TMoF>8P-;ZY zQgJ78c;0CRyp}H&!0uR4sj~Z|C-N=U_u`U(-bt(&@`XLrT|4CQksTc3f zjT+gx*Eb;gHKQyuB8HdJu@~AxzC(i?8vs@f}=ehxce|>&UAL8ilXQaMC<4(qDCUhqx9j#1{xFGB;fA))AL@~tM z=bHjFY#Wv`KC~3XVZ9dBpp$XNS|F-MVN<;|PU;27LdBPM%fZ?h-1TgOqIJhG1auh& zWk$OW8k9zCu{!;#P-$SBqLN5OnR>4N0Bjl@)3yfEex0w*a@==-`EF^z=?rXosQV8;WsJ-k2SVBa_)Nz$ZTe)vb3_GX?lsI$ zW%WKw`~Z}`h3h_9@X+V5%ldQr|DrDV`X)bk&ZuR@6n@!&ouh#IFj^ihUUABsi#12D z+5*M(Nd#2sJY69IE_d`YDN9^;-XX`-6Ju1}NT;s-);5kKfElZjhFv(n?aMtb+9>K* zVgvn35DUC9Q@8YO42k15WYcw+kL5d6%_;!|1O<5i4eq-Spu@%Xsj- zUKo-1ej7&noin9^71c4!pP!efj5K`n@T>kqduv@j11Lk?0s577I2ZlRUA*Nh1lp)D zPs?EG8XIOD2)ARu7JFT`_Gchhm6!DfPl$AF^IdM$q4I{_o15)1XA?gB-MH-*JK+>}j-kS{D6FPDY~wL$b2NJ94f|)``8NlW zu2xWHodZ%gDGU`@48=F$hVZlad6s_6XM{!#bK6a85GUotr@fi;K?9|`rY>y!!(S*_8#t&OTr*eQ7fAE?|Eioztx$A)##~zXM`6s< z$NJ?{HzioiZ$oX=?6SguK`5+Lg#UiJw|-r9pWk2;(ExeLFSPqflxUNgq}4>@4hNOEx5?IFAekW*HThNt)y0? z%Fm&=HmzlZu~gylIi|>eZ#zh7<KkBPVxij8uuujTbo? zYHKt+Q=yMP0{X4jNDJ4}C@DkM{?N%365D0WQt-(=0i->DpmT|7Hl6%rKZQ*Y3T{MS zF$4#%aJ{k$aoX+{J!t7Lr@s*CqeVKH(Je{ocbd54Dn_+u* zH&hU^#Xh%!meK56Fg_Z36EVa7{i9m&A`w?>W`c!+VkDmsmUr-ICs+&gzgp*f_fmLe0R`{1Rv={IHs;ttoPB}ZI z5@V1fLBEQQHUe4XhwL3;Y;Z&urrM-4mPq!0LJUrc#`QA~^QjT&g@!%Drug|H{i7c} zaEawwN?R#IUTvrC!KMb%21^fAATbQ6R3hBwq^a6-eH#zmppHBCE62sb4gVA{&f6PT zs*Hr4xyA)XX@I3%v>Y=;D|A^j%DMfzclea734m@l9$8S&*>A~0vsD14n%lu~>xz^V zH9*M$g19X5YK2jyrBraQ3N_@7fbsQii@(;eQD_PWbf)iS&VkbwbDiRe)a|%w#(S_J z9Gvg2m)pr|rHMY~6Fd%;YD{HTa*fLn?C>j-o7UNlQI5o1SACh1veYtXF4{U zjVyAaLg(j(S1QRF<>XZH@eoXp6q**&J`A7e74iD^xk0kaSO#>VV*O}?Q8}foH@-9` zb=X2RnQBpe9B{^j9#f*^pJ)cvgduqln@6LlG1E$qzOfZsB+n{l!7eVCMewalDa&zv zs8}Z;tT-)Y4Q5DVpDRSEvspRExnPdHUg3a96Tq7QOSl}a8?Gm_z@T9$!lFyjO18Nv zfs=;U_b{2Oeu1(+B9QcPyz$5;a<+vXgcwSceF~o~QB`V5B4SCZaM1wGSm5S8vYl@mMtm~F4HJD`g8{&PXK-TwtUUOd2NtI<-W19|NbUsq1jZzHw}`mO5Qz*wRgz0qCCY zriiRSzL!#pz}MzsGNpN`2s3TBu<$U=Fh&Gx{tZ#<5b`t?!TFgICq5|~hgjXD8hd?` z7+7RA%V`*?yM@s6LTsd6+IoqKx_lhCFVfdwrfCS6;W4ds=>62j9Ff7c;1Z&-Rj4Rw z6PS(*ibYq~V5Su+L!(nCRMa2fq3b$?I)`CPhe;_kZ5lrmFRoVs)Xn4dYaMW>7gj6G zRUXO?Vlrrd&sMQnqlwz6z-D5mYHNMD!n{EYMLNJ`Vsksmti_DPl}tWxscgbjJ7M@Z z&EhxZHHrnpMF4fD)|5shF_W@u2lw z{?!`p@(LxjigqqgQNPVYsRqn-E@Lb~+u2Rq<)-uVjBKt>&NZ)+gE?|)IjYxBnlmia zrAjb-SicRStgO^CHP99oh3LeHlV`mRq|q^>Mrf|-HdWinFxOBbHdhmPE6o(>)roE9 zB?uTbuHQ~GAuGWZuKHTUG@aEL!iCq5Q&vyZS5Fuy{OfD97iDtaW4@-HCYuW_4NzNa0F#tiG^6rv=$+D@#Q z#T7#HRxY(dOHJYaV5p| zV43TVzZ=W<*8c_>3D6;|SDLCd)CD4tKBXq@5K{lF zq%PM2JUK+$W_p%t>iowXu3EdpMSk~hV8O6yyVmr+(vVn2&V1jrSz#`)9Xyas-Ycdg zc6@1af3(GJ>S;FA;v|6<%&?m_+sS1vQzq8Lu#?uwZ{}dUW2yD)?Br5AbtA54aC7}ByoG*^kM!Zj&0&2RO=e*JH>+5!+$PYLp$KAUUW?(z$9kaq%br~}H-Qrhxu8%hv;?Kjv4Fwjl+75NtfcI;k_0Hw@f1cx z(1v013{Qq$`0c5;Btim77wKlGD4PL&gbRYhEE#I*E*Ct>v-nRy8(8MLF(8^ie6*0z z{YMObTH_7aQXQ?HM8s2l_WvSfKn$EJe!NH#Wk9}(RZ_NfzzI`Yh|hYqdx8|NA!(3$ zp1sth)TP=8#T!J%^=X)IUzaIC1kEJwAJ7zEBCbs{}lWXn&# zXN5G~CfYDqBsb^Ku6)%FZIS2dxVl*$$};p(#Ry2nNZZ|}`G6r!Y@oRf#2F+winLuw z^7TBg)BwpV%sJhDVN=8U>Eos{J9OmUZF6EtOkM+-pVy+ zdG$+G)Ww7~&ob>q4P=&aD^kC(1zfbQeygH@H$fzhQdiocJj7gOfqlLDok~ia2+CAa z3kdjGqa#-PT3cPVHn{mq%HD3{rCl_-%Aj_bH+91_TrXAW6EvnzryhVw_-AkKKt#54 zkw>2>Z(~@=!~;pZkXU=b=GF0R2CbMfv%|0jpw8eOp3x1}Ops%6U7&`v-DN1&P*FLt z<-mZFTxTT-&GnWgSbhh!v|FD`ShGTXpjS_b&Jm7X8NeCy_j>S>f0o&_gKJFChOfXO zlCplcwK5+dwh0}W4w06drn|QoFi_w%Rds+|n_=593Go2SwB~FLI9&z*@LhF`i@bUG z=TfJw`EuYo)Ylk1vux1DE(nM@K71~v?3~4% z?LAzhi>c-zL1`@|sc|1I=KbJo%8Zi*1rPiCTZ;Z%Fn^LQ5S*1%&a=LI3zp;D$<`O=Oo*-CNM~D0mRJ7*8 zAB>(k5Iow&Px;^mJ!8|F%f$;a^6N=!etpaEbTK0~*17JqOw^V6=WcBh4!d2@`&Y6e z4u3`<*--~W(Gzp0WZU)TLw=j>p)UijWFou1?jBsZ+>dr3wAgWcPkn4tOBj7qwf={M zWv#U7oOfMiPv7S-#2Tx0J(C3@pY*5SQAzy2EK4B{%B8Y`FeQF)SqyVpvbN}8;xswY zM|yZtH8=f9Voc%8v7S#0D4{hTbJn$PEQ%&ZZ_{(Tu(IobG_fl$VwX7it~6fY^vz{# z!LH97Lf?x?`%(D<3)qSHO4JRe+)ynw$396L1^iR{-InYd zX_DUN{ZlFTI?ghZLuBV7)Mz7%Efwa0N?_&BoUd%$$he-lGBjtBst1lvMZW8YqLZzHW}+f{L)IyPU7rg2zVsD)1&1ZnM}<4Qby2{cTif^x1G=pzaaa#j7e3e93(~yaY*3Bq!{C%!!V!t ziI(~el)~M%h@b0K!GQ^jnictRO|647Ke6`F>HE2<`N4SSOL|--Low4g9gs4kBYHg1 zJ~tfSnP|}(vzXFL$!mQbUHRP|Xm?o&;f->CRH!EfSGG~qd| zS5lSA63rLu)goD7hqccITq%1=@zoE)OwlzCyf{5=*dtASV!y4UAu3-giuFZyVQozv zfbVBo%Ji{gqzpw2Ghai_RV6oOaZzd)UlQ)BX$Y^KQt?C8KOz_Eb;0=lqAU~=+2=YbqG$`=#olxPWaH2{+H6r@?*$^Wfz z^@T<%EdF^YvjULB#CT;QP5asE+-L|9fC z+(metox3@64jBz3kv_sM27IavmO86cV^NypbG?UwHO_r4gZ>R4Xv;35zFRc>oh6`j`pstQC1F1$fp8$oSo)xTJ9*1Wvv|Dd zP;sH;r1rM&x`P}Trznv7F>eXK3y>U~;D4!}8>IGx1 z#~4-ZyB;d*$(Q*D5?J44bl>*dy3GwP>4^#OBT`)-fcrr%$hmJb&^Ktv)!MVU(WCYhoCU7uv?tSJrjL;+ zLhO^?lZItOeStX&9sQQaXGNzzs8e|@kydn--GV`jUzqqkzX`bxB>IIYk80H&$Y}C> zNib#Hv5FE87{$-7fFZ9_36gM0d-pLAwzjEGY%BO+>Zqzwao|EkuMPLT$U0Q6 z5X5A-@#Ov*N&rbmZC-UflB=p;f2#CMkW#sz zluA{3&{>2m6gw&DtNST@jVveZjYE?wBgyc-toT-VjwL2&F&B&;057L0V!l5sA`5db znOGhbsl`Ff_#4o{Wn+|T_4W83>|hCSI0Fp~yIl-WDgpS=f=wsTAjkVbg<#P5Fj*)s zqAyC6&Z*H9#P_%>Lqz@1PvU`l>g`h`iSS{>C}Ik`bIwZBM)UTZbTTta56-XfkceVX zLNwOBL8YSZ6&DEhT2BNu)y)sBK?OI98Uk>AM6=hJdLGxOb@%d~YE9E-95F=GMtS>% z;20<6KedTEigCGxl>+G4Vr5KE_#bdCK;7kTgA!d(hU57R*Y}9u7=Det7Xdf38c1`x zO(`x#(-VnuF-Hzg$7sa-j66Li@=qiO&2FOaK}Cg9Rncd(YJ>})9k?U zAq(Y=_rMAj7U)Ilkt-wh!A&~OL(TQH`OXVru2$Z01ghR8)1B%8;UKo2igHQ+HSn|7;)nv^ID|3ta-(-9(WsoTI|sq|&9y@cMR z<7iHsgtLi=k|QYZs;Z~_v(l!-E&z0S2Eu9X#vPn8uy~?AWsnsXu0TN)cvfme-Z7+c z@9+cx4`+eVXkU)jFjM1H3G<---f0UT%)wB^+LuxcQU~$Cy-?08=~q98#|)aJnB=!f zEWZ;7x9AgGKg7F3qAGBb5)a3qrxsb97|ZX$X%%3^UVRQWXtzo-ZTi4Lptb0`90o)d zNBUQwf|kA*<9FhZ4KqZzf0{Il0Wl`QY>kvYjKu~x2p-e;)GYI*59xyq*StZb-&*pP-4e26jWS$|TA0!Knl(D(-DBkA514#oa z&Oj*u#t^u;#;|-@U-A(r?Fo=v+ZVyW;#{(6T!5;@eH<&v?Yc~@>}WN|x-!pCiDeYa zA~87biDKROvMn7g6c3p3N*cs%pa9aGu3kt8#%g6zEd=~2$xsWkZSo~N=P#@sFPmgXo2^R1qfp29ye$>ln^fN>_b5O^x?#s*tTbJpC_TCWH zPgI-qjT0q}-S$fZgX9wBd@x8PVKkuw3-KTxoXODdOP}wTho`yv;$1*!iGheoAy_b; zT`EfJRY3L_PhV=6#K#VakzPs*PHMu)7#?SrO&8u|PfBxydU*Jhe<7OglEu5Q&Azb~vdEubVVLw%!~g z0D6To?_oPJWU1A-UsFrWFj|G`h>->^P4{pa3D!t+iy=TGNyhr7EeDAB z=fFWQThg~{vc#RNCwBm?-z>_K>+U2QDX2bvT*7AAiRH#0f|E!%jRxg*>+jZ_O4s@i zrxP(IeRMUz-D^lu>OOiR&1%0yyol({$4udLB*kNlG4tq0i~p1Btpsdta(hMs3GQqH}}}ohfwg=$B-vAwruS zo4}|3_*llnFmV-%IHY_5c)KKz(X=Gz2n0>yGn-()%3y#RF^C(YjEQXj-&dmWk-3Zk%2VJpVX^=#I~*mIdVj!Kf^~UH9+D zFkcln^;Z;g@RWZ3Db@v9)+?U@oLs2#V_Ay0msk8pelE5*593(i zlqYV6g`kWfLN@iwEt&4k+|eMRYh|7+9Uz=$ z{Xf6w$K8U`J3zAgk+gFW$Ni0T2nYc>6Cx`)d2p%*1X;}q#ZKQI4C3@=TcuzN@cEkl z_kty=LX65dn~_M2SQ#>GhV%+&aIq}8S_05|Gbg279uQajFnu>p8^j4)Hpyy;vF6X< z73RNMFw@GO>ITL<8083-l55~jB(3biiPssEi_cMGNEe(S00LFLnNOT^mPj%x47g_T+NSsf2r!63c4(GMA0{Uja6V0iM_}!8DU;y_b6pS%(Pvs^ zvE8Uo1uQOx`mPuR2nY#fZ)zlgENQgL$*4g2)$nY0Z(zH<=tc5o^^6D$5Tb^&CxM<0 zr?^uV!O=;zm|(VnKLkc~&fP51%=j;X#_A%KP-vGV-T|ipI#*bB~ zM2PUKHHPR8$xQTOMrr@i9ic=nrawsn4eGO>fIHhlJCg{{P0FhU!nEb|E{xp*6G!gA z3ZhcuOejZ19WWOQ`ED-Ac%sjk1OqruAJL^4!mnQ-i|P!pRX4_JB|(FjA4|un0JA;P zpgiZC9%5(dOYR0kjNoP-HlwF6{)jGs)EiwZp_h>Y(j<|NzUhE7a101)GBjQu&+6{* z(;CFwUS4irPK7j(i_gUS;xS1eNg7@2gl!;^luM*tu{VU~Ye<2c;LLHeR76bF>oY}t zNQ;v#Tmy|sbM8w_n=6kk!uA&fQFveKeccq>>J+#^MY3~xry+xAB8%_$&jVQ+84>f# z8OJG+QjQ9ZA2tZ?pJs}5j3&KU-0LsUktTJyA~@13$#XerYDtz*=9>Gsy%){A+7~qm zy#9M7VvC99I;Xkdcf)XQE)=f9c~)7v26*z;5ZVumtYENk;)zxEaSDl9izU0@>4o6h zb^V{*l%><8+q5#oh~G^&t-j~S&w-ZWhG~eTD-_Dq!r2}t@2!EAOXxRHS)`LK2Vw}U zyW2U<(U;b*BO7%&>OLe53@L;n#kQV139=rH*nMWnd)b~pY29F2t!$c764fIcL2zQ% zh_GT)A?m)YC&1V+G3nZuf=fbLu3x(e<){;_zhcz(-dXNm(uO>)6P#7?vP}nn9qi2=RY+n1d`&=Ri8)5S&~L8VA1uw5Jy8;U6K=~{v zz=9>-mqm@S5B>*F)b=5Wlih@e(hTAfh_Kv)T5wu*N%|{YfYB)!miYaM&*+o|Ysd2k zF=Ca`D}bnqK5@Ggu}OT149FFE3=yH;Lm{M>+5OPN5p>E=BTIkc3>n7^MepT2@srVX z0h9Q&lKaHFO&xRwrvL%K|A==ZP+KlwTz+w}G~bI+$8;G@PyqL(WcAEQeJ>$3M7a7= zJLTzEAI~;Ek#bQg8qKzE%~3juSgCL&kV+()V9uPtzTutNbO#()LBP}=-wKJ)CXL`u zXQVmBM9p~YpScc{Gv*>{X#Ont_$(l}1DxIo&u~jptMb?#Iz(j<6M~cHRcWq{QlS?U zH=$ddX?bvrxHr|+C+NW;_1c7PXZCkajva{Z?we`FIIi9-Ayn0r=Es1}?&=HPOSSbl zBMae-yxvgGt7~tZnPWu$)q0Hci8N?yZ|20=^7V#v6?#4?kHM8?at%a}dn&`PG!F=@ z>q}3RvQ=ofh**2FESn)_>>znkl1qb0U8k$(8e(*CCJx7Sqkf1!n-!GNB_sAoT9+=Z zhuGUlm$zLV=y0jV!)KQ)T|4>D7km~0cvO2Q{v7rFY;%9hrBBJdroOD_&wS!XS^CVq z54tw{Ua$I^ZcdH3#adDonO5oTpS}$ZRJ)I7EU|u=e=xMCq9l9rYrBv)d!-`msz!P< zB4hKftR&%`@dxP}A9{Y2jzT`OcO`wf_aMqJ+TyEI~?RI+kba!SN* zA%}51OZ$U;TD(YJlBs?$_zpbg9Pv%Ldrz`|y?)+@8@_qm{L{XEL*?U*wG9eM9&*?_cdctUF3dWR=y& zY)ig?JUTU>*F9>hLvDDIQ=fdeF(_PmLUL$Rck}g#txbQGkt0Q(zHkC=)lnmPj`q__ z5$>}nqT6PQe0pnB>-m#&rJ{fX{1v*=?$8WLY^e6`F4Ku*L~-uqhNkHSC$rPMfdAT~ zzvo9*xBO1hCss6naI)GnZ*F}^x1}JAu@f+!o?q(#P2&5`xaKI0x|4*6SAM{&xFES6 z6Foj0ds1~V*?fc%f5O>ts=aapW53)^iHu)#s?rpD;?l+=!d041NIER}pk>oo^EDG! z>5}p^w(Txz6mR85p8D~w^ZS3$SovXlPxE2pzFco#$oi}EIAIHztg~FL<2faA>nH$P zNpsDEqDP@SCqHfTO*8ncJj%S>Ra*b< zC#_TYO#WWGJ!H?grS3eh(Mpb5b!-3e-o0|SQe_YJ4jh$Y`(T;MqPulHG4=p~sj-Eg9?yA$zHymyqJWOINA7H|F`ZcD5SKPAxE~rfqKQ53rU>z@^QJJt*#>h^k4SK68h6|? zJWz&>MqWObyy`$WZ=339UDub7{G-(t^!+`YR@Hg-nCD#R=EpypjxP!8I2&0Oj82su z)-qO(&<+z{xaDBT}hsM^Io;+YezYS_~bLC?R`CyY4{RQHz$O`D+l zwYU##w*o6$I?REEMTZhv+9J1!0O4K!0XJSAdgvcBOqVdXm%u^uT*E&1G|b&vNY2!O z0cg#^OyMWVWo_SwNv%Mkt2|_$x&pzM#1-n_>e-R@cIjFNOy)2HcR=`p_p8 z&}Td$YJato@E0_5HV!sU?@)o~9MtT)!v{7cM*BTrDarFi)Vk_&-*0cW_+cvM-r;C^ z@`RZ_j5TfTF~ogi?>&bGh`Vef~@L3`6S17gtWSJ&9*e=fFrkD(DE^#}rm@9C5+?>hMfQ20o=%Z-ELV4Lotri*O zf|sgjk7gU>c_DbCLEw=D*u;7Cg9^(+b@~^_5hJ!Czh{3&Mfpsb< zn9)p2?68w6hx3Rrao|ZL7YbA|m|H|X@*|RyrS`mO(U-n2$m5qMPvA3qTdBSkl|&|J z9`9~N^S&1Ql+OV-DRI8eGBekgD&0ZiZqUQCRndV#SBbQB9L&037j(=a3*2DWrw~2U zM~187-gWY6Q)dTnf_j&;`Z0srRL#(2SK zU~^JlNXp-Eb{-UX6z|oPp)@(rx_gQ%iR?_b1e3CbK|)dvR@ATzIs8eoN*c{-E;3I7 zw?1|l!)sC4tn~OFwZVaDAL`Qz%K|x{=f%AuE_ho;jvtd7`3@Z7jUnt~7&$(YPcaYS z-{!d0fs7)b^vk{P=7byF5naPU8e z{JZ#}ug8rvRs<)!b|m0}hjj8ko*~quY_p9U*|%8tmM-S|S+&XJySQa(|7hSoOE2{n z%SYT~r)^R62d`z-%Q}@D3s=@}1Zai8ieKhiBn)VzVY%z&{5TvI^s*qqq>jZs_?$Nb zvW2${k_LcN6J45Ci>b zjEgiso)#Dluf&W|QoA7)?e$H=b-tt#+FTD5QR_WDRX(O=?4TJ~%On06k7(1UDBH&WulT{w!?4Sx0dp*U#BlvT@hzBdz2aIN>5^st?riEZAa5?U=H|RY15_OYL-|Y>bA@M1Ymjz*Y1s=>bs0PC?fN+J%nsHg%ACWug@ z9gfF|GzxO>HLA!CH{oQ#6hMSO3FC31X1`qnz=?6%!d+jpAsBAQ5HMjPFsNY8&Rl{nAi7EBhJFv zxK9g85@2LefxcD+A657qy5=_`qCC>jig9SCipoQo@1SIXirNm)f`N@y2*kQX18)Z; zH}B?2X*q-mr-IYw(L#aX1P^82Vs61!Pz^>rLP;mQK2uK0Y&+2o3JOq|XxLe0rzNAi zf#=Cal)4%b3|ir6jATNni8$1gtlsAFKV>Ij&9TfPdOn-ASp`RXdNxc+sZt<#zn5gh z$UK~!Uj*H+i7mt6Mh#p`fF5{A;BByJj8$5*P)`8n0PQFM3lJ(@7o>2;EChp!oq?k` zDLQ~nJh?Iqibr=nVX;;skWE3AU?DjeIO7GqoG`hclZ|!?s@na;9#aGgB$qjpDya&A zXm|K>jJEhi(2vbx+qpcxbz{W7y?O`2CN1_xh65tnM!hhmGj?~X2~2vE{+a#*^ZT>PH@zg}8pbn<>L zc`v&CN{whbE%1RZbO?YE!}>&=mWPA10Qe0X`6qya;*q~DO?=r5?!(--Bc3}MXSiQNJ^3?a^GPv5upm3li#vwU2bp@mNN(O z)8W)zx2OMk36@txO+(77@vvl+Ug1fID5IuGI9)aEz0>rU&(TgHzDZc@UJr?RDgSpb zd^5%WyQy1({Z_cvKJ(0x^*o@y(awB}(Fr?sxRh>pB@0x{wfr!IPs!cP?VC?4_V~ZF zt{31lB2>}*Pa);u*s;{vF#ttA6#I7oE&4W?fgUzelF~VaC%pdY^C=~tP{c=KFRx$p ztAqKOi1LaZoL(%Pb68l^${|$m``?A1eO_Fa8dh*ikTk@9aeJ1;J~IiI&z~OFhX#p0 z6Z%Sst%71v6fAuuFf^Yy?+IK!;=9B?Q$lo>qES9Yi+(?nyw?6S5~gmj|IF)q_U`6D zTo>Bqj3{=}pv@Hf`>)ml)XQUqm2Ic-W!y9At3nObE9t@wD)Nc%lilgUu^lCUOzkKM zL_;2ctQ5TPM$p=+*3(bYQyzc#^JU}8dH-8U4i;_zN@@U7-pK#!ld(s`uj)b}iM-(E z>Km?-(3s!p{0QOaNsQ?Md1;-iFrR|}?bK)G*BjSNi&?OCd1>h9Kht);N<#yiN}1O0 zQvF&ZMZz_+cCNbCxYjVbCMa07dU=_Cc}l#B-Q;AgQmv1YRj&EG>fHO4zrC)y{(7DN zo06}B>Bl_+>(MIn(Q5Dw4K3x_bm2n;Vd$H3dcMyv@W-vAuPW}Y|8(cB%Vhf1?XNT# zDPV+`cQm}m88-0smU@Wlw)1FTB+b^*uT_!k9>!@^Rp7B#RhZucI%kH{CwOXE>0$&< zLANHa;BF+ky3p5!$95#Ic$%V;W+SW=!aKDmtX{#Lg}}M?+M19Q)We{(`kU&sU@NoJ z6S?|N@{1ab<@fz`G20_ydfh6DH^nH*NQ!#VvKi@UEv1O zEi~|%2fiHg?$e{>PKeaf}D^&Xd=4|j|0Z8L6dq<+m`FDjbCT8`s zKMUvK^b^OlV5xr>^3K8#Dn|65A2T?yf@|?)DX?ed3R*q_4=yh+J{G$Ofnx3TU&_iC z+5hhSfihtK?`a$>nE6zd>CcaWuhi++BEGZ{)}XzAw4AhiDx_|oE&205Nk?q4#YjV( zkW8Q{k%d$v3dh>xzJ2qdt8Oio+_+Isdxf)}AymqCO1^#HsbzIvE~~$uzA#nw^s!cv zaOd#w>xQ=f~ou9ezi;v79w)dx5Qtx%YU%v9_#$BDWabharz3sN6bt`xM zK78;8W_@x9b?;xtHrkG@P%2qn>yJ~RPP_V{>}yg_lf6Bqlz&+{!{#ifCHt`bgTmpvQ-}tDO(cX4HIX6 zRk5QRN)BP{QIN~i`H((`0(6n0R;XhtOE{4d`L1p#|1r7K!`ewuvZWyKhROs(ALF*? znX4Z;Lk_E|mZ5%Eot&fg)0+mrs(tg`#%SNzQomX(U>)FhwKOchm601>8RH3W(fK}M z_7C8p?>gU$8>dbHoWa)c3Y_m{hDP(-Vmfwps)8@_8Q3F|#}i2$$rt`f8uxsafOUO} zhU7`;rZ;DvdssauV%3;W8W^bo*+&~3yF3*7NCZununUD&U8C>*r!WDDu$K0we@>@J zg44D`dp&3VL_;UA6%htduZtX4`LvXV=l>o>7{^vgXpcSh>ek{`ap~6}@=GpC~09@5#X@2?jKD z2xK0n*;7#3Hh%bBJ9wpz>_CINKn54v{l%Y$d`EZ;r(8=!-eZA6Nmt35UzQ#_ysob9 zI&H^-QwN_ubANd(HVpxDbpc1wK*`$%gXsG&-~Hvx|A0Y^*Eq5OSnl@#42?#Fc+1UY zhrlLhqz9#+7zy_RvujaM&>A7qeHRr&Nkb{C%C0w*yofvVBH@=8GoxMx-G%Q>d03+t z7#A-25}i7aUii`ZzT)zqAc^1J?AfO=f0mBTDD|uGryfxee=x72$M&jVFU}gJ``&y) z9w&G`fE^(5vtEQCkhh%g^X&PV?~#Dr&T!Ppf=1fl_#j;JXJr`^ax&=ri-$e@n<$GT zVY}_L`TzJoP_-^b81xZFF+#qIu_=6}HFMFsfWImV32-`}e{1%aH9W>bM<4z&$FGJl zeLgAQH7BTg;(oKd;6~HF4DtQY5B>oBBd0rnmv7G1%gott?~j~SySWilYllW)8oMoR zF72u?(B&67xA9g7w`i^+CU57#L3uzNE08CCm-OP{5?b$6b}2Wzgy{6)7d)7sb-b0o z0BPT59rQMreSIcd6FmLIr~Lh*Eo(}$IfvJ?h1(sh>6go%|KgK37Vt099ewNc?8aXO ze<}Yw6d`U5yHWI9`cc_zxrQ@usk-sNzSId)bXm-`pK>?G=HxnKoBKC*f8IU;)Sqw5 zSv-3b8;$cn@ttrHRGG18;Ksff@t1+^d#ZV}cQN>l+h70Em^{jUt2jr<*Q4ynEE5lQ1$Zu%rh!+4_*-6NQ3H` zxr3VP5xZ=2^Vw6yUQ5;q`L8Ty!61KL%CJUniOf@&>Zg+K7VApcdV$^&`-ri`=%2{a zyCS}HZuo(383HZQRlL6>L3@z;>w#HrY%Wq)c*7h-VjIo;CPaFD(^QvzEMol=5i#e- zYokSPByJJt8(nFZ=$(QU3TlmZ=^#9195*KZYH60qkZZU(a+k2o)sQPvG|k#BcMfLm z(0Z)Y9TlnjegBWWcMVG_i~qj&X2a&ZMFqt(9#T^)Jfl*9Xlj|EnNeEdA+s{Wva-ge z&6&&!%gPQ@bhf4gmX%FbfLc^mSXNfnU`IRC)XdmS4bT2R&viZb+xvchzXUEWu8ZGV zYp?ZN-|y!eaPh#=qr6O4dZJs%Z*Pya-CywTc>AlP?@o05_4eIK6CC;8*yXYCeXBL} z*Y~G-65hQ(ZJQAJ;rQaX=eKxY8On6h!Up$Atk`_}q@=o9t}yKPmd!T<{D%eNpuvW_ zlX)ky^;12c)STWB5y^X@^nKX1G>6}s84o&Rp47$O;@>(JjiZHhl;i~dWx0|T_8b-E zTrzW`A;jCan97^h_xGll=e~DylD^heTiBP{PIKcH*6Imy)~4!IcyC+jHM}?DkI6}c zY5RntR9o*&-eZ-hhfJVX-%R-Y!jgt0ZRySCzp=Szdxi;2*Ljr7o7V?;p7iV8|X5|uXpm@=N-?f?r~-Ip2WxpcYD0Yd|&#J*H?Kuhkr26k#_r2Tj%6J zm!e}xV3>`eNw%t_zxRE%ZAueG*jp#R>^BBaWQIx26O&&zf6%rF*PN!ue{3tI;kYjb zb4D>b^6~ypWTgo2QO#yedKh0!cBaVt1Y-QThRr$2f9#^4fz@@J*T-#fziV>cc))#Q z@@vT^p{u$lHfwcy-O`)x(G^nKy(=}1!{mh(SNKoO^d;63sxOMW@@Ve{nILFUgrqa! zQg6cwEZ>Qx-w=HrRJk5Qi97(8aH3epK%I)f;kTroePZXX2~el&N(N{M2>R`31uCI<$P7aj8_kNC6Z|tyByCi$~OUh4(i)6kZhOPug zz_^5pU@v#n$EC~wFT+2tK#ojK81`@}!FoDKe|L)At|}{o5b*^a>t_&?I&!8TU!X~x zXgAOQ_GJ%1$AS|l+7#Yj4W!8}sh;&wZUUw6fqp3bsazM#=6F4mh~OUC`Z={iLPRDM zuxfC9Y6VIR<6`$#twf%<#LXAj>xMIvmbItig?2fX?yw=BTjKSnU5SLF4Yh#MwOya# z3=$Z4qNZS0OfyJQGc+Q*#b<|A={pVxPGqP0+%^C^eJ!-*6~U~v!v*-|dpAt~I_NgU zP`km#`sFknZWb06{?sJ*tl8^wh_$kHMPswq*kyQt@lS2#9?nl_`@>xmvmpZ$lj3Il=aDqwy)s-$6; z%o$q<{A^dXSGL{#6`w36CCc6ZzwCWxb3u|lv7Sl&zX)8iX5}J&jfXX zj&ish6~$Pq;ocvm;A#EUn2>79viCS@M2jhK_}!drX%M)WM@)>%B`?y6cqu$>Y?@d( zzD4Pt(Lz7iHb@)&^#*vpRvT50cace+J#Zik){1zfhGU=kNY<%Eq7Rh zt*hh(T_SoaTNwXTPEBKq{Fie;mr(9lXSUUloyt`P*2~vVbeM~yQH4*?AYCdj!F+?< zqpz1fxh~ar3qOy#<2k)db_dc7Ux`@tdBZfj!mplzj_7NoeNNl&RiFa`>=;fsU*U6~ zB&6=JQ)Bu!SGb-v5X0*o=oD+P_ZCifa(OPO=p%SM z5>&EeHbofod3Wfq^n`&xYMQUezY>c{LyGH151?*at*Mv)lS6I>oUby|=R_)-Qq3zt z3Z*S~w%z)ADCNf+@y6f!4(I$C-okTPCV+T{S_zb0&-~WZn!=wp>JaoCgaZgXQuQ5I zQ=rcc2IRHe0POnigkY8omm-l*^=AkA-5Ua+w+y5>KM-dzXxSK7a#7Pha%?lmz&OT& zGGMWDSU?}Qm(JsI@X5Sa@y}WpFdFU=Z%D6lLO60l8wYMm>+ORp~@H1Z`*xH_=uW4FUoO?Xd$hJ%NutQzjSz8rIy@ zlfUZ8pcH>ZjD&f>cVzTYV!~YmJ&`N3%>!Q;sTmAtwuRnn$3p;Rh)Z$i7(uhWyb6We zrN~KU+>bxkU@;1*j-M4aR zN_r-x7K*`xVwYbrKdgiN$&sG>7aa?$CvrfV3_^0D8Fu;~Hu_dHXtb2@2vc-QQ`rSB zD*&K^K{q<^P9x=&lmy!0U;6zQxq)SNYEn>9v%a#>L&WBLZ%n zoiRU-3r(=+R7r7TFVwl`W=A2Tma6})2^8adl=i??NC@Ts5T(Y0!bP`df-5w zGN=_c+^cKQnP}uPXNFfh{f2`u5(P0VOBEM5YR8bO;4~xkmLATIhcZ#}Gb8Pg1J2&= zcF#b^n5K7n>HS8C%OE~Ck+V!|-pk-I0>CGZ=nR$>Icy}d%q`9UVesCK0?KAXs6Lqb2_^PjgQx=Pdn0jeKCPPzPqR_)qeOQp+->szT!X6; ztn*+%*#?U9cMf!tgT$D^1!Ce;6a6tar+#GvMm=5001Hr>MGTWwqd!UMyNrb2%J&4? z;Scupd=7r80cjQE5*+v!GFpZSyl1CBPK6&ED0!S|WCrCEhdfGF{&NU6Q_#|C*l45; zILJ)<=nOmQm5n@-1MLxKB|E&walpr%#yAt0Lm+Bo$WKzzb8M?)DtLs_551*r=WhDI zp;7^SBLh(ZxHJQ?*N)hw)M@}aS^|#zRTgW++Zgn6W9$V0`I+1FNkC@U@h7QkFF zKeg+2w%1>1Z}_!cCO}MfLXn9ulSA+j0^Q=cdk)GpyNbtIzAyuf8s&hq1Gpi&RL#B7lBYzmqS(O|?<`4MZ;+W0VPRFw$#{U>uql zs|QlVbi1s4Oe^gfXGT~rZmw-@m5hLqK*mcUSVmF*L+u9OFzN0%)4{h=GE<)(hk~>9 zlxs5NF$4eJ2Z}`ZWII+((bH{4LVyjtuBTVoSHF{z-1UYVCPV*c7-LsW&;#WUnlez* z5QE}l-21=?MRSPH4CE|(;d?IZ^tS_6E)ub-=siG2fc*&ug&qJodeR36nFZjaHpFTt zy|fWW0*m78O%qn(N7-cKqgrgb66Lu9-%Y`L)GUhiot+GaHNH z0R~Ot5MEq>jof1v2SJQdAK8f%L*6%1Jdca}8bM*{I}S6D(GJQ>F?5QHU>sMwnC2`u z5Smg5i6-Ez3|YYdXP~q$F}5tY)aB+yqgcvTfjIY1d2@byGAex2=R{oqEnCt8Px8e>+JYV)axE5;s*zXjN+RZh#bI0o51NZO1A)cF2iG+hwz_h`9|C( zBK^Jq_O^o|2Z^Ff!@u-OWfpTl&(!p&3#_cpkW$gWN@t z6~*pfXZ#!#PZYpU0eTF#5M!CnG$AKAP(~gO;{caQ@szWa$qexPg$oz| zz3|(7h`}L$mQws29nl78y8zi>gwnW2u5G2*#c=3zMt|gtF?)gAD6$eml}ibQGW^AZ zq$dWtT~EHHoe(4?z0;F94yZH*#yHRu81!ch0u+W9$RIt7Fy4R}5NPjg1N9EN|6Jf0 ziV)wLXxAZsJ@F+<#Y?Xz2?IkSJ4|lZ($lu_Y6W)HoF-p#3Vr?J**!^aMOg{wkov08p-jFvW&j z*FrnkuoC$U-4Y-pIFVx-fy)kLsep01=th0hiH$#yU3Q#4cTl`EM3O}bF+ka}o)Lzg zhY`pGJ8=I493#Un{RwGC;5UqzK5)~*fH_>k93zC65nnl|L8gb%T;d08|F`KTF3*PC zml1Nr*nY73)biVbQuqlr{O&R60*Zr6<_H+EV*IZddRqnwa~a`A0{;|Yl*~g31UE76 zh7rlPF_LBYAQQbP6Q3#rt~!tpvq`S!Vc0>=rh~bTzTBJ8e7H;S)iBXVxaWmZ7E_M8?oRV zeV2oDMMf<(;37GM3sM)ml;m|{p2|i#Zb#aUq%}rxj+E9aChfBS=^=(vIYhmQ^vdz) zW)t39M!7p>*YcM*vWWuM8!j6Sug8HaWypD{n|=c{K}LSfAcq<3&mc<;iUhqa90I!U z+mQw%#N&bhNbx^Fancs_V-(-0LWk^$Ne=0PR=zJQ=7y_~kj$ZdlNC)W#j)jGvseB) zJz^q0bHKEH=8H&Y^Db8w<@is3n(VjM@EXb@t`2qG@_u4%wB)O`W_L~3jDK1cR~3@? z*7Gs&#y(dMH`?(+f|=;z?{_^d_V0yTF3g)K{qCNpeR82JbHVqWpAWh2t9l$a*|JH{ zmt210=)KKbMx^du_)I!#i8@NJbzfkKE)^_)z0SvGx@PN`n&!9oLC~`N|Vpua%aUcWoZOQE<`yehb5O+Os0l#IVk-Nx^=3Yfo$D=fxICkf8j!B_% zi(G7Ng|{qxT77^(`guQI5ng`&%6iudo1I==FBfPJ(vA*d;SlB!*eB1X@d?ipm- zM;%`d&*TS$HWPL%{_TAErV!ciYk7h3b4b1Ce-BZ8`Pn0{wl6f156TmD z4`1!9T;3Y2@^TujbA2jzH-_$9SYZSy#is@jdABUFakiGe&d-MMj` z0>bG0^W{6GMu~?u*ta;0#nts^dCb#1$bnDRtJV&l7w~fvkLD!KrJnw$DHH4IcCRoxIu@f4R|8T-T^Rmqf4ap%3eY|K%aVeg4U2w>Q zSbJx1U4r$Yh8A)UDDF@qAqI4$AzDkz5A--OY$5%OuKgMv?A1oElD z+x4nv0*idE@w#S}n=&fX_7@HEI>mX_^r{MoHJt}OIZ#ca#0i;~GdoF}41^3*sb|kr zCQ@c!Uj>-qQ5;S5ZapqKuG4KI=l-Egu6hnHn9dpQ!+@ur^J}CF&*SFtx|4F2Y`wed zb=th-d*^eOpItg_oI{TH5NIMZ4NxyrfoG%gbKgb8NKC)w%N4`50#djRrCE&-Q3WjH z*4Nl23l2>-10#E#Xz zPlr?E#(LlU#cIM4?F!FiqnzD=;AutyRs6S$TfV@6--03~b`)tglW0Szu+jjob&Dg8 zLxp&hqjAeLO-Z%`P#R|%rl7!-Rh{vDtqrLXfVktI3|cdnvd9L`a+RUsN3OTbtL-FD z4>xB}LsSUYju+Xp=usR+q*x9H+Jy22CY=0)^hn`{1%k`h6{I3FdCZd`?9mBC>dXYh z`jGP15#_-@LSQjRo$$hj=6S)KF>z;n0;e5&JcWi&8rx6Xvi zw^?v$z!W~c4RQ|r&=P>iUXtFFhUjrD@16NR-@gC?ZYOemA>&Sg9bQ?Q%Dp3BpG%VE zPVR+6n;6iE9iICgy6F{j=LEtfzJ`xic zLOOzv0`4FoCX%#v6ge$x5Y0o+j+CM9CiI?nRQLX$gGQ0c|JjK23B7-9QBd%Qr@)M5 zVZj_I(Hgk^ZXc#;ao`xZe`W<#N;~j#g~aQTis;0AVj>{KZ8h3RX*|N|Ga%`Dp^`Ak zM4Kc7NFUvvj!7}x99wNdOdN;^Y-`;iQB&Y4*R}Y8b5moDxENb5J*UaO^P_6nvAJUx&V2Cb{<$m5PE^xxGuwa;C;Iv% z9e2B)k^+w$j+mnOpsfF+3%+_{QA?a&Baq6^rOZFOZ>9qjM5SKalYA&oG_AL!aN~pY zY0UGB91D$qJzBMEm7In9tPN-9=V7Z#&@HrTu4g!;9tDv$(T|oQz5_2jmQzbOmC82Y z;iv!lXjOV$jN{*cm#?ldI5s%5wi0aPW(0&YppI2X370grhq;&B16~LQ>KCk}L|q!` zXE!svvcKi{I*7^QW51uBR@=7r;>TT!BL;du=F?_MWzyK41J{=)-Eoc`p`uykE`>D- zcUE&0-pmq4iSKfo=d_Re#zee|eciXG`NX}$rw3kE%*m%>x@JMX8P_*0pH`sP#qByu z5D($pYp;*QvWQ*Ob_;y{#KJ3yPd{(e*1Z@pe&u!Lf+0(J?cM3OmiG`-9#=X$S}gCA zD<@st7sN5QKmOUV#bxz-l6Lr25&?3nky_Us6%uFvx0L?1#B0Qjj^4E=Rz1A2`^&m* zOj=FAqKBQQ|LR%-L>$5%#{GsD5dq`Or^i38y?ms@w8#}yd(`Dt2j<3%z+a5P<6^*^~lXEOKe5bBV zP*Yg}wVs^EZHbX3#tQyv}&JV~`wZN9oNNK~p#- z5XFQYg3z=lD;yNIyzJ0x{jnM!fLxDKPeKwH)X1D;ky0O`ZQfG z%fCw=BE=;ag#|LYv$8E>S4CK+BCSplhT`&Twu~-vreeU z`50(E{SVH&EA=J`%piBUfZ^X!Vn>*51=ip5;Qqqj|T34S4uxJsa+iJ2H`wvvSJ z5VDHf($eKXp;!}70$=!;SuF}I4||l|TA0+WyP>Fbs9pPacrnx%K(e-9p{`^3NfiOM ztYxR<7|?iOrgp}#Vs(d;b%c+z;;yuY+&C3?<8+;Tv{f_Hgd6>jfTf4Zc-j@s+YHCH zc#)v<|7ez1XyT2Nb~l5e;p&xa?UEsQk`-V{l`Gi9k&)UWHpP#ls^k%u*$DO5fD)c| zNqA3{PU$X|$6D3rJK(VnVDdv$WY8||$5TjY)*EQ*Fg#s~Q~Js?7HY0OT)Q|>Qxy)i zl%1z@HPu|=vT*H+3Ve{EyLKI6J{N-5p7G@=s+$RoFPfOc3ZaRxLW1A&g1nWcO>^W- z-7b#}*XGqK++M6DTGb2nN*76(zgRxXPMF7lhK_CVti{bn;RG%?Wji=3oH$o7ak3eV zYj)zxWZJ_Gtke+vG6`O}D;}x9kfa(3TlKYTi|4RnkxqS}l86%e7sd>ycxBae|0i~E5i&&iFO)GN5kpKxabIeDDp&SpOu7*R`j?OXrXzTTdH zw0tkzyR~^!l5+jxIT$m+%W-nXh=Seyy`?{z=EvVDQ%|3<`ks#z9AzYw zx8D|2o}9nve%YA^zqIGpoxxJYaTvciK@z#or=XE0UXrOn!XGRpfO!&aRE6mmZvWA~ zdn-Ro3t_94it(PtTbt+wK4VV@PVTJ_da&(>wm5#mZb$A?!gxPDFjJ~c9s-<8W|WQU zpL_7Q&*VD+)(7=3@6G#yYd?=;3+}s}dGu@dqho}_Ud>K*Rk(I3R}!`d~Zo8=YowBbkPR`e^duPR(!z8ail=&4~7i*u)trK-v&1xjhw zts2cZ-c4KD{}6X&Z0$mxk|o9E_YW-ThsR4g6RjEJ&f6u`$-a4K+N@=B0${c&}zs(3Fj9k4IfJ+_(UzC#$Sl!%1|ma!#S-?moP zdUV#|-;w2W`Uk2j@bq%#r($)vSUWmYF(Z?>grmKAoDkZNMze3$ux;@YIlv-f)aE6_ zSpHYLd*m01{>fUJ34c8wEBNyqFL@&8F~&H~wW7g16*efAvbA%Plm|2A(*6ONL=_xv zrZLnDt=1YbF;xtV6~pb5wUQwmOQ#c&h>TFUg01vwmPa_$OAOB@FwDOg(86KO5&==B zdmLYWt%_Sbz4@`LL3#aRk#D%VdPpO)5;}M3*EsOtIPGGdDp(?qK{Xa8adCw+_w9M-JLcW5ejgsF~66cmq-h^!BM~ZF;3N__AzFn|GNqaDN-2TRKmXTS7{i&C z8^ZS&f^#Y~Q`i`DjF_U66KsUab?9Ug4z5 z1ud%i0`2r+)wo&(S%&xfd+e%kHQoxkv_oz5cSRi7OQ()!5nuQd=Q-R<#BdIWfbqVc zuf|Q3zM02S=kcHm9&Z$h!%ELw_ON=HMB%2F2iriUq}Ssf&I=t)k`h+w@Wcw`-0++9 z{x=2wDz|>H^pt$wD3Alxi*z7+STkRya04{U^r{dPm={irW5_XFYI$u=j@K^*9{5c} z9Ks49%H+GAkmH8onieRTf9USKs;uRA(<|>#K|s!sx0DI9`lg?EN&EvqqQv7o1hwB$6S1{mc zbPnqkZcd9P36LMO$nr>9Vdhu|R5ch{<)8UKVBRz-I@YSm4_COd)fgF^Fa%Xw*OQIV zN+W^D0HY<^9LA~e%!;y1?Ks`^tRujbTCGrz^1n?W*;KWdxMeE7nv1_KRxY-~>6~u? zE%N$DU~r}um=h5+N{#@kZQ`w*3K{j>?!Qi;@YU|=FO(508WDDoHoJ%HADn*6x@kipnWOBv>AmDxAunPCTYf=3 z_lj!TyXB45V49ZhnJ*i=aB7Lp#V2`rJ0oz!mc+6CZOzX^aU{divnqCe@q$?%9{k!6 z@$y@A4Rmo=t5>dU=(0=AZ(xeJ%Wi) z9z(?l*VQBy(=xEbE$^8=cEbp+As2~E(dn;YgjB|a`1iWtTfBE|cQfE1dV(AA=jOZX zHsS{zs!&Hoa6_<1!vV;B@^@|@ZGzxA%`2j|fpzIVId6zv4{vCnx`~QWpLA~Bw0*4NbqT8~Q3%wHBW{hNOsVAanDy0Vyd!sV zx&(n%Iondb!si^-)`zgR}3;KmfhW^3u$=7SM zH>4cRZbZj?=ole2Um^q506i^{7Gy8e);;N4}@PSr5J+$0zroFO`%7#?$FkVGE#%E2xJy zB!BeXXGTX#TPN}#y$_n270n2=Ch7FtX8J7MQW~SA`gsrQ*tOF{c*Kt{3fAG;C?w^E zNvH_3V>)loixuu#x~@a%*z%$5xvzX2*ElJ8nM^9GJ6roj3zZq_mv9xh!K92azT8%i ze9+^*-aJ~5YglXqU|H>z#D+d(Y7|HuW5*?w2-Pgw%SjiK11VEmEUZ&T_2{}lT4}fl zf6q=_8h$0|diDBI4N>X$Ytz@ILHIe9&k+xaQxJL|TT<4#&apkfx-gVQfMqgl zmb-Cf&J~}Vu>PVHvo=@#*d_pfVro)b3@ISc}hKp-xhcxWF&G3P}ND=3m zn;lhKGs|Prv!&sY3m?Xo+KDTo_Cuo$X4*c-`DyHD?yrW^ZvPA;V%qVFj7g7Z8vyEJ zMk<6z(^5tk17k7yCs~jh(&efY>qSK#g8D9q*egdwcl?-TP8qQ~BLpMJEr;Zn74KaZS zB`udb@t!=X&z*L~^Vx$NlG$5{E{t^k?p$(uNbqrPxH=IQVn^sypT#ygMoC(y!j&L3 zA+{fPqO}aiM)HM!Rv_e3~qsPs>H4FfHzd zPP7(dhxs{Bczk$Q^0-`F@Oy>tc9|Ku(n@=JtHf`UAeC?cM51f#a0th|k#8WD?doJs zdkg?7;%q6%jN8t9#Z7-8v&o}$ogU+5t_Y8zV1^4Y zU2eL^1Q?e$e?Q_%GP4UB=@mnpwizX^=2$w-D09T8dqY zJ212iY+Rp#=N}&f02x$wQpN?3Fy3KyFa@o-|s(<+(@-4?T9-rl3l5HwbBV z0?scGd~Sm;IX`yE-I5kSa)j_+oZ%+8}G#SleF)tiR}WPU7e9UA@P7B zsYT(AG5#vd@%oIxY&}s#(=?>`< zz+@`pZRV3V0k_(qApDJ3mORLy49^4_misgwlogREFlEf6O!}(;&Bl|l?l$r3Eij+)cPz4xd zO!aFJnEiH<$sn`I{NzuISA!f&q))6-`tWcG9m+L&MklK?QEI__SX8Fjqf8z?-0vYZ zlXeMX>y)7_a^GWSvK{qk?~HY#<}j7=Caa5Ft4xeb^<{#`e9fNua;|QJ2j2`8SyJLe zL3ODqOeK?t`txV?O`dg+o=GqVo70-W*UgnrMT-%QWbE90AmBWj_P1F7z| z21uafF zlx-f}1toQe628j!N&pN)#}%NL+5iurGX;fCcZkAFSV}I)>*%aHp$x_n8ovY49nkzP zXjF}y!kCn3SB@H%mJ%!}-z|`?i&_W9w}}!Ppd>U^@uSnXLzHdXOX(LTv_bq1WlE*e zmtC*5qco0ki%k@nFJD&%1eJ}9l8r?4KuEhXsYR5~V}_kfVNky)scUaCnwm9a3fk3~ zY*lVbhL{43oeA-37DSNVl8?z_Iv{@E{KP25wKLcSC=k>q3QI#Z6HK8)cnb6J_%Z;a z7)MC~uEOLc4rmJ05#u_Oj0;k1qTnF__rk&laA)I1vAfKYm${X(LH@i0J_n$<5H!;cxH~Mb zP0Ex8QBpWaYQ`m_PzoR7_ors2Q-do-DNUV0Y*T<(l+=QG)|JUUsh}PFbw?*}S7&^O znHnb_jX#nc9u{sJBuQo_JKIG;43Hp6O=wW2m_$h(P>4XlWH(r3oq;m6v{yMM+~k_C zNMWRs4&0~g!W}7y;`iYCT}AvpA)yS6XN%YsfG1vw{gUk&IpErpq>wkfuFf%l+;ZNW zcno9KiN=_2jn4+6+JindsNk={gbq=P1IMfce4><18$|KVqTotEc0#$OOT-1_tLlLW zo$~SqkThT#lldmGOF6nhP8r&tDMS4#m6x}Q5;GM<{#`eG=f8EB#(TX_*;<}pln3J` z-kLggNdD^kQBM2EqzYwX^JX|i9@>Qw?K|Tnojxt5M#_i822pahqJv_^;i0hu=J!<_ zS=B_6g`Ah^JT>X%zXP1PpWP$xaPwGc&&f$5dWkV)>Qt zA{tkY{5v?F33?j9-~rH+XU+sbwodNqd(2G*dg4ePhBu!9o3@Y-gL@!zMB8;6OJd^pUDaa&>NHcY~S{EOx4&E%>-ioqNxhr>< zM+L}vfV%gYIc?Z-1v2`dBDF%FG+clT#4=b}O>$P$AiW`aCpnXr4|YdN4?5Mkblf$->~B!tK#E@9{O>*=B0HfY~Mwd~arPX) ztNHoBR{HzcAcJ|l(&9zfLt45t+!+l-lA z0t(;j$8a{SCj(p09(15{)~SyDCm^a;Q2lWud*m6vL7tU%n%?B{9iTQRt~x2mtX)P4 z8P3$B{trw)ZN#t27+!h!@6C;X`rX7VCwgpRErl~IwhO4oy04CPCl3H_bu(L!+*g;j z`#dtOJv^)ks9ZOG#^3uAJ=SslR#^gg(YbtcNVdgwI09p+b5shqj%fJ-RQ>A;VGmm8 z-ZjrXovuz)??30C;?>e7pd3rw>|>?HdC6}iu3rq(ijp>eaUXF;ux`!y+sDwg{23ee z|GjxK?Uy;jiZ%4jpS4DoylqJby zR~{W&Nn_x*JC!aS0IK?%+ET@tYfcJL;_DvmeRq>0X;4mCMG61*%U#*Nnb|~cQcFLo zb^_!V?G^m(KHh0mQ<65ecG^pz>E_i#K6pcE`^iftdYyOc(r@bz1B>|E>o&d#EwcEw zEs4QS1$-~J0fEMy6s<0Nwb_q=5@7 zoGB(^hsmV_>vWm}OkfCr7ofOGLwTQR#THd#4pUe+y|*82{6|JFv?P_0levn@b!n2E zj!R8lX|woc!`y3gzF(WVi9T#}Ial|~hs`^7cIsT?ZuKQixl_^c-Eq6|1W-p)B*MGX$?NnZW z06f_Fz1wB=qj}#)U8w8X$$$J95a$0l%}A46`SED~#Q~SGUE{A6R(ep&r!&sd4~r5nF)>Tw}FeZBhOwoA4z z{4Dmxu6cZ6i;4Y0(ey`|4+_{fejoDuF*N7Dw|jo>eq49^!s>_bE?QH@nFGfE5q9~H z#fkB8m%k*gNoWv$TBeJ?VD`1iy+h>vW5)koYNdsL``bw+A&ymlZ(E~c2z_@6sUf?* z1(WCuA-l)y+b(45m;C$t`2SvC{_oTHG6x_Sy8B>pfcfWtzPD~SE3b~%x&%&W;zjRU z@8QQ?t}9lSWNZu&YM4oz%Ca_x8%HTwVhbJ^0PC;!dsWg(v5lKbIU2^$y+2-@at-jcw8M z?ssfoI`4L53n*Ea)Zt>^gNbt}KTPFWQ;+h_Gp ze}5Xhx@~+w>p#!Fet!Mn@}4zooTEOJe!2{jqiiO~wPv&l?^S6t69XH>F@vWbMT{Xw z_lP^`N$-s&*HjPuPBe?)^4Bbp4_W`=iHwusM$cC zmAas<@oI2mcHXrSxzB~9FtzSZmS%L>o$HaUJ$aKZ9jMEj7_ojJuP6Fi)ZL!lrtH(# zV;@%Dy_q<;i`2t;cI@u0l+S4~93b!;o`46OK$Is?2XFv30Fa!3^PBbar>j^~dDZtq zt8uSOK$P_Ta0YHdr`lzq3C-QF%}{$f>AePyPyvOy$Jw~5!K?oK+K#Wa)rywNz9nxv zJl-nwYhuG}%~_j^mBs)4^I__vDSIv#yBDqU-8+$t?4vCbu8 z;*(2VLzWBI@1iZr@Ao}FlWCORP;a}xfbnGyb=G^q+ReF!^ulvnMtv!qm{`3&?xJn4 z@?Ms3=6^e` zeN^>vM0qDnqX`fOvy1D#2$*Yp1Ayg?8){MpE0SXHbE z{*sa&Zf591T1aRQ=S4l3r#oR(82OeVZ^&`u-{l0qTg~p2g|Cjv#e(=Bl zmxN=}!{z^-9(jQC$GhJB=?wwSye@{-vByP`P-$v$Z8W%O@UaW}!e#rf`umMv-#xT=^Hw? zS0)F3i{5iXem%Ei#g7jOCvR*xJ!7_`k)iXZ3ET^OV+3Spz4lXF(fT2v_tuu|Ypa7- zKa*-%`1<-*=~w@z&rWn0O&8>(3!Etlkzhvi@L*3`h`1Wf+@m!&BDEsY#b_QzgbL0g RZ$KpwaW$HU2S*;Z1_1g&f6M>? literal 0 HcmV?d00001 diff --git a/docs/demo/offline-search.tape b/docs/demo/offline-search.tape new file mode 100644 index 0000000..ebe3586 --- /dev/null +++ b/docs/demo/offline-search.tape @@ -0,0 +1,16 @@ +Output docs/demo/offline-search.gif +Set Shell "bash" +Set FontSize 14 +Set Width 1400 +Set Height 190 +Set Padding 24 +Set Theme "Catppuccin Mocha" +Set TypingSpeed 40ms +Hide +Type `export PS1='$ ' PATH="$PWD/target/release:$PATH"` Enter +Type "clear" Enter +Show +Type `repository-intelligence --hybrid evaluation/corpus "index header" --top 3` +Sleep 300ms +Enter +Sleep 4s diff --git a/src/main.rs b/src/main.rs index 7379251..045ab12 100644 --- a/src/main.rs +++ b/src/main.rs @@ -26,6 +26,15 @@ fn main() { } let mut args = raw_args.into_iter(); let mode = args.next().unwrap_or_else(|| ".".into()); + let parsed = match extract_top(args.collect()) { + Ok(parsed) => parsed, + Err(error) => { + eprintln!("error: {error}"); + std::process::exit(2); + } + }; + let top = parsed.0; + let mut args = parsed.1.into_iter(); match mode.as_str() { "--help" | "-h" => { println!("Usage: repository-intelligence [OPTIONS] [query...]"); @@ -46,6 +55,7 @@ fn main() { println!(" --analytics [repo] Print index statistics"); println!(" --serve [address] [repo] Start local HTTP service (default: 127.0.0.1:8080)"); println!(" --embedding Embedding provider (hash or nomic)"); + println!(" --top Limit printed search results (positive integer)"); println!(" --help, -h Print this help message"); } "--answer" => answer_command(&mut args, false), @@ -81,7 +91,11 @@ fn main() { .unwrap_or_else(|| ".repository-intelligence/index.ri".into()); let query = args.collect::>().join(" "); let index = Index::load_from(Path::new(&index_path)).expect("load index"); - for item in index.search_evidence(&query, 10, RetrievalMode::Hybrid) { + for item in index + .search_evidence(&query, 10, RetrievalMode::Hybrid) + .into_iter() + .take(top.unwrap_or(usize::MAX)) + { println!( "{}\t{:.6}\t{}", item.citation(), @@ -99,7 +113,11 @@ fn main() { let repository = args.next().unwrap_or_else(|| ".".into()); let query = args.collect::>().join(" "); let index = Index::build(Path::new(&repository)).expect("index repository"); - for item in index.search_evidence(&query, 10, retrieval) { + for item in index + .search_evidence(&query, 10, retrieval) + .into_iter() + .take(top.unwrap_or(usize::MAX)) + { println!( "{}\t{:.6}\t{}", item.citation(), @@ -112,7 +130,11 @@ fn main() { let repository = args.next().unwrap_or_else(|| ".".into()); let query = args.collect::>().join(" "); let index = Index::build(Path::new(&repository)).expect("index repository"); - for commit in index.search_commits(&query, 10) { + for commit in index + .search_commits(&query, 10) + .into_iter() + .take(top.unwrap_or(usize::MAX)) + { println!("{}\t{}\t{}", commit.sha, commit.date, commit.subject); } } @@ -123,13 +145,43 @@ fn main() { std::process::exit(2); } let index = Index::build(Path::new(&mode)).expect("index repository"); - for hit in index.search(&query, 10) { + for hit in index + .search(&query, 10) + .into_iter() + .take(top.unwrap_or(usize::MAX)) + { println!("{}:{}\t{}", hit.path.display(), hit.line, hit.text.trim()); } } } } +fn extract_top(args: Vec) -> Result<(Option, Vec), String> { + let mut top = None; + let mut remaining = Vec::with_capacity(args.len()); + let mut iter = args.into_iter(); + while let Some(arg) = iter.next() { + if arg == "--top" { + if top.is_some() { + return Err("--top may be specified only once".into()); + } + let value = iter + .next() + .ok_or_else(|| "--top requires a positive integer".to_owned())?; + let parsed = value + .parse::() + .map_err(|_| "--top requires a positive integer".to_owned())?; + if parsed == 0 { + return Err("--top must be greater than 0".into()); + } + top = Some(parsed); + } else { + remaining.push(arg); + } + } + Ok((top, remaining)) +} + fn answer_command(args: &mut impl Iterator, json_mode: bool) { let repository = args.next().unwrap_or_else(|| ".".into()); let question = args.collect::>().join(" "); @@ -494,3 +546,28 @@ fn json_escape(value: &str) -> String { } escaped } + +#[cfg(test)] +mod top_tests { + use super::extract_top; + + #[test] + fn parses_top_and_preserves_other_arguments() { + let (top, args) = extract_top(vec![ + "repo".into(), + "query".into(), + "--top".into(), + "3".into(), + ]) + .unwrap(); + assert_eq!(top, Some(3)); + assert_eq!(args, vec!["repo", "query"]); + } + + #[test] + fn rejects_invalid_top_values() { + for value in ["0", "abc"] { + assert!(extract_top(vec!["--top".into(), value.into()]).is_err()); + } + } +}