From 218989cf8e2220eef7c8418988444701c42a9b16 Mon Sep 17 00:00:00 2001 From: Samuel Sloniker Date: Sun, 21 Jul 2024 12:44:14 -0700 Subject: [PATCH] Add code --- README.md | 34 ++++++++++++++++++++++++++++- build-linux.sh | 40 ++++++++++++++++++++++++++++++++++ build-windows.bat | 2 ++ icon.ico | Bin 0 -> 179286 bytes icon.png | Bin 0 -> 55159 bytes icon.svg | 6 +++++ main.py | 3 +++ navpoint/__init__.py | 0 navpoint/__main__.py | 3 +++ navpoint/content.py | 1 + navpoint/get_ip.py | 22 +++++++++++++++++++ navpoint/gui.py | 27 +++++++++++++++++++++++ navpoint/local_server.py | 23 ++++++++++++++++++++ navpoint/phone_server.py | 46 +++++++++++++++++++++++++++++++++++++++ navpoint/run.py | 8 +++++++ navpoint_link.kml | 13 +++++++++++ requirements.txt | 2 ++ 17 files changed, 229 insertions(+), 1 deletion(-) mode change 100644 => 100755 README.md create mode 100755 build-linux.sh create mode 100755 build-windows.bat create mode 100755 icon.ico create mode 100755 icon.png create mode 100755 icon.svg create mode 100755 main.py create mode 100755 navpoint/__init__.py create mode 100755 navpoint/__main__.py create mode 100755 navpoint/content.py create mode 100755 navpoint/get_ip.py create mode 100755 navpoint/gui.py create mode 100755 navpoint/local_server.py create mode 100755 navpoint/phone_server.py create mode 100755 navpoint/run.py create mode 100755 navpoint_link.kml create mode 100755 requirements.txt diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 7ab0bcf..9a4c979 --- a/README.md +++ b/README.md @@ -1,2 +1,34 @@ -# navpoint +# Navpoint Desktop +This is a simple Python program that will run two HTTP servers. One listens on +the computer's local IP address (e.g. `192.168.x.x`), port 8888, to receive +location updates from the [Navpoint +Mobile](https://gallery.appinventor.mit.edu/?galleryid=2c18ee4d-4eed-452a-9228-de8e813820d1) +Android app. The other listens on `127.0.0.1` (i.e. `localhost`), also on port +8888, for connections from a digital globe program such as [Google Earth +Pro](https://www.google.com/earth/about), allowing that program to track the +user's location. (Navpoint is not developed or endorsed by Google.) + +Navpoint Desktop has a minimal GUI consisting only of a QR code. Simply scan +the code in Navpoint Mobile to establish a connection. The phone and computer +must be on the same Wi-Fi network; if a router is not available, enabling +mobile hotspot on the phone and connecting the computer to that network should +work well. An Internet connection is not needed; Navpoint works over a LAN. + +Navpoint Desktop makes the geographic data available in KML format at +`http://127.0.0.1:8888/navpoint.kml`. The `navpoint_link.kml` file in this +repository contains a link to this URL configured to update every three +seconds; simply open this file in Google Earth or another compatible program to +connect to Navpoint Desktop. + +## Licensing + +Navpoint Desktop is released under the [GNU General Public License +v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), except the file +`navpoint/get_ip.py`, which is released under [Creative Commons +Attribution-ShareAlike 4.0 +International](https://creativecommons.org/licenses/by-sa/4.0/) due to use of +[code published on Stack Overflow](https://stackoverflow.com/a/28950776). + +Navpoint Mobile is released under the [GNU General Public License +v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). diff --git a/build-linux.sh b/build-linux.sh new file mode 100755 index 0000000..038c565 --- /dev/null +++ b/build-linux.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +arch=$(uname -p) +distDir=dist/navpoint-linux-$arch + +rm -rf $distDir +mkdir $distDir + +pyinstaller -w -F --hidden-import tornado.web main.py + +mv dist/main $distDir/navpoint +cp icon.png $distDir/navpoint.png + +cat > $distDir/navpoint.desktop << HERE +[Desktop Entry] +Type=Application +Terminal=false +Name=Navpoint +Exec=/bin/sh -c "$HOME/.local/bin/navpoint" +Icon=navpoint +StartupWMClass=navpoint +HERE + +cat > $distDir/install.sh << HERE +#!/bin/sh + +binary_target=~/.local/bin/ +desktop_target=~/.local/share/applications/ +icon_target=~/.local/share/icons/ + +cp navpoint \$binary_target/navpoint +chmod +x \$binary_target/navpoint + +cp navpoint.desktop \$desktop_target/navpoint.desktop + +cp navpoint.png \$icon_target/navpoint.png +HERE +chmod +x $distDir/install.sh + +tar -czf $distDir.tar.gz $distDir diff --git a/build-windows.bat b/build-windows.bat new file mode 100755 index 0000000..1b9265b --- /dev/null +++ b/build-windows.bat @@ -0,0 +1,2 @@ +pyinstaller -w -F --hidden-import tornado.web main.py +move dist/main.exe dist/navpoint-windows.exe diff --git a/icon.ico b/icon.ico new file mode 100755 index 0000000000000000000000000000000000000000..2bc854fc16df8876cbce7b2cef34b27b4ffd293f GIT binary patch literal 179286 zcmeF42cR8Az5h>0rI{eo0wIW?s8j(#0fSOis(|>Uqasg1DMCk{6N(T5 zHk2YQmjD6j&xU}QD@akKNhb;S|NYF&Z_k`PyJvULIrk<}2ELiu*_mIRzPsnvYC~!Z z*T#&gDPF0z|FBx^tXi$M?6Us)goSIhx0ScjO8$DP${qKvT5avM!}Y4Q+M45QwM{qm z*Q{WvPQbunW3<1Rk#3wA$}fcJtaF zYl}LNCJ!2tjk2MR*%|wc3^Kp!>el*4%R+|-jB$C$BwbV%drTLe5%AFk&Q@OE`)d!0 zudf?!iw?4QeQpdk#W&{PPU<5=mi%gdE#;>Ub$_zHoxH6FY4XB7%21X%)P+XELuumyZ=-#W(w{g*^bXry1%9P5 zXj*L*VWWUm$U9v3PT9uQ|Afj@$9O=?=n`W)vkB!sc?onn;;DH`yD`-NS_GRtl zxKlry$W1+?^MKNa3tI({CeQAljvm-kwD1SALette*R+KXJ9~SZnA}&0&Wg1oHG%K^ zJ&z-|s3~upz&&_Sc1QdHjX(>UCkb~8q^}l+2VY`a>LKH}+P8MVTT2U{4_LbPtsRYr z>2Wo6p&`(Ap$TpJBI#pkccMo-!GF*{+{x`}|4PN?3U3Rfm#%p|uoY#gvr1^Y#|E0# z=b`@%+PBKk25BewaVuvNFE_M9HOJ@k?wQ;ajG@;EpY$ah+!R-STvjJ?i4xQI8BLZ+29^!C>!cf7aAr9v>WW8Yb(E;(y`57(e>d1YoFTi%k|Hd z!nE3Q!ZyNp1m-G0nmq2gveXH6u?4hD26({B_!84bX(v_&nc=g@S>=k6d zhR`(r@S&oi?eIBp>KI?evY+G_G^@hWtd3$&@bqlj3LM{Td?umWV%9mL*IY8A()Z>PwBjjSFtmZNW~1mgodjGxUVcI|Ah^60*;V0z%& z^_||Hw@xkluM=JnUKFku$TK_OA8QZLpl|w`jXro-HU1Uk!3Uoc%=YwY)8Qti7p`IF zT0gqNJ5)dE^NklN?C#Rr`4yO%QLg}kFz;C zr}<-xbzPg7>grz*)n|;dv6?vpUJyWzxgp&>{#Q8u$ZYbr;@^(_@plkAiOFln{rUt2^{`Eg`4^t>23hM5#^QydH9(d1$1)Lb>knjD zPM9H>A6PR{ufG1m-+qln-(*Z>j0B{~W6pAOx9UNYy3iFkl%Xtj%$CH^ zgmwdO_!HuMrI9iAh0*C#K4TO%Wv<*TfHXY0M;R+`F|?ZW_MGegs!S}$a=JcIi2H@n zBWCV;J;3JE_&#aso+Lmkpn^mqGdC=|^ zk3R8&C%ieQSX&&9$$0_RMx3T8*rSbn zDEoVXx_NZr32$U@dbF~)-LtZa+0z~*Fa~GwctiO&2*}eg59vCwTZ=Sxb`zihtt=k! zK3G7OLLID(Vsu7!#=R`M4=5kGD~*3DpQRTx&;y!TypRD|TKYlvW7_yF%kFO~|6E~w zT>dY5(y1q>wpVFdzh$lI`j%?o2XAOX8y;yrkOi3%8I^1Z(Y=o=oz>ogplYj+GbmLz$;4!WJAV82TOdqdeDUpl`esFC(x=;yHMpoJIMss_qX3XgS*0C&&j+`a@bCWK7S~=zCg5 z+543@UT`#xhvME!m+|P0!UMbdwDu>KkvHdS;Ta)I4`{o(muPGge}D|gl9msd?fy-v`?Gajx4l32L=O5Y zZ8pvOUgd3C<5`Z$J4I>c1cT-O%$1p-a`$A=fi^tc`BRV&8Ic8ZBhid@XjrD<2HDEw5Brw^@Iet5ytg-{xqkS!*N?CCZ&LwW3*eDL)5OVNkdfsVf8 zL21`dY45sd3EuVdecIDT2j;n0e$w!C!BO`zAzMrw**lY;XQtks$W%st%6R$x^Q=zg zPq&}DrBnI#^UFkj^kAGxnW*Wy-hR$k74L&i+7IVqF_TXFZ(k$1m~=n)vidJ$LEL`m zzl<3!NIpEA)qjz_-SP8D(I2Ssld-z&_?b0-?G|)4|1y{SScq*z`uJpi9;V zoIigt2V+}5f3coR(}h>r`73Mva8@FJy^pnCKm0`UG|s{3K|l3<)pT3#k@Wf@y%w#y ze%L^==C0rVysX6VeT+2~d%m=-ScA2*e*2K>wO+qz?HKIH`i(VZ+?j0s#u~Ks`k67( z>#&pJy!G>hWGzHl#wF_EzY7Fk-_Lh`&6g#6ef_NRL3U!=^K2oO|3+OSJNL8pFTb|? z=YJ~jztXK2&X6o=A8<`OU@bJNExrt_(LhLG4jIs<|yyyG@O8X1w*bd2L8 zGs?fIyyW~Ur2}pHb3)bgtG86A===(v@J`E*jET%jCTZm_B}~t#!&x3@dWp}(zdok; z{pv2tyG&?xe#kxMCgze>=Z9YvFL3o^O-xeOZV^UQ{NS$=>%WAd*BcrPbp$<`{5I@E**@9k&wt>a#e}r`bsmlGWI?$r1^F0 z8rtxHS4Xm&o-v(}X6|GD<_x==a-S}GYYK_nq`MVTbeYFKARHpxD6kfvBb3#Lvedar zI8b_fOqMa+qAl}H5E6BU0;**5i1;&HfLfJ9I%Dolp z&QyG|u$3@h*g|qN`9pcD2!{!G3XChJN4H{V-X%;F_^z!*~iWg_$2MYArB6$buKD?Q;+_}7BXN!Tbfzb{zhxCtG9eo>cEt`c z9i>MLjOnilW#nSKVk|sX__VN+u&B_m9@KRrYq&=l%2J2AGX-ds;fZX>h^z_ScG^N* zU+JZUi-fm@A~~4HDZ916{GZ6tW*QpMnj%2Eh(9vIADI*0Rc#Q}h0au=i0{iP17G^# zFd^Y>>9R6d`BV%|Xu|_uMe-nXVuP~0DW`e{+7bMUc-^fsI|vPZPuCp>XrurSc)_zs zE@V&oLK$IH-uS`iB%xKCe^d9*6;>3io{JlJaRxVCXgnLuzxLnAHIPWt*Y!97-pG(= z2V_Tw#4im*Qx_^1>%dsrYOH%n_YV_B#q|=B*}5(y8*skMZx5|6Y!X14Jnm7Z**1Z2 z%q#HbT=hjE&j#p#E{Sf5j8P)KuQc;}t2ypD-QQOjA~e$F`C9$iDCuF+hv$g<3l|Ib z3Qq_x2s~#1q{-vi8)d#K@Eno4jkbvR1>VSjEXb5+19U;BMp<=jA-cy}>RKU>7Ji3c zGc9DTpEvUi1Qu?O&x5pnJ`kQ+cgLs%MfI0)eg`J-JINkgo`XM#H=Ut z)^+qX+FRoHgpT>i`+iNyJ4JX=Fn!vMUlI*$xK?D_gl&)+osfzCm^U7v6YKRRzeRcM zCmt5^e1DGaCH*}yp6TwN&+aQ(|I!7$)ApJrnqLxVSH4dmxB^iCvN0y+$f&Y|@&p7w~}%jn*xa#sk43B0rMsQ}XCagQ=ZwtyEr>wO{kH0Xn@$egDS zy1F(HV$PNB$|?U3&TMP^Xn0 z;K^9y`+nbuigUraDr9Zl&vz6z3F{|7w%HP_`skr$Z zU6_-Zm-1wLMfdRe!h)}dUPS>L)V~WDrMeRZXyx&_NOl|HY)3r>lQ+no=hu@$IoiP; zLYDqBm7nZk9dYxKUzad9XUT=n(0!;-Z!eBOiGSico(49^YX``{IO6#z3VIPEJ8eBn zH+1Gc>%zQ#(lA#z$vq$X@Wn!w?&Q&K@m(U5s~bz!GVMzz^*t?U=J7)oKdywT(#bd+ zt8|wBoXdYy_^Oa~KF|46UfX9q&-ye=9>%SDe-H8`(s-%ft?LQGo<n6zWo2J+q;w znKvdP3;Tt{-Vr6vk3@^*^Va*5b&owoJ$U`uqqB$2l3}Ww-xJ-b3I&JV6t~h{ zg%TT3Hq?WLg6B;iXN{D_o4qr#B_U8ihbcxp6|*0BHkD^~I!^gciiDt-0Utb(Bg3~G z|I3pafkHq1eP+-vhn=x?F=eS!CuCIwOfkID{E=xB zS0>al`4#h=rHP61I1^aV^vA~C)W4hUpLcfsT$OlE7WQqqv-V$~1G?G%(LHbcW8Ku) z0(~DW9{>2}BMFX5=i}d{BIx-ara0a9xo&s->+bxQT8DZIIvcRIDLemBRtkd}#WFwbo&EGa}~ydI(z`@Yrw z2bp}?h>9rY?SI(wq5B3x)&1{q@w!CF^Tqk0j{cl~ZDsVF z`1N_X?D+>&rK1N*ylUFh47wC}XTXeRv=$Lm-Hd*%?&p+!n z;QVuzkktmr!)LVH`ka6bSRVvgmGXYW=k>OQ{?s{7$n!h&;f)Mg{T`X82wA$L>z0D) zUv&OWKXGLh`EMxMkNI=TFNy!_LY@uCXWYV%=;Y6-Oy#pO2YRh4aORa|gMTSM|M{1H7IjvTt4Mac&mNX`1G4tBRxTZ*JG?r1 z{)MiIFDy=#DHVSCA1|v;0V2)0uWu zcNL}c_5;*CM;K-0oej9KK3ISLJ!=4L0L?GU-oDK<2E#i|l zzyHFRSRWTzA27Bdd)`{Pl^vc`y-S461^@nwwX-0&;m&YlTSapU@?l!DPrkdtz(aTQVLfT@S1e>gyzLlPlf+ls!6g{Q3gtb$~Q^+*?Sf+YlNc1b9S% z_n|^7zoP@XB=w9|RveXMzGsd2wvcB7`WoX+GA}6Y_%zT)pZYVLx^A(aaazAbC&Wu8 ztX_z*0k&+_7mP1w36ll(RLQ#oN+))xm}bm|7Br!4eDY#sMAk%irP~VBi$FV~FTEz@ z@s9J^cg_@8Z*48SS6EaSBE)p#H1{YoUZ4(j?-26#urWWk%wL4Eb~e7uamY48NM!Cv`KWSCQ)&9)wE}A@ z<3F!rWVlXX-08aBkqHvofe-zX_2k3CywV-s-xQD~kuR3H+v%83NVA`ypFSoGmL2FH z^p|8GtF+U<+xlkFGhV3}Sq>NO67tT{IM((p!0h9^jb)&Xu+l7>60VnX|Iq zuPU+yb*MX2I7MJSNS|2^n$L@jE7`JaVei*{Rrk*lZWidX&kD>5a|1||$34nWmO2{< zOA1Z2i{vSLzu*6GKtFFM)M}IZ`~43M^z&Exm`3>>2Yyk2V*HW=vMBiCsxZf2Pf$Ew zRVN6P(ch>U+B2k=zf-dqe=ufbFMrH-RBdQ4e>rA^Zq|DFy@Me={)ZQa^ys$_YPH@W z+WjbOsud*hO4Lzsb%*p2kExA*k<2mhQ@nOIr&ENQEAi?R9qOt?ljX((CIE zHM^M|&8}u=v%7N}j)NSw?^P>pJEpe^}jMJIfq4s%CeQA-8zbB40A2K7ltfAWM;r&Exx?5!?2njFJO@Y6!aH&v# z)?fTgGk(5l&xKQj(|m(0$W$aZx>cIjB3{fFx0c|+{^$Ksy_EF2M90`B*SowWmA|g= zd4YGlcz@@I0i?;}9%YuS{UXqb?WL?Z#4;$os(@@oHbO^qb-s=1rPEeMF>B7#gd*DP zqgN1;cGEzUcL9DZ)OC8d(%T4U2=@uk33G(J_d&Qv8Qzbe4t1g7X+ocL6k=JFUS424 zEYbsA*$d>_$nJ%hb$QWvjBnuIY@7PuNiy3kB|W|@+$MDL9vOA-5cU(GY4mIEZ^;Ea z#WDpMi`o&ovQKK(rJ3fkDtD*Q%I5TK+HW&GWVUg_|2@m?r3ZFt)lTx-PhLK>ZWne; z-Yc{I+pG^V(*KLbqnRp$?oOvbCW$Ox@!$Z(5e1q z>%$A4MK(fqbjZ_>^BK;t8f;|OijNZV>XQExAz9yuj1Sm`vC{Xe^&}_bX<6O6RgUqV z_r3gBG}Vj7zmnO2>_y`>XKaamEUkE)@OvT8K2PgjvQ~hv3ytFqK19y4I`jVW69VJY z<-$1uq{-u6m3N%s?b{JPi@qn6>}Df$Xtfu?2H3*NTl{6^%@y+ObBgXYugB|SG2>0y zKJ~oH^4}MQ_X~>)LtPt0FaP%|$>ZK`!WF`ELK(Z?sB*}X_kJKc{Gf%N*Z^CYU5I%G z&}t53kG#6oQB@yI2LEm{<7AQieADq0VS+G1sE-$<=@WH(*YElF{Xe1dR|&1Y3o-u4 zGThOp--lrG2VGk2`+2SqKNtCku6Y)a*LKd(z2>%4ACq^KEJgFwGb(eSu&9&U>;a9u zkhY(%dw}Xg%WRPqBg+ns&*gRE(!tsUx}Z~@zSshrSowonl;s?1f|X6U)n#X$##$sx zPRpC6``adSKQ@WvPH5&OC~Ll;jrnynG>v{%j7)wFnLSpcQ>!z!gM!W@6}KAGr|bUW zp=@0Plh?0hS+8ZuNFKi4M)3WGdOdYArBeuCG<*!rR_zFxzT)h9Nu7)75p?QRoY#h! ztFg_>LaQ~;cXeONN1?udU@z3F?J!o*AL_bAWRlkFs2i88II3jhllKp_Ta8D^=J#va za~Wr~dG=u~gl)DF^3J`<-&AO{Pkqn1t@!ipOkUf$O84sHO{8YZHhN*Ae`R5V0MdGa z!Z=$T2-NKjZN~dN{_NLiXMXGt)s33sPYSJc=Xw9Pg}nX5A9Zgzp)ue)f8KCr3)!C2 zJ?0$Wb`l~a5@45Y1X1jtCA<{Sr&z7De|v#4p^hQ~mqyp~V7-uMqcf6qgRAWS2^7aF z=DA2#8)BY6LbxR7K6QQ}j1U@wmu*SObYBa(u1NNdQQNNT+ONOr(tnE3>h~}B{{066 zWhFx-N!>oI6ZkLBKFEly4IxlNx2uIL`;d3Ba7T;#tO;YOJP$A1y5dP2$&!mTFKa*V z=R`82=Gp{$>ouM{(UN@1V8`ZmWMh$EL*}iskr7!NLL!NOzLqdc+2VFx|2dTxmp#zv zG!XZCbGDZ^Z#}MitbH5Su+mW(4%;cFZM0zBaF4Ro3H5_CW`EC%y-1d?kP%rMf>BcZ zjTS;+n}6oq=RL+<1t(PlaWB_lIr1Rm3}NxKOhG@!UG=yI{c}WUD5I6IwV_BFFAKcb zuVvYXJkDwxg6XCB3&NZn0kF;MIrrXFKF@iZgO`aj;yigScY7$t@rD33H&6AoVV_x{ zZUaTPzVZ7t_OyBOAZt@_(s&)wwZR$T8r$UUNx8@T*BrckI1kQ~=Nz|pzARl8YHki^ zp3+4n=#4^Gw~?q?mD{)Zy?>rOKWt&2Pf3uxHbT1^82cc1(;lKD`(RVnM~(KOjrwu= zoEHA-#6EepE9ze-wUEd6uckKb?DIb9*eB?s5@xA9>&8a=z++(h*Mc%WGp2_%bz~yn z*9UTZZg+m)RqdzM{LXi+dF!9<%Ty1}f-!vMCXVLzYZ^(TgLp>KvPZ!fBwiQ_W%@Wf4 z(;bu-wVObM$msh0>2tcyvyb1OQa%cfyMONfkkVNb1vX)Sx{c6kk3T{88)uF3=Nnf_ zZhyX!y;cmAoekpi4d%Eo78`fs5TNDl18vSw@@!K--?-2!dtCz6O%=D&o%0QzhgCZt zV@&b#arVUX@I3ka`55a&)2S||QbEeXII3iOQfT_Kw{quWKdaM-xE`r=R@)&Dn{Yl> zbiR6v$~2#^nw(Y7SFx)IwiUcj%+{ZkeTvUltxjMF>i~3`F67zA&Q~el>U{o1-Jc*d zs%3or8F;HUMBADrY!mhYzU?u7l?{HZvo=f2nIJUt+AaC@^Lb&GLrZ_~JBnkc4?a^L!o0oOpKi`S`ApM+= z6%P@rJl|PF<%^yVe%R=XjSukl@-vVBzXF-jhq2-(!UUl{_nWP-ht1oT=VQt;7cv&N z8gI;IJRkJ*v!Cs(E?piM^4bHoh@TH)*RKe9dsXP1B4Bst18*SxTi0VbrEd~U##S-s z#jIKWOJJS7xa>UC*&3T)p|n3gdcR`MAz4ecn!{sW$l#wZBU=b2chKPnit}uP4bsn- z(RrM}H$r*!ct2qSq0v5#W5XJf?LHxvw^f=oFK3OMr={OdAdh=_>*6fB_pAKsLfvo8 z_Tl{mbjj26_qvBI508bn6=0%nOWt z{_i8@+Xk7DJx?!mKHT)GE9Fy`uXtJEP9cvD`M(iX6%xB9^stY$CI4Ou^DJwTyt9yY zY&BQ(SaY$i@beUWv*#*gMAoABGtn8{olc29Az}F;?(F^E#xa}zwv_M{foBY@o<|qi zin`e4tHRPkeH4?hX@p2E#KEK$>S(+@s8rwVy`y zIX_6*ML7xoAPaqp_rUVxwtRFmdA<#BnAJg@$5qx$o8OX7>}2($7~1Tc;nix-V0Ix!2XsNF zj^x2iMkCO}=CsS0U#m2GUQ4q*nUO7M(YR*8@nC*Q!pLd)Sk8?(#w+dsV%wl#lr+%{rU!?%2Dqzbhm2 zV3a|YyM!GDWE>RRm>pw&A3JE_vV`k#ioYzdH*57=q*ELHQ}nMBz9PW0!7g0SPa#7- zo{M}$I9On9`-s4p+0Ix+9qK}Z@5&Dm))nBwyUVhcWg0i6ZWQTv5NR=+cgxPx~KZoaFM| z?=9*F7b&ARCKX1zbe~IOgPQ-X#;`{1arw!bY-8>VA~}+`>?SGAZ$I{n?gXV3P2#Qb z@k+l~8`4)B*;CVtFiI<-OVWL{cj@1QY9sY;uO8*-*iR3HNUyDb7YpgVmDUe(>favS z(UMue1L=R6QcFbtGnL$=8X-=Pa5;Osf0aI}R`cn_w6^SVOdK2O2}9VwOX461=@kT@ z-cUb!$u(g^m0c`J?=8_RKTb>Ekbi{K99dh@)h(0W(3Q`k8Pktt7^9yV_2pxkV_js* z{=P)ty6&+}Vq3*FjMDrXsM$RBMXxif_fezo>OPHq9k+qFZM+e+nK@BgirW}%ZexL% zzr?8E+hngx4|Vx{F74ZJ+_uF)!MAx4Rq%a*N+Rd#%1|_EpQeKEQ>!Vpx6msjze9SO z28uO3ls!*_lUEXC#Mozyu%@ts!1#25aD(uF!e0gUXpCiZ0!Wj`J<3p)I@E;*w8jYD z_8ENVsWAqTxonVS^M#fFAz^pnhXVVy$Awn~<_+3cJD@H!pao56?= z5{m3K(D#wy3IUnkBQ(f6fTkHx(rG<(Jy!UdaGUUkFwl0bN*|eK3SSqHb%FFlT5er0 zCH%K=uh7X@Ue%uMmS=prPrwhzzQFh)B`bR=&arM4(5YQ}%&U6H%$&WG(6BEY(1D{3 z;*zhSjp+J=0_(q*g?VMaZt+Ej$pUMp20hy_RoAPeWMUn$r|>7CTl&v0bRL#YdkYO~ zrLG&a0zt_Vw+H5|Glf@#ZrY4F;{~BlxJS57m?~T-oD)ErJnm73vefDJeDkVkqGQAS zT)|{rD=Hac+pnkVn}u%J-PY$fiQXx~9>PY#c;Vdw=a$2TcrQzuJnm6uC4oBBg$A;* z&g|Aa1U+<4Y|u5smLL@KRr<3+H^!SMM29xKufSNlsF3K_VH#S{g!W|uygF?w==@nB zk+Fp7IxZ6NTS#ff`lp3KeZs)EOLQ)&7MyuKyeDIi0;@}oO8 zz!pyKs&ZB-Z#)!pZunJ!_cGd%9i68Oy9-TgY~^)5Kr;jIMuuC2cKz_Y>S7CQGGIP1 z+KTZt{5WrH$Mz4X9^(Mxbc0R0ZuA_2X}&=gWV&ByM<;B7O$MYNh;D4By>yMwtIGLL z)j3{RQHbf~SZUz1({cpaknvfes(y?Gj75oV-OwPWr!@1;(?V6*I9J(HNZNzA_Nwy& zHtNdSRCLV#%PY;Aw@Q0p|8uy&n%wA=Hwo{X^PNH3=9egMT5XuX_bVdVT!Acx7aG#qm^XcP%M&Tq|)s9s@R@>xQCF8Hx0z|F0AbmV>99_-S361 zrfYsL{t$uRM(3Ny>x5eZNR!7s%4{c4XK|tK6aUSwGKzy_w>EQSm}p_vbLv)bc$6?% zC~JGhd-`c{n~%Sl!uD6XZ|=S!+uSR(`Yx@kz4OXJ`vKt~VHu&`=gRj5bVS#(cDYbx zv1KVASUJT!cX&l8!-q8j^HlM8Z)1Ruhsy?h+jpzLx1o7<>vlf8_)dO%wSQ#r--j`O z=LG3y?Ft=PSCm~B@%$he6LQGA?1;xwO3x6=*q$=1(~@;gE)VpquV?rU`UgTc$C;{r zg7>L{|4y1d&|*B2j^+b&Jx?fWA8d(DbNhhZ3-Q+#mp!Y!LuJRs^~I(!a1*_-zmL~b z`bMFuy#}g0bNqTy+sHIjtfSKG56bS*u;tg{`i%xk{EB~A>+}4%jBlS+xh;fTzdAnF z=KUPIxpe*Gd}Mp`=|hrfi|F?*(k4o-O<%?Ald(Y=Tk-xu?w&yRoDCHpAj}oY&^%t{ zT95gDocF(h;Meed^P%m{2Y;1pJ0yJ-*)xK4Hd~?l2_O&Me#vO z7ulZscMADyS^Db5!DfEGt+KvFNLzvEiRo4E< zzMbIzJ}u*EDn$0fCfKHo4Zj)HqaU!J;C<{eb$M3q`c6s|e_8*Xl4T?}d(5)B{!3+# z5EgN^=XYFk+FT~zyi8~S?~g?kPZX-O3HIhoyZSk26lM>_*rtpPf2DHq_Xi)=HT|Nf z?&B)+AtB%XKTq`KjAgD+#{Ss;>$1~OrziV_9-&(Sf$Khi2j_5QeSi+%bmxN?Wea5X z2(~G6M#}HF@Q$XlqvAb{w3^>J@*yLwB;YF9Jc4XwA+Lt`!hbZ9(%kE zdCoDtq+YB^m>2!{(6Zf&JKB{-j?dr$ysYqkP$=UA*23tP86wHbj^#5{2ivpmWLz(@ z|4k~hsE{4(nUa5QRc35uP0rfhKYPg~%#8*tt?Mm?ZwV&{9IAM0VOb$nK0{oJc>5FY zC6pP5&}o9Jm$4s%OW=%+ZWfB{iOpGu?jXEYqWsA!<9NWUDIk*{|GzI8%d{uXKYe@3 z8B-IDyk<-3`kTVN!mC1BJL$PVW#+uL$`#f8Ez(34P7aJCHx#RpC9=z-ZZsC9 z7_p~j%$(}Zi_R_~H@f-#aBCl|BdIILZCDP-XVP%n|%{NQ1x`*UZuR8hH762lKiT^7E|9pDSl-K&Ioy z`aVOHw(?k$=5lkk^fDn^k^Rxp|8{x?#b77)wPn^d*uKnO`J6yEgQK#%{dpI*%-Zud zwV#FEc$G~}xsDrqDU*bPrYAY`!e${=g!@nf5+wZU*9EM`|sxb3$5JV7RH}>HUGY| z{`B(~>rd9kMdSZzwI9iqIpe2mIn~ymo$tTA{LI7iBkoS}ppE1V{r9dMSWi?-1E`~jJ<H17$dnC^Yoa5tv zfA%x4&YyRbbY-5uoK(X8=u+kR%ez$G+aSX{Q6JD4 z4ZybP=a1OD+Ve;3@7w-fl9zMkBKxD$rh-3f%n&w6$@9mXgrW({oXq#?j9JNhbD5g+_x$|acCcigE0k$pynpyL zor%_cfI{62);2s3`e&Ir3fa-&AlEJE2ZX$vBuD6nFCeIksdS`jk-Q1HPfzO~|%C!daWU$~`AKRq~hB*UIru z;9kP$#1Gz|vFh1r%GKLD?SMVTo$lLs%Q;Q^vU38c2Lazw9NMx*f{I^i;>DN z^UMck3CLz|VOqw-0_1GgY_xbZ8^Ml2-ZQs7F&(++!Exyifs`qQ5 z%=$hp6TFudygysp9$R3OqPEL@Y|K2J*v`_5cM-bt{T=IUzE|*e>g4-7&MG)B;>>P$ zfp;gy3G6c#mhAy)&hNQLnX?4WbEuoPYnkhZRBt`!*UN$qisBI23_G&sEYtRzzQ2QJ zM2m5q@x6>6%YA>!TGF>qzCZnIoAxl9%~5^M=>H_#E%3Y+kS33Nl(F*d#K^d%lNs5k zW1;2{*=$9n?=NYyJ5(-n?u_VF`TqJi)mzBwHcP1-8z+3cgRVREK|3}rTL;;Yu`YLp zQl@Xv{dmP?+AC+AU$?qxvX-xSd7-R7pHsdllff#7Ok23Q z*5;H%fyRXC8+6A8W$e#*G1lrfQfwH57?0=!W%khUrB96$l5s3e+ug7=QGGrrd*(P8 z_UFu;Im(Zf*dK*bA=WYIjP7M@k1f9z*H4jlm(l&Dm7XD#p-maybzu*eC3c+^KB&(J ztSwlZR@n=6+ZXIjkYPF3?tTBP%bQA>eu~*Um3hC%?1wGcAGEelxF5>xr1%xVXtau% z*S{sSo(s@tx?pRHE8YHJTj_tRQ1+~%8$N&+^ESV=F()k*-?ro3$5%P-{W1zJwn~qyzIM&`aWqH+2A07bFNO;FRlE8-5(SV7U1dUS(~3Q zKt_ml3Ob@|tb42UWR=C1t!)zVwX%vimwQ-fML)jxw94{4E%9SSwmFIZmkPw*7woh4 z7p4nU&MjKmoO_IM(B#~0h48L6`?TD>mF~C@>k@Qh{~GJuD*Y#wM z(TUxegWyF!%n51vbjc^~AWa_kC_`E5EFSiLb$dgzM3C&(cF=*doht1f8(}kS z=jfDR*;K^pDrQem_I$(q!x+gtm8^@DE+1Hn)Xy*Ked7Y<`}gmge}9<1RG(9P9ojl5 z8IUmo>m1evjyuRWpa{+R)Mqr)Rus_gswLk@X$1B}Otgl#H zu!hWI42u+y8QIIObIdP{`PeFEEsR zw|h_Y%@0GB#s}^61LS^Fm@e=fEjf=>+UU0{Vs5>dc9e$q7loSzWQuKCHjNFiJvJHe zc4Ryh-Lb)d zw)?b-;uqV9`Q~9EmaCoge+>zHTNG_;@z?MsEf3hl@k*Fop5&$Ve= z=Ut0;Y=iZ5O&^ZsYd6hVE$=$sB>X_wL*U)_@dDp9U`xJ*8X}ksq{-tRWhhG>_Dv@U zHwsS*&~8_*xE|~KuB|ciY+RHt8BBj-_8aW^UKL_lJ5A3OJ;vBs!rj8P!c^fx;hX@{ zY5`N4Lb$bb%0gw=(_?xg3pkdkkdt~m#tA#`ip?Zl2%>mu`Q!p;J^B(|U5 z>>kS#%Nf#3EBju~j$gJS`cf37;3X0N-J z@J-((e10zGjnnu^o2ayW@Hc8Vh6)&P|)=aw#X9&!D?1x_y zI+-)53k_&N6WV(VtYzTY(AK&BPYGGNhdlPOe3wSM z>~}=CM;Xdehq};!7Bu5MbA#>YmEHUM`{%%Wf)WZZk{<2TJ*0>DG)YDV1y?*&aK%G~ zK37CNS)s?LU1gtimGxz`50eryj?f#HKi*3)0UnZ~k3+@&UWNz$)m@cTPEV~S3Zf8lOxr6lP$T$-d-6}6!~wNLo;k+mT`wT*pxW4$|HJJP4! zZLt!U+IX^vxmI$B(r7fg$EBrRk4p~~Lo6T(YD&v8FDB_;$x6N;a+09WrN!n*ON;X- ze7XlId|Et?(BIH`S^bX&hmaK%oH9Ho)MU5n7>&w0n+4g zk1~{{4t0+dpasnp1bEDM^UZ?i$?_7*-dR4k^~Bn`zq@dv@GIeu!rz5g1lADroK64@ zXh9R&@POBD0=#*~x{%N$V|fkVDVerFmOYinvyc^q9fcEwTZN~EH-%1o+)iD1!ke*z z=Q+rPY&?g2r!Ax%TJk!}cFG$o>?E8e{6XM(Njp9p$U4Zx+;M@hvw+M^^F&EA{KplO ztx07a0y-=#H0bvq=inTL({|DIXyLQMWdiH5Zu(_j z&_V~!LAMvs?VWazvO%y3w%JwqweT-tUifMtdA=;2t{2d8jPM`X4$^w-n)A{f1kTFm z$9cWmZGyRhcEEbE>8vuFYs(^e)rQr%lDLQaIC=DQql%e=38JdW1W;{Z@iswyYRL!(6(Jr=wpjJ z1?Itq^MeJ}@ljirPPFS~18y2`W5X-FeNMRpgmM|E8r+u;CzE5D! z{XJn%VJl%h;r#-Ai!=Mhgi!&c$>SbnC`%pc9xXr%n$RAsHjK@%-3VcUXa}*JO21oR zydUVj{EOm&Z_XC**GGjVg<(Qsw+_?Lf+n=#0WWyMdm!62wmV*+Z6>-XIp2j?KBdPA z7YlQQfw0djqRV)FoUpmDl+d(?QeI*+(q%)sUdA=NmKNa6`SfoDWEu!vXN&G70ya(b zDXYt1l#At3`hx=J8v|jBzlrW-VS53eH$7ib-hc&Y=Kxt)yCd5Z!a(SLo#fm=AUB>`_7Ft`s%CsTkST5s>v^q1$%Aw%B;SXalhv zO0#CVOX#M~kBQzf!fHZOU+;<|yFf&;CH@F$Wc`4^+7TVPX%preY@P7zf(n&M#Qc?} zO(Ivf^!%r2vBp|cm~Z`_HkxEjd=k>gjt*xE=+rIyVC%JogkM^gfxM3SD*Yj$TVp=! z#Ty0oUQOftK>!EA*4Br->61rhCY@h54217UTGvBbkXOGtnJs3Z>5Ec@Q{$QvxC_G}F zf{vRh?$(%z50dkNfmA5cW2Dl@3!RQ-Z-~bE!gwL^JL!M7kk(JvD+%Wb*r1a>gbz4p z!za#$17SO(9pZfzcY3b(yl6}mID1We-!<9!ZN&6%CfaZLwTk&2!1%WSNkgYgA=WkM zjt!m@I%xy=VjrRVb_{w)v^P<@Pv}J6CscngVW`l#%n;%C8SU=^ncuxH`5kJ0>-4?C zhQeorF9`bx`vs6D?=$i}WhlG2{OKMHc^L*qMp%Xd(toqvodY#FNU#!0p(*~}r4HNji=Pd+&4|}pOQ~0y+cj0B>Ex~?M z*kbay_l!VU>QEONn+yDw{4m9O8szxY#}{3;6Ji@E%{#ByrW4!Vtoq9do%gArP(+J8 z%*n#rLc22lNp)H0btWIbpKE_R3|~yuhizB5zumK|d~?3Q-}QM(FyD3>zZhtqr}*>2 zIQ_=-5XHU?{4B(Zs)pDWO7lDc8?|d+d~=eJyhBn|p18c|Bz{tw^X*QachR=dFQFOp zDwVdsu}WXZ_Wt*h*Hii=;djCtLZ`kist*s^*NMUg`VD60m&S3Zlrr@~u}y-F9#!0K z8+bu=w~uMoIaNzVG*(c0rqHfT%x&$D`LW-F)aoi8DjX-YJMOc#-BWO~5LXJ=)ZqWV z#_GC0M_?`=D8E*v`)rVD&Dt*|FaGbm4PZ0&NbU4FeD!@HIZvr%a}`!y!^f58Y_1(S z*xRzdp$$2DmE<|DtS+X?H&L*;v9t+(3>N}HX6&5lrv4coE(Q>usW zD%;)aC|*RkOlXHcbvWNh_V*RcP`91m%Q46QN|-IAZ9czUBjYu~N0Tw2;`xDWW_=Ia zoiDU&e|(1zE42YDulREU-zl`ie}?Lf7b@{~ZKU3Jm{a!@=I1`2*Zv-p-218x_;mp~ zRS0G`#VZN73GMg*-|Z-r_JNgEJX+xSLOXmJd)iy;oA0mGFZWEVogj4c?=|K5YM}Cw z{RFjvF^c_|RNtSJICQ~P7UVYEiCe3r}y8MK3D3$ajp%ZYsp}CRJ@FEqtK2|u2;RnF+gRk zy=|v-JM;dts<&lCr<|5`-_u8~5IVK@{8}H~{5Vi@O&Hr!>8*r+3RT+xzT8&G?UQy- z@xsDXp(+o`pCOD8a``kh2=l$4BhQt62BP0{uFraGx^RKO-wr%f;O{m9(&TZEGL)rG zx7!ip06Ma^DZL&rdj{K{rMMm6T&{Yfj8@tYmaq6@!rz6eJpQaYYY5eSf0bJ!bDrAG z`JT1c9l|jJe+zeIVKI#^!)rH4Nc&rn_<_E7li>em?P8%Ub!Zbj2kPb;6djKjuMvtp zZ$(AH?5dde2_F-x`sW$d*-*&zPsrzeMb3??(x&{;Lh`O=kv{In3G3%%d&?Hx>TmxP ztxE--^DbGtPm)+)vlxH#tk8fQe%;wv_6M%+l7ZF~#oan{q&@BF{tl$^6{}W3wsn3B zHaR+BdJbo-x_*EbZaYBtgOg`Qj8z4} z>>O;4?W_9hY}LWnE)WNdSNxDrmEMJ_Q+~}~Uw5q`-5CShwH@zd93k+YmiJ2u`+2Q9 z_!l0`U9aqB`3f ztpd^O^YN8#?aMx>U7PW|b${8+zkBg>aqcPP-n{}S%$kC+>?-$8*jJTCrgrr?M`Pj$ zw;p6{EC^=rV0(N}r44W%m^>2*w3ttLx2p;r%HAcsM{sSZKx{opR0(Xx`x5Qji+;bq zu#n*C6*3;60>=L`C(C}4r`>VjA8O02Eq%Kx5ZCOjcq!p-p{n0bRGnnKrZnFV+};Kq z_KM|v&w3jDe4lN%?=#mP;b{2rx4=?^aNF8|e>ZfZ`{=-4-}|34nm2{2^W(+p`wKg}l$aY~ z>4Qm_#A7A#Ho`H&6hWsu4y2D3wi8wq^jC9|I)PS+2-(o{3U@}tS!7i`Sv!2*(Wo{D z>?LXONtHJ6OO;<-SV5?|?`Qs4Unu8)KR*tWZp`0RZSoJ*;r(juc7@Wxq;v6mCFvyL z0pV3anVEQ9`M(psFRUVno1rA*8&!@of@%6|SJP_9URB@oq${>63?`Z4j|x@SZ+}!B ze7}iM^?4t2|B^y+pb+-(-(>x+4SQT9d-!+grWdpGC1C0>O!1z={|Wk2Uzt8v!OVQx z!Ct}$AeHx~90s-7WSp*qPKVoMQE z(OuvFw^Us9n=HzI+SM;{F5=~oWZqwkDV`+g52|JQR|O06|D`g_3(yL5J(rgM+Bva* z23d6-!1>1JPG@Xa5Q0?rVpfF(zI?f^m;+gM>4-u-4g}1BDyPYjc zjE8j}xpiHSuHO_SYDaiW^(P6e70YSOb0^>Cd3HQgsH*qD?i}E%LhB|HNiv?lS5Xw7 zA1Rz$u^v435FGD93B4USr=8M<9n|*}O4y<98z&iK{!7)&(b9C#f~JHqILY$=VGg)Z z@b8dR_5Wnm^Jm-n9NZm~M)96POC>Vy|44aN*Z!}n&Xz(s|NFWBUDD^yivH(${$~aK z`elI;8ZGfYNyglrp>9Wc(1dn5&3SI@+dl6Rp-YuEz32I67WqGCD{Yq zS+UMjD!;B!&i~#9ynFRnMH^6_-(m3k#{xS9zp!unUNsX`F_)uVPIJ~P?d#6_Fkbfp zz0D7b*Av*6RZ(cB%KxciokvxERiRw)HsD*`zYA6Rz|AV}&w2|vA&tWdihoS~U|?F_$|#*ruZYna8W1d$4Etj8G~B?ePh|siF|$ z#Y+|I@VwDIJ1Qld?*p9sy(LuX1IN^C4lQIPiF_~MT(6=!mCG}~1bzjAvG(D;;_7Qa zY_+RUDgy%<#}%Odc``-8H)<#g7^PE6@5=TVZZ3dk3vpJ(?3+WXb}8AIq)i! zDv{rRUr?p(Qx=<*3Ql|fopsf<9Pj(g5vp{8+f{xPJWB=dL*9+3s{hyA8Q8gHxFC(& zpL3pHQJu==;StUP3S_IlL;UqN^#4jl|Kk&UQ$-+7v5^S=ta=elxC zl_9WlS)K>LtJweeo;K{iL8~(VVJp_mr9zOV-Syx6y8k;*`jYTcrnb{|9Y& z$S)=Q&)DUEAFk^DkG=9>?f?Fr&VRXK|NF6jFwcKDo2xRQasE?v&oEf$ zzx6ZFQsbcW$zYuS!lQUx=9!g$51^g1@4D^HJFw4xd>?4%`44Ac{`pUN z|6_^w2?O!`=l7x;y%SX6m>=uD*L@qsRnIx=nWQ?|)2gWo)~bScCH!&S`mfLzx``8qf-7KJX|A)@J$r0sk8m zRonf+Zr{uNQ4kW1{olH+qNu(9(a!r{Q^j|1-~T$hz!1sp#3GByXOo1%fB&oQf7bBK zV^#dmJ8xSE`XVn;DmM|dZTJ1Jy;Xk`p`G_X-wp4=Kp}6BrIA zvvPrm-v9plxT^bL`VH?5_-`Xi`yYu+Iv203>mH%(``^c^?5d443bphFIIs3+KATAH z_TK-VHmL7^^Zmy)LKXk>%wTtC*)nEf4d89k?)M*z0si}s5_4i*B$F_S$4X6}-yb7f zBwQ!(JZFkPUT5EbAe+Y`lDD0Azxg(1SGQi`HwFqqqLp9!F`rlQA^SdjKk(mw)xZ00 z_xmsA#GT!mh_-~{r2~aC!5KblIzT$7TuDY$M>gQURjWGhGuHi17#HS`LdHSjPQU*` z^F4&OgevW)+V`J~-B)z<{pW9Fo0Xkyeq3mpoC3jOxxTjhIn`TbBabKie$GyWB=?p*(Cp})MdJX{J3xyFv zIT!f;Pdivs;5nDsplZxGzbfDWneT|O}iv}6m{oN;YepFbq?3%{x9Bhv5 ztN5O>eD}SgkoYU4IYVscSkE&8_r$4k9_+o6s53$PKRm_3x3{$Hs??~ z3+?XlVjZs)z4y2_g-r^AY;1nQ*2f7|eb4;9v(YhjcCC1M;Q^s4UEU%3fZ*gay16mF zVV&dq(FU?*C-Z>WlV|LlxlNEgM=AC`i{o5@QaAX$noETGdIee|gpCBw^xHYxF*z+p zXaD=pCC4nYuj18&hlQ$s!nb3ECO?I|cJ~v=@japZ7%)B9*FPKHN4CI!W}8l8_7(W( z)55!J?4{y1U}@SOyaDaex5dV?%62q7E%x=#2%X4gb!k6)x%Opz;ngAp|KK-lT=iRj zYbVJ#on{r$|CrKMp9ez!&%zo;Crv-|x;~e(A2>;1J~SJ38gpjM??)Uh@E#HK^|*{}RFM8f^TSV)JR)7@y)>+E7!l ze8me3Jl`)%H!gRE>J1k%c{DL4!`lCq?r)@>C)>Q;MO&NA>2Hj;Hw)(r#|VcAUke~j z9`|k$9uvAX9+?cp=*D-gV-)+bCetX5nPyML?6a_OZ1b{de2Q;#ePj0&v#)$vC`;SQ zJ*zrf2#yDFsbFp33ir2>rpY$3&HkOz=(cQ|zQ?A#FS5~`jD!f&?lZGkgoCx0HVrhK!F{~Kw{1>IZ^%q!oc1Hb9#`+dpz9^07xf-S$J zxazl>_=EGlU4>GcRUlQdcJIYZ&lrfb4H_I7}EyW8~DEq zx2J6Qs4!SQ>lPo@kYCdNvf{go-a3&F#w$HTFuPWXS;Hk~{e^Z91tQ-3&co$x@8; zzSU8@k?^!&G^@mKsNUhiP@#Gouzi6)BjT+1AmI_ATYa?Kbp9;az9k^5AHzzV>*m-U zn_;_l&g1bB^To%7>UIxxLS5uIPIz0W;(IImoa*s@nUjOKQkbsNJm1BRfWMXGpS%1+ zaku@~E{*W4)c@_&jb-n1geQe|{nlwc&Vw%$Cb+eVwNYZ`tqLKwO|aGD zienpANzYW>6^v#DF&c_m{SdQ`sQR8+EHmfBo5eI6n3cI;9kB6fd|Sf% z)1CUXs6IS?C%|(Kq+EGy6U z0AoUZ?B(6i<%KN;&h@7VcM9ys{w{Ey!0)T1eNP_uC_`E5P!}4|8Y>>dlJN(BUoG&r z2ipv?Lu}j6==zZkZ984{@liszP0^aFMKnL5be~Yw?{RtNwmpSpeWG;xp+{A1?8Pqz z-!AwKQGS1bZwEf6nCE(YhqRBdU%dK1WrF#DTLR)u0*Z6cGFjXU9gWZHq z=6h`WR{`HR+KRdwjBbd(q_~~uLvb5;UNqR>BIJ^}RG>jjggllUpo`Hrx(VDtyPJrAV8(s~5lcs7czo!H9i zVtdYJ2Gvf+FT@{Ge7j&WbrLh5+#v7{3H!|jvK^%5);0UFEd_LAyzazCR`)j1!S;!b z2C^-uX~%q(UQ76mV6t@@KPy_i=d`-O`;Li@r03U=mNUrCJCQ#W(5X|qSbc20wvgCm zUf3k&uk?DtU4qHjjhM57qlMLk`L-QMw!{x1jjXE*-xJWG8@4bS_#Rs)Jm-b)jb|)} z(zHp&C6l#V@x!8dtiU%fjHQY0mNt0?D>lBVm^q8F@cRPicy9~cvH^6MXXkmpPuo~B z#r|MUYWKaNB3nHn+7}4C%lIClX-rVwfCXsh09iP5zfkD(94F5Pto7#Ed|zZ#$rjs& zH7Wa&PR|GOZ1IX{GY&E)d`iIn3kk6dP3a;X?0ylQz>9CM;XO&XLqMiHc{|Bxy@)Lv z&PYtw`6-r+vCY|&axU>Np%eX!>b@ZQ_X=kUdk7l}w1;6rEKetCXra$Xgxv*r!4uv^ z@^x~bb3JSb??nFj$>(WVVmXy&KHOL66FRX&*}8MZ=kLOO!WBY~K$~FiwXU$LFjiPX z;Ouo&0BQ2LM;Xdehq};!);+?L!a$8_X&tc{woA_SlwM#0vPSrX(zgh23u!$EpA&`){}#TtHb5Nfr1T2HaRTG) z{OFItl!cZacJ?Vefkk(Vz ziweA3daW?8)?9XB!S*{m;mujbsRA+~Tf_cc*G`XYE#Jv4V*#^aDyDBS zpMFH(oc<)?8sQ;SbnC`%pcLIYaR{@mvVi69S=nLLgM<5X6P_wUG-1 z->zRzqI^O=Fi6M;27UGNBPrj@_4qgV*D>r-LO1#pIh7Tosw1o7uygr6N=)+kj!vJh zRSrVqRn8JzPvV-2}I6+LtJ5@tk*W?k%A5WQJ(b3dZ zdQzXeT^lJnqm}j+g|B#V-BWXcJ~Faba`;PkV`y(}Xkafwy3qfDy%_1Dr#2GyB_RMCg><5TuX+pEEzQoh078UASS*MyWmoBS=~tGh}J?|+1e+Y8s@UBCD3hgMc^ zZxTk=_4e4@UR|xEJ@=;CyRK9Hp|QV+IbJ4kV`QJMduuMZ{wC&=lt*y=QP*mTF1Y^s zhOPyI>(5Fz^mnzohVekx4daD`YZy;--7wxrrdq#a;Kw7b8^)_%tk**=l?rwuIlkZ9 zt)i)2>Zs#En zTs-kyeV~5Br#JuP&PP1*++!2ZfAX-yCcORh)A!$d|KVr-c;adQyYkAbt#N{b#G5_`!3Ry=VJvFaGo?Gsi4C>O;5hIcAArOAXoa(hvT2nWg`< z=YC&(>Xu29&VS(MiO=7Az~l#J|K*%t|Lo2uUcP?ajehy^x6eNG{@FKezs4&MKDqS{ zQ$G5e-yOflL7Tq$&tv!a#cpq|zQ**uj=uF@{j0Cp|KbYwet7y{dbWM?p(}U1bIj-W z9lql2L!W&5nCq9h?uq~X*Xvu|)4%T9pI+yc6>nJT=Ewd%_R^WlJaNv=W41YJwg0_+ zi48~1{?de7|GfA<556&X-+LeW!S-J|>Z7miao}2OP2cWIxBT?f*#{i?*xqj~b^Y=a zAD?*r@D2Jl_`>>6y?*DY;orIRp>fYV_o+MA{@`uP{Au|+A75g_FRnfJmdAhf{AQEh zeE5iu-+cV1M;$YB-OnBMjov-3Ut;>qYu-5a!4+pNa_ohhKC{wyuDo!mZ4bNUrNtg! zd*iE*+^+X~KRWe$>ukT*j7w)|6rSBf`@fBD8(NW*~`7N*i{M!f2`1pGl zd%kz{O9#&R!aY0fc=1-ZY;^Kp7I}W{_pkjwi{JUz<&L=e`g_(|V(B^O{Pd5z9=qdJ zOFVzqtjE9m#@L@OdG2k?zOwbVw|a25Yo41qZ04+`w!dw;8HY^2aql?~|MZdV*WdEk zm98KE&=bqQ@uBCx-ha)CpZ@0P?_7D!wm;hWjtNUVu*AgK|FgxI`}e+ltB-&7=bs*R z^hO8$V$84!OTKpWI?tT``X3+M?V>gIUFeAi?)c%0pL%cYwWY^yI{Jd!7Fqqa_1`$@ z!NvagtNzcNdhZ6u|K;v&PFnbs>6dT#+~i{~xqa?Y-?)6Mhc{dPxXm|ze65$Zl{)_) zqCj20ZvT}YxsOM0McOcd@ejt?c&c#U?I(g5X>cd^835uzFF2c8P0d8&o z@$6-T**o)g=HElO@t%d_MQUviGY`u|4#HQ3jbM4}N3)X^X5p;c7=ONq);mkY3C5$w*^}WOlH| z?3iUc^B;oe33dNOEbR2?dgv&IL=e%JalR;OQex(_#|)og8{-d(82uNE(B0iTJ-Qyc z3d=>((HDhQu%Y#%nad_KcV_L(f0Q`&&lc5odcOP~CPNZ|L>CB+;M&%YW+to5z*)61 z{vr{?^TP6T@s9k(9%dcZ3oYQY!gaW|^`n`^GBay7?aY6;IPqUDqWF5~VS8~C{zn)I zZ)pAV%we0EGm{qc_u&b61)eLkfF63-QLM#9__U}}G#vjtGgxN^%%bho-%q&pUL(qI z_3rvTOa+q2HvFUz24j+prZ)>s@6oq2|8e5ff4OLiG21XK(qJ3U22pgg@eB#yccTJt zT`PaSU#l$n9HB)Gij2p`Gf!w!jc1_K6Yc=+$A61!!Hh5vPT!HYn14V-@x4jZ-<#=# zxn8SF&k9i`XI1%c%LS1>Q2zVc@>wJ5>eI4>PY)QW8y0{z(Xf2jicoANftA5l;x^Jp^as zEuz-`Ou(o(#qSXef0w9}e|`D<*2I&0403H}+S)JdCpsD(Bf1+sL{v}OM+kpo4V5w;UmO<4EeB~<_ET5fxTVEDTQqyI?My}xzx zU!MlsG$}SK5FUb)@i-BgxtGuormM?#1pkMB5Y0?RTR-aVz3cALO^oG#4E|QM)tYWD zz7fIncZvJsrTD(+syhx{zAZb9Nd>|lI7L)fevD|9wwLL5O{n8aaX4Kjye=iWcR#y# zWbMSVP~`2uUqtnF@wg{ol`!7jD8foF5{A2Rm`+og3QQ^t4#cyCH|Gc;2zKf8NVjuR zH{vfvoq?_oA@0smwG+oKqBh?@2{my#AZf2#f1yzEhueRxOP4=8CJ2K$Ld!c{M0M^b zG==G+_1z;pQx|FT(De3u8<566yOLf_x}TJ$!Lx~U7wIz6+ertEn~!aEZ26p3-)0pm{CmC!I+8 zqVByGtQ4ND#j{ulv@!oe(#uH?biw9~SNDg6YWYfG;H%BT&6-ANUJDkKOm~F7GntUrqWf>DcyDe^zYF3`3hB7$6-(`Y+uTSXL+fi1esgLTAklc_`_t zy30s&gO-K1ck0gwOwa~)6#-^9b^*OLo>9`5O95pD(_3>R4k3L)_e5~jMO4|7%)a~B zEJ2$f7$p53>APK|eGZfUm2~h7rM>3j?<$gHHgv(FClQ?SpQZHesr)kG)m+#Cyh>C{?R2}YbMPTi zkaM)s=}$Gjpf%i@VAqA_+T;j@hvG=dp`xbVE}~TW;Fzah>_xwp);E6gjZGUVpW*Uz zsC*jj#a7{Vh2P*tb-&c-CL0Vj#YtcJ*Ph?$h1*s%>9t>+z<(x6&UX^`ivpwnrNZt* zRSSS8;~zyS?@r=VqJhKpnvFHOnEC%2e=HhLHB|5sgZeyF;UsbXA10b?Gmg)0oW-f*d5)kKr+cj)RRA49V>(bVKk_@fSw`fB_Iz7yY03jxqv z$RmZa`XZex=9uvBg86T34X#Tm@!TutD3@;#%j&~L3m zP{pt)0^U_<69R{d4pgt#xkGHV(4s%8S!R6dXt*i?@O=EesO{b<{Hrkd-BQ_fcLrY- zB(+hTn@b$6@Kl^Cw5J1w!EPpCl_-&Z11?qb9V`6WVj%(r-XvYYZ<#}0_W^#O5^bzPjwf}SFXP;1%4{*F_a(aqj{Jpzpuv3mC zw1S)P6Ul|nc9}0}k_As zKQHajU>a9}4{Exwcb=}NS^zv#xcoX5@N*IVN;KT;4(9)~Q1$0wt$vFhp->+^msg1w7hzR&Id(x8#W1z;8J|aK7M3b`IECcJ+vl` z_lf;`fBD&of&8za^V{N|c8u;`=se+plc+^VLvogKRxG=;z%(Y*BiIJyG^xvzZpM`BPN6#&ged5pN9 zoZ5i}xl5=;=W53GcYygX7Nl{%5J8*FGvH~0WS_1xf^j-yh3KYyp?(+HRJsovTiX$1 zVUynHifD#^z&;%q$R)zX{*(B2$LW11PNO!%-oC5KXFAz{ zGw=)?+kthN3D{LI*$GA*uW*3@S2Qkn&eZ`S&`cuQD0Y2sp^h)eJdj5Tt@1i-*qMZ( zo#2+H0C<*=gt-Yli4fm+;od2k(vIMZ<>x2{Ei&r)A}{ZWIu}7U(=dwf3t!6l3Tv7_ z$!;HLixJop@70-*;a>{P_oDcA$6mjK#=7Pr>?!2%F_|Y1-xJ9_%Ul1HaStvoKl{qp z_IZd=Z^7T-_w<;5D$$3h2xj|p93}~|knqWzLusS2<>D^>{SK_j(IVikyjt#9?SLKR znC8p=2=5e8YdLYFNH4xbCoKNw3zFQ3MQYZ1oWd)G2P9WQ&TPdHzNm1HjV?CNh>c=D zveqbQ%OHHBh&(+k^IH5)c;5aizTJKv*Z~coIq?HUBzJD+UoGOIf20%4f3EOPuf>2R z)_IA--w2O&kNK;|AYLx{JA+OZgq1L$FyIIg_wa5_ z>DxmGuovE`<}D6!q&|hDWth#2)%a&zBX5Dp{e-vafcSR%UcI9lz*+K!`zB#<`GC0p z=MD31ocu}6CJ&dqRpg2fWL$$DCdYtA>iMXLOC?Qb69P>dtc%Rk4+>h%DFlwQgY}oT zLjW}AbFh#&duN>Buu!iql=I%7L@Ynl^s9N4aJ{@H&j5PZ4!m079SSF@>sP~PWMac6 zDGcK);+i^~aqjzwJe<-Vx9yYO5e*=>+pjJ%`#!80=9>xsEu#Bs<`{LV+^X1<`@urm={BWR&UU%fs_LewF9)djRK%4QTD>q%FkSQ5dR-;l~eWqqKNOB zZ;rYr3U|vhGtRq*9m7-c*G8RYzBv}ibRB5B3j78i6Y-(Bu(#mNJ>%PL(*m|v19+~y zRem;!fS+^aRQ($SGosJ1Q_7S7l#KK4VdrqFx_29PiV^(^VaKT)ZLY!3i*T`=TI&(E zv!wa<2!Ms+1l%{%WRfT&^#N@SJSs-Rjg-{XoG7gQJ?5W&cpToY&!hC0QJGm?gfy3I8vwjmj)IrgWC@WWiW{_Dh9To(7paPl`wQxytz$11#8SZXbOc! z)oW>nD^-a;(bwQ<`0}-_G?iAFO#gv;0;h+DiaGU2iJcoqPc_l`+#^PI%>P^0T zl!!RW73%t+sONvD9O~1>BA;*`mOD`78FV}I*R`5++=uHFuE5oj>uoMrs&OccrHjHy zDGb(?D{o+CMB&^G1KWumI^=j6EiH=_Io_1WO1qP9UUL+7?43C6z< zS4hs)=La@=(3~-?ZgWK_oL_#{6$T~i?WX3mas-bSn!$YC7c6xb-eIB7*5&iRYf{Hthbg>5cQOBv2!8sE z!rA6|ow}c3L?Jm-=b4`<+VvtVmYi%vpX;pkHX+3S6~EQiioN4F6|XYv(B{A7aSyH& zhV=U~&2vw&2V3Ov&HS)=`X5(5gQ~}{sP6j}Q&8=6tC&;1vEL%e%Vbanw-KYl2zrjF zwfII{<=I9omYl6SgOQ&hYSY{&d6^M)zcSxD6wWH=@}OogSI6-}g_kLEHLocMrn&&X z&a@7L!t?O3_;zwz`qngnXUbR2cDYbjHdOwm&x`84U!<(z_bPdW+?J5UN%=E{KT-1* zb=P73(cuwp3;tM`Pxq4i)`;X= z0fj$T^A22ZrBQDa`as8f;Z=aM#CiWA)QpN2;eRK(N#{(P9gm|W&&5FstpYHWph?@e z3wL*p(sql*HDFTL<75J$5bFOy@|=##M5UkVF^UI}JWoi)PGOnCn-$J6&oYI&5#fY< zNe4$&HC`&J`UjGTZ}==;FM@PBg{Mo-vX`6@3m0l@Xj2*bMdRK_nB;WboB%jYp3{F+ zB&__n_3DanuCT!_b*jjjUYcQkli^m$>(qVO-c~jfo&T`f>30>z+BBYEmAbD=UMC7^ zbOKB9EX$l?zKT5p%}u^c1S99LgDl1qY+V2}?+B;L)9-8 z22hBQ-y`MeUw@ZoZ?g(~an6!Jv&s z{ZR52QC&AT1_W(90nGr~igA%JfLDzW!0s4vDo@Gm~TjOsjw8}vXYO*ad@WXRa*j@wEjC$@TU6U zx8UiMZC(I0-G7g_9VLZ!0?ULYv|5}iZdrFZRS35nn$1|OQ20xQ@0eqQ#p0}aY35OM zGhQmp&5;4JQQ>}inZS_3dlW9R*jhtE7(I7q|LhFJOU1>kA4gfI@U^n%V(vtuhvRgIsyJ4$ zN%I#AUZ@)LgrBL+#xYg^6r!qV4rjSZR$+si)Hz zXNxtu34K-x{q29`jToGd$NH_4%#*`Hb*CtQSM@cZPt>`1h%wS0if{YCfvp@@DSWY&Q69E6x-e>L_aNQ}_seDsS$M{TJ;Q1me zWUab>H%Q(qw8dP>QHyZ0C62PX%GWe${|b2oz@P~7t2LH#{1qUF02md8E^e*#Ev;aV zr^w&Tsd*$@CVaYxSO{<|u^tcWvOm5?7Jf|_!%;3|ArpL-N#&AtvA z{n8XY9m7k6=_*MIcS}A@wMzLI6gWyM>jhM{5KYqjsXX3*1;+F!Xq@&90g%Jwu?*K# z`i8$3a&FL*m4ip*N44uvu-D3|HC8~EVKbMq0Um+OlK_SF$7a_SD z$N$aj%FGM!zhG3K? z;A_zmDo~XFShWCHE=N0tAd8bF2UY&Az(!Hd>{l|^=%0k~_r>pvppV1E6==_`{F(XX zGq(QYX+j&gS@gQULU_e*AN$@cg5X8?NIBiZTxY!t@kjDpSr0Vg(UNaxc-M`>4p61d zsv!UhLedmM((SAI{Qu>+KEAAobk5bF&QnEQ`l>NDuRUvtt8vWVsQmIQ5zc+!6ue>= zVKqKccvDUl*_&Ti7Pj1a`^hOnqo~!r>S{hCsyXG*0```iif{XZD1$!bX!dsbwOH3G z1wfxxpU0topzoF$DH0?EsCQ@Q173|G!SvDV{BT^dxyYv2Mf_*1E>U)t~<37;G<5 zN9bKTQ{d#W<-7mHn5$OhLg0^4lhj;=pU|wSR3&!9qsMe%tO`l+NY!}({lY#}s|l9L zQUC8j;Q>&YviNR|+_B^3DfzWp@QB(C$mh zG3K!cEOfufq+6HaZF?AYc!oga+f`3fH6_p2v?9W)cBibAr_9qs$a)Z{4vwnj6+p&}9bV(g+{M8H*@D6&T3ii{<`o+{cq zO&2^#j?PQZ*NDEjLiOH&xj4xDDtV>J8_P4yr-r?2!pB*)VzXM+5l)-1-ahgq|Ev>9 zGL>P>$=QhQKP zJFQi{QM0K5ELFV*uu;`Ujkp5rDUSfCwxDSX$KlXS@2UcaX(jSjhXRFLRWAVM$P<0J zM)d-qrW62+%^VG2SJf9a8Iq@=W21~$j-;llu)9dh&S96iOZ8oZ1{9WLhy}={0W7J> zvpGX@S!t`!YTTr7PX;15R^)6?cN{DPS#=2EpF;rj%j0FrApl^oCe)g$$$2=_gqFxr z*D$$1gCXbuk!UmBv4=c`Sszfn5pY1BA~Qo7=2BozLjY8b(F_wJl2WR+XN<_>a@tkC zZbnsNfvPhcJH0o4nDQ3FJpG(sQFq6>HPF6ki zFx^lS_l>FPY7q}S2ty%0paC~!YL;YB zHdm@XB{T=ts#*i+N53Vir?C-v_M~4P4Pa9)4PZc?kmDS|AOlA2mcdDLn>=lzs>X6v zmxGT`;N4Vjq0bcrHmG`G*38|4wkyQ#jrRn{xOVpSKnn2X)rEl;)H1)^YQWf*hF+>LLTUbcXn1@qrMZZ1=g zxcWU(9xu~MEX(koJyb6M>Pi7{uj;P=i!=p5MY87exYMZcIajR(EK)ex968!V!FTZ8 zEN_|`d{;D1trlMpKA+?y)icZn5t~sVuQYihmjGB+6L+<$1;Bu+uK?$0IDu|aeF*J5 z9II|=l`k1{a^5dQ+>a`r*Hqv#d{Nm5rt<4@VRun;uxg{(It?wX`gU+j;E)IC}~O9Bef|LzmGG1L2Y1UKN{@Z&6Rt0~l+tZYPDG1e;F zoME?jm8bCN2=1(Dwe7Cj4zNVk#UUdkG*_FbMUvk)DEUHlFBwB`n{W~SQyyRR_Tpar z2QDnfS}m`H`!9+1V>t|fs}-)x@SX!z-%Y75;(ylEMDomCs!yU>ii0YBLnKk&Bv16* z0zA%oyHzbZ$1u`raoPEAk!Rm6SYM9mb4u+ilUlR~9xIOlaJhMI$xsjIAbAA9ov7Ew zd{eam*j3d6;AhxiNZi$`W{?{8S96*^#h8GUshVe3t+3Gvc(goOa}Ow7nPGy3=&D?G6yS*9`Q{bi*YcDh-b+Zh>QJEOdila<_fUAX zLSMyoZ<^B^LxXE^0p2051Ub@fZxKxYPT`tt23}>k_df-z^+{eOPv@kBJIrxIh7uhI z%hP;xM0jlK{XzizR@|AZHa_fuV^m!rV#JV0LV0Y4InBe6ikG zLn7?<8ax@#!D*&m(B6yhXaD`E~iAAj%^KiN$pS8DZ^-0cGA;GlJ z;D9lL;BI_Mh{1>Bg!1!HL0t2N;cUKEpS$(tvqo6Fm*aOL=;&(UUwLq{_h!Ml8h)z6 zfa7qwJf}b0rmwvJSC1o9-wu9Q>}#UXU!EfkJHW7N7j{6)&sp7#`6e7_g*mRlV^kkm z6~>$7^=jU%mL(E#!T@L!1Z#w$?lQ5b4;9yfC0fyD4ee-!IPF)6gqPbzHKL)-y{9AS zvj}g%KADEH5LGmOP=A zgLtmwLLT4q#*!u)S=%8C&rf*#RC)?{fK`ot~R+^hAo!7S+bA1LZ7&mcL>E4 zJsrdUiW_T9Aza9Bk;m^((9Dg7U1_Asg=muIiNdZ?HP)F#03>1MyN~uH;qkZx ztNa>Q%9A2YEask)cNuboMQU~-W3IsT$GIZNdZC(OM=Si5d~QF2R<4lTSZ$?@Chear z&;5T$9P;(XQjV24b>Z^KQB!Yk;is+^n>6g)Um;5>X9G1nTJk0%_SDF@s4#7K#^4KL zt@=>6m%29#S7y#u_P>yPrK(VsNpOlh_x}x=0w6H{3UITyFIQb5Xui1fRNG+V*%~zh zt`PC^Iooab;T1UBh$U7FV(MuEo5uxW)o#LwC3u0tOXca4*T8yQ?je3+NDeQ~0V4jU z>iGXrVb}PriC2IoHi?L@9E`G$X25I)D_L@(vPOMI4B~Hay2TbYTRwg{^C+eR&Jhl( zdvKHmcqZPX`gULA@e9dCeyd`gqe=5m61-3~Hi+ohHdp_cDHe@U{ZO7_6MNwamA~a| zK|%-kkq~YWv z{0`OQ@$%gN*9(tW8hfu9FXNI>m2;HVo-YD|4r;x+A|%|YE=pDZBE#IqV;_;f|9A@w znkzJc-gTh01~sfRD0#f(gQ`v)pB&dn{?BezUxAyneuxOuu3G&kc=}4?7;Q2EaF>V` z&T&%iCnEK##q$Ki4Z6f6YEUK|Ect-s3D%qERz1Vu`GNxbQ8Q1?6BIrq@)mMq7(cS! z4~^o*S>E|9c?8{%2>)GX%L1UO8eA$*RN!8Cx?K0XA)5r*b)tX<9INn2HP3LUh3*qO z@TCrorjs~Vkm8vbwE$1UzlxlNPT+FM`Q~Rk9OmGu@}&Q+6IXlV-5QgbITC&#Pi5Uc z94?~gRC*0)W#;_|UzMj~&}2AR6z_PRy)3Z{&CAJOcW6X8kwhJ%LY%o@vJ1|@zv#@# zPh>h?$5Y*Eewq0enQ)));K-&5pD*V^Wc8hA zz9CPRd=h^kUuy4U7{P@KUsnj)$b%Qj=jB)_csWfL*0`lmhpR-X=Nt^OyC~mPmP5|a zX=9W1lCOxG0i8q*j}kZIH%az4Iz|!wxarv({FAtR%=e@EBnRNl_>8do-q+|H)sPYDV&eHJM^Q}P)R-M6>AvHg?bc6`o&pJaaT^Tc&G$KI|GSNYAR z_-}0!z9vtbEuvoCi?r(0RfjW$O*C$OUlwhxa%4en358IHPgMAXnhzWG2nXnQubPwa z=?;%@TX3$(DA`@%H~MkBnvW@b2B!-5SEmKrMtn-2^VQ4I?P_hFyx~OC-_qX7AagU zYV&p*zOGT|x$txS>K@Udk6t~mN01Uq5Bx0C@%gEeLkmN#`~XD^(&i|w_btw$>aMc z65pPQ2e-5h+aie`6p?{P$>Xox9e*gKW%Y3gXA9BxCZh&iXw*S?x4h-2wgq#=#br;0 z)70H*j?3^(T%qtl^E7VwZC*4*Z*I6F`vfgTk<8t3vYOu)7XAH1!OmRu`nMOG@Neoa zlGOFf(zl_+BD`AlHUArU5Z|*64RW_t6}eE{&2tEVesNEF2|h_0t^6SQ2O(-!S!u5S zR@e=1)O{xy!C-TRpgdgiJjwl{FW?pUx#XAntZc^Hk1g>#A_T;E@iwB7l+%coZ2jMa zQA_YJoS@IiVvlwg#k&@C=~^{V$G@oitO2VGahS+R+w~3gPnm ziV&VTT%Q{SHNO%gTVwHU6#zt_&Ija6*jOtPMBcS66PXfxp}8W3nqwvJkfSDSH5d_9 zU^WOw-z3s+M#?8?m42(0Gw&~-0pYG26nFV~y2paQz4$!dXRcq`D5=Y|qs@c!{rD3h zICJ0@yj4WGngRjPoXi4zPUJA>kYq_jF}*-rA;Szt!BCfLk`pEGmZN4t4^`mnc&`yZ z)vvCQ%jid=Fl-2*gXFn%j0%JOi?M!NUb#JtysrG?cV(CejedKfisz`95@-a3Bz1+W z6h27V9kz$*gdYlx^(y`9k_^n>hWX+o-d8^R$Xy~zWSdL+ZSP5bp}b8t=7>zevo%%F z3dYi0~Da^M`^*;=+mp9FM zSvmLR@$I%L9XoQDKUcJl&V`zAp}bk{)X`T6^I0-1xeR}+mE77x_u-3pujGeDZ89uu z;dwDAX!R(06P|u)2P#Qy#{ioWR zs+*_uuzmOx-lyM{3M1-*`Sbbv3EF&a`Q!{FyIW|dcf_~bKIt8mQ0Iz7gIp*?cc1%S zTKrCg8JAk<_A4GcE3LjN{Np1#`FFM#M~IX62)XS6wC5<6S(7j1;jd}ugzca^&jQE{U2cKm6#?N;f8uckZXVm!ytTn2Y!H^Yg2hCoB z22bn2np`h>N|g<6c5ET0fqXz+o5kJi zS@H|UnTDJ3Wy$#l{6t-=vtyQwzRjYM5cvBjljDHgM^4z!^ z|4#&gY@Cv5?Fhz}7fYC9u3=9XWhb64PZ{W$ga^gJauF_+%3hU?t<9?PH_)W_x#IBo zdr{#yH+~?hX8ly#qHI5QQUhpS1+EnKfTQIn^nJ_4Xb{Y%tXF{s8U)$!#*W&EuSkBT z@N-e}{IR;P(onZylW5-he`SgEFfwlw@0a17<>$zhO>bxL#d3Kbz@AQ#JWmuLJKppvsF4GkL^$guk}oM--XyK8uD!|7 zr13r>#Q#yg8kyq7!A;Ka5N|Z9sQ$Jv9_iT`7Ti;Vh#KB?(Y z?yP~YM3b%yQ3LTEG((PZW0j!m4{DZj>ly*Tn8i9;Tm|ygT%Cwdi((Krv3EUo^jP6j&RIYrHg-h`h>F7kPod5ISJbo|60J5hMLSbm1&+wFG?U}s@F7tnt(xiX490s6I7;Cu!jp28XvDIl)5Dx1tQ2?F z8*r(@cO*ATLT9Xt0Pn6ro3H;c;p=~G2M2V6@N|_Szf(uYRSAHFqKL;|$R8frK$L=x z7=fF0nrkeNI+*vd|6=!anjAmzWAXC<3&8Co)IBr{9%E%W_qDd-81u z+D`sMMcDc4b*`D|YEfA9qm-`D?iB!xS->MigN;sk1sa3-4}3&7UI)gb(Q&6HY~l+n zG2+pZ#|t~b{-U|WQr%}fTql_R0g)$ijl!jppJ+6AX;49@+nH?^Z3e$1L~n>c);apE zi@ueAr>V(KE$vps3C)FkvXEXUR`Z^1#(&|%B7CxY41=3P5+NqXXmsIWjyZ-MrS2p= zQq=0-Ll|2ZmQOC%;znV_TPsee<>Fp{wP;Rq1BP2+BD(OTACETXKSosbd3A>e^;4lm zUmV{~J z1i@hWIY$H^^^f_SZ1Rmw8`0_?Ff4SDjl%N0QQYTmQ}_*TQuj-vZq`3Zag?rS`teiO zkB8&WL_S9+ai6&N|F;U`S}Np#=A!N^j3{rAw?gV<_^J>BS88i{K1~Ec0}TUW-T_P6VNABauj+WKM5M7L^av|`F{F7U%e>+RF4f9F_nSJ92_GJ;!Ruu^2kX}T(rwbN2k?tb> zKhoZ$+6-Fo9=3=kJ=V&-e`gobJN~PCjC2UT^G<{gBJgSwCfC|!RF#0O!`;Sa2G6k0F%=?_Q?T9Uel?nLv{Ur2gQxpzZd$o$JmFD_|{*~R>Ao7H$0i@=vo-D;I+^{Z2QtnAV>15KE$~_zH0{R*MtPp`mi)S(Ow{2YGSwi|FVTkMW zCQbGXk!~e@gmfsWZ7z^IFi`*lN&rP!#2wze>2#x>emD%lvO8?cSr2&7y5{cPG70_g)7Y&# zdKc+16Rrk50@ys#WY0mQx0h>r_cS>18_xr!z*^GV`|U;>0W2oHME3;?ZRx3td+9Z# z4~dA!IXywJIZR;sIih~VheZvE`*g2yZ?e6=Q~3FJ>Gu8Z;!-1R3$_qX5wAG zL>rL|iZ)t*gU9JyspcKUs1OAAh_+?l7yaGuocOCuar%T1G-lifSACfbOmCQ4$zQxtC8$@b+4mRFhnZMHXv z%CF0CnW)S*bHtf zpW8(nt`!{`->#yG=|O_Y4-)Om_7Yu-_7Ds|U9W1JL&7zpUH3OdvlP>j{HEWCn`jDw ze$i3)jd+I6Hy^1Q8$|!T72=ApQg|936oO)T`SVp+qt(J|t?2Z#QQT4M(Iy1;5n8|>34_y2xoh^&StR@%pAe`2veu8LHw#Vg(YK)~2>S4N zycEw9Dryfs>?qdaBGF;`5}`qvDXcRyX3<2OHt-P9!S0nJda#Ecwih?xe{ezhb%~k7 zHZx}?O-u+OeyVU6K1~>^dgx(mScC71yZ*OKgOJ`G#mt&b8`=cH;o>^*0uhMPvkmkx z8ImyWeMxla{blP%Gm}+j=B%1%69RKYLeY!xbP;dfLk|tyCrTaEVGvlX79|~FhLOPC+q{y7WRRel5RZPuuQo1z9rQCX_>NHC3-8+h6#e;KoL#Y zs8P4S*_i}0oiK{KaHB}oJx`=ek3o;@8|baXq?jNGb{9!T&k-f84mABM5zRCVi97yv zB4Ot%A~kvpdgMMHy%pIaCJ2JL!dvhH;YQp?FTA+Zcu?z({}p^ggz}C-kIXlR-pXtf zCJ2IloFFuU)3hqt_OyaL*d!_?-7cytUnqikM%sU^N8VdQZ-urS6NJI8BADno!gH{j zNI~w|3Z@n#qWaPOB7o`IjizT9LR!9WQJJr;1Y9i$#sS`KDh7oT)}#gyL=xC;j#Kp$OHzR;d2t z7Pd#WQ-$72R*ELw7Fuh)Hy$mz;+!hNj^~NIgh4a^x-cS6`60pd_loe`9|^{9`0U4Y z)a;RIRp_m3RwP=&pb!~|hl>1zM+(ov!B|lKtno}&En!sD&}%&FaI3J`UnRO9{YLAQ zFP|P+=0b0!JBBvxpiz>WXsU6ns9e?Z0FVD09gA)j41cRIe;RQTq@j=bIZT8u>5}mLaQLE;tY!ud~NyCjlwARVEH^S=IdqRu6~Db)73Zg e^q9TN@&5y^3M;9XH|w4N0000vD=+-AmljX+~L#5pmXQWY5NDCI^%bk zeoQ;$^oiVGJLDip5u)1catY6y9*StV>$e8ab%h-_@Y7O0DjTV?qOV>^+7o~6u-37M zmwT+#?Q`#Js<`&hWly@P!CCcVZBjk%2@gn-8edPKV-9uwUHNM9R>t6MUc}Askvav7 zQ-2#ezZgx%%;kOmH~itkkRX*ULDJ#Z8d}Nuz0$%|VO@l)hAZunF-&4(1Yv+(R_E*{GRQatCqr_mZ_k*(2jC5+8Z*9e zWTSG)!XcTONh%@8Llm~5Z-gxE7|oRyKC{@4sw{RN)4`NeLREZzE^5sxBs_<0xJ?o< zm!cP+5wxG(r5?V*CS_hnK~!h!@jF|k7RsEprenLlt`HALct~_1QlV5Q5%jn9_05#7 zm*ar#W(1Q|@@ig}*0J2s4;REZY!?itSyaXq+k@1~!$NdiizN+7SEHM8qGJzI*@hSl z#O5eI+1auyatfh*-Z$4NuS%z{J+u}v{l^zv*S4ukt*(J(Lg7#y>*G`Y;Lu_~ zS0-5=9EofDhI+rZhxNLzx>CAo=PgQ20S@e zj6av~T=pI8X)@APG^9G;_yg7IMJm$GIVC(&&hieaW{bC6SowUw>r1p*mHSCHN8`qx z(6ewRJP!Y~IJ=+ygJ&wPJ_M^!g^d(pP^s7CXAEs9(*Zfe?1EFfkZ5~#w38sU(j zxoU=(d2aWc8qjnIc93XhYAPnwG0oLU3Y{Nw(!j!uP2TLTbvmThU zAHVZyaHVPKVtblmB1zOn9^Z8h=$4xGp{b=kL8GgHB>G&M}fmMmH4nRn%<= zh^V^7>R@^jDeO(YM6I9~G+8qtLk*Av=lAMGm?xC2Mj}ImQqnmmaVTj-({t+XvZVWW8(FKJ3_YlEm?%uOT^_pc|+|P8* zryPE-O{+Ph-IuyBixg)S-tkwm?Dh}7Z<4MG1hgA<9KDr$M23#y$OGYIegRf0Me&Ir zy}7=|+ytnjUWsJt!8$~9iCiV>_;>L6o2CwW+9tGmzIMQ}|ap z$C+oEm1)K(ET1jH9^DF@qVv7PQ)DOePc4v+hB%N8pQR6SK-@%Nz|h2&-76=)^(=oL z*54UOXZIOMvE<9VKtkDCB*L0^{ZBo~y30pI>AQJffvuIW8b0YzH+{PgQImm7Imd)o z`?CMAPq0RuMUb!TfC$x0pfr~=5sFm?bb+d4fW?x$SEyptiCsBzK#V^}!6pX~lvbbu z^wriH3R`0|8rEScSfAIb+s*a>L57nP;h(#4lJjR3(3a?B-iF3CX_HMRl0DHyK(#u+l1gu_+9pJ<;9dr; zvpJnP*d&A_li>!~*(L&Hp+O4amq$cFBTXdg1AV#*U7urL=tuJ3wS@3+ZX4H5;NNh9 zrJn1tNgeGKFcpaTIIxqRRUVVh5u#OQvnsTo;9j=WOBCD&%ck8-1s3-N=-EX-;t(yG zD@tqOeg1buX;z%unsze@e3s^Y7K=E>O@t9}8t=2m7t;haOq6s_G`PGC$bc5%%GFJ{ zvcctj{q&_p4I?i+>D#Tx&S?i<6_+OEjM_ZmHt5A5xy~ueY~%9@YQ<$pM>y6Bl9AUtISz zqi5!_NhKjZJCwQhX}@?o6+l#|rVy}En@t2{B;=K;&iJ=bCtpg;pBZ41eZZ)Dl-{%> zeIW~B5iF0P6u=P2L~FL``8Kx3Tfncy8+!#-JZJrIH>;vwh!3%%P zL7a(ziIn?xzzwOoQ(WTdzl+~?vDo0we`>_nKlM zj%}Nn(<tD=CHQ%h5dnMF*4hHaLm z3K+=w=a?~KC!!{q$4F)vewIo(w>y>+fDb{W1t{ZKQ6jUr{|?>#8_V7PT5Z=t$u4Jy zI+SH8|Gvd+!253*`c}^GLTl1CxpNRDGt2EN;9ZZ$yK|%n=GCreeDeW7|NlV1aG^fg zIcCj#s*YXBAW;Kq@hriXZLtwFV3t?DZ-bo2$2yn=s4X@;HNL7x4Jh<1O^8y3JMob7 zv9afAshHrGEx`Q~syEXQ%n(_LKusRHzo0Y?VhI1Lh`SljH2k%35XQ1zgKX1Nb_T6JZehDhL{JSXxbh&r!*3|q{Mjy_?HA$aVISsN45zd13A|>oo))$Qrn-Q9J0S|B+}= zA+%aDAb3L>_;JolKw|4yEusn8pTbkCMm&ajLD3tyixCT0LrptMQ2{l`OpFF~iD`wP zm+N%eTU3!BrydBb_h1B`D^L46AqGCOpGpo0_cV4BoxOof0&;iA)$#L)qzWH70E{8l zCYBO5j)h9b=bhman9!{PK1qgI&>>E7p*4pLLQS>HaNd#j4Y~h)THHG8MEPI~c6|Zr zwjWz>#H@Lz{zu0__bVSUeAu{@^dB%D>QQPhL!Ll+?&e9WueU=2!)F1c<$42V?DHK8a;V`LbPNLP@AyI41XS41o%L&%zI`Vd{c`)IMNi|;1l z?&7)}Qx?7!v08l-alGU2_kT`auDPH0b6c!yr7-A)_4;+Vr_nbXl0u;u*K_W$b_p*p zs!=ce)tU{Z3<2s~K^6klg2)nLHXaBz^Dk0&^U}VV5Am=#%o+ahUPAa^o6d%X!={p- zk9NqoCmfNf`r|dCvq=l3h12@H62?z6O(0$ZWsW+0IPETQ&to7KpLdAZmauIj7g&_W zo$o9=W-Bv#@#2QbBk6zppp7erm74SCsRW^Nik^u3{lyhYRv$An(zgs@T_~iI`Dujd zltxIxroRDU`%me-HmtMtK8+f1SB(X_4gy3twqUiPN6A2bmfMQ+ThOH)OZa}d(x`PR zEHsFH$pN{*VuUi{Tn>Ve74Zhe6lYn_Hi?%A68L|eSg?vtaXU}e-z%)C)6tGWo_Tgq zP$Z*QR(6R%m*Ct0+W1&kmF`2tVO~KYsX*kXHxR#&s&D81Vkuo$4}!F($lV0j!{^UL zdFPJm+ED+73b$-S;CO6s(y7DTvs`S#m34Etksx{}qCJLby!fmi zwH>(~eK5J4{rL6GTQW#5alBII6%;h7vTVt1eS2{_lQW+yIM_N}w)~ZqOEll?aVO`s zJz@)_e7(_=#@AAWQ*mwH%hgPCj056<5lkBbG7m8=>8&*B+QIjWFBrWpG>9JL_dkC! zQ%)7f*N@qb82+^4p)jFvNM+J!P0mE1M;Is_l;Ht&4MKE6)geYa$88DMBDppP|Al=O z%@uM%$|gX80)e|9Skw5buopYoZ@!)7Hs2J!rTQC_A@_D=?T%OkYqWH|x`A930TI@%t58EW1L9EN;m3GsiTUX~VMyn4QfU)q6Km90w|)!4{SJ8zZ9+5beL1ramD zkr8STcGrGL3Ai-^Va{tab6z5ta->RZ-o8+J24^A1>cP7vu{z`uh9jR#$~@#KVa8X( zUxOM(Xc2NqM$Hwlb{ZiCn@)ZXwkd@myr2e)dYjUcLlUu?-rXzp*q+A&q>?v2^~Y#W zhd-FHSb($(YYHu*+)uzAhvcDqi1}9Ld*-fg73Yo}B3|fK!jb{!gx?tsx!vA*P<8eq z4MXdDCtq^$Er9zjZFD+|LQ!Qdt}G-z8_^PTRY#@L3J%k(E);t=x1fu7cR7&l%`~Cx(5(&fT9{#6MnE1 z>2co391eq@z$TP^=tYW9MmFXw|5;28vL0~aJcW3Moc!EP>?u6`fRoUUViq8ZitIUJ zPi19L4C{ZOTjM-zYi2pY1o-%KJ?9(wg7SR+wjj~CVIh~p5nJCm%{1C=KrS}@d=(1H#jCdENROcP*^MMp`P=>gA z`zS04%sSD+=}9iCwMa9ofBP75kE?)SFU{A(Gb~pgIoJ1urj1mxK$j{zs9bXPv~-I& z-vW98dG*x-<<6{V6^iq;$eMEnG+&Y#wYS`-8?@_fgtik*@Jrh`CqQ9rw3{F@Eg&xt zm{_3F7ns4s?W*5Sw(;2i%)iWP{+C4R@)ikiCH@G=q%8anhPU3^Cu3A}xEq!OOkXR3 zhtpmGWe5XwK|@Ia8Kt0bfb;DJzn24O;-V;zE=7Xs;)!s$am#%s4uJx4O=*Wi(^BHG z={|`lDAUUk7KEh%AJ|9{lPxCvJw-s@k7@HlaO>8qh*O})%Rj3>Yf3Q(dH{XN{`m1- z62iCAftkm?g|yL*sQZ6VmpMP)c*AGmU9e-Fre#OBL#RFcXF}B92MCHYzn^QBfV#@5 zkK{9vG!g$_>r@TSzbMfR6>y7Gm&9ieQ@Q{PXU;&k#NISBM-ZN%x(V8T^T<=Ksl~H> z&THe^Toim_P7qnz|c zAT^e`X!Y*|BaRQ)kX(dvg64)MAZFWH{49!lMB$4X^>@Y!!VFb_sS!y@_xQOJUQt{# zC))rA6?+}RuZ{AN_ExH<;96!TL#+SVgGSKRo`8@?PV@f}2J4UMS1EJ06k7KNVj&5w z5c|+i8}9%y{5}m$8=h&uKtat3Xg}p7FB1;wnwZ!IT=~vQPg@to7k&d5SVrKuT2b4p zN@x7JZm?h)0hCRg^KI>j0;EOqQ-0SA?^)exuWVxP-H?a2Qic^w@DrfYmwIjuFER}- z^jDIqJqbe77#>QFwPV z6I+k{YL;YuvejPzHw0a4+7)V5>2fx8f8gIm`c7(Tel}Kkb$iu8deURXXP8N0a3E;U z0%G!*3Q#OCi^?ydpo{KObO4$Fsf!>WZy6eT1hnLn)p<5^m!U32XM0m<|CTX@(NW*= zg=h)4OBa!oS3p23qem9kRByMXE3f9;@pt2*7ZhY8@9{w2tK;f?5_zif5J2Lh$C1+PRcWjEkkzUL$t+H;=#PgO2KSm<$_*J>GK-9A+FjSlfIUoAjd)E7|; z{Lc^#7ACei@4pk*6vf%O*(B}styiIfOMl)^h`OdG z8vorjEWITAPSU&Z)ruMjQB8^1bdu4oVeAsI%7+mzr-LeBGR`yNN?Q<2Dd%C7$rkC2 zgujM#`B`O(0SNC@2Q~&7yMG6n-o}+N`m9CM;nlsRSPbMLu)GHEhM5y$MhDRs1?2@N zn%|Bmr-B6o0t^-?esYvszw0=UnNN2s;gpR+hNF8 zCo!+uP1M+V4w^6;t7cBIBn$0(DcR0Detf$Pgu(Xl^pQ0Yl#%r=v^|duSK~y2gMF~j z9}NJpCvF&l#U>kfO@^Wac|-{7%t;8Wv@KT*u#=}?zyzqZdubyR2{0oAa{2=0%=>^`I zN#E7)Uk>~Uny6lRe`J*kUDQH4xOu9 z0Qh+2hM6}&H4Jx79;SIFJVM;Wr8r&qYw=Sv1O#)FU(m_&2C-RbTJ?ljU%xLaHR5#v zP?mBfDv!TGrQW9cuS^v`rxgUy2(XmXz&C3K+|B$rQVsHa0zd)(!*`yl6U4(wEm=V& z0H(~|?M<(eB3JV1{XxI7had_(T32 zWVpu>?gI4ow*xrGlSgi^hChJQp`FRvPTPWTc~bb>ou{F9TE6@XDJlDZ?&Ujsl_9_> z0R;l7&;C53=Q$k9R4Y2=Vzy#sp+UCF|GEuIPPaq)&5beD-M#5^O-TeC@GWl(FeiKnhj8c zaF1`1buX~*0G&#{!M&lMihG4{NCg(dkH=U?<_Izm)u0C$n^Q>mofox(mK=e$tQc=$ z+4C4%R;jwpYt#$xG$E9kzP!5*@@Ze*K_c7y{0iNw@gdJeX8;wvaN$}~R;+Tw00nHQ z=TVw1N&$5<^}f@#KiJHNQ!jJoeFHCC5FRimTUFB)X17yL01yE{R@4(tJGALmjQD`V z(%iZUf$G>3P_Hv#)2c>2SZGnDz$xZQpyyPZJyeW}1ZF+2KdVO>KH_WuI8qDY_d@F_lmYRueU$r{-@H-;_dQ_+3 zit4)TeuoX_Im%#oV*s;haK3jC` zy_|L2fJjdaFw-r7pYk0tCOGL0k8qvgnGGTj$}w`tK~7)&j=UG*V;8!Wn+8ryMlpZ< zQ*UXz-}53Iy`;-gCN5k1vN^VUWP1c*M`r9sz~LZ~JWxA43x)Pmmw&^pg_bFg^62v)?l}OjFbj5P-*f(l@>8t*Zy|I`e;xub)km=Z zl@^ymDPS5ZlL6|Jc_;@l332x)bcyy{awo`qczV!@-vqjsBF@?d$^zK~Td^x1?}>VdX0hN%Cx?RHG8-g)Aq?7Y4kB zDHLg&*onR;x3n4?q;v`H8bCpGR7>VYJkR7xe#}p?gw^lQ?x{Q`R;A8~Ewna_9!BmD zh!E991F`E$@6UVrg9lwzTmDm+)xKqBV$-K9GV#m1`5s3ey7rk0$4v;hzG#E*r}+T% zfkX{s-$g_sb^_y22}DP!k*$6Mp!81Wx#IA#f+sMj)WjID1xhtO4qYv2Bv z?o4c9vCgdN+*+a^@TfC^L($A8gb zWjMqIcYxWU2+~wx_8DkDIYO7N%xf6;1c|jAj{X2F-2)mDK_67n%OhOPa8G_o*VlyF z5t@H5;^jYmw9tXXS*@&i(z^XOJ$>B!7Qdqe6ydPM@GFw5)iBzm;D~^FN7qhf2hm&s zU-%L5=V&25pjK~nXF;GUCUrSu&zMa80Mm8i%O-fs>vH}EggZ(GtF`5m8y=j?jAgE{ zR;a6q+P}Ul?0BR1=W;*q0a;Eknac6nBFzdnYsnthx7WjG;E! ziXQ{rNq0m1x)mOE)ljE)zt?iKKG~+U@x2VJ+pqjUuuA*JUv;UKGXCtzO#NA1x^eu| z*Mt0noupr*ipTkCshiSb5lyI?IBh3?2lV!@(sLBJ}RZldfPz?E{x56 z5-WIfn_{&UL0}a<04k{GdMmrNf`^=PlljO>8a6IlYrx3?sT#H16DxcnSr_Vg2`L8AJ$;#^5Z(u)`5g{TaUg zWJhOkLoioP-%UTGY)K%au!u9?ZU>FL`g_&KU!D{qDL5LPc6goz`*%xfybX0H*Jt>a%=${@ajmiA8YRrW{3 zl4ATKqB7Bu?ZKsrMMK)(__h5EyLMwhfw(oHmGAuLtZ#q9D87j)C&e%jKC>3O-#l4- zJQp#Im|O*x^HrPXe|(;xZ-#iv?Z4Rf*@Y`4<~P~ZViB;vFbOkDlw;Y3$?+aEM<*>z@m8FDcxia1~02As+NM1vk82`s|R!lfoQ_ z5hgfyEnsz_I#q%kX`o&h@G*9P8B?U`BKIBu-`W74{B%F}d1LHSGPd< ziHz1xzkSrb3lz_bi0`Nvki+EEc99Lqg@Qn!HlQ6+UjKdYum*6coggv>y?5BD|2a)& zQ&2>fft_?m&5zgW$j1Zl15)m$ds7NBPWg#P}?sXs*^dL^3Y>% z3*iAX5Xp2=1ARdorTM?z(+?#f7f{=iI@1FteDuGwm-vgqNo3oAiq(r;l)X=*QWe4I+J_HT2wuhN5gFVoQ`UP*6r!QTYApoC?g63}*xc`3q-7yvv)PQspUg z&-!)9)E@ieGeYiJ!UI=t01b?ccf&U<-5BvN@-hA&CgRATdX|dV2bVRzfz^ol0EPP7 z7E%6suZ80%M9Z9zr&dlni50(Z>5^>&PxG8-Z7a~uRw9#zqxcmn|9FM4Y#%?y609?- znFQs3eZ4FXNMbE6*t;5{>e61~J|;JTW?EP$TFiw1gNDN*UzIk8N4WS#QNWWZY}E>tyc!CM6PL=<1agNlULYDnLt`}^ziFC?9vGJ#Is zXdtzeY+Pgp*Z3kUj(x$eW$V4%C}S3AR03h%GucUU`7TlizQb_%AYB&FN~NgpI5(_(;$U*~H; z^>}v^#b!qjZiIkGDzMM&1H$*11g|)`(qKV1w`jRr5{%g%V`xC;B*;U54q3>X5bLdo zcTr}R^&o*4=5AtEj!wR2f0_~EQf&1s06K1ddF6Cep~Ha-gdSX>aw!O|1!JyEK^VZ6 zVP0rk>wgZ6IJsc?kh`&8ncj1aUe4c-(&Wvfu9(;9kZm2Z&tWt&N&HVdc}l#fC_m?fJF;hLz< z8l>D-1Egm>Wj=tlyH$SF#j^e?noHxIC5Lq$(VtyS+)%AY3=Fk2k%L7(>!o|L-UAe; zWbh!`(a$^hNclcxr{X&VZV~Lj+uO%10#XBS+rnCvm_f7%D0%G6ZRX0m)j)Hv*wVJX zlW!QGuSC6&*0!2MNI9|(fVxf@W5?95LZ?8zRdg4%#k$^%%n<_Cm6pfUWCa0XI&~pE zt^U~o!H*)dj;pq^O=Tu{3?xoO=#LOXkwxJ|z(D#3{&l1lK*v(*rNX5-@_6U7!^kSy z!t<8s_ivF4r{^kDUXxzwgI5ddZ;!yJfeX%>BEM;{)!jCuahBsq5oeljwP-If9Ttot zkqd>QlrK6&$Z`p^CqVPP#56|$37{AT$feCyyBP_j>W>|N=vyPh3u?&3Xu^^Y;|lpl zG)zuY-5q=F28#LN+CF}4!u|br`9hN!0Bd~mNY*ymk@P^}*DHYLn3EjU&X9`2$z@LWH;C(xV%->U7qzqnq;j%YdP|>J=KpcMe`G-;d0MZKx6fsL*64c#6-p#(WD!n99 zBqNP4B!f4i5!7dpsQiv2a;^SFGAM^kp>WsbF1Wv2^2hZ^*0#azoSMnw{0TqTpV}5v zoT*-Wc3QMi2#HuH@9|^IEiB{zZn-*^aqU}kQ1S1~bFD4W8GF$d6QjOCbECv)x-@90 z{TSiKfh*DfvV+=Z_L?80YM&VeQZ-7nTnqboYVoz_`kT5l=3RJuedumsO}_yzDy2mY=CfuE)wSvb{$UaDYM1sfw1*sG_hqz+`V2Ib z+s+xSfotmPP@t=PtT?<2SF3;3Z{j!@KKY^Qjg^-MayrCsqD3xD8br(rMMx&Ju5SXc zl%1ErG*TU4eYW)V+J?iE7g5&g==vEYyh69xsvlH zaHMU{7XmjZ?PfgI$$?>T{bl#jXG~8K6@RA=(ww-y?{SF(g?=v55nJivJcN}z>P3mP zwYwINVrI8}hTL|$-BVUYgk0gFWC2G+JlQ6~?gl_Z0pBjt42$Z(P)S(&2&nJ0@W3d6 zNuDZHe)9qW+k-0kAgy^qtlAp~(5ZF+1f$&E7pR#ez5KvJfVl5+z`NRC(Hz-Hyq|%r8ffNM;?;JpX9up1NO{0`(xiXfvchBLk++k z{@e9XuPT~hbEpmlF&iXi_wh`*dWavU;MU$NZD|ia>e%`-hTZGmh4iIK6a(@7IE~as z1Kio^^BOK(nb(mNnu4A)dW(sEy;abnF6fp)A?|W`NNe{u2{DCu$8^rsEg1QiTUVdl z-wk@4uPh!Odv=8Rr*9(eBo=zDiCX;PxA7xbu1W`k zuLoa*0hdhM&xrr@gP#^eNwtl&nHPbURJGT0x%&YM`Uu17-3#sqm|zpnT_;_KtZ)j) zaKC`%yN*9%H5O|29(=@fP+U_cllHuqem3$v8XdN{j|+p=zE=hdt+N1-R(h#p;>Zra zkH%!1%rH^Ly?S&~3B~&FWVk|DWFWu9VAvEJ1!63Haz=m5 z>H|)5n~4_yHX^B)V*I{&876nDvpFeCYUa}~2!pct!qV5i$Y-+Nw`*>Qlna9SSxT|t z&wvlop>w_`qS4Q!@wXFX+6jOD8=iB{Xh_!%=Hw0m3CXsi+-&Xc1!dhGAP&oH`h-Z! z<|jZ|An$nYrU1D_O-QX-grR=8wf<|EUlQbueUzrfi^!{f&tC!G~S6Xlz zmM&B#-yxbo^LyYmmP|bSa!5floIeI zJ;`wEnX2OcoQEjxsk)`gGBZ{)fWA)qeazCn-wFokCNmGB@88K?+#P%Gj|FZJkH1~x zE@GlVE)>hh|j111_GM_Tnfg+#GNw{s8KXI#M$i{@H6r?Yo1ad98BsR47i{Es6 z?}S9A(=XgA{{ZOjwiye%EA)WK|I>L94~@KRiN-tdTYLjI_jc&-{c;+Fd5%SU(vi^n zWAa(aj!v=wH`vD?P6RtY;FbayHfDX{P?|Bq*4FLbwv@|Y()jY8i5>lX!4R)LCAkiN zp6p6a`kD+Lkct?_vzZe@)h&cHX6@B zdRp_vXtVe}>RYLs)%-fC z1?aNmf)uLrcCIxDo!cjgyo$Nn3z?FTaxzx#7xa1xIyVa43cio5iMa+0TFKAk(#yGS zSvChv&4YvGW%FTckYaC>pSuM!iTS8kvlX zME0fBBLD<`EHWxPyHb{CfuB^0tOco zz{A!_1Flg0A#L8ipKvO0Bj*C9*D}Hv?1~bS5yRikir`y1&$xVPEh}@P%LqmTn0Qm5Yt@ za;(9~o#g51#{NU6f_!RH(q4+7*4xO1KI%JBidcjX)c;sJ{iQtW3$B0jk%@p;@7nj$ z%EJ=k;wbo=x3br6yxlP+`aq%;Wl*k3()-OyCTcyxmbiX$gYvGTH!8*!= z>xW`Cw)ZvDxE}wz>zqL1le`-YkJz{?Rboq8%O`xPO+$*mg78j>*BqhQ%6`0Bc?8%%T-@Udc&A?SMs=sC@L|I2g()Gb4Yb}uF7#0MM2LRi zzlo|Zx90?>qCTIRiQbaa`NXF4VW;Tk&7s`SN0(E=E*pAIBMJQ5YqitsE1>O;?_+cP zS4eA*PR@>KJS%_B+u_C&$L5GG)4gAX`#1Ll9#)w>25xz2NlOT`F>-zkRE^LPp*ao0nsgjhRI3mLL`Qf0m~ z()Z(Yv$2V_cjwyQQ5Bj;R;FM>+8_^8~4tu3v7OlFny~RBlu7saCDhj^du$%{ge# zLbaW)42v^7FqpJ@kjd&-ajq3t^a{p1#Tz<6gTm7R-o&sK;^oRib`){%w!25`gk^&A zl}5eze9%6S4{2Us)<<<7IV*SJ?J-kfljQN58w#Ps7@0RR`sLO~gJ{-DTSVOpUZY`K z_#fxT4eOULchL4d+;IZ0)FBalxd!$4(o^EJKe+AMVA9u{aDKm}b8Q4HB`S3&mXhJs zA@}FBTGbWcjLIRo{?ihUg_-xD7FTg!yoR&YM&0Y$Cz#Yh#JUW4M5`d5p z*jMoSRYB$%X2>Bo$`Ce&UIc8ajq%KGEO1IB9ql19Nab!7er5-RyzON?qI7fO5=haM!Z9;Te~%%*rB zw~{%5Cpz>rPr{Yu1~y_fe05h|??u+?=U_}`m5V3s&vbAyBBre{E1ONB0i1&Xr8O;1blqp1S=(bdBMvP>PXX`V z+E?ibfcITEKbG0+CS@;Dau#I3IyK4lcxCW`O!+}KI`yvAM9B_ehf*%junBl9Fc7Pi z>K;omn3(-7#r>DbOi_bIwc!gq+Q#85Q6C^|^wi-XfPGj`Nu+BuBE77+=Nj57_8!g* zOEa{@dD|=~Hy6jr3zwhDCpq8wK6&(9<8BWAWhx>SfvT|QXq!cPBYs98xlvpZAl7yq zF{*=XB{#hTt((x4HWIDLMt6zT<-G1=oT+vE7;JE$t!h(b+E)|gS5|UGhK+_{Mz?(7 zZ@W*sRztX&JgR)Hmh!@Eh>n0xU9KywE-b!xdK=9^AjBh<67zS~kDJ&pt8}bE@U7xT zK!us%ME2ra+7>0X&8GZ#veq#FdT#KufP7-IlpSIp;uMIN9a5+%EBfM9#Y%DL0Mpk4 zNO4{AMQXV+=lR{x9f;c4Jj!QJq?f~(J~EnUUl5jNvOU95iZ03$kCVrUJa80KR}{NW zF@9fR&FLO(LhO8eKdnAb@C$M(E_I%am^}y5mr%(^ula&?ooXPVL6cnH*yFf!e0!OBg(&o#c{zuyBIYXG|L#zdC z$jMMQt`AR?J9jNb_iyg8{GiKr9mE74&sXZ13FBIEKOBvCLALdHof+uBWgx-tWjw#f z{fWGkIsGbL>mfGXHo+IVcm#NP=sB5Nt%6KpW*4x_4j-t7d28`lZ7GFDc0;s!6vw4) zJl=>xpHa8F?P}L!^1&cYMc!d-FIRC&elr)x_^qDr-}44!N0V8-DY23pPn)592WVop zNs6vZ-PTxMX3X`qn z)GwmxwW(ej-+t*@hKNH2{Erzs8bNwz-TLtUaVY_d4u;6(2RPe0lxIE9FRQoyE)7c( zFi%pQ_eXAsl!xRi2dQJC*jmv%{^Id)Ak7}o^ifvy;xYW3HaL*Hsx$OZl%Ww+R-fQ7 z@zvrn=3vf@6L%-e|7iDu(p+(@Hcfxll~x{_{J7x5Bu)C&?@J)?@7aN<>#es6`1V8B z((b=Q#tDeCOi*&9qwCUkiHu_ncd2!RVbT@Y1P-racD ztEiuTs_h|;wZ_aX&)@`2TXMexMQo9&+TTK%h6`h|+@s$=8Hv9isfR1{b zfYE?MiKIZe6QU*~Wb02a{vKVzir2N0ZAg0WKPJAeWm;DNG3ME3jd<8mlwU$SplO=7 zlF=c7a@64`VR6}l(9cuUT0h0r=fF#E#cpeBIv#W{EaCCvsW!b#>L5r?J-TiWF|wTq z>;uR2tOcy;*`s1zAc82r6l8XO-cv~xy?e+m{06jSK(7MHdyGi46Ywbf9B{m+4H=9% zTMIUY8K*zG@p|u+X!_l@N`WOrRROr5d?g~W@%jsmDN(A22;BT%aL?GHD1R9Lg)73W zBj|PlMJ#xO%BvT-j@q<-M~|RNmpHW0%k}-_Xnc-+EE-v$v=N|_&iVO*^6VI%m@KL^ zi{kknQS`%u6uK?~Zkxy-_5UkFuLdC!W-O>|kTugujY4}7XA5(u%KdEihW(EGR%OmQ zz+49UJAyo6kdG=i;1KU3_PN_p9LP-Za%K5IL|iJu69iia$IJ8^VV6nMa<&f>VwszO zT#sp~%o@}$5n5+c!jj_5fMfbRvmLXCEvMxDWpy4Tq@F>BfaKjXS^{4Iu`J`G=-yho z%s%L)IrC}Y7LIKf&HQOc@g+FUx(saSE?I>a))6Q$Q3v1`-T4 zJ+!h=xkhA%Hzvzdq415P6?JV&wxCA{H`CZS(2CRF1|CGmgCs!AakwVL5U?; z&vt0j6_yFkS1MUhWj(sl!M|7K1YVi#@m-IZ9+d){!jvg_YIQ9O-!`8Y7DrOYLN}4y zA8MzUHX_O~hp)8YYP}G%>V`}E$~JnrO)YOZ86w%Yo;US=C(|P9P4~q_r;{BHONuY6 zHwN;19m!WN*^aEcOu*LpzlYZN!w&y@`eoX7Y zi#5HI-$k>4RxjOs0IadXfRw33x6u5U5Zox{!nr+P**Ta3@7tvr$Wh&JOjTX+w0B45 zg?JN4a{&S-G{% zr%uBKWiSqRCoF-}`CjDPSNRraVB&kcgu@9kN9C3Ja*?+u#Z3-+LaK6WUL{>uK&^g# zR}=;qIJrz^-g6;l z9b);A#*~}rp0LyKLD8Ea6khgfyAP^T#?~~K!0o1vG%?(v*f>g)>@+2%omo+FfMj%< zZ{bd^S%o!8J=C6tmGiyhfE^IEI?%Q6;ZpWdc6V3iKd*}C(ZX#7|Dp*XP92+%T*Exd z1*X)wmnLODP_hxoJP8z*Mx5VrUM3JsUkUC@ixyAi*rTu0=B#ra+Be=$+JVOB7JnZ9 z^vQf;iEaVhee_15d6AN1{;SjV%SxI^lRTJ>Eu{|}4&DIlDGU_v347$cwqg$fX;l=i44gXVi6( zZP;Qn(89y}X{9zaae*%5Da`gret6DdJ%XLIQH@QzY=e~5wv35Z50Yhdz3(_Ix0=X# z8~V05w@5IGwfZ^ICSj7)TxpVu=qIwTD|likeaN(+Z@9n(K4u#=);U|6c?uXH(ZED} zpo?tn6`3Y)_P#?$;L|=W_8u0+c&BpfeOS5QboA3g(pWpNzw4)%*&rbXIN+6yLy?NX zxWM-f1!{uJrl1HGpu(=@)?;2%BB5Gz^_Y*j)Eyv^D+ykIS)_H?7}@l|adRtjh#+{Hk{NA;iSi%qS*%_-@@Ds#=8PaVw-|! zI9Zq9-9KMhd(+)iUtsP>Ix$(GUFplI*>vlMIOH(&Suws&;swu3m;_a*)#F5*eIb*kxO!~4j)y~x)H7u-L{y_kX}c_iEoLY?gKgho5zwT|UO>{~yHCueA% z{^}yHZz?~Luk>pWeY9;pCoC?`kcul}X|h89kE!pDr}};Wf1P8?9vPV@QT7ZcB&%bW z$}Br0nNgBBMmAX?S(TBHJyLQ+M%fB!I7LMyBq5yN_3HikJ|4gRI6WT6>%L$2eeLUc zUH5&)4}Bi=Vsi9KIe#}O?zPks(vR{-<^1BCN^Yb_W&Rr>!0p2FG!92erlqXj+>ISc z8Y4Rt54hTp>;w$RW$5^+%Flmcq0!4Cn}%VA*`<}^-s6l!b?q^h!>M`#bf5Sa=*!2L zE=%;}D^rq%KTmLw1M5ucS=iZKG)-t_kr?Z;xP8}WCzA~|9HAQ_;e+-f2^hno@phwdKSK!nWCKO)q+vz5EAOjwBp-Np_gV76y6q2mJ-xh~j`i7%{WZ^m z5?cHvJ}ln1>L@+8NL@g4xCSiVMaEBW4R(ocp^^{2Q09LbgS#S)=K(6Q`s{dwCM3pb zthd3r36Y}EN$pL(>A{+<=4b}%fg0BzjvOuGlR}n`MWrgw(;SX0Iu$v#sA!--lpv14 z^UocK46aw-p^Mnk?6m1nCi^XL`8x^Klq~J@ap>mxrZw2QrOeD)KVeMwILf9 z?M!>itsZ#fYPY~t{*GoGV{r>kUfd7Y-mmiI3~hRjdqg|L9Qgs;Tyr3(r=;TYNP4A! zmJk@vZ!)B1MBExbcd-!j`c6=I&n%UZmx^_duvw zJ-UVo;!#K`&hQ`3@)^cl_m^MB%NHw5JMfd)=v84W$sxQLjT>gWzE(HKIy#cRonK&M z_dKaInINEwS+FaMi=W`_-79ckMs%K=mCC2)QEGw=?RazzZr=C(18#(_s3SaA!+2No zQ@UkZ{Rp}JoTdTY3@T+YxuluE8rJ28poARjJ72c%1Vz98GDHGA#-i4Vw41!qot%q! zOcv01#wCi(1s(N#(-}kk%rRe7TnM}Ft}*p&KQ39dfTuUS_g9O5yfuC3ZK3h{!BpED z0)FwR(kvTUam*-S3CNvFm|Eh>VK)HK6NE?%OK_i4M(#fZpI%z4_jdyv0&yjsh7ho!FP@ zKr$yWY_SJ6nKM3O{p5#lE&s{v9^oiz`0f5$uB4#!hjqEEt8{dBLYYoM_VS=X6nl z&%klN3Xn^4A%ZfGa!ohE-#w*Mh4yK`KV0scHA_vp%Md2#S$SNfAHZgQlW&}JMFW@F zB9wA^tI)w`?f{%pmP)BNv3(a|;&K$ELO+D!=~q zt!eSyeCcfK<8g7XEAL1#ef-Fd8%s@S=Z@O|HbHO5-Cxb3@gQR$muqmFlU zgQvi(C?``fY!5)%DZRX}Rs91Vbl)e96c|R8cOf6gy!Wj`#rWt!A4U(8R2JiiH=>mf z{_H!@h;?*;5H|4|d>k66X^y%RoH1kzuNK3xMI0*XTgc+sxUxVE>!l4GKVig#Stoqn zcR&S`I+;%G*&+oAAFa})pcRlIQq-Ee$gUHUD7JsKcg%t36Li*CS;k;B9_ zf@^>NYii;;rA(J4#|OUbU146J_I&V|^hw~A4j75FuKZpcUJV=k0rvU}zd-vWb!P9Xu}#VE zwb2f@q;E6}Y~_|usU}~w>b(3;GakKsS#w$}o*S7NCLfh)*gl$!bHCdWE_LKwR5-im z9?q7+UUx{5obY`s`oOICCQPxeL``@bjDbv&VjinSz5w5ko~bl`ezWTNXNM2(kn|i>r~_M=pJQRHg)oIN(8ish`@Tcx z8IS@u8tApkJuEe2``Rx=eGJ&i{S|w~&WfP_eRsKSkb&4DT649HeUxj$nvQTQ#9FZ7 zbe(>iiQG)k=k~aU5~}%kNewL18u8!h&l(?uV-k*&3(g1F@) z=$joG0UXrjXin%A`%e?Q`h&j$G6lk&-twEb)wZNza19+LU8i zD8_dtZX*}L3^VLGYoz+k#yu{sWn^H8IBn}r_}t{uYROoZ3MB5-`W@;o$cgx0cf21G z)}ov&`?VoHv;%*PkWgcdNOooUzM}$V&RpSxQzSc8LS}?jmKw7ZMFnOpWd&*q~QW4 z;O&!fxk`7eHU##cBw=O?h;SLwYe-hTt8qawadCE>Ii_TQT@9^cvKwcQs~+c!L-pa2K6dOeM(s6TpQD~* zGETZ0604HW_C=iur^ur8M_#YqPvj3FM;9_`p+G%=q@(@J4mNEQ8Ock*4?I$1c+7H>(8QW~` z2kC{GsZO9=DmGJ9Wm|jsdT*U*L?=M!lKi^Gx~47xrbxphd$KstS%-WH2$iEwJy@5* z#%@^kVtY@BisM3@Nv&Dx!|nKOYn{*vPZRr2QKJ9B<-Jp7iysEqSU{2((aJ(Fhj*1H zjZ|OlzKq~r@CagW9=S>=zE3Vtw>u^*c=2VheGN;R(TjKGGiNT1a!C=>*dB%q1jSueZbntu$i_Y3U;a>z@h#;eic^eduE zA^$UjTysvub3~UX?G*alO@+*#Hel@ZjO^`+V z&I!V$HhQNfm~hd<(G+%V$D)?;ua1TrRjjKN>+B;*E^w8acmgs-cy*g3jirEbk5?N2ZR5sG(WcU#30HIY z!AQJ$*IaUpY!1QZU7>MWmd3%<);1%a=^CK1r%l==B5Iv{j;|m6OTc?zN$riIKGp*~ zr;lKYzEF05W1Ar*dSOO`2acIVgnzc)3;9o6L#6bqxX_Py-S6WJCg7$Lc9`cNmaBU> zMSJ20wf389OvUp{F*Ut-9m&fHkgXmHIPhT`9@i`WVmfQ!m>U%H`o|b7sJw=4<4Mqs z%n}CT;XhWOE5m{7*rqyI;Zs9l2UH3?_d8&#T8tihw^+C*l=M1)*Q$JIId7$aVWUHi zSn};3C}SY5slCB#f9Kky&A9CjW@Pkm-BSay-8i2`S&@4Y*U04a_H!bZPfJ>Ixsi96 zsEVIy;IE>D0*mt@~QRVcm=FI)mwGG-P zp#sl4!D@8>u1KbF4XaaO2=lIg3K6Ng_*u_Mfo^+kVIK&j+)hY@qJ%P7YgOJT%Wv|ITW4 zpADV z%7g>eQ_o@XA2VlHf8KHcX!in}x{xx4?9hAcDNP`;(M6E7PRd7L5Eat4JJfCmu?JQ& ziB=1|kP2gHMuv@ZzG&5f=fm`L`f93Qv#n*ReXxVr%iZ6|?U|-Tr3fL%W6^Kf2NQ<{ zor?YMG~`MrMnGxIqQ0{w=_Ig#J^%XbG|R2+QX>gO%l>$ra;)r2WqJYKpjh7oVOAwO zJ5@10b_4w!j$h%I!vjgvMp8?PBx@}VQ9ol!_!Z4HV~a56eu%_#14sHs(D{;8wktgP z?dNq3^y?X%zj`~O21G;={Mm)ehfnoES`nf@H%BR^IFrxAXcPT3p0G*PS3vvBJdESq!+P#b$`AXvbL9T3B1mBLXBtiFJf6Qt7TBWM0MgeALFGh2{3Xj96fdKZ&+fAN7!gDJph7pu65iG zk2gU)Xo$YH2^qAT6BNTKy=T7pB3k;B&nU_iiQb>*e9JPntC&QNvdcfA{J=c1ri(un z;R|}fj5`jogue3na@9u}#9!BOAlkWDVX1*7RWW1^8Msh3T$s}g`<-+T;le0g>!C}8C^aAw6-e|uJGZrNgLMCGM7g$#QoSIbT$x}Q|7&AiH;1Fq*V zZqa;q=#6frotQ!_RXuLeOAu#3yCUUy7bX&&8!$ZNcXSw_Zv86SO1nkjtXxP8!l#8I zYWndyMss)fXa<%J$o1BZ;&pN>DAAPq-uAhwhh^{?&N z+0ZR}lS}CjOy882Ikmly^k=(~+NYLC@x%@&&3FfV+%iU6qUb#f z=;;vFh^#wJY5t_BlkYU9jI*qU*B>>EC}oD@6Z=&mEG(h}0wq1TWA$)$<91M_^6_XB zN;;*z$UN%Z2roH?{+mJ7mWMFk?gakWLpBw|Y%Gjxu1eU6;;8P4ufG3hE~Jrzm*v>2 zw@+J>PBJ-SLRw4`kMz|wLv71GI)YR}qF&hR|LG5D1ru0mc4Y385cD=Nl@sJ@#BDw{ zv7|YF)+P%MUu8CvAdHS&|i%t|}EpGcLq?}Lb_eUJP-_ic` zC+}(n#sDgPr{;#X*5yLH;tVHp=dirq z_cC2ojRhy=Ts`BPOn{)LcE`h=xjZ$ugA!Z*D3HhLk3d#I6*L!AeW*^x%FDR!QZBMw zMb3FPNlg^W+)kKt{^b*HBvf-K<$VYB4+pO^>@3u~2D`7Xq#0GxyuUX=-BiQSPrC$o zSOWFdWDkhqXl(kkGb)%OZX~P?Ireu#BhhxZ5XWOnM{v>OWqprSx_!WvD=}^8M!P_~ z;O`A<+`97TxaG%*JiUj;?40FJD(J3dL62bzGc#!k~*u;OLx{__f|Nr zk(d5#`7K0dAzA+_gPMS72wP-NpmW=&s-K78E%U zSjYOJc|1-c!nlf4%tj$RY#?Yh+b>bfNzG3;S_Vo*PJFWUW~m8*@~LeQHy5h|S&VvID!J6XAU5D*Q8d~1twbR+1F<@<=F{6p z{E~vA8}es}z7UCESN}v-fEmJubg!DhsF$Wl7dwgHG$HN#{O46^4@$UX;G9!6ch|N= z?R3LZYLkk}a|s|HCZeK}^S@D2$hPgi&#A1t$u}P%lMmt*EHuxZedc+2s@;lrs0}Dk zs2AD1@BexM=v{h$e)v)2lh$-gw4K}08*rVmi%ZB?F!eSd?xw;PTiitEqZ_JPcudW) zU$(_Y?7`3RIteW~cZ+sBm-HWv1J=DTeeF8K=EQEiwQb_I7*YJ*=tW6&Yx3eqD+~&(#*5s9=FpoVa+#)Kc3oyJ+0&g$Noak^n=_jn;XBuItO<|i?W!X@L zaspBSz=N1AsK+9^1(+ZxWi-4fp3Q-u(2mO-!@O-ca)8h=On0h@Y4{}(gew8XX< zM~T~vM+_@Iy=R)!-TQNEt@6uzC6K+-07x$Ex1YbaY61!CvP4}agi}*`yvgf3iROYN zefDwaVd59;U?f+A=*JW^J{_}uQ4Lt4Ery&eD>-z}#|U-{5!Zytp`447e{;=p!jhMr6f z+dCO^^qy}2(|1|W40@b!atO@8Nj$ZDiE_o)Gcn%KNXTa~x?}P+2p+YMK1pJ&I-)1J zHqCAT4>NZw@j!;JYsBBL(dOT$kbGuaa-E;lf|sxCQ?Pja4b&^Hmj$H`nk>3aQ*{IS zdD=sUd;~~!zqb%PZ&FedMy-?q0o6YH<3sxf8HL9GECkV`Eq!qU@2n*Vd?62vOX!bK zx!YceJ3ar4{W7Gt{M4p<%ZN>9Tez{^RCj4)QQ3I?SZm3cHOqUqe9;4*Sdwb8&9< zfM*{^b~{^ji_N~FQHJOl##VQ=W(6Ll*C1h|)I^7$g6otH24W+#PO+jK5So2c6`5-r zdiKFtP~^;C_Dw@1P1#Ox;~8WWhkB}ja27GLO&}om?CV%k?~RB2IU4GR)h?6%`@1fP z$i?2cJ^lE_(-+dP&$H2j#0+2!M?gsQ4&PT;Pqq+V(oOif=~{F2=*9mbu9SXYpIxr7_Aq>5fk zSWJ3WKq(&qv z99Run`>yP%DM+#bLf(1;f>3M2V;D_x^d!yC@X>qbl%3Jl z@aiU4UB{xJ7_Q$3CF)SnV?D@`7!*y2VnUul90WZjhnHL6&nh|dA=e+fY%PzLX;UgZ zRWRg2SzNWE?e5P!7JsAooN(qJa7Y5jd^tofD(f|UYphzCyL`LyB~i3M8Qv}Om7-*s2$ z*=tQlI0k+hBXf5}^8TF^m+DJ-kMg;OIXpbCw9-C(waU1h1)MLrglvyq$}tztMR=Wf zaW6b+h*n@+Z)aV^^Zfee9y;2p+cl|hQkYa6@sXN*tKfyk7&X!Sry0`4RFmtU#8sNu zQ&Du?-G@fAvVXq_h zyZF}<$fDVzpc9&$7GFzn2-*9~*xh|Y1sAnmc(rL5Wus}2oMz=_lW@q+?cOJ?L^Rro zesC?p#RW9(V6xLT|LtRRNXU8!;a%N)VjqXF}{N<|1 zMkzNU6!d+VucrWV)6ZKDlt2CpEbQ)=#}|+f*8qx6;C*-oF#{r1v-3ITps@^*%&?9=XH8|83rTwUGt}p*=99QWjMB^23+wNqw(iNk3 zIXnFKAOe<&t${#-k$$RTJ}b+!mHU_PAg|X4(a*0hpOnb`TXHSYAw>L=q%_773ggG3 zz)obl4Q`KCD7C#@eh50(D9l#5UoVdlnkd;VqL*aA1`^%*Uu_g~BPlW<-?)HW@5^4? zzaXqQczsLGVrm>!=#)(`r=0=v($d9ObSnDe#oDZzp_??9=-#^LWe>?UZ@0UBL zBt)|pSag#AH8{wL1gn#Oc+1vIzGinTYBBdAQP8jC6^KLcjMSe1L)ys+E3uNb>zN z`Kg}-!4X|hT0qh=hus7hcH846PX! zdL*27&q2v|Ey?N}eyINtaOd@1u>GU@Ga2IWU*~Oe{{Fbr$1~i7JogYCq*Su}ja>K& z@r_uL+&N{T^MM)uCUovw#T`k6pumA(u13YNs-oJYQ>|{HqkDn17;?rVp7y|jjsJTh zbHuS*LG#XL@i)an_$!D~VPM-viC4D-vzy+-`(EAqfk4I}+M}0loBtMp-hNu_6D zFp*^5+OtvOu2iV(`4wm*FqYgcaZWC5K6k}X3W23FAU7jvm3&ZB9wPgz+zMim`Fksd z6NwHeF&qtw@#z1W-E!#eVZW$A^CTb7J-=QFxEkaCp3q2O0=I;_*R5#g`6kKyI^SA~ zK{dLVJ4p^vsB!Veu$8BXBN~j*NuP>qRR)HDt`*B5DgV9AN?kKg{U53Rt@HNIXg%-{ zjKP0TJjmuo)m~^&fUyQ^?fF48o#Ry`DkX+)?OFBj@y8fZWiv(8N)x;9+h^H;nX@gJ zzpXXGRi0$ok4l|`)bER5Gn+xfUb3349*5@IznjbT1Z+P8*zxN=h)pv$}Y6Y5V#)+8y&xCv*C^83esl4rA4D>;+<7fU) zpKmQG*#GY#+k#_C?)Lwg2Cex|{c_9~^dx_^fasT;0Wkt;24iHKb&My)Dp%!~S3If{ zAO*@85evR^Qenw8V0G5+{{=_;px z?+N&!-Uqw)FVTrYj%1jJ>>;|GW21w_4Fi_M%9RS3QAr8BRE1?bv^awNg2*E-X-US% z)2{TCKku+7Fb>ScrCjx2guh@wsfky@>mlGUnuu{%A8!V^1zKA1cW#vEBKc!4W=_7o zmMi!UNMw}j2`kNf#5{!Ehl(CwRUX(I-uA5X!~_3xy^%hLeP}>;e8ka4oX;l0eicE{ z5RW8Usl)DH(*xZvc+v`be7y}yVq1PE*<~xUyEZl4;g>GzRy5d##}&T?`mS7fT+o*{ z>hv{Crk}Vzh^Bux&0N{1@H1~h*5=yk2R+N{dt*H*?e3aPRBg1w`=50iPl7nyDd?}iXOnEP!%{+LlK zH=6K#?vf;5hOkGpt{l8MVMb;&oYZ&c2H~_XETjp_hSCi zp|E+IemSs=3qP1@=<{DLzVU#4;vo8on7QCZk3mTg?e5Pkfq?E`1OtA=Q#3l~Dn+hK z^qhu04QdKvRle!$F5X_Kgc$i8XCTWd{)>Qn>Cf5pD_xJ9AJZXTfxMS$)sPdhpD&$x z%YXLKK6A#ikWV_BOc1YF)oM+>TD)xu0<4gPhP=a!NMYa#2qObBfp1_Gq4CkCQ#1UV z%lh6GP~zD@IsYo%A!n@@#6g8$kkTEJ=l$#l1amwnM>PT&LvKwLEPwAR-H1v35}QJR z4Mjzy;LBt;Sd#>%uiWsYhuAO>n#L0=a-bpe?fv`Kj8CDGr$0M6fzD2KU6m%;a7f}htz|J<65)90sPCr7XIZP z5&z{L)!)GIJg7Z8g!bh1o*&2HOfRPe5l@qKXyM$0JK>}pWCbVrpKLTD9}AJ;VaUSpwGAQn1j? z9H%@P0LKK-WL5~iOxKEDF-B8opjROK)i)Kumq?+Hqd1Zm92_{J$G;efRNF$`Kah1r z8kp9Drl3L|SP^D4Etd#pUt{F&=^pK*hwV>3CP6Vgjn;-{8_j$JnfFJ?pxJbZiSwhN zXs(jlMDsLOVJvSJRpMeuG4;T`t17nymh&Krza?4+ntWQElt}u5X1xI?hs(dr*CuEN zQ*;$qzVTtfI5Ea!tcSpjgzR}Pxv?zl6T(R}*A+>D#PD7N^+2;G@Ii8#Y73%aj&Zu} zGMMhzUrO6peYV5>h-0wd;cHU6N;h^(TkfAh!ZaaLI6%GLXqNi&#AOT|0|3loQ_I7%tRYDNj>|xw3M<<23<#9~ zYV-f2&|vKw1rJ736>E zGRlI1V}+JmdmA&AZaiZ|8ER3c8sQ5vaSQhs?4hAL?P@eiMTJC%Js)>ih4YZ$7b4)u z6i{pM%6YXcJJBkQ3gUb`=A$;1gkgL5p4?ue!lG+2mxlbgj3FI+UXq&~K)Ol+=eij4ki*I>iQmFg(EYTe7ZfH8+D|GK*zYo_RwxR3AW@;Bpj{ zfj#bpWaK?t)?5(LlXEq;?7C3f-V>u`tU05UpEbpO^6ONzcJ2hjkguzz;50*ic7_3B z8LJ|a0`I|LZ-UdYp#wGejnx2`3YeAAQC8>+*12%++Knst(6_ZM;_}a-Y%HmaVf%>P zyRVCIUitplGiIzIOZu9xOD5lv&VsBl4p5cCLX&Z^AoqL`bZDAWWxc-OO`rI2C$azd z?p;gplZh`Ynr~B80tTLbxil87qPHQ5#CkAkl51ZO6zQY2s*$b9hn+SgjlfB1QGGx# zCt{nnys#pgfhVu3+&EL@jSQZTg9BEgDo?mJG62%yo4{BBdy?^L9Q3FNbpC_jLCg~z zg!yOwH*#+yGpUV~2AXyUVOQg8dt|vC!lzb6nLcA!W^RiXZiZ|J|G}l)2uQR;>jRBf zbETQs*!dvhJhvl8o^NgbX3N+f0bz0wfYK*-Kccl<7-5=CmgO2~L^QEAx8PfU zMPs5mI=QRHDaxlIO~W)qoh(K^v#{6mT6Nm=pF%kOhhG~$Mz#i+XyIgvb2$uZYy`18 z9k7SA$CN4UdonmK4(Le)f$*wlz6K<{uH`30wEPfvOTbU3*Bnd8rCF!xwst4*ogA_r zM3Z;IJOiPywEK@Dz!4=KsxStp+$Yq1B@Z3aQCbje zp!J7cr;F7L#K4ioT=$zwbk?r$tof*;$p>#|;_L7Ttp z_O7a#!(I&e?{EBGJWh!L^z%Gt9NGyKS3XPp3x*M!2F({@d>BhCr*`${%$RGuYO>Hn zz-HL*x&S2|&7C3Z&lUpMi>~KD9%-~+1|fFngtqsxXd?{!i^uS~>FldgzAQ8a4L)gE zznT0zh&SL6PUR2|ePhlI+U`8xl^`= zgE(?c(VGKR5`K|Ek*ABZBi@5z9GFM6rzO>?MEYs=s)`z1_~j3#>67)|^l1snk2EPW z{05LI)amSQ9ohS1ENiQZTAVrRlXll%Mg>i+EhXdC+T zOGBeCL;l;-y>5fH*SI05GLpzT=_@Gu>C!S=#}6czIyFFs#z5_Ze41&;u^Rkob>^p9 zr%H(3;(d+JZ|z9kL52?#XSXmLjlf@Snw=UW<{pJ{1`cMrW~#sUD%48?9k6uG+egG~ zihu6R-;I@I`1S;|U~AQD1Rh4Wsfi`klKN=nQ*ednk9RLD=T=^@VUTAFo>tQzb&;*P z6ZN-JR}42ZPjwNR+Vl^dDBGbhl$BBXEJvwHUhFZ1FKcl2G$54eDL`oY0o#-KWA|pr zG?9ixt13IOm5II^~;_!eG1 zuW<@YugCQLdKRkw)~qA%ujt3N_Fd7WW(r&`2#V9Y$i82@xxF~Xr7kG4!O$h$)$UVH z*a1$&N7kdyH1aoXwM3R-Q{Ex%dZ56MvT+QDCXc|z8hI=Q2JuR^Fw+bFM+WLrtW0uv`s2eV)#;pSIYN48?9+w%%)RWFV@uM-zgZ z06shHId7XAY*uHM8mzX=B1=Vk|NQiuIR}ym-F-o>N*6J4mF-c8?gQF`h_J0RS1B*7 z_BTY#E*y>)WUTX-#m~sER(j`)uJ|w0ckI3hw{9j}EJbz%;Gk6+?+1e`BEZiBBkm7o z_c;oRRN2mVhMFS9kOids(smTM7{;=YR>s*m2PJ&st$E3wG<@(jWu*vCk*a4ZmqL~-%yaIZ`aqc*mDt@NW7PAZSxdA%=bfNSNq9P zyhGIK53Jr}3A=@dR%yK?=~)8#FVHXjFSsAm9r|uux`_iKT)9ZOcpgi-O8&BZO-#== zBqK1z5WHXA81IMgvkzQzqRh|M93YECO7x_g31g3A=+w`7oozEX74=OOCgWgz4|OZ= z(Ort`oiW8Mhr3N$v)=`Xu46%m4YOwi9RWbkES9iCyD26E zcsg1^9~>>+5cUYC^dZWm+VN*zLLD+JJA!!iv$nHv4MzvmB}<1);=fH`#+x6dS~lWi ze7&&bw`{s%{Lqpcn9@W4h(ANwKM!QOZzSLpiMNQZqY23u_Z^~ArP35QTgtin<;q@6v?XVZO-gP7^2xD9(FhZ=aU(n2Iur@VxV62GL`b0GzfS2@LAw`&LxfO*)u{A|MqL-op)2d2fr43RbdH-nNN&r zH)D!#Sz>w_)pLG0a&=%_vZ;)dGahyXL>gv)WMK(}Gg7HynKRA6Qre+&@R@lIsC8zj z;rBjeOllYv=?a8*hXZGQ9MgbR7Ynl_3~^GkRw}bR+ zE6*-#USoyG;4KdCUkJkZ;tIB@9wnCgWjQx2`7xW07+w&%vS*K^>XUY0@w8>vi$@RB z{cJFyzDS)HYj&5lQzz2!RqkFDAmrh6m9a4gRD%~!M|ukM(! z|0qcbvcQ*h=C3?Qaoz#TX;CAjQux`Ii|-7*$BqB57vSFMT;@F5i*saGx}Pwmk#e1? zJQSHr&+r)gxXo-Dg2h=@>yQW9zJ~T{m4536|X3@Ihm%qnM$|1_}JV~DvSod4= z9$#<*S-xFhc%VZ_Cj1Bf;K}DJ3`c1~Y@o#=%c3VA0#~kNmGtTd3fI!E+3sjN+R`X+ zv>EuJWg?w|Ys4Lhn4}9acQR&_7TEe^St~fC>jmDgdf6rHUd^ZXMKapAzBm^6-*kPe z);gME74g%ij9{}Q(u4M9GKKG(D?Ic32eprZU3>YXUY=_#2TyD#VB)8J$bxFVf;jKx z_mL3s7*)m3NRuZZh&speY<2;oEYwOx6;YslGmG**((wziWGEuLeZ`Aq`9ai8(~9EO zhHs%yX({Dj9>2jKOZenP`~Z;snE}$T7u($&1qU~5NLgQg6HK-u$1W!q@6&b1EAq@; z%*UO#VY#TEk`290tyed+9LyOnj;v0r9th@Wl^iaA-fV3m&$n`D8Q)Q*UCqX{?hqi~ z{Ct9^+@#r<=&tq-$2Y2{LUZlt-f7lg$dYV-3$#3gmpWS^NWUH@VyMcSKam=G z-%i=j)b2>Evj&HK2*AK`G zTMw^J^KfXqr97uG=hRDIw16XAazj7hq+Yipn47VF=Wv&DPNXOEBTiu|!_g6E_^pK- zbl;h7xHs(eFIKpy;+7{LX-N0l@`1!v0qR9KioorMc6eR0r6b%)C_oOLHxD0?lXSaG zGY$77@@|p}ySoDD|+W{i3h* zc`TV`STR3(fr+UG63IMLfCeW>22Rr^3e*dZqzDcfQh&22gs8~J!AX)sF9%PDl_u$V zi7q?Wwm*($K$-=DOV@E9F-b9&JLBG=sR zy?uYETkc7`HfkF;hl5t;v4O=e=!Nb_zr`CCKLVtJ9nRp*Qs`NlGuLwUQ_4UqJoxRz z91LC7EC3YS(OvybS1p|6`AM0o0P}lR9l9{|#D4MjVq(EN-4K`nWvboghr2ttM@tD3 zNP^Z`?f%!8Cy<7uWnJRzXj@J93IB3=96gQDSE*4k16gOx>5F^?pkWpbnhcLJZ@DH0 zU`cJ5(9=^BaS=OUhzYR@JaDF8SF(x46i!*d`|1U!|nxKD=d=}tvXX{ z*5wW-2B}d?GEGZvt^*ESUDA>Asv}{n{HO%sT(F+vesc+p3AWIiw*vnX8(X07Iboc~ zdI&<4)2n>fznCC!xXeo|%(gCLuX>iJfre7Z@NGcYU|^@eEOZ^lM3ekwq7H67R8(k& zu!`%v?Y~!&m>g~R93)mog{PEP&eCvIDv5EGDMomsBQ1QfJIi^_`J#6{x-V4$x}xV2 zKWk^i_wLuL9K}aZo{4sn_=?w#jpheF-WLq8iq7W^zN;*CAZdpAv@9K$ z0QrjkDwt=fUYgX+HqW*|O}g*V9>BlI`s{spH%GI;fZC6nuX4O@_u^4WEBBXL_}tQs z*VUQb*r%Qg`eFTy7Cm`5_1eVmutVQV0fE*bqWYKXRb3DE4MY2a(TUEWxzqvac>|@1 zPeIpj#S!jkq}cjUkJp){4NJSIPk^8qUdFbSPHcWj35idG zGk(c4iVM^XA1tNEJ1lXy>5&L2;>U45j@F}gbc8--H$tpc$Mq9SJXRq(Ptg;B=(=%3 z-lRL|Go8H)8VGw@xEI+<%>ca7+(+yZ1TpEJ{i!V6`7f;C#NlhkcKgq@G8@TN`-`bN zZV|&F!6%$G+W!Rl$>MUnTqOi}K*gv9vgg0IH>}+GcjL`Tp~~4rseGiR{dslv#+>%e z2AggbQa1X=%fa0l?$Be%&aMO&M~U6THy?NRZ)8d9mfVdPFp?vZA@mNPsEOBDgG=fr zQgb}a&8GwgHQ;b4Q+!t|$$R#9hn3#L;WG_X-BIE?O5Yh%$a}!l-R@?bmw$4e$-c=5 z{D29|Cl#@fBT+vAz!3kCesCfPTlf}-OHi>(2C^22ytTy3VUEVRyAYz9UAfPVUe zrzEdO$crPADXG@4v7Mj_dg>oLl>l+VT~cHg0AL-*amRp#F6=_SDErF$-V-mi^3V1& zN#yz8)vNv-`_pMVDvT|#_qY)gv|lI&%hEE!cG-KlO^OQ9qiM6NYds72*GyieSw|sO zwNW-8#EO$Y899i7T~-wiZe5*7<6Xq=(t(}2$Nn_#(P&@YnS=82@fSTnQ8{kgy^SNg z+eplC#3#7mI^m`bU866m)LUpvwOeGxMrd+PRtRK)cr`S<3G)>cNwdA3kA$=V9{`_S5t@YQmhJQ`CyG&@kF|ZH*44>Ab-?1fd%UL_XU-G zrojVUi3HlDcfNvm%>Y?W3ShSFJgEZsx^aKHtUxwu&KYL?mxFIW5k;xsu zoEj9P*RPbW;f@}XJbe-S?Gx|$e9^Qgg#tHGay2NbX$oPQm6LcFf3?P*SQjHmuf=Ls z348-b!X)r*ou-|GTAuzB)k+@5OIWfExsA=i z{9X{$O*4NqLx!HXt|p%5UIe$65Jtr1ksj|ND$|O{iH{VnBmEF4uODuC>(pi)$B7J5 zQRsjE7IQuxS>2eDsyG|Wru@$S0G{fKqCMRj+-G6pxR3Gup1@kOG;0$lwVT$*fmDJa zygA}mVmFz&87uz+5F<5%u%hGp#3E{I|5@X%zUGgjoaE~8k0EjH7~oyruD zfQo^LYkl>lK=jkKFM6x1tY!7n07#VG7t5< zBALRvp9o{eavo5H>UEL410^OiS{q^PlC8mVD?Iedmj$ji6V<=QcXn>(`$0$+9#NTa z(g{G?$^GEGGTZl$B8E3UD*qC>Iu3Wlq)7%y?HlgeU$kIYF|3pO7&_-91C%@5!wq8z zmgC2vx8EC?S7Z!5O_3$Mj#-t{;IVU$i!UGru3mHlX*)xyn)cKe zPW-JllGuT8=>(yN$5rO8@mlkaco}aTrlke{L?gh1@kOU#j_^z>y9wKOoum%2cy*uH z#B5o1WxlrrEJoUOqA&>0$X;aZUht>c?*u;Pc|Us4UhU=i>E`1bQykBtIu=-_l`Fnk zl25|$F~J<80yNGM)9tR;q!Fk3PGpHF1_ zy}9dkY;@ogT$C0G_lww2wcMnoMQ@g(RhG};7ot9Q#P$UvmsumW^iYx&;e-9b@2< z862p#CtG!l6d#|L7L0#DcMYHhSv-^co?LbAjpuL+Ok>Zb{me<-3$4QJha!4LNFL;n zqBj5JNn35fZ$P~l>j%{2tw;BdDg+8Z(|1aqEM7$H2aAhrL1Lv+S003DoGlSgwZOcw zuQrsW-SNvyTw>%I^5uI;2XC*Pff!VbCbDWRE&kJ;Cxw_rww=EOLN1ZHW4>TQ`AIBG zXrJ`(&N7x1)!=e4mg8-JBD>*Z|G*N#W{7*s2)L(%4=?uZ>IE=9?s`$J>u1^kcRKX! zCtprnW&S+*vkIijf=&PsB5uYoM+#J?#JYu~-SN$JX&@3}Ckm21djgd=va5G&qbMdD z3Xro52%c;|CLo0zrm|1oy)LHr6SFVM&PNa~cl*W0HZOgz_+>1YS{%CuTwaW0NGm%E zKLd4rfy*$7uCEp?A-h&^PGE`Jx9=7*;SK0WtUrpp5^s5Vsj&?qXu4L>a>#k^l3?}6BX+z!!n+U3&Q-#i>sfs$QCY3Ck%F$79- zujD=G2zSea)|~^_6jC~lb~V!=MWWq*()|Q5&!9&-TBPR#9G+q_EcQ`bDvKC{dosjy zuBP-T(SQ}!=jc^R`84uTQ`Udw0}<8kI=jyy_thj2=f8>R!+}T&IE3Nt|5wwK$3yvj z{mgD1+4p_ykwW&RC^M0YWY3gJB#k1JWrl>3Ws(-6GHp_{C`mlNB@&U4N{kR91_>p8 zXZpOa|IG6|_nvd^+3&sQU@yRFj`Z!R1M3x@rmT*93}up542?QznoAUrijUau*$TLHL(;F#6_Dz|whh|Edw*2hiis9TCx+Zpd!mnp{T12;1%c4K=^L*v79Q0w;u z-NqhY`0_|D(Bi_t2a$eF@Gz6hG%q08k+BjzcOstq6o7C4s$ns~{psw#eG$s6znJS| zSd%eaGl%tFPWex(fVg0CL(cG?&={qWgO@eaf2qCT*N<6mf>-`suyMhnZ{-a?q~@zR zX6NbU`0MLU>O>(h%^v)Cfo_(Wcg)34`+f7ajKO%&IC|}daYa`5NWY%A<-GKBGW1)W zYYvJ1l?g<+a+8w#5~rAa-1?q*#=>akaa@c>?;PwylgcEMA8It@ql7MbwovlzA)jeq z0);Iks8-$Km2}9+|K3Jl+4cf{46-CV4#u~_6*2F)E%degns}IQ z#J|+fP;^NvViK42YPrT;owV2l1j`-JgW3b~Y<=6?{SgXJvyYF^l{MWvrz5Yi-br16 z%iZpm?DzAEEN@-|RBYwuxT@nz8=$^Rqyiy9c}zfXo6bgDnO`uqq@&;R%&J(n;LnGd z;fb9Nt+miex9C2Z;dP7~bOmD)kO?+7wCUU@z8{Cb=+vj|K{8hMX6 zgYtVu_xhM4OWyRbdaRXCL)!KfP(nFl0{4!5>40H^Eg6)C@|S@Atjm>RFppvKjA!+V zikp$jEY|UZy?**XO?Y>}CrdlrjLujC`(LMg)|7qWN!GN=Mwu? zv%wW$KRbyn0Qk%;il-5%?mI9W{*Q76D~^6$hTC+MK=6_`7Sh z#>F)`QH>^;hRf(NDEa4`g_VT~M>1iTE;IYVg)=Fl!P)W0x$)fNM@8LlM6+5@L)cVU zG4xR`M#j4Zmgb;c;gQj|(jx6$5;+fsLb8S_O2NgGZ`>~~bhMwp`tsO^N~e}+HH!wC zWb){YUirOF?(=I#*sv z7OpvNZ<;X?T{0Q0+!vujPoHC3Docf~aeqn-}tW0co&4TQl9aQG-kj>ePsZ@(#6S#PDGu3EDg zzyGzLZwuxz)(Z-eWN*HnnRSskPQR>i(M+;IzQd#*>d&qf6?rvv9Kxnkd%7f>gM!`Y zP;d4`%Lk+t6Au;VS4JoQ$%%4;3#H6{+cfw4y=Wb*7mF+OM3c1&B94c@2QIo6lJ@V> z8I#MQnmrJXz40{$3h`@M1tKrZ=37g5fuQY6mz&YvOK{NP#zXZA3B5ND@i%>rjjc#` z&}`s7g&G|t|KZR>evhxD?Qz6C`)VQE4H93%9HyQ$f$Ln?xXN|G6L+C%^~xgL7}GCI znVl_-gs;v959q-xfeg8!w2mXV-X&Dxw$O3R`$m(C;P-&2QCd|X`>(n&IWfHf3V;QF zS^?biFoGtx=m<$_WIh3v1WWPQ2NjEwaoG69!P&}0)X?u-jP2=xEpe~z`o7h_ZG1`L zSOk)3(zc){QFgJk>E3uN)Co;bDkBu?bRRPqeROwrHZhRahDVr*Lfu`kf@>vuV#Wm0 z8}EiW8E(P$J#@<{nOR%-W~8w~sTm72nyh4HmNtpUB;dk!UDos*4!ZO)6PQ(5W80MT zwL9kb!z){f<-tw<9xU}NLlm0 zgOS0O4cvJ`d0|xM_UrqU{&=+h?NXPJ?jy&DcXw1dHT{xgeDHCO(+ZJ9?no#RyX)b% zqbn_b$hJNpzD1`%soV~I!H%A?Y03x(H`{u?xR|Ip)x<{4*hTlpw6 zM?^SpK{ahShF%_(DZn7jiqu{8yRha>w3_#>XRN67+#j15_75}XZ&2Kj5o7eHwRle; zh}ZfcpEJLj@yDPxl+G;T%BS2j$Qz8wA&ay<)%6+PLR<<9 zP?x4P_rqFn`D-E34F`dneqqYxDuD_SA{VYUJ))dCl^&JB*;?4i z>PL0y!2=38%RjY@nMy}M7&q0J@T|Z)lhFI@%D|OsE_pzf_0b2dzixz^wjn+r9LNnZ z5`UgMmGnp`J;6QU$&_4_neLMdZcaDu`Q@ zDi7R+!PeV9`s2x(Ydc$Sn(tgL#D!gkbZ^{wt_5tta71UA&v+T?4N^ZYN+TOR91k7+ zZ(CL{zU>QSf<JfX`P1?YrPJXStjFpVdahBg)XGPteds9X(Em$|xku?jI+)tUxcb`{k0UDVt>-?)@ zn)6b5Y3>|l3lc`Mfw)}S2m2E{mj`%^udRCjasb^3RMfikd5t`S6cCg4_noM=Pb5xx zw0Rz`E%u93VUaf2VG6`0yHRz;ED2& zc%Ka;&< za1<}{^1gZDbLL&z;;>TAT0_Dw^@bOKIjK)IMkIc6(=&0dLaF8s?f&J%3rEp>u!dUh zIjMC&z;jt0!qruRzMqq;G_-s~TwhGBAgI($;Vt2uqh|%|A}qxmt-o(wE^PHQ@In26 zd_BWf;$PGnl0GOgv0{e9vVq3Heq_k>NPV%bm8Dt9$_@IJ&k{xKz{k z>`6i91ZwR-g39WRr_nC%CE#G9inFFU#u=)`zvLj*Cx#=yrEKsh{ZH6xd%3H5TaMAs zx`)aHBDWheLesZ_c7SREVyX^K>PBiuN7rAI1Hwzc1P*e9Od0^8T8X z*zpEI%2C1lCt8+e8P{Q`FpmGt5A_a?k zQ5sl}`%Zy>=Qf92LM*VAA7P%yO5H*|Z-A+aZT_-uqxv8$@=$PU#rz4nSzVmX%Z>F)uXFEjx+erOi&kj<$R>1UObXoqgB~=hQ{uro1OlVxPdYHT12;g3?rY(_mgDy*yO&DcMG%H6G60Qo zv9~WGU<)56(`zU)oiFpf3FT9F^jx@6XU_>IAk0ZjvwGB7*#}r*ri!7YwfjMZr&6u_ zJ|9j_B8#e)36QIkS^R|muyl7{fQGaIVq5n-RN4KM6#3ehH|UoxX^B%t=p@v7X*71L zgFPFVh+3*-zS{YY+MRAKa89HXw|wTRx<3WwG>Nr=i?&yJXd#zh0heV{5%cP++^);e z4oD(7Ju(QNy#E1NTsXlz=|GN$74htHxn!k$m-zKf{Xz(0E=v8<7v=*sIX@njJGDJu zsiiqs3J%!w+cLeJ*rTFpHea@*20BoICsO~&l)R)qZ1{}!|7QUzK!-2BvvOGf9ybq1 z<>f3{L+Dm$D8cWsl;*li{e@q`H(HdH@(85HuRiUzy5g@_$eK1oUC?h`S`w$~9aI^I zyi?P1Xr=${o**2B`qbj$g6~A=hYrUc@ z6w}L0r~sUH73YIj60iyRhb=qU=PgEI(d+peaC2RZ+{S=H&w)bG_+EV1W22ll5ll1$ z<#JUi6}JY|p{)ZSPNC*&nP24py9v#pUJo;gV?u&0{-F9?N*$ZdeU*kPz2-}s;K$Cr zTraqm@0dCzSTRn3Yp?*S-uspGRlsPMCzE!p3~niUZ!@3Tu?0cu9!#Zxzj;ZN`3_oL zh3Tr67X&abf>3E_XdSzxP0Sf^99ywE+76tb6DRgz80Vs#uCFo1aP0{9U?X?yUx_#< zR=WDA#SHT~YxLh|8;(hJC%>47kgF5|h;-nO5`(&yhncswH?<=3rvepYlDTS@uTKuM z61b58ZWY4eq)Mo}X|=)0i6brcj+Jb2fdB}$JRucge?y~^{dq_}^ABppahLbTAY42A zJ#b669uzGA-(8TQcG~+Kj%EF?E7Xp!;W7`3h|BF?MNH>gFV*hd#S^>e1K*eN z^|L<@^Ev7LE(X@?UFN+E-1mP{TXU5atMpoMf9Ex%MwTbiR#)Y;{-IR2RL}7)^<9mP zz<6^;#;>Z@ukTc;B*)!_G8_)Px=@PSop`86sIC+=`br!s#G@aO4-o8j`JX>mXTK*D zB9^{?Y2Fgd2qL|(DRbY+DM{`c{wm%+=CvljSdP(j2C$8!mz68%{dncW( z6U;1mykbOn!VHeMUVshI)nsp|#|j(2A?ge{ODIs4!O6jlbsQa7y^ZJ!G*g%4z$WDgxJ_ z2Ga=6^GF`{FWLgtPw)!PUY}OyaC-zmk`8aas{FztcLC0aIMtZ*q}txWsz;ktHuvhE zpA}>pGCw+824S9%rz4d^@RCF9r-7%$n+EGPIB`~*ugMy)#KgbNmgYsFA`sc7pSUOA zEy1@++g?x0An0>!M#a5sY8b8nbf@6CAbHEoS4UK?+|h)uy;WLcJC2kBm!5hD%F**f za4c|XAfHR|J28AN9l6B3jM_pPQ?RR1*XF~ONenbgtJ)ir(9E#4VRy~{5GY)F@(@&n zA?_IS_#5cmD$oDCmv|4(TTwg2dxRk2=p<2ExEf8kVq2i0@xXnCF%B{Qqqk+)49Dc< z(%*hvq~)!k%K3KYz(^*qvbrQt^2aBEr@OZ|;C3 zdOig9DI-*4BJUgJP@8eTlaBLi;uvi)%LJX2tm1UAE1#Fi|Z!#$im@GI7u@#NZG13}H?dZfk#ggtEl-bu_aJ}W-oX#DKvST83sHj`*X zs**bodL^O;ojJnKIykjAmSJoJ!$N^Hm+%v6V*&=9c9=G352F10T+|sZls00!KY1Wt z(IX-PO)kW9cC_HhIt>SafE#-;XJ8jjB7M6F&ynGIT#+iRf}P(yv4NfumEv?yWpNe6 zaMw3Z%Y2bLF>I5hssJ3ha5e&i<>dYSAy?9fBmD>?&^OilJy@e2ELUkv zD7`+b&HjL(qwN`oz$C3?V8N`0TYD8DFGLxJ{BeZ^q>`CCkj4Bmj0)*Dh|r+TR!868usJrRV57D5A+0s*qR8WJb9mCipraS&F7H=oza1mdJeC@d!C7e*$g z2CBvg1_*l_PTt2(_y`g#(7u72joP@&&mLjv zDRDY$$dzA; zN`LunD$V&$*Z!bKS~C0b5LQ(u^u-Tww<`taSQ- zgvgRPkh$9xW8Q70aT@{>{aP*F%B{fx8uu>}MTk$Dt(?}BvTzap80ZfM;lf}%*XeK% z>}L6V`;3{xBm=?LZblz-p>#4${|77NT)wFP!2tF9p9u5d%Dt}acfF?Uhw+jqSf{Sx zZkTlEuT`4|B>3t)fnEpiwQ*~sfPJ<5&T)O=46>HQoxtQjaQJ*Xi@yb1i&#VR2FPTr z3!RsK0j(^YN?7*Nm5o*FcbmzM2!_{0QQ0BbE4oX%a5+gR-IK-TWkVMpj!=w}q}<8j zER@(~siC2MTojV0V~oA&r~6bZC2v(2<#;QTCuGLbIB>Fa8!S8SI5>u-G6=42l$P=` zNaXS;dWca#jx2u*{#Dz0oAc#q!j{B8VHh9hOjc_`yCz7{`$^ntZ4X%yH=X-J6qg)MvtFzD3{NOfQASGrkO`|?e+ zw)d~Hy2RP1)a2!_aQlY_ye3ng4h%41lw^W|bONU-y(L+QH~8!iEKZ{| zXxPXORHiANz8l2xU8qHLe7(}rap;#I~9`5M!<7J_ye6i(RNG-E2%^^^{bd*%wHVF! zr{;e!8<l&WcKFjK=%n-V%r)9@MX2vIcCvFMy?Kj9xH8lO62g#hEp2 zvON;OUclnI;6@ZXoQX=m5Sz`VJH$J(_cXnioi{Va2B_+41R5Z7TVD`F1|lHaEj{yt zMT4`9TDxyJlz;!VZ7ll{46uJu8r^c&;AKZ2YZpIX<+LMIW326^poJT;i!UQ4Z!rUhTRjd638lWPEZV$WFG$~G7vPL?hM_hKbhn-MJ(3Z9U~Lpu9L|8vhI zxM9}92szy=(Fk0jeYRt2_on}1N&ft^3Qn%iMZ>QDc-#*I+*(XPZGk~2R&m{+CO2u_pYViu`Gy%ZK(RG^DA7pyF`7K?TPOa_qi&_Y+J}@X_gwi z?2+ff;V*S}HWx+TGjVOLq@2tkb$*Q_>e{&&BG+#M6YLXR|ECh7bID=-d<@>pE?|3 z6#1m?N!La+`coy9c4&0A;Oq&}=iqan>C(;RlhYP-#{mWLkk5WG_pV+Xvw&lht2KtE z8YIU5eE8w(E*72?<DnUgH1{R7q-XsbF0nMxkOQ#a z1Li*2cLzZU`{<#Y#BFQ~x?Ra@Mn0N>eRDV2>A(I|M07uI6$@AQWv_CMCjd}Ti?R4r zwO(SEW!+Bg%|f)t8N~)aZjlm%epbANlQyzbJxo6jC^w#A&p9q<_j-^kfPr7{PO-!-H;y_now?z_YM ztpMtWiq*yMQfBXk=~Mb}7c!O-T0ti!sFfQukaYa_&!^$LK)Nw|gbwFc-p5@$??i$UV}({)?c%u0gLA zjj}EenxyZ4c|_5&<`G#Uy|7Of-2XiR8tGI2@|W90;gYgqpLmQ!cYBqSM3B5Ow&w>Z zhx@M|YBN^UncY5KY+K}hIS-k`NQN{}$a`y|vZ-;47!?0=Ft7$1>nc~)cd2(eK=<6~ z&lr=okdM<9+T8sC;<}z85_iheY$G}(dni{9V%d97v-B(!e43P%SidSaNl(9E`n3h` zTJV*Gl$TDaV@ZlOvU_+H^7hfaY^M-nCMNnJ9Ot-5UqiQ7vd8`+Rr%?ppWtfRL=RlR z_qdR4zp(YcrQ(9#c_vOD98UUk7dlSA!#j+}9Z&K^K10v&Yo@q{Bt>xKcZZvr{oJQ$ zlN_NWFn%IoC+%2s-D<(sfad<9j2m=i%I;QGf6;XmkIQM3ws07kyRs2*5>zbWUnCs)~FWH8PmiZj&w0c0U7E zAq)ECW8{=iX&4+esq1H2DQ(~=!H(Kd5za|v-nfIY`V|xWVE#8;)|16c>qs|_7z=0Q zJGnP~kQkp^z7Irkmn=7c%%*xL)b32@I^%}Hnb`eBP=xdZ@@ACTBt_z}uOIsr&tjjy zql8uLC+_Qy6=?{PiYe%?KH+F^*Gd1I^$PzPb5Pn6W3G(l1IpWez{L%L8sdfZ<%ynq zHmG39U5E8@1pGHx*EGn)JjOjfu+Vyt>6!6{v*r!Ui**wc-h!>hr&1pKX!s0TR-Z4l`0ehfYU3wSD%C9z zu=kuPA<6do5k@m+CpxvVZ(uL+>JJZ%oS6XDGnO($OZUHtkN-)8P#*v^u2E@(NcLI_ z<`-se6;Qv#G~Lsix<%=EM3~@D{94>vg4M@YdwX{;)jt1|F?~m0ac#m6Q>?gvuHlL* z>bad#VU5YUY8&d-zsBk7$~Xi{ACH#~6VTWsPH z=Vo>-JD!wd-(LQcJNBf@$3$MDYgS$4;pD?sI|hkCx>$?#Xms5rm)K9=M|eUrJlBBp zLh?79ztv7Y@w0eDK$?u`>lB?K-P}JqQ9O>XG_-PZch;VA?AnJ>Jo_&PWw!6OR^(uSGkAOvP0mW$5_Z;@l4w zwn8@RVpDoW)?^uHI5%E4SdEKG>vs*75__=9B=wey`-hX0E%!}A>2R07# zq=YZjZ)!d|WfYPVx012up8BJ(veci+BLaWTmj~`Xic{dd9TDpM?;~oh7W=h=LQ~ii zYr!)^gP(RP2Bt*DMV`oO#yDIb%0bQMeWhpL?nU#}W1qOODWYr}V&#f%^D3tbWBC|C zj^#Ub-!(w_^X5o6en+~|HbZ~0aj}qNk!ciK$+K#0o+Q0tM56P*7wFOKi8JJP4;5vU zuk58o<5E2eXY=y*%5sT~H5=B$zz)5q4hPlM*B;Zv9g3I=j3*H*|9%c}Ji_sKl# z#Mj4q^gQQ`=|eIzjJDmip~g-m`bMT5 zYrr`C7z|+DVe(hvTsq3iRyoC=-}9^&!HBR^Jm8w|MVF^D%g;tu%oh3`57pU>?Ntr9 z`st(S1$^w;krg!dcCAtR z(&C-k%+$!uktc|+Fb+}t`-fsp zQ$``CO)fT;>r4LwME^8|;;GB&e9Up@ibw@wRSmz>I9HnuT+l(d@tLE>SZU2#D+y?0FlmAOYq{k252K!uG5d$ z+vVeTYn>8e>Ru%`?;n|>u*;slX7C`NliJ${53&?l$=6&u1d3Qczl;co+O;D4OABCo z?+|c}rVXK>Eq34paC~l@1y7WoG9qF2-}T&?D?QtK8~^~rGQ=M@z9Qh-t4hRz*dD|O zRj*7WPV&(Fex56FCplzCWZKD-IOeN22QZ1KBi%G+0z+n*>OtFC&aWoxZAXuXgVK2w zgLDhF|9z*fUY|fQFaKhY9L5HZFg33kbWr>7y<=BbgY@38AzH}C_(i5G zjIN|QZ*abKTnTyPrXskA?>2xLe#&wgRCA|PDtmikY%td!RHs%br)XQ@pCVc1YZFuA z%r4py)`xAqB5I{+GY!Z0j(n|+@4>YB#+q^G&{r@< zsh{pM%#sox%J{(+)(rCp5X3tgw<^ih*2?M2Fqzr4Neoj)R5@j|E$I1*%9@@!UKEQ> zF${3a&cZIGolX?JoXYZgHh*YUH1cR?uY9GDw>kj)>o^_DvF5LSNny1e?_ksCD9+V2 z!t<(BP%csp%E;aGO9*h)vWJ5HDq?uj;^V`qj%>@M8a45|54*S}@{Di)>1?+%nOn^&rM+wiccCe09bkWEjP=Cfk_2Gi-uA{18;rAd zK7Y&1=vvs{xrji_1kz^0A)r^$RlvCl&$b@L75pDn9W}F7TK83AWS74e8nBk5rpgL? zFjur14Yn52K7$&)d)R=tgL<|Y&{wdD_2c@Xk72fRV|qGE_TtLdLL*4bJhc}5FI+e% z;yYmk*QCY0jVdRBSWl}Z2FtLCFY9Zo#$>o=MoSeG0KICCuxIEfOct9?KVi z*??Zzc`IW(nC*xTPlEdXn&bA(WaN=ZtRr2cd`D!u@2Eakj+%HHv<0~OC(#h}4y^4a zG3430Dr+mJ&LK_2_hh7Oxel*rM53a70xeQYl$bvJ4%pGqM@4YKyQ%Ad?D8p|z~0Zb zrxOj&StA`TvB6EWYj*i}b(fJ|!O;(VI1Jf=!~$}dO2DHqA?}fBC9TTH_v=4N z+*z~$hVGhS8K@PJK03QoXm!&TjeUfK)29>bFN%&2e+_&-ggC@!-$Tf_Z$SGBiJ?hu zpIRa^eQQLG=KgtbNUaE26t$pKZM?fy)dJss?wxvxm?~zg{h%OfY2n~rZ4C;(iUNY( zL5vOL?x7dMggc3uNs&h*)4tbZn7{Q@1q)If5ziNgm;-8GWMHjBuT=}~?O(n$B9Z=J z-k#WQUhKHt-l(@@%cv6fNA4j9_eWk>^L2KF=_a5B=SE|YdXYfSsndy`j>O)fuYrGu z$cX4xJC*rOktrQ7YMEKsVTb8zA)34Wpg8Ks+Jd`7XrS6ElSXq#1Ui9*MUxhHa^Jj@ zZr{Bm6xTBYj2VA+?n+Njw|A{ica1;71Kmoofc1 z`Y<7Xk%hVJKqatYB~{h9!8@$Lfv&Z1lb4p{6XW ze05(0|6R$UfTv{4_9!uI5$^2?Q){b@Y}4H7{oMUcZuMqKL7cq{`n;Xgn!|p{O&I3M z>|pGzwKuRu*Q>1GWFSVKlkUry^xiDF8!60t?38bU|{ zG`t9Lm^S7{q06K~RVB^YE?Tx*TISXxmdIAw!7N-6p!S=)mOFrEeL1E>i#jU_tE@+# z;mX}!Wk(!+_)a`@EeZL~UQFN$zms-X{UQ`6ScxiQ*xRFG<;uq45ymEvnA^KBm%i$EcP0 zldq{OTvQ0v;`4Il5sZwEK=~M1&ii7=4kI!mMN!2R5Ja+!a)@+&o-{X%y2Yu13N}TW z^#n6X=z?VX%hHnZ5M zaLW?Cnr)O$-ewJ?E3dZZ1<~tABtlj+V`{_-1VT0eJe_{M7aoixDwfAFGEC(P@jFSQ zrvQB5XHSP-@p%HT2R_K&!wm+P;2!V>=h*9Km`M!zr8A*Z$%GlN_SeqJ>Bl$3K|1FN z_8!u83gGz|m3su6Fm8a?8vQt!gJN=r|3ve_|BOQmv%|rm10}v5=vOx76lnI|lz4s8r#3Ff9OSJka<-&zR_SgUE}ge4&*1>hmO(8mCjv}R%gHjdCf3oIbe~}p2JhgtJhuP_Zcjhg+8eKV?EJlI0gcFZ1I3>Q3NVyXTR2TcM@A&{8g0>7 zbRm05Tv_w>k7@1PXMa<11Ia-g-G@v^HL#*i-$h}Hi`BwI@}t8W&Qt5cIU+A>#spum zt8~gl#z{)VYKg?W?a%&_x>egN-l@AETG;GomTOK-z=SCUXn3Mw+z+{zF?JeiAp$nf z>z5f^2fAxm)^@>YkDW7fAAqK-V1;i?`=UeWQJ_(Zjf15H4@-Rl3=P4K8AE`fTfT#l zv0cj?`Qva&1v07oV0PXa8;m$Rou^9w(&1`w|71_3XXb1-+p_9+pFo)8XARF!KIm$@@S9dg zkSiw}Rk3!b%LH@tv~eG{9ewMM4e@1Uag1Y?7%TR^t2J42)irFva`Du_3~~;!>Cmsx z>^QX{HB&JicHTkE-e5pvgPpco#k!qEhm)4qp{E)9jb>k+1?frvpGuTSLP9T8n?Vrw zWkllkz8hP2-jB637IY_14SElB&X*psank6k5ooOd{D2#ZK=-0#AkgM7 zgvAx};tX33q0W|l%uwuR&lmeEM-Hy|tl8PMhn}c<-s3%d;5hUSeZn+%K2J59GiFFL zw0M$KG2$Hc_o`S=?m1K?*ZObGgDnadTv&qH`ylpBZox1WR_bsi(T1tXDpR>{ICBpb z$$34-*(@RIw!+>|wItpe`kt_?4gvXjEN@qI?d{wCQnv}ySJ98?VSwvJkJzHpJb_`x zaZWnUA-=hTJj0bu_z&zp&UqCpWFgU>0<69DFmffY@fl)I>`F7rQ3&myU>aC|aH4Lh z*QQ0~IU{}^6TIW+0~LIiiR2TJ2P4x=JAgYjOjqSPwmd# zIh%_4{9u1wtwDL*es%}he5=f|2S{Bwn5w+jZ*aj#DsZgfj4?xWuP(!IubQ#_TCi=- z$Y*5LsQ)V54$;l*Ps9G)9~0gl`9L$5pC-(l{PKY?m}ut=Gi$vSL=xY@c7)zvJj~rqui&nr8I$HU_o^|JjXy@Oy3-38cpYwi zZv7J3A~LUpZpAR>^leC`iUUGJ(^jaMu04lVk{5!WvAvg`z3-(q&4t~twXmq|M%~#iU zB;$}#`RO;h!`M=l0F4lb3EUD)fm`x55>x144@xsPTYtzyh4plPmMQyag`g^Ua+2w4 z*g+J6SrT6#z{zeSA7po|e6O1&?m8M*EnG=xuU&tqLo0SKJ&5i|7j9DiYsi%4$|T$l zNg!1Vw&MV!a~4Q;o^BRmCsr-CY@PFoi{X;FZcSUcZ#Q@yvsmLA4}ol$lh5Fxj)6~d z-Ui05?$LX=PTYa)ZyOq@o&*1F^etKR1v{o+r_TOr({zo62IMvfPY`Zk=bjzE@_G7u z?%jm}R+P1>`JQ)4i9?lZX>}?@a_Ucr&Tp3}A=EdyA8r;1mj^M@IHAW*-Au)}UKb&$ zT(Jq~Z5=+gqP=)mN=3F8u?xRr%>MvpKv#Hi3bneNRa`8j<@rgKnXLXr5%yp&;*i^3 z(}&UX%xK`UlDi*sccHbqBoABsV*cTV@7uUJZ#!pZoYidQ-9I0S6)}E%z>ntOq%xruD-Iw=pw{vmX-$31Y4kHfV&&C-u)|T&%Oy_i6aF!Rc5o#tBBKx)- zRk3-u@JSP0d^_ngGWE9T$0&_HrJC)G36lBqNuY2cK78oyhaESn^=B<}t*72ZFOBQc zud6Kkv#a{IaSgK*Am;2$0f1YlXIL)GyTvXP8r%2#z9xgEi8OM~_dVW`%4&OW-nVK9L#IdRwCxk#`9FjNAwhl|q+uI*fDPe3_W~(SsQX2Ittn#yfv&*4g7Yfn+al8;r_}NV zrz8}zJ2I_9>ffVFB4H%|6#*KM?g=`N{aiJFo(LXBNZa)WHDw_P4~zX^z~?g-3{y_B zT1#4H&ZSo{o%%WRt2Pql@&AUb-%KP=%_g+BK~QDNY42kNFeQ0R2O3D#MN$F28bT@4 zM?Dy|sLj2CaJdNLb;xsQEMb+%qbGqyME^YkI9x6=R)MjlfYN|aQ`vvf<;wsW(R1oO z_dpT-K-k3QJbp^Dz_xb+Pk*k&ISA!wZ`&ywv+o}evH{pI@XAm1!x#R&!t*l5M*Mj~ z(p+y=_f9^5d0Jqe6qj23W4sY)Lx>Bp=dpf(?^jDCTVK6}8L7+j<+4T;0Pc0h$`_DP zHR^I^X3ikuP;%j?2VK|(>JCymKWpVaTN(z<;``DB;WRZJ#{?r|{}yYu9fz(CpF3aj zS{ZTQdp!`FkI}&hCk4R*=V^N!H4gv&HL%1e8lhHXM-$!>*Ph`6;oGc?ZmapUrNr*v z18vM_Y!UVwcr|Parnz{0drwn+?RGI(sZgCmq&VSjZ9Y;JU7JxqwJ%`bZqETyoo-cv zum?ttS!uBm9=vLk!hTz2t>_neXp{G za?CnD`9cexF{9W0-T;qSQ{u>N@pjLZRuslj1|%>-Pd?4Pe9{k+0hj6kvw^`gtTNnj zKFXX=Rm2z)rxvmz3N`?vg3cGrs3%&7{^V0}yMY*-P4MD>*MMPmc#lfZO`5`)v2_sM z-v0Cra}%4t&PvQZlgu`qkHb5Jrc~=O)|7kk!6_-Y!wORWqM)o1vi~U#9{u#9mJxTl zSibgxCDk{^v`+wjM;Rn$hgGZ;kIXeePyHMA&pvD*-t7e6pXW>fjukspNCg5)r}~5e zk7N;lp=#B3Tkub-T2+5v?|Ng6xrsajKZVUvKO#9~xttE+^w$_7v*TFEnsNh%Y0cWL z5Prt4h%qQHKAlJd6gwOt{t})SC=`R>_;L%rh8RbNbl7TkNgamC(P|uEZb6)}n*3FF zpEN{_5IcboUjQZ)fC9Z*8~Vwi?tiVge9-x%bktSJa)=H3gBb^dzHDn z+pk(H*iNX36}ZCLN%g{5BP3ijM734Z3k_BXc(S1mceqWti`$2>eQit9wp;(L3lVCRUs_Odbdd%aL0KK0Dr zxpKpr4F2A5hR3V;k7+waV^kR{jje#OINBF*ain=E4k^ixV#b8QlUHVu?1YpAGx$P# zJM$Yx7F%>;u>TpGcm|$2Qp&bis&WlcUbhU59l8s{!*PqVmsG&>jRm8iushZO;zZW` z_iZ2_doT<=UI_IG%p7V2Ggna#xy43t^Lg(O8k_!3d3lS&ZxR-HC8Of#Ev_6SoOi8dkQox3H6W?uWp9Z+DE<2?$oUu8I#dF&}^y9Uj22IeQQ1*K&3+U}ZK;e?$AhFzfSY^3KA^VuKy3 z^x*9(zI4bm6|>?ayqJ`VcW2Ox=$x7@gh8|~eA>QwYT&^3<*w#xRDWJ|dkDxW!M%sj zLMfBKT-;&XgECq>cu+5yX^suz6CmCsc{*&_Cp#SUGe;jpi`J^YiZm{$v@!N9+Ssi^ zYk%mC_!A1m{DngHF|sJ0YykHAxoR1Pu`#B5Ev(;mSIk@7+mxSlz|`|H|LMbO0tkXQ z`W;~JSZl&`Va}*;=7-f*{PF+hrQ*u26v&pV8tXrHW-A=9W0(y&)V@(`5uC{3_#TE= zk~PZK$DT&lp*ztu0HNeL0gZwHPj>xpF94yl5GGNGTzHC(F<-D`2j+Zf-%l&*r7i@B z@D&8bEZshLQ+syP01KyQjXMfV!YR4*-?ic2lYAI%@Fxg3`+?N!02uDOZ^)Jk@4vRZ z9+HdjbS==Hrarv`#aup+4~+jkFQ2J;&fp8k8tvc!;=ulIXqNex70*0BfJtIs3c~Po zxQDsNK^S{9X?Gz*z}DBY7mE=cYG&F_btbXD2iq}h_a3h$EzsOkfJea01+kv%WeJWG zGSYwKaDr#?5Oe=pDq45Uw9=XV2oDQ%TV`5-F547@J&t^C_(he7#(23uo?8}bALqhy ztl^L1+ob4D#QZsGmznt^rvtkMBdK?Ksc8Kr34r3eCUD#K{(v04rleo#H$0Pb zmB#+P8^iNzN=lSqh;okaJ_|c-5DT*(NiA5SMj#XaU1gRj<(34g@PeCmCu$6lmlOZJ z1QN>bAjO&j^M#{tFSmXWfiP*Wg7MQM0kDtM?r|Udkt+TID_pT5cSE?MXuQ@GjIs^{ z34N6#o1Qdi)7amefi@x8L;dItn=9#w^0N(!qpi54!E_R$i3 zAP>RKm(E({%1-M)Y>oh|IZgU(!?vS>VH;v|>8IZ|oYT0&*&CBP{rmZ6Yt=)9C1C9R z=O{E=KCwETcBa6RR5vt;TA%MQG+{o|jh;O;IW-kdwOr#0I)pD|B~KS^VD&xd#cwNi z4HrKncBp1yqL1Et#rdg>?{07r^?sU*!p~8({Opt+laV3 z9z^V&`}?<+3+;6%=Y3xodu*3vtQs@ub8oqP|E}djbcHRe=HsIZ;e9?gKwe`*p{0^{ zjG#inr3_>TJ`cBJ#Q#lH&D!1f6BpPuk9l)*rivGyc7OPWIo-FRXv;_6 zTHajic-)fra8b+1)UeD_p^jcz!`M?avBUZ&n^He-@7$^#T;RlDAn-@q;O2C1Jw54v DVT#@n literal 0 HcmV?d00001 diff --git a/icon.svg b/icon.svg new file mode 100755 index 0000000..3d9b5cb --- /dev/null +++ b/icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/main.py b/main.py new file mode 100755 index 0000000..1919d35 --- /dev/null +++ b/main.py @@ -0,0 +1,3 @@ +import navpoint.run + +navpoint.run.run() diff --git a/navpoint/__init__.py b/navpoint/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/navpoint/__main__.py b/navpoint/__main__.py new file mode 100755 index 0000000..1919d35 --- /dev/null +++ b/navpoint/__main__.py @@ -0,0 +1,3 @@ +import navpoint.run + +navpoint.run.run() diff --git a/navpoint/content.py b/navpoint/content.py new file mode 100755 index 0000000..87ed309 --- /dev/null +++ b/navpoint/content.py @@ -0,0 +1 @@ +content = """Navpoint (waiting for phone)Navpoint Desktop waiting for connection from phone1""" diff --git a/navpoint/get_ip.py b/navpoint/get_ip.py new file mode 100755 index 0000000..1c5fa64 --- /dev/null +++ b/navpoint/get_ip.py @@ -0,0 +1,22 @@ +# Copyright 2015-2021 Stack Overflow user "fatal_error" +# Copyright 2020 Stack Overflow user "user2561747" +# +# https://stackoverflow.com/a/28950776 +# +# Used under CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/ + +import socket + + +def get_ip(): + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.settimeout(0) + try: + # doesn't even have to be reachable + s.connect(("10.254.254.254", 1)) + IP = s.getsockname()[0] + except Exception: + IP = "127.0.0.1" + finally: + s.close() + return IP diff --git a/navpoint/gui.py b/navpoint/gui.py new file mode 100755 index 0000000..6c10dfd --- /dev/null +++ b/navpoint/gui.py @@ -0,0 +1,27 @@ +import tkinter as tk +import pyqrcode + + +def run(link): + window = tk.Tk(className="navpoint") + window.title("Navpoint") + window.resizable(width=False, height=False) + + label = tk.Label(window, text="QR code here...") + label.pack() + + image = tk.BitmapImage( + data=pyqrcode.create(link).xbm(scale=int(window.winfo_fpixels("2m"))) + ) + image.config(background="white") + image.config(foreground="black") + + label.config(image=image) + + try: + window.iconbitmap("icon.ico") + except tk.TclError: + pass + + + window.mainloop() diff --git a/navpoint/local_server.py b/navpoint/local_server.py new file mode 100755 index 0000000..d8eda7e --- /dev/null +++ b/navpoint/local_server.py @@ -0,0 +1,23 @@ +import threading +import asyncio +import tornado +import navpoint.content + + +class GetHandler(tornado.web.RequestHandler): + def get(self): + self.write(navpoint.content.content) + + +async def main(): + app = tornado.web.Application( + [ + (r"/navpoint.kml", GetHandler), + ] + ) + app.listen(8888, address="127.0.0.1") + await asyncio.Event().wait() + + +def run(): + threading.Thread(target=asyncio.run, args=(main(),), daemon=True).start() diff --git a/navpoint/phone_server.py b/navpoint/phone_server.py new file mode 100755 index 0000000..2114cae --- /dev/null +++ b/navpoint/phone_server.py @@ -0,0 +1,46 @@ +import tornado +import navpoint.get_ip +import navpoint.content +import asyncio +import secrets +import threading + + +class PostHandler(tornado.web.RequestHandler): + def get(self): + self.write( + "Navpoint

Navpoint

The Navpoint desktop app is working, but you need to scan the QR code from the Navpoint mobile app, not open it in your browser.

" + ) + + def post(self): + navpoint.content.content = self.request.body + self.write("Navpoint") + + +async def main_phone(ip, token): + app = tornado.web.Application( + [ + (r"/" + token, PostHandler), + ] + ) + app.listen(8888, address=ip) + await asyncio.Event().wait() + + +def run_in_thread(ip, token): + asyncio.run(main_phone(ip, token)) + + +def run(): + ip = navpoint.get_ip.get_ip() + token = secrets.token_urlsafe() + threading.Thread( + target=run_in_thread, + args=( + ip, + token, + ), + daemon=True, + ).start() + + return f"http://{ip}:8888/{token}" diff --git a/navpoint/run.py b/navpoint/run.py new file mode 100755 index 0000000..0415aa2 --- /dev/null +++ b/navpoint/run.py @@ -0,0 +1,8 @@ +import navpoint.local_server +import navpoint.phone_server +import navpoint.gui + +def run(): + navpoint.local_server.run() + link = navpoint.phone_server.run() + navpoint.gui.run(link) diff --git a/navpoint_link.kml b/navpoint_link.kml new file mode 100755 index 0000000..cacbdd8 --- /dev/null +++ b/navpoint_link.kml @@ -0,0 +1,13 @@ + + + + Navpoint + 1 + Connect to Navpoint Desktop running on the local machine to receive location updates from a phone running Navpoint Mobile. + + http://localhost:8888/navpoint.kml + onInterval + 3 + + + diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 0000000..adca132 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pyqrcode +tornado