From c9dd54ff5a4827ee10751d3104f1dd3fd1860305 Mon Sep 17 00:00:00 2001 From: DenzelChen <291689742@qq.com> Date: Wed, 23 Dec 2020 08:52:18 +0800 Subject: [PATCH] Update tutorial --- Code/Python_Code/26.1.1_WebIO/WebIO.py | 69 +++++++++++++++++++++++++ Tutorial.pdf | Bin 20467990 -> 20432520 bytes 2 files changed, 69 insertions(+) create mode 100644 Code/Python_Code/26.1.1_WebIO/WebIO.py diff --git a/Code/Python_Code/26.1.1_WebIO/WebIO.py b/Code/Python_Code/26.1.1_WebIO/WebIO.py new file mode 100644 index 0000000..034dcd6 --- /dev/null +++ b/Code/Python_Code/26.1.1_WebIO/WebIO.py @@ -0,0 +1,69 @@ +import RPi.GPIO as GPIO +import os +from http.server import BaseHTTPRequestHandler, HTTPServer + +host_name = '192.168.1.112' # Change this to your Raspberry Pi IP address +host_port = 8000 + +class MyServer(BaseHTTPRequestHandler): + """ A special implementation of BaseHTTPRequestHander for reading data from + and control GPIO of a Raspberry Pi + """ + def do_HEAD(self): + """ do_HEAD() can be tested use curl command + 'curl -I http://server-ip-address:port' + """ + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + def _redirect(self, path): + self.send_response(303) + self.send_header('Content-type', 'text/html') + self.send_header('Location', path) + self.end_headers() + def do_GET(self): + """ do_GET() can be tested using curl command + 'curl http://server-ip-address:port' + """ + html = ''' + +
+Current GPU temperature is {}
+ + + + ''' + temp = os.popen("/opt/vc/bin/vcgencmd measure_temp").read() + self.do_HEAD() + self.wfile.write(html.format(temp[5:]).encode("utf-8")) + def do_POST(self): + """ do_POST() can be tested using curl command + 'curl -d "submit=On" http://server-ip-address:port' + """ + content_length = int(self.headers['Content-Length']) # Get the size of data + post_data = self.rfile.read(content_length).decode("utf-8") # Get the data + post_data = post_data.split("=")[1] # Only keep the value + # GPIO setup + GPIO.setmode(GPIO.BCM) + GPIO.setwarnings(False) + GPIO.setup(17,GPIO.OUT) # You can also choose to use other GPIO + if post_data == 'On': + GPIO.output(17, GPIO.HIGH) + else: + GPIO.output(17, GPIO.LOW) + print("LED is {}".format(post_data)) + self._redirect('/') # Redirect back to the root url + +if __name__ == '__main__': + http_server = HTTPServer((host_name, host_port), MyServer) + print("Server Starts - %s:%s" % (host_name, host_port)) + try: + http_server.serve_forever() + except KeyboardInterrupt: + http_server.server_close() + diff --git a/Tutorial.pdf b/Tutorial.pdf index e65c1052997afd017dafddcc2c29170a68505a3d..d8bbb78e2ecd3ecca6f83ae19291c3196dd13374 100644 GIT binary patch delta 1686966 zcma%kbwCtd_x}UC3oIRiloBQ=upNYjff6PL7O03VD(0(TcYv#0MHB)O*<|DgG4)aqmyK?wK^F~6J31*H+>U^QS zNJWvNT0Yo9!mkph7dSpua7mIu3qbaYbuRE}Ju-2WNNFj-+F{fcSv*5(r3z~^VKnDg z7&G9jDT^V>p_S_DX+paS30kH~kxXpiDuHDKBra!06IuA8rdQM)&A8$Py}+Xf3rKVE zhZX|8yYniE5r>|M1f~l-u*zK&Vj m_RihUTU926RHiR2{ 5FNzFktBft@Wq7&h%)kFVxyfYVq6B33nTE2vLf=I(}W@ByoICRhq+OP zW6^SiKqi-x@I{q;L_d trE(ft{EHxn3A4FY3v-Slig$ihUE@2FADYOU2;%sLkiX!8( zfX?d-!^xytnj2G_4MICtM1)uc&na4tO~9k{l9Hqyq;`a>@8JTCq9sUcvks8JRlsjr zW+nWXE;PqHaa2auaR#bIl*M)|7e>MzFI{dpTa+@e(34IIUG-T@{g9M^!UJK2Up6Gl z@5WG1 uY#9V?i@7Efpb8$l9gdm zV!=+Z$wIfeOm!ho$DBnik!Kr@ijx*8Qm=Run--p@rPv{Zz5FVQc~Y)V1s6zLDPl?b z1Jj}_*JH}uau5{pjbIh)7A;({j{u&+N4XrL)=4ihRag!C4)B!Y`da8OyfLHB0X1f* zY9oDXCsS1Dvy#bZiOirOV8=!jk*ImIDBH$^zGSsfN{t%Th!-}2bhX$0nGN(?en?5d zOjt1#_K|;yG)CHU&3Z$E={d4T73_Dwqs|wqu`dHB@;Ebnd3Gya*lXjTUT7hO`C`(I zn;DXbwkVSR+wsi(O_hY;Uu~WV7he!NQ#wujt`wA4P~gTiu?lx2G2bb)E%!AW?kx8; z_Z|V0+}Vl=oG=x>`bqp$-m+#zf{x EaTUAQeQtfdc|e zU*pUuvSK&*#bqa6mwa1fkTRrfXodYO;3v`#5Qc>Afg(&O5vnbud_;(!n0pA0U?E}1 zULd!E0{d^~qb_2(;xIv54SgDEykJKuAJ^f6Ui8t6vSS 7(p8FTIuuw1 z(||NDE-}%tkn)*hdV!h-W1KN hfJlpu8?Z#h7gv$$O|TS=i%bn62BD!BP-nI{`){D`ang_$<*caR z3 Okr@P*q*4ICC%^^1O^m1P{9`Zt&Hde zHuX5OQGGiP@a|{8l~&FdT=z*X2zysax#M*ztzc<>jmhff!)p2-O_(z 06A($rynmvxUhEp|@WduMHY=0yJM?c;rxbw4+9a&O;^ z6u;K*y2Lup*gI(HyhkBjt$lyhbev}G6Vfob_oC_@+xOd4a&3ezd2g$L5v@{Myv+H} zxbK3e8P`Nfg}>&12)Xks{%zkm7l-fL@>5hzuq=6GXyW<)b8_81m)G|G@%Y4n$XH|d zqX$=hk6d=(%+&mVcK@t o{o3~7eEe%j-d(63bG;L+}1RI6X_pGFo7ke&C zNl;ivSb2N(KTsz@vF<7w$7kK1*8lF%TQ_urmTYXg&}m~gFB{2*#;aQD3YrDyWt&{> zw_%a#k_|B#``w0l)Jn9R5p{R|i_R;r@4Yi|$hyJN@}$qpGO{0B_VRgR`p((sXNr3M zNz&FR*9nc-utD=k)pKBJE4R6hx|KBt6SE8W_V#CYUdyCmSiF`YeV;(TM?6A#8>&T7 z-Z5vD{t-XieZ(pL@ sf~PgJ57dKd6{h1 Vtq#{ZAB{gswf|dXv7c3MZ{l41`ms~Bl^%^#zKE7$jmsZ|5wcZmf}Co zzJ*Nh8sQ-hC*C8v^bJpGJ{ipZf6Ift2ze1m15IpKL2$u4buzubgwz}SB_V#{S!((Z zknY6iKca#aC|m{}14DKj62WJ;U;P9o gQ|iLV(5&R4hDg;gaIagm#0Gs6u6mk)I}!EM?Rwq92r7dl`#r>j$TIh5&*&LufFj$%d{1Wauhu zNhGP!TFQh(j~09yT;h}p%5*$eF}KJVlfs&&o(V;Ei`_)!3lymQn9AVG&_-42lUd66 zGBz&2;}b!}^0VL5L}W`27#W6+RB*)D;0`V%KFC!k#8UcH0vc9XDglu{T}*P*6r&g< zsPt;I{eZss;GgBE7tg|hp@xU~FHvGV`$cH@X82UDe1q9l6H%ZEO_U=~g#MI}vZOe^ z!!x5$s2~YIE)r)VDsRQDC=uyyB0Cdm$?zCWHdc}AGYN8ib{xMz$fR)fSVm!%CD3|~ zj8l0jq0H5@kn>Gh3>?yn$bg_PE0Vmm0u_6RMdfX|H08s&rE+~tk9(&e{6?c90(c;< zA^GMagWg|**XXSndUPpnoaxH7#Y>i28ocBWV@3KITM#nocf_8Ay!2xQ8OJ#Qi11n> zkVCb6=m94+(H=lct^Q@WdMgHqOb&2{97K|Q2Rzls#$evd#%m$h$N#vQ%{K;2t65q{ z5caIC;hSJN_)uOBD}@Y#geeVpE_xk;x{+I15ea=p)lDc%D5NCLNhIOgjnbS%NOQ|k zaHSuV wFpk$UZBIJ8h|m}AB+^*$9bNcEL#~=Zfhc%#$Gbv- zz!Vs)n}K^Ir$&l?l ;9W3YWi~33ymu2>6CY=MR47!L$`O^*Ehd@Z z=uHv6Gr_^LfuKddYEY3dS8K40fG+f-nVdfrZS-4?Qh4m$%obrOlZGU?8pz!ra-6iB zVJX*JAURsP87*LV80#f@Vm1UDmfDp!BmXNB`n)t2Sg{N`kbx5uL9D&ORAZ`DV#Gg= zgI`!91qe7|Qkagyc+g>D4PfEm@kh2ar8}$A2h#k(RD6*Z87fq1rN+3tqnRkuMp_~I zN6Te!Cw`e}%UU8oBU$;{E^896fcI40TV$oXC~+YdYl-|>B9gqqb!aq{n7EFIGP`0X zhbcmG3~mlp!}=UJ5~&;+SPndbtgj=o`vY6S_TbqHY=uHCF7a%|cYfglH?^$wi>;W+ zsD-ZZGNvliGk+v3Vt?lA$kALyH8Y@42D|KwvDU9GGHCOr8txAu%&|i)4}v#ra%$M3 zNTd1ykz2<=<54cN=F%F?X-pwOt4do>p`1&l%k>!ms412K07^{v9P|U5H1(-8$$#Q^ z;G$QRd^#SmrT~{t0pOE|zW ;>Yw2o!xuKH+JS!&&1tKrH9Os+_e31P9mV=Hi;muHp%9=aOT3~Kk z$_%HsED*3%z_{Yw%#$IjmGFjY!_ZskHyNgAF?)hDvnQD<@IU_6_pUJqMuBp%6afwO zWG(RsKQC1I%V86#;kA>? jvepdutBs%t=nlW zhW1Tiz;+xy)V9*@APyhBNyXC?ALvqMV;Tg3o|{$w2djZmdYJ32D`0Z(=dJ6VV1THp zF_>t|_O5!iXC3RzR5YhCv;vBV1IPPW0LKzVI5Xz&*Z|CbQ)`IPzw#cx0#vHNvSm~o zjB#dK@@zw(6ctnnC9VJ@(HDRy7Gf^?16m|?AVO#WpjwjjX$$}_gZ~u?t_`1!L!aM< zF=shA1r6~c$&Dr$MnZ#1D3qxaLkZ$ro}_@l5tcPOMUoaxfyAALhDd-*m^IOb-=l&GhsoiEv|SErgNxS2F;On-$4Q=O#qa90H_bm2(mn4MzGf zE7FrmPcHpM&i6CqMT^`?$EF56rq}r`g>+K6%CSNpKEi)s3Lh_Jc25@uVpum98FUwM z$yo)h9n+6;S3*H+#|l-t7GAVIvIIO%w{X^+c(lSG%DUSAP2aQW(btL*)6?l;t_{`q z2f_iuxrHHdE3jGl44dhLN)lHfK#dWQnB3Ki1cdCcN;6Eo=$`ia7?CbUV%7#~m0Dq% zS)ktKk|+=)pq1g<|KLop0qA#|hi}FW00W@|P_)78&xKcdeHnw5<8Q7H4*`MWFBTp~ zlC^CCAt=%i2}%Msg0d~N@embHYz)8}pTzC)%=#z;Mkv$jev}_8G9`*XR0(mFXT73F z+8mdtw-=242lQ%E!>P%u5mZeoDmp393^UPT^R 4}OfHhmsWsO$@i$26>?g(Pir1 z7z^ku+Z#qJ2I`f@s0z;Xl4%_gRM46QHZkBcUkZ{3e~WHnz*NcFP8e_*t5MDBqNK4V z{U~QzCGE9R5?fRBPw00tz%86f<+m~j=z=-#94-2<*4;lDc0l1d2T%}+BkH3a&F5kO z<9_u2o^;liqtv%$DUm=;hQddQfU-?+H;iXbC&NjnoX3Jc3nkyZj4~c&6&htSRzKez z50$xl6?|t-kxd#(JqcdpU@68#@H${HUJvdGobSd|dLyUCT>gt==$;8ud=QIRu;RB7 zB6}0AE03$z@Ov!a7DUK2q=kl|A+1XsFbwY|;u?IJ0&5+In5b-v4J-0_B-GnK-Sq(k zzdEmltCCi^>4(8|(keIVh^*m9sjq3{0<$tWgEgW^!`=vGB6{)wsX{Z8Dyh}wcWAH# z2%fzuEE?M3%*^iIK0wzuj#G%`O9q+YR-!abL9pD8Qg3x}fz1eSbp87Rz_z$bMEx@- z>AR=^f^rh%h1s~X2>=n*`~QcR_}v=lIy=fsgzeIx?T>jq-Nz7xKWI>n8M(G)3=8&^ z@)cWo6iGG>016HIRziX2MZPDQJ~L?&UW#7iNMbVxFTImc`K9_t^yEgb79%$vrIGZ= z!FW%r{s!+Uvl;x8T;di8f}d#f2~OUKZsaH~Zy8{yNc0-AhlNrf=HeM *ROtCFCg^3x-$0!%e @oAFXE z8?kj19Nk;*L~2W=J_J`H1ZM=&hv4f+V;X-Z0i&{gav(9m#CDiSX|4~LX&)T*1#zYd z+*Va#c@`q^ik*?X*wV-uPtY1BHnq^JUe0LaIun?& w(LdcgoiIju 2;ecHdwHdAbV+UGX$;B6z0Ccmonu zK&jkVm~(k!Pzh^wXxNA|4I9%Z1EXyd4CTAbJXtFBX<;R@k# y|;hMou@JK+4d-0>+qqP%JLb64fW0mWmuq zXpjwk!Nr7h6BPW+u5iPGW~WJ}qS>rgQ9*%GR=1@4k4X7VNJ!cokppXXG*xl+Q1WID zQjgE4V9_n+#R`CC%|-qYWs(ZLUVmV6yFEg!DcyYpz?q$Qq`RJQxapI^DwHJ9<%~@c z5dYE`Epk4HA2jRVc#UKK4=WMm>D$9pTzeRnB{OC{ya2TSHM=qgaABe={%Z_fYt6iZ zvdEPK$JYh1Bx|-1#5BeVm)2>3l`+=<8ERpw8^U0V81+$cId@f4>8qzIeODRXNQE0b zDvk(R1S*;hrTOoIg&1@9`IS-TjF?JqWsx6cjy}%A7Qi4iUj#0>w4f4l1_i;`^{6`- zkl%sdgaz}V50J4J4D}r_vD6IzSd8ITRHWsmN~I5pVP;rJ%x}CBOIX^kY)`R2s0P-l zs?rC s0ziG+bZ`6lcnl0^}A+Rt8YOGC_kD zyML7#)JZ8&X17#a9E}TP*a4JoaQO`6 kI3)#ROck?0h50zPMHGps@yt2{s+RfMl_q-FaZ#WtjiuG7+pgMc zP`5?+o^}W>KTAbhZUs6cHvAt9=(P(eN^ZLi3Xsbw;><$O3EKeT^+p5cD{~O4sX0?k zAL6yHn$!BY!Z(Bi3~TQ#*$yzhHydK2cTRkXWQ)kolv-Wv7RrrAZ(ae0i2}})zDQ=P ziOp660+k_SuGTML!eY4fV0ATQnUa) KWrz zOn8&`K u)4mj5!ojjqJq-wfa2_I~}#roDI zXcyMH1XyemYz_lPnV0y#q``!CBw_0cmUmF=`>=6=xyU%fMUEh6j{x4|{f2D#2gQfA z4*qnvB?bD3>Ea_b-64;bCe->xNAyKBO2(P7_mn)qU39RLlvEO0CTDsB4Vc_)!MtL& z$fsla!iYgX0z^b_q}9|& v1wfgZ4(Lxz)USmZAn- z4bPG3DSa%C?UGnT2h`Y1w?7RE9y$STsc62b`gFtNbo5+wTLzX6n6uv&YJF=tF0h;{ z+M>Q8N_%jok^%o;EF_|9r@(=ukcm|5>(KB~I6V0}^pdl{^YqF8gM;W)i}{V+01`X9 zNvXHPcu;&E5c-_1#4B8eLydL_W*O9UgQoM$mAHBX?2&i@^YZSD;cF{6Hk?!JwNe;p zhHa%V3>1 #L?;!|Sw{ zz^)BW4&l=%hpvHVWrm8A%q#$HR$RtyOm#NC&I+4tU9h0tst`X3t{Nf?vhgeT)LN=C zh^LUww?3!_3Y^B^HxO~p2c0UcWdZ9)S|BvW<|~}-IF^rSj`|hmYJEu=M7D=|0QAP+ z5k;)OiGjFZH&lfcW{>l?sP|?@_q_sSxc^V6Rp-M@*al_?ai(_ARw1vjC J4(d)%Y=rGkWu`;WyAl<3D!Ll~UWq zq&V^}sFi!ufUC*`jxsp5@tZHSHPz5QE$lkObhSp`o`nmH@;Ea&`Ed_K8+O}p?#h_W zLZdGd 2}rc0pb{%Krsl2|>#cCWW?7sL(r==LNv6HY#sDte z1`vCn0z|dKN|TJe8o@?%nP3%~>d `)>{HI}(@yL)@%ZwxiLxqPker4b(`MHiOa_A+pIc)2yfghkQ z*oqqszg-5!fs--d!hB7XPD7qx!jp^I@H^mmzeZG|ByC?KDiIg6DKFnLa~*!n`q+SH z32b-J^tpl7qgum-T0(xmEIoQOw8hR`tYV?jhqk!DLR*}T?taD0kO1G&M{=3@*W#;UD@kCx$NC(a$dz>%uUc5k(neir&4#Xe&oPktQ5K7P^>g z^c7tQK5Y{QRJbouHd@2x3|ft^APM>@GBXX}_iVx%s9 4)L?=#YU4U6iEJ7m#s*`J*^9=ZCz9Zesfl 1^-n0T(N8H4?Ztv zAoO9ah6`%}hK04cUm)>Siw*Q@S=?ozffZ#g3w U4|JNw1ZIV!glT76`T zyBR;=O!+~eKt-Vbw~8VfOk#hCRQ8OyJf-}mS@?ssB4f)JKAL_08&i_?9ZGaUR;1gW zNhXJ_NRtKFqb6}hWFkrXC34UuHnk>g@&zqI6r5`s&|zrwkp8`g_KEjYU_Wi !oCVE%#R`BxPi9uo{sR&7}Gx7-|7p+aK zb%Q*_x}H96r1Yj>k13Y)(5WJAY)t%gwl#;O+nRWh2{tC9Y$`Mjpwoi>F9$BwQrFgG zkN}Y+@pm L|$)s?7?BTo=(jI$Nv5HcF)Jlp1ykb z;o^B;x1Q_1>}nQsA$`t=ee3QT&-lG~?dUGQe}^3W{&mu?5y?))&ZT4C3Fj _T?oq`Y0Yz_PYA;&9eo?yLvXhONw_LPAFY>BcbM{$A=0t`Y-9QW642J&97M< zj`#fh`nk=Z;DU@z@onorKk?w(?ru&q# ^!(Zp!jd`4ZXX?{06V~*+x_9)Bx%odL zi$9;}{htEOvE>cjqZVvhkoRcJpapq5lVh3<*gboyyI+l |D4(5ZdP(D ze)3D(7n9E%2)Ht#zVz&sq}*q*%k7)j`&?~aRG-PsA2*Aw{ospbdYs1@j~~aAJ(5-j z+^q7Ydy?dmUsOikWV?l*^XgqqmI%+!d)K63MMS4D^STcTUodEXdg1T%*x)58E*?hD z#P$i%zq|H2;CQs@IK@Su$2<2m_3d!{RAHm4LuWS|__nAp_DcK9E~Z(L>5aM{zA!?f z+BT;CLAwT>y^mUYulshmkBR;1f|AJAZEi&ux;LuPICAol1>uiw)tc@%N#++A< w ztG)DCJL~d;lMSP% MV^bp6SSVw*4cQf(5_fCYR>!WjXF4qPT=`2mqwBFzdFexq57z0E zS1gTQ5gAjucj};og09+(oNt%Eww!y-`)AMKMlDywHS6)X)=ay4Pp;IuKE>PKdwi3= zxeNR+y!d}qeFa!m!PYk29S1mccXxMpw{$nsb?ENeNOyM~LMZ_ym6TLUN Fu~jPj&Mn7%UZ;d=)S33 zjk8o8dLCN1b48b0G45CRkv|sc9-iFba%1b!@dtSMroKob5|0eeF(dZ<=gD4M*%A&A z(hV}=Wjnjvw-dVMu~lVHdbO+6id&|>PDsVh&S|EwlMMvrJr=DG<~c<6M2wEP!mp+; zod~pEI0tIR!bny#%PyA7>yAW1F>Q&K-0=$z@|1r_Fo&x}%;fpWU mb+EPGuiYvH*?m-vs?RtK z>Y*o61%u575`- k_1QJKfNGLfzIMk=72lIM9ZCFt!-0 zesr2ivdId>OBD)}TO?v|Fm(yuMG-sut5Z(L=FOiBh2TCaC*T9sqHb4ngr{@7_1@nw z2}Vyb7_N&~YdD{)HY-ru1aomH?BJj>*X>bjJQX}R2(yGD(?%*%vhOSq#XuC}-uQE@ zsuFEchsko_rq^d5Ra(Tcu$q>BXaX^@nP#(^^=v4 (BM>~Do!HNfXg zT5ar#+H#kcOr@^Ebmj0-v(!9K>yEVFkuIsD`qAvgT6SEPD|pBbjQK+%nn8K_r8NdW z`HduE!Ob(Ry<3s%j*mTKYUZ9V6jBtKkZV1(D80AN-F1`MEOOKYM9mG!sa(4;*;HCS zn^g^+^Li;Mm J)~ioJe?lGiE2TM-n!4_fsEEsR+?nU{QDJX z*NfR?h=Vw qRrC*qEaN#}$ z6KBkQVx@QRnr4wWAePP*@U53PM?KB!m8=y;0i7bE+%wjWD>o|gJ4@Ux9kNTPzGLt6 zN=J-3YfEAX&tY%Xg5+7c(0#Kpy7`zC5Y!i;P>8isX}8_>;?Oa(`(`$$qSKc{1kvY| zks*1=)F=7AzZ{Cy>{ UzhHsu!W1%-@Q9Q;T{ z?inSERq)pGLi`gt!w&pRv-U42ghCgAM{fI2kB3Lpw~kxNzyb?82$%w+&;W09DZBs^ zaugVuoaa0d;4RGH30Ui*awjB^qd*hLQ8!`U*D75uXr?aeaw(AYQid6ta)C;Q0+~kl z?O{rL>u;ko8k2VExciFFN(Y@npK&jfulvQRT*yqgp)!65S;Nf-lV}pGVD7WL7SM~# zmL~-zBs*aR`4{Hsh>jQ5cGLdSmam-3&WXRU6&kcKd1Q&Ce?VvVR@#s$w!)L!habDL z2a_zCpErqZB u%v3R9r17ME-goO z8UXr%N&=Lp!6IsNzoRO{^X4p2ljjU^W1+%8|9^I--+!P|13RmTq=4)X)Cu621)VEF z;0_fkaEI2-1&q(2b3%z((c3D4VlGThz>7x?GvQ$d9r`eXQEm&+$whENr?@b=G6BvB zOe`QRNCga~9LDrOhJc}C6S*r)yO@&C8mTF@8Nxk;pK!e`aHpizn_lHQXxnPJU(1aB zI6uxY&6+C@(nG7{jnjFcKq%qw79Jl7>Zj2q605S@3r1?h{J|dhNh+B&Q6(bwOyn5Z z7gLVRDBVB-NAq<}eP-K>nh!k22m0I?immK_tCq?~ XVo-VgPV+^zV0Y-X;)dLdYa0G-MKs*dGYl#pZzyi(@~p0X}KrawjzI zVnZ8uab!IJ`n4CFzzcC~TWE+ju0$ OX5J?7g?^f^CVM~t;Ze%Htr#^gpRRG82r>v2<@ zQ;$K>6BFSaTMu}~jg$^eq{CMCpbbCpG*%`HLS}jOC3zINYhPx?b{)~`W=FcUj$igq z3cja)z794Xup;n*1sx5je8BxX2>_m-xPO=(qks$reBK0`pSVz)pLjgVfaV-N7j#$w zKRpo$J|W;r2%W=+hRzZEA_we-hd6;b|M!?cp)RT+6y=maI~BMOBg6qp1e(Fn@BqR& zWQY#h)W>9jJ +U}Yo#(Z`&;hnv*sHFMtUYeJdEMO zgNeqdmrM?eKmD|j->BYR2v8C7rwg{>+EeIzHc6SOLWLZ*kBj|ZK3lGS?#hdypSmZl zFN6hDSaE@XlyE}Yzp5sWfQ@~w#5@{^_a)+isz(q?UIVXYiMXJ>zC`$DK>i{zSHibh zBIvhS;tJ%yD}8*CSlb9_69ZuZ=^W%>s3 >jqHKF-`cjjLoyl(f&5 zF1#T1*%s)pNM1YiByI#I6Vmgy%+ehBF@&a*em2N1L7R!^ExA6I%!I!?TFQC%&~8H; zyhgXyY|Qk2;~haj^sDWqmg@I~EG5sMdJ07UD#-fe9E*k-0&lgyet|JR; UFYjA^u_dpaJU6O|TFg)`ULP<3X)j!Og|Csj%IhvLoDB`~+8WK0t zEzQ$pC&n=|`AV5f!-W}3@WJ}s8ei^CJUyMQ>SspYeV%bR5kFB6r0s3TH5eXBo>ZHl z@ RKkp kmHG{>|RxX##zptM&L~v&uc|8 zh$fCb%8z^pW;)Y%Rpw|XsgkuBG>T*BF|FP~#465_a3Y9L;Pur;7n;S>qA(;R+C{z# zeG7iO7cL85Cw)&W&-8hb%J$&l$P@g;k2TWFg-}6AgtF$srBHdC#4`E$suVrvey64D z8?4BMPFx f}wIdoBh$s8;HoDBf$zh7C(+W) KP|C-cjAJ`ntCa;7$A*>iL2JUL9VMpS1=^cM05U#x97Hyb!kO zx6Gr}263h~$_NDbw`cSSs=SdFml~uB`5Szw3hoH_Q76c;I=m%gyUMk+72h%)1O>M& zQSh%2+7UFYG4h9qFw*Q$m}te~ulvZF)39pZ#(%~jP9LuHMoT8k)E}F7I7v!uJhK~H zUr3-kGoW-=(l_U?VgxPaSWwyq%s^c6d%h4cPgZpG%&MGEkse6ew%e(O&{ewLuYPJd zeNo3JbE~Vc7Ky2Zz?R&%O2pNRay5#Oojdl)G!WbrGBIkC 6oK@M_BCzVCg0-pl&s1QN-&81PE= zimGx1!PPfN2b&&)qRPi F=t2LHU9Tc h^5K^}uEPD3 IB3p&_#)m(){ZOHOln zGgRR$i-r8iOf{#EWZv?71^BAOD6$-^ipxX#MWoMc?696~Ba(d 83o}mv`-9ck44!O(f9D|4PP)^TGG&p|z@c&Npm#UR33> zM4d7Fk#b@=Db}cHk3ERKVm|u$xkwT0cH+}n6()It#vHp9&j{sB6p3qDp4U`5^3uL0 z>log5je76D)*$L<%u=M^4vG8Bi*-n&Dl|@mfyt!HPj^#tI{rG9oqtW5a_&7n%8xvS ztD}*4d{wn0?R}}>Hod)_RNt{zz)vP|amQ*5@!+bgS($M_s~D1uT>a|!^IF#8Ck%On zbFuG2#r(cWwCcL!=>|{UNsxH7kMyn;ld;%3;3{$)kWBZm*v2GrKOLPyGjYCjFi7w> z2BehnI{Mxe_>kHj2fcN|N<9zlRuq306>bhFFw0e2YIf(WeNFy|raz-&YS%}v0fEw; zUD|;6&>9*UNcbTHx#T@`wjUZaQ)k=xVl0-jJ`3AsDy#B^_f9nyYZNT32PwRd$t)j5 z8IjA%yTOFBRc>q{gp#pC*#yX!v3_Nliv(1k4y={JHI3~D+8|3YC8io!0@CD^RU0+E zv$A-b%6Kl~-^=l>GCEj~;dXP BaD4|StnfnF!meXTD z_)qh8s#dZsJ`@Hi;8Z4{Upi4TnF;oa4D }rdsCeJ=W+JzLaqe?2=t*g7mEJn0%xw4p=B)1C_+9@ z;>jAakE<4>bnN1v 7vvE~)MAsV!CeiTJgzb&HZ#4X$dsi;{yyUr2e7wa>(5EY0W3 zK$L6*&F$6`SUukdJtOT1etE&tuT_r}KfI1iM-eX1*38d?xXE6TSIVN7J}6AN&odS| z=juKmnXnsT%#yY#nuJQ)Zjk(qPxsy^yb`x$lpgCwcanyLfW9B7h8h@neh3~m9DWRo zCsp>KApCT#)Gxv*x;^PrGZL~|GPx=81ftNLmExA)wJFkS5M=2Qrxv;(<@j+WuW~By z#+v+9(Z`$FQP77TABBe(2sQoRH~7NlC{a^~=w@9g7hkPSL}}(8zl76tUf{+0&QM2j z2tS*cmdDV;C}7NdpZXF_UQO&hA-2xD!I7_Tva-B67Fa&-*I)a5IGsyfZN~?1W$Qy0 z9A>S(I@b=&7hOMyiZ`TrQ3~zYp9JgGJqDqKh=BP|m6o-jyuNo8Q}7h5$eaA<{Hs4Q zzdOLW^c;``P;HG|)+~M!V~0b!RQ3WVoNVn^ByuZeH#PHO_x=Kr^CQYV|Lh-alP15q zQqW7BinV5+UpSgcQ&fO!J*@vjL6H=aB&hF55l<>LIZpXfWnp+srtfX+I1k@)%e8{S zHeIg$b%lx@4Go{!_~=@?=U#VUHs(AIo>jYT He4UsjFH_&J_1ACQB0>(4+R8@H zi;%MPw*Aw-PEH)94U6_6p*tOj>koGyFc)5{&yKy+ pe;tTBv<_sDcIz3 zei}FKtY4CkpOeN=s!zGv3Q_krc@*-oNtqECWU D@@Zg!$5%c~@ZHuuUAKe7!AwbjgM+CjM1{ z>{AC0N&IByg8~p+nW{KbktfJA(Fk4u>+H2zqQ13@J!kbvpFk&QG1H__hurS _v05O zRR+hyp)s-;hXH4sqSNF0(t~v0e{G8PK?a~tFHoH~Revc|o8J9??4HSpEuC?MSMCdh zX3un8Hya77ze$G1Tu!a>#-9$C za+o~?U1Ok*>+-~Vh(rwSu9N`>q_M(eVfi6E@?>1oR&BL#c0r`@MmB?OC>-(8NNAYI zx+)tfGRrz2&?0fwD@1OLXc^;x)_CR-)yy*kII*P+xWtuwhqK0)6J=A14b;cV<$Uef z_RPdI_dE!YsX^UPP@=h&h1Khfct^QkKd%osSF(;=C`HvNb=;d(*82~mqn|MdYI2^O zMB$zFZe=*;d(Jnn8kr5Vx+Z}G%x3#URXU}=n1&j5f3W5IhT=Q tb+X3lh3a-cg(F zd&zq`@D#$Otm-Ws$Td{4CUG;pD(${Rj@D9$>_`Y)?hfL`>S#zw`MBCU(XpSQDAue% zVCIxm6E{J}r^{Wii3eQuh+aEFyE+RS+!%5loa`whmudcM#R~4vRnOUOdOseQt1;aw ziUtdvK;|OSyYEIX pI+ zqy!vvhlO4KM80Nd!Db0RO7x;%s<*e5!N<@(5rIq~wgzXYqh9g9p2%Ld3$VR>V1zGd zRf!>|K&g?L(X-Xa|3)Yl-;WU)SM1<2f>YE(lJvS_2)}&;?lsOcBRDJt4N-zfC<8;v zG-I{ElMV$=)o|LfNW+dm#7qkV#Dh^JhA&DV*H^O4q`wbkQfJH)T@d-8H|Gm15-__b z=r%%dG=|6u(pP%%kEvuM(4HbJ1-5yMKDOgw5Y#;Fe*tW{UZ<918+9B6Kn*!0YTh^U zuZaf_l~ !{9?@ -%lW_vczF|=Cl$0`?YO3YXP#ddkMp%X9)%PnX z`jBHr2bMA#sh(nfLBh)SK&T9KrEyHcS4r1AO^MyQ8$F8~RO;LbHYvzPSPrVjNmb?% zWTo==@k7?qK(3HU+spcFcB#@cjTlA}+jq_NHg<}}SiCe$K0H#8Tp@(?=d-5oUmcSm z(8hCaC|9%*;sp=6K+P6q&DI;zM6+j~Y$j!D%Fn{wdU2xWe9#8po21wf%lOp8;rIrf zI4iLfOciSNikBd9@G9)E&6w!O$huPG(J`&EvyIS^|9axKwZQ(Y)kVRSEXmZ~z#NHA zaYX~WSqM(&%WEA(JnPsdI5LiW1Xa;P2!~0Bf~)E&|2KxV 0DU4CpLi+tkH|c%fR3J^d9-CUU0hzJ(bC41FuUF-499BzD3E*3 zCw>XxA9QEx;Xs=o5qecn5j3@Ey~miM#0GN}n5_koWm*=ez!xZkRDwGl#ASj=g~6)9 zAbYjJNw}40Dt#;`i2)Zu3HXl5LNMGracKkwM`Ba)LsA_vMqk}i)I0ootSvYNYD3>^ z>&49CqHd?8*WY5kpx#w2JVPjL4u_;E@H)K0Dcov_YAG@tIkpUis&~{VYXy~}^m+=m z;|d`18$Adte|bZi;m58h`4*gL&7*o`*5!|N{W211xItHD>`GkrRS;!_&)Ck`#1f88 zXD&{W_k_~#fpaCoTf>DVILKh@Eb%o(;zh~QHfZbFzkBr^IWlhh)#P);YzT&qvt;uw z#m)u1ci-0{_%!+KZu55w-_}*QRKqLEB1cCwW&HH8GjY3;k3Td^sgHXmsuFJ_5v5SW zYcKIG5@pk@ch1{rn$; nS9BLGdO zCH-bib|JLmU9WlM;#%nVvqFehrj&N9YfT$!;XYEYtWy!pPCUfmIrLB@urytYGx91# zk=0gxXQ2G)gQmsOLZ#|r$&8-=g6tQLd~`CmMhBhCbaohCTJ;zcu7e7WIt9DmeC8ry zko2q 0Yi?N$_pOQf;wY* zB&7GZHc#v|sbQ)pw|6w!B|$4Yv7QqMU5l~WQzdHMEYYs?C5?8uEar6YVhxrYDI|(> z{H+N!RC6Q~rF^ooFBHTh`>RQYby2~L_2>xxlFn*+)ETcY221hFZ&0>LdfJKhiK$&! zKQxrKw>K{z(-Yi7G)<8W2D#k0<%awOP>jeU3mlE$-cx}k;r-!-Lb3xs)05@@eP~$= znmmVB(PERiu|et#t-7PbAB?z&*p;R#W3|?|_^Ot;4PNIlRJ (7Aj{S0QW)99 z%6^h7Uduxsa5|)t#J?fpdO-OoG1pzVhFTE$lsbO%Erj=yAEnZ0IwX=6MbC%#LvG9a zw!3#IONjf#AWq>r#GTB+@lW~Ia>vKVlzRMLov|KIo);H6oSLNc5q~!kxA79|yMs4L zslwfHH6YVz2iMFFq$n)cr&uC3VZ(9Q>dt)MJcgGyS6EH2rcmFie2aTP-_Euw^zm~k zyvq9&nHz}vvL!?1DsK9ltylE?$Q0QmCu|Qinu*GjG#04khaE#MhHzEJQDBMD_3%|Y z4<=hQsb9Q>F2WtSolzS(eZCV<1JX1GQ(#6dC^hEFxmD17_> L?$-z$kGW& zkXx@Y`u2Nnb0;nGdQ58C$Ys?X;CXE z `3UIf6SLU=7x%Hq6u%d zJ6Df!;Wyfc!ttbdiY;uX)j1=2woX$u-6^#x-#untww`w1I3(K)vw>u?>NT5c_-;w$ zXs4#kwH9{fRcG??TD2smSdkC{OQf4c&f1V&+EIG2b#hNa@lj0ifWng{n*Brky|W}* zw1&eTy3pp j_Un5 92)nPlq`M0;xfP4*z8w#j{ zT1^4%S`aK>l_!`LXsZLE{SE@m7NrK}n?TwCZ!L%l5UT@m0pYcv7l2Cr|I~z`@P5~P zR|oO|1RFr2z|%SqES+2<$P2h>hLu1KAZkFN@qgODkYvBxEH;3Ae>+CF0m&W^2H@H7 zw_!OT)(nD0F#j72DvX$kCtH-}_h38#rWROr>n0H8?=JL#^I8za?|ygy(boUd1u6oJ zrT0%CFIzwX0CO9xQ5fw5I`E_gMD)9*0W3)XNDB~b|KCRcZX0$p1i)$=$O@qA_&Yju zz^d(UO9x=52{zb^b`T%H+4;ZC|H)#w1LO&icK!a}zcG>n+ua~ufWG^G>;IF(pZYjG ze{T!}u;>PL0F=G|BLe=vB53LXJq0kJFqZ+RYvG(F+;^X2xJ2e*?Inyim{$20RhK zG6r&h4+YZ4K$PfRFLoZ`)0YXy0eEE+62RgmOdEgDY$q>4I5|J*qkyp`SjU``oLEqX zaZoufpo2uh1^v1Ndcp&+a*@C;jcG*-4M!qrW`&UhkzkcItD?bELiM;vCP{&MWs-l+ zE+G{XTEIFF=Ju*kn4txXRY+2>|0hrh;8mPqg_5e0+*1M7&ah^GMj>lAL;D-Dh5)0q zs8EY#fttIJyv72$0{&h1_ut|BU!(&^kt8_4P>>}U>JmtDga#3)j->{w19ZBm{Y<90 zo*jC!f2HW4IJNF|vkr>z(+>6&$pN?Ju_%` VS#o zCYmG)SLFYq`(WG^x&s!RKse(NCUhu mRSNd?$IWR31rdpj8y+1a>47m1L6zE!s)_jLHvJ=u; zCxB`}7IT4&o2*nN%(e5ZCt7ZX-L<`&le4yo4u`viZrdy*oT{y)*3|s&pp#f9U#x3m zkwj*>+~G5!_M* n&Y`kQR0~CeIoMQKJXa>$Kn>?W1n3d;a3%+YV46{QXCG=y)bT z8@d1jYBWjz8pq$vBcmne>A!#f)(6yHi_~Heh`}KHqYCDH3^FA^3xkXigGTUgC=pEj z>lkEz#4ik}W0LXxfAP0slKl}sA3%sj#tB$Ik`Vysm}HDV;O~!r^tFKnQ^_B_WMYx2 z17X-?zx5&yuwj$^BisJ17vKv48R>6KDi{eyiOLJD#U^t?g2w`I2*~K*-2h$!GB${} zbT6qLe;?KshPt^x$b^#*>SQw!k#V43y3jx}%28qrSmJG+@5`?s4*r$tA9J6eypJ)v z-Rwd0wmIVRU5Z81R*tvjj#dmnR=cRaR2eIykFd&@W&~8_aW(ZVDz)Y|8uB3#RP{^c zqdxNd+DdrAfN$~N^kszA`=!)ZxE?TxWn#tx9}#*@UO@jYj1)q$e+z?*i0lvSf$;ZA z2XdUqB%p>wWHS1I*e^0z0$&AuT0n(}3>*5!iOek@xMU{(BWo>KlKVdhWWj%YUxNQ) zo&^8qzJLjy@$s+Vg@F7=vi~#h?_i&RGz2hTo)sADztdhV? %>XuV~S)|JYYHFXUt@to(D*d{bL6?o_KH zz%7HDjIT8!jcW-h%&G8Gty$9{3(xzIkV@8BKa8hu&ZeSu4o6eH6Fmm+zOLbgs<+7M z+kJC~vx6A;qxRs+1hN%Z;VyL+dl|V0Bvm3wu1|WC?ZTpqsjuaI z5=h>?RITI6lh59>`8Ft4s!kB~MZ|+N{xhdE^>iUM`JXjP<6eT&UW-SR?CXyd $py 1uTwJkAgFyUYs0S zFHS*3k{?5X1y~MP&_Pf2C}2CV-R)Q=hyV}&pO}&Vz(s g5_+X5w&NyqSmABz*^8P!-b+$D3FLpSV9ijtu27_RW5M}xnJFPm zRT@KbHSuH0`FVY*v~*C1N$R9i&i?8C=z`zPhnT9(^@E-5 AODL<}#2$gU7 zIWP?M`C?Ugld2#+PhQIo(JX09<~KH$_`xNl`e^JG5n)KlpmOCqV4}gjwEV+I%<{S> z{kRq<3dc C#nt$@gMuBoe#?y6kSx@8~J!2&vcJc!a zGv(z~aM^skYs7}(9hF_^Jfm^KZ32{xY7_ny`e7JEgtGcQLW 3rTA2sV%TlR{l6!xg fm`-~N*sp9HEKwYK8G2<*L@6p&5#!9 zg1ZFc>dI7bh}~7PPyf(Z4&B#x3}4rVfxHTAySG0}wBAk|?m{SJQ;7YWj|YR$A <_ggA@*vNaIje}1I7s21|r#|}ehSj3voCZY?zbm`!FW7q;;H80! z!hnITl4+~4)%B(PS9TPq`e^I32&*+w*CyL`O8r*h&mSTn@ZzC)@NJk;!1(fW7Nw_M zh-;R$=)D|M@(?RwI5EXuL59=K94rxYv|>hj6=t|Y)kC!ky@gcu@&U@bjq2x9BUf=d zS?#(*!V7Y&2Gx8U42@k2#+`4OMY)DC`&V4bo?;qEsxk%8h7Z_efwJWMd5J2YIM>z5 zSGaze@WDBSa4~2x8?+RhYK~Z<<$4 fn4XzF<$mNtx66?aCPd?0#Y-iji+#)mPTpi@`s?sZdVF^>C+ Wf|FqBhjLI}?^ zy0NL61q-d|@o=y@I*Q_ImAdEqPj8O8C_42zWm)Is2u$;>YwTn6s?!+qBkZYUr(a8g zmWn??Dszi vb6*3 z^798FkLvyG9d%Zl!dE;zd-39Gd_kd~w57)Dl4mU^zkphswV|rtZo`A0D&PET4N^AK zm4Le-v8i&E%UdR}C(s*O`gcJsIU(!(DbgzFHu6jqGI~egLEm%YH^iW*QjYqzN!%a!7%z{qH9_DK} zkMPCz#*8fNnVWcZ=jPr}vqjPdel{MpN;E))Do%QQ#^J& z^!;u-Ew0_{#=6yB{!I#z%A5(Z*J-^#9^`OE{4T6VBCGky;;RE&F{0jxCNXLu_7*WW zxaE(Svnu}l7OmwJK7ke0er4J*->T6bpj#c|>GKC-)~d%^=qCL&^?`n!tMDlo^>w3W zIj=*M6P!wlVx4R6le){Smc wXNKIg6e9Dob{D^L%UWES0w2#~X4N-hivH-mjATg7*(h!(}b6}66 zIvt#uX4Kc1mRg6C52vXxW4uXpf!3DzE+ 7(wf9NTfAVAL(-(sRvH1-m5jfCz`p$V koHu=$vxXioWVOHFP9)4LW-1DLpFXo zmR3vEojgUn-nybQs6@5!4sQjE78OWq*zC*acHPcy l06D}&PYLhU^ zpbnH;72o{P9p10&!(|Mf>u@pFuocHiDxonGqUtl@!D&(GKxz7goYMO1W=Qnu6dVUh zm|caYJ^bO`bIbm t5afcAJ=;;?C!PWmDP32eC? O}aWr)idVMLoLm;% KzMI;!m0(i*okUPSzu6n-=+ z75MNgZy*6+PM)|7iVI48P !s?yNEHq!{r2v=>=$$4_4qy5}7Mh`Dv zch317FZ%+~VDkqWF9h2I4M~oY>FS4vCF+T6xq`4+7g?&E#y7=uwTZBt{GdEd>@K&j zLgz%>%{Ud-3dvbG4|`G%^zJkoI#?7*3ySaF$q(*HS6Z&FiKsg*(I IZko_73xJCDgrlgmOnx3fET$-7=6m;Fs1iCy}48!<1Usl=_S1-8{4)c)lj;Q)p9ywm2b6?IuVx zt#=GZ0aZbWqbYGWQG~b58(Ml#{q`68@`^@~yS$|+war>22Ymvwo2$fy_;|7ytmhr^ z#HVH#k}%0c hnh7NsK)U-S>4P zbN&=Nz}xQtiJTwrHkFO?)xR}=Tpr@Bjlg~XBwdTy= @u(CsL_u0cJ~$13)p_3kHsw!4GsF_(6WTsG@z(^ z1g~J;$R|bPyG|<7)nhUBW?ex+#qJ_o=^}=hT}1B-7o;PsVUUK&{q>!%cN3ojI~zum zs=zziy1vg$oRVWR-BFpH3@U) +b6Q(GYOXg)rao4{zZ_{T$fc}2dCiTsOV z&6l4x>W1H!sc&;hf5Kn#8s*z_lHh(@itcLlcEE=?+Q+$T?c>$NcGqNY@|)LNZi=aE z1NS9GH@A>GQ52^qTmElB#VeogGEVwK6MBzm40AZl&?y`2vR*Ff4UWRuTpd6AnpcxF zJ|V%!jjxv!rtbJdK $EZkgo$`dRP;yoXr}Q4FdUxii)HmyM4yrYigckdWax>HhEK3%)9oC zHR2h;Qc?G{v!@S(6;xuU`1k~i-=V@IVOm|UExTUn9Y0@eVT>?E{FY;0lD$~&nYY}j z`g$6Fh=NBwzt-@KLmk1?EQ>jv!T70rayI(mFXW=Ji4>aXkgs`|K6z*pecGIF?ce97 z6^6`eLkyM*x -?%X|F!67Yp+i;(Jvl)r)H?kdb)R?gmsaw+K2S`otR;Bh7}sF8)X# z-l!&;V8Mt-E`Y?4wcz_h;j{S?ACbo>G6uzkFa&v{@|A=68KKzN%r|}{`NS_=W&0;# zO9XVws;@l7TuYBXqNwS6!>{4H= 6&Jq%34kCp>SKTT8@WnX-?7e z1P78g#evCXgn>1CYC_{?SSk;0Ud9_}Ss+r0J+kaB>3-wHzIsj_Z@uD(Bleyv<{P{t zdft%_e$k?>kjqJy{}l41dtBV}pn+IT7p~1p3_)IT9ZB6WCjL72B%PpI!(`7*v^9IJ zJWhCe>Ub4+E%#54h-d^)KK?m4{{6}iG_p`*13nk;{zN?a09ow!>3~r_1&q=xk3z7F zj`cs}41fUuJ5YF^PXTiT{LcLrkx#+-@4TTepMvCnDJEh3tT2j6YT#!+g&^!C#3v}0 z7GU9{#s>&)ow=Yn00m_U(8odzJ4>XZr%l)vpoDG bHV42OcDgYUVqFus(x2q7}&Mq zdh@oqq-ouK<%#(7#h2>XrZM2fY}cCTc({(sNOQIa`$>~dQspLyl!}v~ITw)xL9Sv? z3?Vevbd31pVNb}dt8tPGoh_RqOAbpduNyCN;z+&T_oPlky$DNl^!~6yl1_f^zT?^C z)>DoPh@Ij0`M}$_`0SHhMPmc%rD!*22eGo0*5=0J`kmH+D;s4?)a2U!s(}~wgWI<# z5*Cwi=;Mpv1u{a7n~WBQhI%~ZB|TTr7q1;sf043WtgdN3LTl#&4uaYIDz3-?u){Vu z`&DBSfgyREhlGAdQkU_d<9&Hv6^bJ_p-8AM#D@Z#QaMz00M67!%Tt+JZ0ieFwLHWu zltOu-Ed86xcg5)@Y6C7T0xDzGPQy4g1s$?uvi97>#@gH
5Cs`50IGTW!o*|mvz>-XeV8uu8VpNGcbp1NE} zJl`YE2Z%N0zsum|N1KMC?`g_g2iuEeL-d(9Uj|1%<7>k$7EjsfBeHx^YWgwjGQ mFPKB%9NBMF;Y #d3y?p&U`vk5L# zs71>*ToJo?PuH0Ys nK9c-Vc2Uz$TfxILBch`$mv@z&9Z-L2`*k3ZD+8 zMA#$UB2@1~Cq;1Xs%oF-uzTM2W_Benx(#c-^^N@c&0tUjGbiC164$38E2x0?>w%hc zatTp)UFxHiw728CHCGYFBZ#q(W9Hn &wC?v^ne-S;;op zP4KIRucI;vD08KKsBowct%GCk^&&7+K^6dyJo-TUsQd#3#d@0bRU+5C{;1oMWq;ae z3`3J?kb>N`osP9%#Z261hnQnr=VUha>np)T-t}Z~sxHPiT~fXQN7#`JCkN7Zal$PN zOJ@-ae~ZGQ3APMEg5=&e!6HRX@EQ?qca1~)dOMWi!SOv8-w+zN?n29E?zl20Wv)eI zzQTEuTU-wYd06j6hIF)2BdPO #H#{MvC|25$3oKxm_doF z6&ED|?5Jay$IWG?iAfM34Exw2q*n5G!mZo3V*)`A+_t9PlRmA|?i!;Pgc@|KWLocd z8B8UO-6nbm_Nho%qx~D`89W<%((dqen(1os!L>Y!)V *-`(G*O0SuP6sV0CG{H0AOrwh= z(?-3q2@4ic(B;gtSs&SblKajH9aVcOHznK6sb99Xpz%Xz) 4Qx;23d)UUrG$6X(+@0UYjS82w_)MlD7AulZNR#m`Xq~2ONaY2wXL(ALTgUD z8UMkZ&KjnEw>Cb1NGcpJI03V_sxu_c#P?gs6e)Y7;fo&!;s=*_fw;g^`|S@iV+pyd zLMFK4LrknwzP!Y@$!y!z7sGYdlrd$M7^uL=v~hbq&C2fTX1&lywe3gssJXlmA`RWz z4=@s`+^33O(PXC|>eq*BMyO(*?%BkTge??}L=+(ur6eJVK#KHwdoBA_R3a6L)0ldg zRP>K%r2x_@NTJP;x5cuqd@$ jZ7R5EBuQWc=a+S>!o9r5m97<_6 zau~Z;k3{kILePyun&Rh)FIl!~*EV*S`lBfsCC}M^u~YxZ@b3&LMR=CtojV!c-r^6y z3OMT3x+Z;RX}gD7TPi(jXTb~oXtHG5o0~lrVdd^BmO>+P8=Q~hG;}?YZvT&}vkY!y z+qSitnHeIPnVFe6W@d~T 8zEkv^x@=-7DB4&U_D@P9j^Oii=2 zN|Zp-u-fhEkhM|>w^nihF>IFN%i!~71~gQdT6tJEwiC4Hzt9eEO+_xUG#c46)q44A zUBh#tB$W1tReQ9 Io1rFAk$lLpO8<2dx{|6A`Jhgn zJJ`koUGcEZQ&%q3x&-Yjf6}a9oLh!KMjKj |i+ZRX>o!~h3|!QqlZ0%TYr&^mrDRvrko4-$;d3SmPE2(Utelpz2qIN}0oNOAh# z5P^1b02ah{lq`+S5^2Lp2|1`B2X&hb=ZEPHFe(`UQfdy0lfXgpO8LRY7yxpZZ}#BN z7yxRJp{n#`dQEY|H1_b*v@1UsnWB)WN!kP7qW*Y7!pNw#K;9O9!P=*T^QT|e2j_LO z!;kL%0e`t!t|5bI)hlW=DPNe&3u1?@22^KM*T93Jakh^I532QXS(~mjSt}vODJ(IA zp?^P5=3`*0)?#9g5M~@*Jpa6b3b29Dk%U}8=pKF}@zyJebH|ZPqb{aqdfrMbl!jtt z6tBEygF9<~#4s>t%$rRyFk64V( Xt vm% P5c?Z z|3xKzN~v+~bPg(`QsD|hg;4|{2E3q#Y?%`MISCCN-$Ik&)$2pispnMglDI A(n!Cd>xWfj%JcMaEoEvXdls*McQT1rQ-KE8>Ez94Xa@$` zno`Mnhi;{9R)urqp?4}QK9GGrUfZ@Fr#UJP(Doh7u&_n znQ!jJzAmDHBnevdqg&}{9Fzr9lxm$Fj1yJG1+TUNf>KBOX!DYw0UEW4=+aYLy}L>M zn5H<;kI b7T=@Gh;zX{E6#ZZfrLfGj=kt z+)ZEyfeUJNz+tScuZ!(r`aT%O7=oIDi^7lGI>kz7;q1ljpN(qmUkW7^W@Tu$Fe- z@R668@Z8-?UzOf3+R Fm9(TU$*1HJ#U5zh<(c z4i3)U=3ApzxHTYUqPLMuPAlsehTk=H5JZ~cn%J;nAyFJE9SF}I7RGa|5)eZ7o3!pm z0=wOAcwHB6qJP*{p}YCZ#yxdo9XoJNQ)|wE@AC_2wS%{0A&Lk@rp8+7 |@_s(F`&TUM| z{jrb33`Abf+Dq&MQFZNEzQwiGcP3^uPGlv5EfsH)Ipo#7FkeG@n!OlmLaNp04bCu0 z)k&}wh3S|4HZ?S+)CeeLtX! z${eG^mjS@m78VH?!{HGH#GhZHN6K^Jl0Fw3(Ka9&@uYU2*^%e_YshgmJRUVjy$Yc} z>~#=rxd{?05Q$G@z_KmrE>np=mSP})oZ-EebZ-b{cLD6kdNs?9iS0X9ECY5|nh2I` zGwzuN#40ehB#AsF@VVL%(oJd+Zo#RE;G%Q*
(7?Rvae20y@-uWN z%dSq7c{XnSYD1FC2~F%|8PDJ3a)ZfIhAWpFCb u}wZ%Th}olcysY=**1pGmN#cO{^VeeT&AHFYv6u@e)Ht`F?mC#>P3H< z^97-9!}sbA+6RtJ8Vx>FA6cM?*k~_M>`PxszW+ez5>(tDCUGnyXes{Fr%;UN-Y4Q` zEnuJ3p6SkKq7N`+Y-E@{o6`*>px6K*#f+OD9ln{E2U=P?Ez=UFr^zF>Nr4U&1}Y`T zo3eWc5l=gjEs0jN*ox_YgmuyLZ#QLDyl^C|FexA(Rb4#?Wud>k5dAcMsb{}dh#7Qf zBx<|Te#)&)C|btJ*~Q}Ef3ep6UGjUQs14otB;#OAceIj)cHl>`S2`gXNH-b^8q2(L zb*2Q*4bIRF1xi 2C3V)^MY@1jor!^BrjOOI!2Z&U?LpZ?oObY z<)QR75 C_o1r49pv#3 zbyn1Bv7w5ZILSH}_qF>F^b^WG-pqX9kVN9(haAjAInz}GbbFF6$d2EP>P8f~(?`5M z#gP=D7=!;yr#-VAZE%^!rlfpyl%!+p02va`*M%@eE+$EBBP!`UoL`SQuG1N3wPqtf zH7D9Gy9Pt6`KL{zP Gw>>mHrG{e%ygGNGJmo801akKA0!yNA;w2y|F1JRPL&NUNNE!o-uPqUg7e1t z<$jMx@qil6C|LA{AQ+p7TU1{bWRio_k0^YPv_8K2)i;73AiLm~m81woU2KYMB&_z* zO6)i+ybrpU&*YCk<7+c@ PAo553;a_BsXON@gtO3tQB=ZB`5G<^fmB%A95>cLt ztX2*qhBM!fa!^I;3G}CfrX{Vy7t9J?9qDyq(cKX~ 6$^HsqML@|=S%#*Eo>?V~oz4J(Bs?ylM3(V^ZZW@2_p9R@B)*KgQ!@=n;r7qDZN!*y`h$`xRV#Na*o*YsO p%^>sV6#~Aj+yKLHR zI__DnGPd8&nKN9HvSH+g6$zrCVc100ZI`Uk te65dFalNlicCvL+}PoYR07--_qXg z9&k_SU<7v97tYrW`)us?^KGC=*2Mm?JEvyL!6;W^i>qBM3r4Fk=btsVJ9qz7kGfRE zoxg~=Y1|3_SQrVxIb?u;{h_X4Msffo+ajIJ6+HIOnIbvh6DH^XqBKL;+xaR~;1hB{ zHY|jT3*OKK2(|T50O+{Exq*;|4&r2_25+QKqqb3M0RkDpm64E(ms??^u-yM3kaeeU z!Mj)ph@i35Rot5P2Wtl;y535ad4jJ8A297H@xmL!arI-Qh5mdO<7xuRWN9;OSYW08 zaBqK^zStb^-_YUBNuVPZ5+LrLZoECDeH#!(uO*oLj;M<{>3Q?zvq%@YZPW1O?%>uj zTI3hiQPYJb*D=-E+10j#lFZS^*#J7dDP@cHlqry7KkoR))7$w`%GJx;`O~G_c{8Bi zKyCS`oIEjCztw&_&lC*@Uxx8?@Xrd&1mik$18 ?R!`SkQzc3*IYv^Fb320yj~HEfa6PVsS;^^1^YD0#7fvDKPIuc2Vc@P~k2Pw6Bn z9myF`aai2GtYZomRV(uDN0P*bmV}yG(nvN_V3RmgX#|6W-li`<@~Gu#*v|o%SRb~| zzH( u&*^)=N zIVtU@CWW%1^T+P*p|Kru0ShtTCWbT2h}a3>T_!!$3VS3>_!15cspdK7>`E0ZwygLA z<}dFtWdmIL{Vk)HV?%IHPT-!EmJ!F+k-T}Hexw$c%d;7;11sg?mG~}^YQ|*r)B`j@ zIP=UYAFF~Cc?%osxpo<_btp8m+v-IP9NH@FAGV{i4-esx?>nMMg!?9UgY4G{`<@a^ z?g9=6;1Sz|jNx|}J=uD~Nl{%p9vBcYh4lL_JLLkgznIfJ+?(yc0(1?@9j~BqOA&V4 z)8GqOEb}v~RL)lm4LuY>uyLcI67~~8obe)+Fh0Av@I)uxRCp;$a+^oD6v~d_ZpK74 zt3HQJ$wNdGa1j^h5&cG42anz5QvnB#DZL0{*KIfb{1sDx`447aF)lRs2t!=SHVyEH zQnk$j&G;2v>+&&=F_^8h{uW(+qj!sbF0cRgyU!O_8LJ@i;eO5)En?nwaLt_$l(fF| zHXXZ5T!sSDa(Mky8&fJTyt*q=PWC;oN67Yecjfky2X<%m?=LCO_JuyXpURq2p5ZP} z2v(B4nGy+10c$F7y?*H-d>F8YUAD>BfimzVQth|ITGs7p3ZLQtA2y|lO-p2FBoUn5 z-E(0;64S8u%K(uY1xZgJGP0@`=&P*#P0EoeAyHv=CQ+TC>twAf>0q8?pGsCvN(N^e z-#7StL8$KXQX@%LcnxdVI(AW8?bA~}02uyeRbOok+(dBL$PK^RsJ^~eHG#9R~C RS!vyQeR`E) zFRnvgiI`f+GIb0g!s$wNkS+srh_@z5A+^qZk3w>IM3)tvt}`0h2OHj{2Ts*?JRyGm zhLZVHbv@w%^q0G#;fCQR@;pWorPhdD12h(l@uL3J;O|68f7Fq3t?=k)ht!Weavh0O zgQkvv6qJJjQbn#Pazxx)#pa#O%@K^t?1Q}%46@$zR_|s|(UrSuAaoIo7bvXjguAB` z+W2g;pc)QZcvm>rKs{}^cOz&bBp@|_nqSfum18Yle1N$mEbN%^gJ8f9ny-$1)C(yi z{{4>m!W;FSiUMeO!6RJN C%okspu50QDH|1yD 4AubadeCsw{-TE>|&G}?vd8O5sDy~ieh@D zg9rJUWgjFf&HKy~1wrL&tSwr3k@`CydOauPH0#w{xg@{mSz39{QKI0@wcHN*N_Gi- zKr@1fTU4&&%J$x5==1h8wh(kgXB)h+ZdMxj$JtJBy^dWT$eIVm)xNwR!&qe0G2AN( z&1TfZB1b-pPAY}`9 2i3Upt=^#-zOggzq9uhSfjIeP8%3M5xnWgM zrg-TMZG-dFvH5`GDNAPi1jWQQ9^HcbQK$Y>u6_DUGJOf9#JEz^UrIFV%Gc&GoN_&u z-8RfTn~-0+Ak0J^{$1zy7^G7{;}(Uk>LI1k7`k!R=pEcxJ-Vb{xtdFTtk}O_lHv{w zCz5=NN(^BFfCa_B=X&guf_5IooEE@_J}NCrsK1PP1l5=JGf{Ocg}bRMM+kAmqr^); zG>@N>NaIS5(5feo%{82F<{aF3M*RN8=lsn(Jx@N%3`F<^v8zU?aPlDm!-hdjU!Aod z9JiMPuTE{)n^CDYZ_Zdm^@r1|*3R-OhA2j;f26WVpR~ %n3Y*`(b$&GQuy;F-VCAb-e rHArq?}!gaJjYjbEFic%(V*hWsDy`%7-NMf&@;=U8>K>6q@Ivm$+B zb-r*cTAknG*<~`p5_`VY+&OXfAzfn{K2a%&iJ)W__9#W7LfQRJPyO^MRlGlw{z7FX z?bxo5-R`BL+q}=+zNINwj*9_#uGJ_3!>-v%yPetUEly6l3NXB=DaJV)RW5lg>`=+_ zzFV<>^*?Ub4A-AAzPQFXcA@T8C)Q71i(7vAi+TTr%@jU8)$fJ87UlJTzI3gKG8k{M zOBhs?TbOXFIch=(7w+=&6YL@FX+~|;!U6$fe0FQi^5YL8uC;|B_pK40r4h#Dt0l5& zMnE@iezC-x7O$8Iv_fU3%OnBRooyAZ9SSO5t3?QnR1TQ%MsF9s!ewh+%F3||hFn{& zmSHY0yw9_UUGH#D8WaAHHn|KD{~r}cBPI|mP6WlplEwA?z}!@)6Cok0dLd44ZV!^< zkM$NAPdqHO*bz3_jybj&+h4 S~)NZ)MffQ`y;o2UJYT6f!rs)Qj zEQ{>|muLHY;`OOzBE6XNGj5idK6>z<*bfKWo!VRcEJ94fzvm>@X;qU6nbwaCr__iJ z*S|m*%pUBa!9xk6aaFal2SZlvZGPpQxjQYn32hm;%X=%;{48I1J|3V)x;4Bm|BODf zQ1EK_3rjz+r2|fm1Q3D+q9AqSze2%C6aWIqxpDb-HVp=nX2yYP%F^~H3h)&H?AHun zYnx64d;@~FenN^tk!k|!w(@2GByJb&0)YN6tQ5q-$^CDc`9ItxdRrdrvREM7h`)Oj zWy%6qFRC?ishNq~c~&FQr@#BBLqp(imC>a$4(`8SU*+MTVvP{&N(eT$1-xu5ec5}@ zDelg)UQEf&`?Hf~&HI*Znp*vC)$zPp@Y*) fi!!T#SCwXxw9 zY0Q5hjI1$%fS<=s27`Y4w1a+r*3X#S*xDv$16vzj-`HG3ok%lWlYbft?nUY*Av60L z;ep?lhFeR|cTTY}su`RS7TKmN<-(6Ii9P)l8{eHV4*nBUxQ`=_=2T8)!CWgBZKg8c zbN~g#BGjlm1og&`UMmU}TQ)@&baeFvf6@-$1DnMX7vD`y#yVHJ&KA@VL5F+frWUsG z;U`IE&|ZKOY_w`H?2${N9gYvO&a2(k7C3~hO4Te~g-iuaV@8w48}4~gxZe}WQ#H#0 z#d8#nmN*;Z0p?q(5t9PN+=(>Mj(eNmX1_aFFI>cOu)H1wF-qY%rgVCFidP_{)7}gS zrwHyv+kHasSHE1QRtFucfPHN
n!o7Q3~9i zIFjA7)VC>4_AB+$if5V;L-U{WwQkltk;|$Z?wUt_0 f9Znvu(BW=XsWJ?zu-@luFBOShxj92IjFAVBr)!I6+w^GLlXYZ>@sqMI$`t zPVN+yID$nVLqtPukw?F_hLLu1IEh4FBJ1IdaHF>u7Bxq;A=-IkuKszAmmHh6m??(g z)Rwe4d4u*Nf}q@-6Tfsli&DnhNdka8 CRcM&!^Pe{iI|IZS>nRoP z$YWQSa_!Zg!O_!1@5(ofpQil&+GVC$qee3DIL6`3^h2O~f5P&W7zt9gWXQw_zUnwZ zpI7|EAeY7D96OsIVrJm_%RQQ ^r_W89?5*XWMnLv Y5~V(C zCm$wFzuU;sjb6yL0on^eGi7~nT-y+ZcCoL=%5VAdvtNJt*35kU25~OTFDKtM&?Q!d zSzoDI2M_a~5Yowrwy|F;$7w1*`I&RVnA+N(t2dt3EywwIU%NK^VoL(gyj%0%MlFN^ z_W3`EYqLfa@NtFX iY!b$4UUs&nM#gN$#0GZGt)H$&!J#$i&BNH7q z_7o_X%HUAa?e3?x(Rf`lWJ8ZmU!|mjuZexdb)ZwitZk+1!tl=i6s4DPgTQxY1`c=o zm$13J39ky(yE v0YjNT^5l w zTi;KdPDYuyQ^3vvdSuU5B^nud7b{2|Y(bE1`tgWUj0tcOH))i9ps*#18*g9r<(8po zK#TU&4AaYN+DAbqZpbeg&ZB nNufd>D~& zn6WxsM58@ELqavaoB>lWW=WFMLazSx9!=V^k-I$X#5ltil$m9^pD3~)Ou$DpflnbT zHm n4g36TK@r}XZ}x81EoEni9Z?rB z^IIx^F9w6LLFOdd*3!o%0{Ah_yE|VoXFUv7M`;V~mBfS3MjXDSeT=&)G8XJ|={sH@ zhy-3#Ii#(X^6Zc>ew%d!>y_wIqR)BZ=W&<8&lAYT)7ZXEFggxQymQ#WAUQ*Gj~P@C zRSHdYpq1<~lEKK#A?F 6ur9qz8N-%gdAkxwl76qF0qSg}GsxP?AO9af# z5!^MQUW$rw!>YLATLj|G2wJGF(uP^o_6b+)h!MG2d=fm)5?&01UbRc35sQ_(2HhH2 ztu@(mN-jmJS$}KKa&~#O(b=}*Dt|5A4=?;Ns*9?Sxc05m*_ _EcuxD-`Hzz}MM#n2v#zTnVyUR-R Nn+s|hY{#~bL!gf$5l+>CX)|tUMLZ-9M$N6ya;Nyt zhnFbTH5pFxPNAB=M^4x34KBu^gmq`-etgsfN=up>`SKRGHsbh3vMkqDZj#8aIw4;Z z@hsCW0IZzU^Ud^<0A@63{BT%V%d-imp`j0LB?>kYjj6=dxyzrFm28elDgp)9_M>ZP zwLlgk`eGpuX6(GoX>pcL4sSLxNSm6DPKz!Xn4xJO;(huUpgM7bGrTWb5c3VnyMGEQ z1DG!-7(X%W%ySRSgOMhnBe`*sbf_g3nQ(zgA9>s}>wA>p&O4xhW(z*SLFzrD62WH* zK%*MbZu)ANj5;$Vbq!C+4;&k1%;>b?_8{WrYli`|=G$r-35`s0iTNBhz^O{ApF<6) z$Fj_$Gs5%q3i`T-f|^i%)k4m~LHT8W=VLD&y``OL7lQU9fdvVp3HvP|n!|c|q-UzL z@;jYgGZE8y-xuVqO?$0|nls72UsloN8Cx9dbr{h8zGLz%f))SAIt_jWLe@mhlgs~h zJ)c>CkgNq&X##Lxn4u#KFC>;$o{$!flM@mrTFC+gf~+T9n!219hAwAR%Q0h=1@dV# zm?p=6?mUnsHPWDRJ4LU49sPie1=srvo1ZTwbl$>`Cr254abm}Az)H86xC9>{#$T}W zD$4)YTMK<#nYFH#ZnFC6&+gV%B#q9So(gN#u EAZ$PUo8NU1vW? G#|M>JJP=3*oQ zAC{90|8Y148Lm-598Ok-j_ZPkjl C>4+*jN^~-B=81pBJ4S=G}^62?crQdy<;R