From 4cad6b449e1dc89ff492752b62f4016b7261869e Mon Sep 17 00:00:00 2001 From: Evan Prothro Date: Fri, 10 Nov 2017 09:53:03 -0600 Subject: [PATCH] architecture documentation --- docs/architecture.md | 36 ++++++++++++++++++ .../puma-connection-flow-no-reactor.png | Bin 0 -> 16029 bytes docs/images/puma-connection-flow.png | Bin 0 -> 16165 bytes docs/images/puma-general-arch.png | Bin 0 -> 13088 bytes 4 files changed, 36 insertions(+) create mode 100644 docs/architecture.md create mode 100644 docs/images/puma-connection-flow-no-reactor.png create mode 100644 docs/images/puma-connection-flow.png create mode 100644 docs/images/puma-general-arch.png diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000000..c1050f1042 --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,36 @@ +# Architecture + +## Overview + +![http://bit.ly/2iJuFky](images/puma-general-arch.png) + +Puma is a threaded web server, processing requests across a TCP or UNIX socket. + +Workers accept connections from the socket and a thread in the worker pool processes the client's request. + +Clustered mode is shown/discussed here. Single mode is analogous to having a single worker process. + +## Connection pipeline + +![http://bit.ly/2zwzhEK](images/puma-connection-flow.png) + +* Upon startup, Puma listens on a TCP or UNIX socket. + * The backlog of this socket is configured (with a default of 1024), determining how many established but unaccepted connections can exist concurrently. + * This socket backlog is distinct from the "backlog" of work as reported by the control server stats. The latter is the number of connections in that worker's "todo" set waiting for a worker thread. +* By default, a single, separate thread is used to receive HTTP requests across the socket. + * When at least one worker thread is available for work, a connection is accepted and placed in this request buffer + * This thread waits for entire HTTP requests to be received over the connection + * Once received, the connection is pushed into the "todo" set +* Worker threads pop work off the "todo" set for processing + * The thread processes the request via the rack application (which generates the HTTP response) + * The thread writes the response to the connection + * Finally, the thread become available to process another connection in the "todo" set + +### Disabling `queue_requests` + +![http://bit.ly/2zxCJ1Z](images/puma-connection-flow-no-reactor.png) + +The `queue_requests` option is `true` by default, enabling the separate thread used to buffer requests as described above. + +If set to `false`, this buffer will not be used for connections while waiting for the request to arrive. +In this mode, when a connection is accepted, it is added to the "todo" queue immediately, and a worker will syncronously do any waiting necessarry to read the HTTP request from the socket. \ No newline at end of file diff --git a/docs/images/puma-connection-flow-no-reactor.png b/docs/images/puma-connection-flow-no-reactor.png new file mode 100644 index 0000000000000000000000000000000000000000..05ef8d01fef4050f14713f4276441b285191300d GIT binary patch literal 16029 zcmZX5bzD?i*sg%2(kLlNhm@i;j5G)`q;w;pG>YUPozh(+ASDPWEeJ?RcXx*f!jLmC zz+G_8`R;dr_n(0sv)5j0z41KH`%ajessbSa4Z)2YHwcv!Wi@Wxz|^{N1LH9sCOGqQ zU9|4T4M|HSSt%`djO|QZC#|W(;Q9>mm0k+o@hKHID@xiG#@gO*G`*(Wz2C_3lnqld zO>eJYK8O`x&3N7~VlCS*!i>SBxXKaJxed$Hob?=w^9=lybXs&-R#-Z75;WdhUvMe8 zk>%yEco|3{9m>Hx+zy?sf5*qn%q$^s-ktcMfoBDeF|ZBVn<*x=nC-IGJyYYzcQ|L& zpMg5x^@RusR4gWodn5N+f^HGhi+?nd4J3K@cNT?+_Kl>rvbL`8kGdyjKBt__`&NRJ zlk*ULROah5Ef&oH$*SI~L58(QP+Htr>rSK;{%RMRHy(WCx%K!VTcyX?l_x%xk2#U0OS z9^3G{tSTO+^yl0UERR`VxV(7hCFZuR8(Habu>OW#+&w1i>||Hqr z!@7t8b(pPnwuF6Wh3oWY9YGQWDyjbQ)>5NA$$TRN1(P+n?7E$}d6jrEsE?iWT!rPf<+f(KkRBPo27Y~X=aign@HnVV)Qdp$i|xAmhPXW7t$cE) z_rOeK7Q=d|*P^3uKw?+ec#;9vehpKoiYx*^-X*pY3S*dE$foikSvfF`!1e)&yUu5KVY5DcZ3=(xX$}rxnW5?L*-7pLLVo*c0 zKeI33sv-Sqt2a>FEAp-fNJPeooj*X z)38>X%zBb`yx_Yx2FxX`>!>(g>Bh;YdtD>oeeV{Z>1)uM(ch*MsG$&Sl=nQ`G(+*l ziWM;;$RqWWXK$BIM@0C=z^V71ny1t!F}yE@8@@8nw&HPjFKwW1kI!K2OBD#I4)A}} zpVRBINAdNpXCR3jZpW?PpEdFb7zbw&^c9FftNv9J2Smlb6)$v#>1l?HMqxdc{j$v8 z45NBCCA4f{{ttevj%Z2$qka~;NINFvZF9C`es6WrR-aa0q ze_w;z;&b!4{!NPNaX5;6$*kX~m0??Vw?7%OAHCKZ75wLr^Ti7~Kw zxm>JdU`s0uvvd;pHSz1kU}A>;yNL*x{N7EEDDmf6oY3mPw&=G;R9QSuccl|}b(xL} z$C6NAOf724@}H;cJLh~0UqtOEc#Ml9oWdBaj<+iYrZ;>}N8liCih5O6UGJcKaqp?TtD{%F65M=kb~SEG3D$ToIK#IQ2okK^grJo=R%gGuk?tel4}P9gpq zUvSZHqkqKuHbpv;)HIvu)7-t{+`F~f3#8HscPH;Bg-WEEnP;oh&wNIE_GgX?mCi*<@zimbD+eCek!r>Uq)^UGS@$`MLQILZDc_XRZ}if?=S z^oyfU#N}j}@A;pb_50!qc)xI%1D#uJ%z7yl(Vg(>S=GJ+{H0tJr022?*5g(jItQ=Tw|J@I9@Nl`~RIkoQ zQmzx#3hSxfkDcqEDfI6v#;P+77iyCxn(6Y{o&QmZZLw}~#P_r%<%^|GR>UqzxA)hh zU0r9r4{pPu{YPh;Ci?pNAgvc`6}cR4s(aCT^52Jn{P&TE;87r^7Liu3CZ36cl5uHiX_cWM=!#e_cW75;`(9qC;P+hi z2wbw7lEbvrmp_oSn3&eRw4080bnV$06=wjMq&19T{}{j)2FgM4q_JY1g$9rKEVk!q z+p~27Y;3`*G$42v#Aal8?=4D2ZD~1Y-)D-YEqKoHue6k ze$veEodl%%$R_|)LWu5tyYRg@fPbKQBI=EF0?DqTqTKOr*K2}FkZledYiMZHhJQCvZ@lm$eHrfy{Fen5t6MYjIoX!g%K^dss-rFI zrJ%?_bZXPHM6QR$8)U}S4s-f-E-zUIRhjoW2Z*WEUtC5$ysHPCJ_f0tu8T2%ZX?zm zkxn>UY7GIS{)8Kpn_`4_UVa6MSR96SUv3La+KY>cdFsFUfmTS7dTpBMo@i}7C$ftw z9t06YM2S&2ril9=Hv++j@BE%ec;mR3mWgQ%s+MP^J$bF)96xB2Df+gA{7wVxT(kiH zm-c;J`Ls4DUYLnxosZTgv2)bZJzm3Fr=u-xM|SnT2RfxUGd&Q?a{Y(Lc=E|2|IYDS ze!7v;+Hv9ymkTP}NTD#eqi%z{b2FCNhr`1|Ok-sls*2^_!_Q=KZG3U@;#27f)g(&+ z53OwBWRQiYRsxuAT)5Jged$8%L#b4X+3nH4{qTwcSy*5o#;C@Ex4nXXcQR)&0@!teK_yfPCBjw1xwgmdD`1jdTsd_xdsB3z!(4)tCp=N=*YgNy%@%Hq?*d8)UKq!167B1O+TL5Epk z$9eH-pVPx^UtloejnC5szkb~4fLuImdL1K5V?R?Z;k?{dzuTzn9>4JcNxDui=Elvg z$sDh6+x9?(>{Mu~J(0+3#;7$b18EiSw69*(blf5N~)l?}6(}g#YQ+y$H)9 zZ&SBD?i2{g91Qk{~TP!A`78 zZvSqHwxNQ4h`hsfq8m8!6wUF6vT`>W(%|{VeES%em9G>!( z6#&B1E$fp*9^m{8Hgkg(XDG88N`?x5e#?|c1_?9Kr4*SAWUwgNTyV|_w4D&D8@-g+ zX*T^dRSAc;L8r3tsPMUO3hEUo-9A904nFy~{hg&&m#uV>LM&^mYstY7JE145JZMntbB;+CW#^=^8^pN}ujb`6lB+*A{FAf_en*#5y*uLpSC zU?b$!GO8|KU2R4nUWM9II9_!OCjl8$<(>SpUJ)H0+O})!YRm#_3~44crg>zQtvsPr z8Q+ijV#K+ z5GOM;v%r=08*)KFocxZSWtKpZy&QHfJo|x)< z(H{d8aDI5INR!>A#Qo23F!Kv^Aepg$J5+{em?X!&Jvz|%ZdZA2{M$#03GM89C+0^+ zdViHz?Ul5hUs|rdo%#>~`)In}3i9l%Dpo-`~ z5=jyW-J{2m`nWH;qn_cd-x@F086YSr=SoQAp?E{MmE9ckfHomE_9y!?o@(l&paf?& z(w)benxA5;O~~B>Te74>lSrQ;!r@-K+EJ?K+V5xS!OfraEvZ{Rv_v zs~4q&_Kv)ccQ1-s7}O${r7&*hBdi9pd_WGwOjJ(dUTP7r?pNz81w`46=zJU5Ip^=m zrkbHxcrgFNYxZVGY%{05I7EjkNzoRB3eHaz&4b>6uawb?dMyN!X*$7Kx^9M_auP`h@WP(k6u8ZfTik2i z9syE8TbX-H)+}&c#{s}piuC(c=&=Xu@YM!0S~eAR)QH*RC(R}B=nWKc+NEPBxFs4B)tvJEApH4Zi-g1 zSmwXG7h@-tR+if%jCF_=VkUAz7x*y!79?wb831o^UsT8r}B z*4R5X_JgDeQUpTs)xk;ft(!Cu)LBibE+S;tci}OgBYtnM7I!z_GUdT39C5HO7JhU5 zY{VDwIJV|q2d~%p1s>#9OZ@J zuX^|3eQ;udAzhs%aDs)+HYcYd=Pw=3D9b94X5M@a&Aw+x#g_*#>zn%_iN*;?{Os}q z#sMhuDSF;+{_hXfu=%X#XCn}r$5DZluUF==T}(v>!{8zjJ%aR~d|S4)%g~3(&)i9+ zmp9G`IOX66BSLW|ZH|-3x=vbKzS0f8%=(qC*wrvcowF*)#kX!p66wcrlj|3nH4V!h zO+-eXDUToVaUjUS_t_De)dk-q^tNIe4sJ%EPoq;>D(D}32H$coo%9YAd_ZSIzH^%l z!YjooLUHGM$}F&#^2e3^d>$Rncek*!-mmL5$Gg=uGSAt{bo6Cgx97L|ggkdyww}sn zlz@c6Nw^&EP8GI9a5cny*K_Mm2e3sM3WX{w*T4B4*EXO$RkFjWHKU0a#$dpNzBp+j z7S9IpQOFfJRt7s7H*i$H-K%<~QVBJo`bG+%n#7U6vSmU_;P-}2V5l`hT0xHOBBOg~ zKf#JS(#!9bT7q_ccD)=M5I8f*7149!UkpeE1$$RWyym9vZd6VY`w2ezXv++%qs&XUq0uKNx9qJR1h(-B3XY>2#HBE&rigl^=N~I3L}HS z0Y{Zy4uN#czhzWS5wxdCIs$5vXQtdC8DEUikl5R;z^9Uz=z}YJr#L>uz24gikmze` zg&haF;@K6V>7TbmR5|ZrityjtyaS=}I^NFq{XLx5gly+y0V6EjzZyZv;@9of50#V? z@d*im>nvAPnX$O*gV5#n+FE>VDxwQz`S{kdFLBrs1wU!8y?qka$teNSr zosMWELbrRhE8eKtb)nIxQg7)gZQrebHvf|d*h|MN>WTj#p2y`7$uO8Nt)q=}SC070NXsh8FI&cpIJRCll0b=g; z;5Pky1i*jT5#(tH%;PDb}@ z;xil-7QFG24rNGs{el~WmEUcSgCC_Ds%=Mtd9P_oUpOla8Zwx%5XY+Q{squ%BWXNe zzqPbG%IGYjY>_6AXb`8rp}wa;qBSdv%1N$ zw%sDqw1eEWj3&ULEiEng1mj4hO$&5i$IeP#FM)cEgV8M**8yt_X}9aw_w0hj1W%*^ z^;V?vS_-06xm>-(C;ci3=VTby|HJ~U1gzT1I)-0_3x%(lNQdUuYj%fp@M>M+)BiHD9+W< zkxU_t$4yk+|@roRK5Ul zh2aMAT2C^>_rg2xSz@VC{fkKWTcF-jns_?{{yg6gnAJ`3H(R5>fnXni%Ar%v^=&{QP`g-SUrybuI=q4r@G?FJCgk6fF=hq@SYQwkMZ%?B*L#XS+@C zq@-U9<+dYis-_5=pSxXaK=m5U0M@UFCTIn&?2L4nZ}@#Q4EV1lYzc_(n}$`d#z5*v znMh&7funyhX_}8Z-d(r^tS}=cHFfH%g@WgxdTAbRf2J5Epx@E=x_MyC3Q=zyt^3m2 zH(Z1ap{2`cz?~R`otmTivn0~#&twhMyVn587|$>$wJd;c zQDG)8tgQa%SIss-ym!5NQHZUbRk|<}exQpXTCrxny^Oe}^GGKIImDk_{IVyBSF#RB z&!eHrp=nGyNc-(=DPq-mzzexvl%!;4?yOV(zMWQiE6oA$WF+vVIqgkzKnqD10qYla z99C@}>K!J;!L2;~+2aqAxs4lA&Ybi^1CwXBs$ABdrK1D} zh~bVv7g4z&b*Lf_^$tEp_o5!))LaFf7^D*Vvv#r7vXI>*zi4WnMQIf04^TnK_BiA= z`ab$H|D(2L{p9F<8bP4*Ph*optdPR-H?^i!_J@9PswgTJYUFhTv7l2{EDrMsW)~kS=6N8l|I~&(8>2szh;M_uauDUUP8wdfc#Pme++x1E(j4G9YLQTQrJjmINbw!uwq}p7=5>Xk zp?Eq(wXPfe36<7DspT+|_Pjzhm9P&5-vdu+!otFU5?^KSzygyyjRIMc{pRrS_qVUR zwM&eDq{XS4(KGs3YDaH?VWWFyiOME;=(DY$7k621^kEDU?=abT;U5N z&67cFmbs@l$Ycp_=12$J^y7R+`kv#4AB8mMd(1c37zYA9c4hnRgEsCH(x4Cs|8XL9 z?v?dp!1F@U$dTxNL-5?`9EZt~E>c^2Nk_YPH}L`OV~y4{2xFw0A209d zdxTz@84aT)xw!^h|ODnG&HRK zJw6tkF#Yf_g)s3!a&j^~!!NpZ{tU52y$$d1Ct~8_mP^u z*v-{-<;L5;fB%}hMEf^~8R&n0)P1Rgug0IAnR(~3?pERH(l>W+@7|utT}pGMaH2mx zn4c-;jP>=0C0~xo`cX%a=bk>A-rn668?=|lkUI!bdg~PFaN&KwPHIcAy|#b`rmYQL z#N{Q!A}%94JG<_qP2|Rc2I)+ZoD{+&(nrpYlOs3uwzUsRNh-aB6N%`VPzj_=V3WmC z+&lRAEr)sbO{5AjF>%Je=4-23D&o50OIa6bd9A2i$X%M#!$S(Sl@7Ri`8Zwku=h>x z>5?yB>RKiyS4J9_@;;{>mvAv=-dq>HF6#neE&=c?0|p78ZUQSdBS8vhr%?Nbe zjGN6BzHMd4h`J5AogTHSy%m_Cn;kMhS&ZqFR4hFVr8J_VI zNN>bCzpA}7FScG{XSzI6(!gd8z2yC1UL8+)=0CTmp*==ixEF6-9rZwhcl++i8P%_% zFV&MVm#{|V{k_TiBm5p;`L3Kz8+o3xA41E>7C$6qAIkCrs)^Txhnb&xu27;G@g0Q`O4(4tN9%5fog5~=BxrNWf_q0_)bw|17#&0RF zV5|V|!QYcaMcd)udbed%9&|{Wd{y9t;n9C3oLsq^{<8Y*>$(%*mw&p6PW?@a_liG% zwjE%w2x#tu$k8Ja?P_c8@9;M^fRTwli57gCu^bZdp6lOd1Q7y=HimAKeO- zc_AN?(#slycH=AW;Ir_;y-gQt*J8s)PR)59Rv|(mUYX_(t&yy_G*%(0BF>!-WFe_t z6jr8YuyfmFo^3%~Rv!7W6~CYboE!|WuV2FLWh=Q!wO zJNk6tUif~bO7~8Sm5kZUo4WyOrZaE2JfaSm{z%b%+$UFub@P2~%ilJiBS|G|#SnL; zo-T)qGGnrkTD80=GrsrAW*mfXf^7zhsm=HHgU+{4oZsh5$R)t{>jQt1i(`?*!7wg- z)n%wC?!K25a(&+ol|`NVq#RSI!y_=GB=5lSjE|vH?K1hKGlB zH+Az>QhS~eU5NU8WIyb{NW1!8cNx`E4f6C)*~Xq65yyJicHEpoy5u1FsZ1Go<9Kr^ z6enaPi!KwMmPV5hBRM=e($|`1n088vIO^*gZK1K|u_k6_ zj5A{jyZ|FO0n%p4PdBq#5zx5*fJoPkLBqf6w!|m6Go9%OMzJ#bPV&{(33u*(5Srfv z#b*xR!yyHsxi^|H7|c0h2hcshH&*ukL{!?&H+Z~wk+lCHs?xd^x-SD+K}yZK?xEkY zB6G0h4mD9>EXFW9X_IW}ARy<5C=)qJ!FC(Z912u3g;Ni#A!m93T7!DRQvo8bl?O6? zptNhFl>X}jt>(dg51%XYZ7-{W&++C^Ko2|IdmjKrcGZkR^;~&SA12Y{4ff4BX#pTi=UxC>Th@m2 zl;NIRoKbo5eiB~CZ7L`8Ub_Gg1AH9x0dG_|rvmUUj&SBLUnz{aO&ZaFoSE~gFTTgX zl0@&d3ffOQF(g$Y-ZE!DQ}I|!)M0|CN~Q}tF9VkE&~$#BkwNF(g*)^LF6raXhYFu} zo3WS80fxj0p==0k(}SseCJiKY3F-mNA(~#|`^S$r*n@;4M}$vy7Y3F_-JLZNc9PhwF2LMxtl0oflvF8b>LC8hiePTaNp%+CbLiQy1>A{c!gT&h{ir|$%Xg^x^ z2k@j@l)SPqirThNvle2)`b9Y~?ixFpFDjdXsX~z;K{)!LsHjbMlq7}}MtaHE383dg zECoNL-DshDtgUoTWs34+z2X-v5+SY9%Zf&5KsHq1KqMlBdZ0hM~J1-R-WYUvb0@b zO$y~|9JTN|I&_CkC1vp2OXXMoL>hhGfO49{$!Efa6~|aaA*ayS>DwAzL{b zPnj3_P6ii`@b{hZ>oKk-)Ezw;WfQ%NIs10PC^Q@yonfiF*QI3wWc90+p^5pr+SKN% zODLkw7Af{-Q>~Yk@t)tkt_zH--S z!}28(;rkH~;CD7SJ4T-{B1F__f;tH(mId3WyXA~sWXy%TAG|2B8T))km32dJHPd1% z*ULredWYB8mx=gff^ReGz6qfOQNwVLY5Cad-%B~b6mJ?-Em z!2$>N3zz-*4FX=#FvHU;-@m@g;MM@-(1}%&c5^gup>f0nae82MG6t*u+bCcXVkLnS zh3bO(Hs&oF{+iUIcwsL_v2~#8ef-CzsmHMTXjpfT>EGwn6ZtsJ5eiLso~~8ZN3Frp z-b39+pu5f8xpB-B@alWg2UN&Ahxh78yb%^YLx%6m_J*$o}iq+Eh5AEQHY!AmAJ62M7vjcEG)9 zSivJk5z;)#OutPnCKk8XJ5?F|2r8_`Hbcz}k@V;E=o!mm>cTXs8$NOQsXUvv>B?wSyuQ~IT&KLNc=A66LT~lp-z~l}q^m%~0rJaL_PSmgkh}H;c8Y*8U8S(= zv;SJ4>(7Y)b!x+(a?Kj7d>BU)LoT{IffJM=7SyiOOXSLp_~$UQ>mdUn9G-0hsHF&z->;xoMTG zdUPV&4jD6KjnX_9RO1M`@O^Sai1@RwmgEOc^y|qS^8Fduq7m;2{n={XsFn9ijjZCD zlg*BY$!Ds*V@rMWhA&E!TBJT25cF%8XcRl>_c&cVSudU_e6pr$blP4i9(u6;1qs|q z)oVNSGQotYNcSrfCrtadasY^g->{_Jc}1P=RzPX zbQy7VkJibs^G|v?gpcI(D~RrmoN?Yn7j>=U|xgM^hB&~}0 zqKaSZ*o!@et&>T9bDMa$mTZbAso3}s)wUcFmw3}R^Izm(nsc?`p<7#mc2#d=F3Nh& z9o&xP34j~a?DkGH$Y}{#cja&PY*%@qxCrkF;rfl)4(9X~J08(JzWZdKcU%@O>)sao zL*Q50j1St;!0l{T;lY5xcUDV1ltEnwL>m_7D;aIe4vWxp>-={1zc3A(KEOSEuaD^W zV{H4xB#)%G;Je?WpAx?PG32A>P8r{BsG8ZdRi^zqx6+Tf;OL&HEr=`7QFl=GrM55cZ-*=v^*pn)8NH)Uo{NVijF&GMi&lH!Y4b0wGSGaMuOCnUucYZ>pz}DICq& zOv23tyaG6>QYHGA>HyPXgkf+myXO0eIVXVyO3bRGdg#Z}O=W4JZyya?B7nx@8+C!h7i8eip;^ZK_hN-S4-2HF-fo4RD7y&=bokJP;{Y?7KpyxdJO6S+|s>)TCc`Sy6XGVo?LZb+3d9vLn7%V(r6T+(95mjvO;mM zW4mY1y0vwT#lR_R8^pO7NHJD zpopJ9AXVZw_S&g3@kU@Lu2QwaovuKCxEw5RH}C%=G2fbk{x6C7{Nl^$`N@KUw~PR8 z%BOvD(uX_LdbjmH(WdY)lOvBNOvwMnoElVE5w777(u@}C?1GyMq(HZnz@tasDk@~q z6lF*EiPTVcJ}6GK6Fyr|MzN;Ty6sHM1v>%hH~~N>6^SAUJ(v6W(S+Wexb$@84bV$G zU`|4inwqKw3fQc?{}3BaeHiw}f$|7=!26U0qexmNO>^PJc&H@4J?IdSA;wS&Of3if zQ6V&GRSt7$EkKlAAAmD(F~E>!bmW&Ei~q5s*hTy-3_PW#<_);7DxsO0?hUfJl1?$< ze^wVB`u|uVXU-MZ*(V3t=IU=fN4lW>Gi7CqY>U)KFL@t`ApactWeqam>KbxDNUky{ zLsR=z7zcAZ*xz?&N>7XPZ&GF0#6Qp00jqF@8+5p}N^~DSdGdsV(c>fJFuYOZDgO=_ zC&47cLh^re9Wph5zE%VX<@b34Wv^rV;RuHRKNL^Wj3FNSZ$`QQ4<}o`(L_XmNrKU0rK}F0>`5`P2Xuwt08y5~_7h>61&T&4Z3~dr2 z&nQHlzQO=&Q))oJ*fAC{n@8@YHF?4eVV!r&Oeh?L-Hua4daO4x`_4lo8;=H)s2!m? zuy+4_tScARFjnz6T`M?^+MdbtrEH{3eX!B~cv7wQVyHVBeU8}!Nq%=}^0#cF)*(8Q ze)gb|;6zeqSA^^GV&NykwPVatgYV+s%)F1K4y!9TxyVK{RMX9peR_L>^$u$EIM3xn zlY>}8B271+p!-+5x^Lbl`7fWh`aj7km8w&k`Q>5lVteU1Fj0#xgI`R{q<>>RnRR}1 z#`Dr~%Ev{gHlx95xHXYJ|DhS{k&dB9`ywJh#{Fc~wF)VmZX)+>uc3+`RS0rlw3oqRD}1PTmz(-< z1xcM<45nQ#Z6gZeHa=nOMx~0Rm2GqzJ-7zEAb@k;MJ*K&L`wz^hkn=pF~0xHz+u+I z+dA)6Vj*1E*L;Wa75P`^)T)QCR}V=$ZD%vS=2}Ne!!}(f z)HSU;m?YXth0DmP;06zVsFClZ>T-bg8e&Nz-3Y189xdffozgAwA?ygPq5 z&-^mueAavG3E6%5iI@SFo9Hw6e6I5$>v7)GS?W4k<3q-GSD^#WLa|1)%73L znJ;naDDbiTu~74t;R|-eGQR4Iz5PLDn{j(np(KJbK3#_6r;F;Tn|bXeE6-I?pl|Ps zbPz%8(2vut;YD=bfcZDk?p8M9JV2rjM%f|?{L!^C zF5QlxTsC3!&Iq)Nf=&Y+HMMeggn8RIDA>(+_xGy!oxs4SuqbbIrdDQJ|&n zntv%3NnedR;ibzrTD39ySCJ6^m~Q%fVBop z4bmMg;Uk@)vw92r#TTQXnH(Yd@knG`-$5|+9{q8RvK30ZNQ1S_L(U(wSf{LCVu&{0 zpVWk@{h`IL#VZb%Abq`?w-9t4I!2$Qeg*!VO zJUJ^17K;OV1U9mYii(DQnga+BiV1Y0zo6oIzth0+$5>@S0@rm|7?|*tJRRjSwsY>d zSm$=ff7v4DK}$~{9;#weDW zE@!Qw{grkRMk)Hyw^VyHB=#0d zc#N6>@Fl(~WHWgGFaMj(LB$qV)c#t6M~mO1seURHf>fo;Kpqxn$kC*6{Hy`wPvHgT z)7vB&lw?^6^+cOAwt|-C^1}JKyP=ZTRB~7z_Wsyijqj1@^(|h9o20ga=52VdTwGjm zi0DGmIXWS1kFWeLl%uI_cduo*Potsrma@>?jOJ=wfs}0O;uwGm zC+q2sY{syc-3ci0Uz{QAFb4L^?0pwkQ|AqG{LA?S_!XXrJKP$JFky`H&&@FHPU7jw ze)BM~%S{&-ut)@rDVc*JEl$c}CHw!}?)09kNxH0IpJ44~d{WYQ{X0j3YtfU4zj1$M zA^jTcJR|Fet>_ejX6!Jimy60A0D25$0sn!JUndMW|Mzj8!cEebt@G4@!({T#-rp>3 zEiAIRWtH?giNbWb82u*kpT>M^4!?01(;ZtDBM|eJIt7ODkG%61?zQu+!^Xe$05tah zNE5Mk7CZRi+Jus~Mz8xe3P7c$rT3QDrwc!SCfM+zd2JEo>4yQmz5je^!&Vb%WN3&+ zT7YWICGjUvv1@N{FDPI~cXTLRls{>V92gi7@Q`TST%0ths{rL4TXys*&5$*H`iCfUo(%WH;j@#yFY zD=YTf{phFuuXtfe=k4+)c0#@YLKDjqoboo zM@K*ems%VfyAz%F^5x4}_Ivm4-K?puUfx(=ZxL9o|NdP#GBQ$JRP>Rnq`3GE5lpA$ zqm4hxyo5gbp!iL7X+vET zDMd3Vx0Bb{NROQahesbTR~zc;E}GVDqxb8S5~%7fR|!? zI30V(zd1FP`U0QsI~lCgeB>Y}fBiA~(@ao_CemY+0%nSjhe0cdPD@W;BF9ek^TQyB zQ>@wCv?&@ewIg(?xjzAZ#o5!-L+X^9n`;`jcyQnEvq-dOM%G}DB{gcenodsMO&y;hkxrG{MfrQo z9hR-pB?mS%MV#pG_4QL*Rs$U)K~+=CQ`&kw)6nF@`J?=oWy>1_P|T~u~;Z*OmMQrE;} zVQPvR&r<1|7XR-TNHd@^@ALoVK!dq!SlwUPlSq?)MF5!$n9RY7w}%wAGBQOHivJ~q zgy9^>x-SX1czEC^;oZ;j{5?OPwOc96L@@QJP2qmp&iDR)Rn-tI6OWE@71cWw3c4H^ zo8sP9F)yib>ZxG+pS`TC@^kkzHJLj)8TR|G{zIk)Q#`bhO^kDvXo2<(Ndoio)~%G!)}zi z7Jd%LZ6V&D{f7RfEe&MJi}I^Hc`wGp>SBX6c0(fC??*m*)5IIN2-c4qzFQCW2PwT* zSsGuJqxWNGn^`S{sJGsekotr?dMF+vZqSkQ8=7V9 zUHzPUZ`HzX$R0<_oP*A@B{x`g16;Mh_cT4_9=TFO!E5ZCyKX7^ re-Q4o4mAP$=8Y<;dIAW+8Q=B>A1P;&V@mL|^BYQXs((u_XSZ(M7QjXWS4`F( z*WJ1$xvePse{%h7LmlBTSkCE<1CD_&i&<_XJhWlOd- zq}dZ&f%VFHaT@2Bl4Q}Hht})QI0Lr^gO(J+elp@`KI2?IaLv-NuY1G(q==h-3X64FQ&l1SS4T)}18LPXqNu!k^Tj_h8hKtmNTK=aoih z!^|&=@97GDQVUG(HZ}}37dRhmwG*ITitIOy=aRm{#SjW8Kp-1Dn=syrv7h)g>PIh~ zeppfvO1pd21J>c**dvD@>MJG1Su2$I0enpKRLaN>Sw>&+pfiF1qRpqHd#B1Kd?^8n zJI-S5Y6a-4?;kIr2PXu2m$~I>9Uwg^RT!qNg=Sd^n_qohbFOEK4Kbc^tmAG#rG4Tb z3R#P6J=1@B>wC~siWn)WBn=|wTfPArjJb?jp}Eq}J}XJx31LTZ`Tg9TZ@KOqbcy&h zcPXiYKj7bRIIu0Y;k72ZE^4;+=TDCn3yRH!o^|S1?4R*k$Io8I}j z_ZCh2o%Hk>!RuEWPQGQyF_!mRcm$sP$fnI_>%Rzv$ac&#QyA0QJYPFKIeAGWMrNSk z?Ct3}q}zs`)wHd4&^u}W_AQ!&qkMA)m5VrykGLz-FgETdY|5D(=kn+HLp?vW;Ba`w z9Xu94Sy#Vr(l|s`EF`K*cYZNYUdvl2KV{yKu<((VAY@fjS9e*pxilvT^az7L;7_km z2ol8cq_VTIdBpqT#fz#CEtF+gKqRNN_PlceEpmTxP-0#iJ1$U?G#i39Iv@pW>y*f6MduZ8$QcEV1DO^QG z4)$j{sYyQv-LZ<8iN6XFVg#>MmmN^*zIs)0%@R(1e6Ja!{@0o*v4IB;VZc@2Z(ZuP z-!&LMkJNbu^$V>T+QJ9Z4i0kZM-C1ga&AeolSage8i$p!TyuoVvd|w$f0vh+FO%wp zMbki3oWi_K4#53W1z*wI1qA{-a3cbwMFu&!Xz2~c?3jkZ*AWi&doSiJcDGaZ+CHp}rSHDna)DKzOnKN4 zb4b{kT-_;T)pVI9ic>fwB_HqpQyLo^Yp(XJ2>XDgr#&^qI|<29nV+A3<{>C3I5#)9?eLhNpP!8}5AA1`*jO;8 zOhh4x&DsacSOwjf-c`Ok#+6e80|QrASHS4*l*0_}JgNbc#7}-d6$s^s?I)9(4V4tt z5IB726DS$u@Zp&P@BT&;6QehtKnTh3J8aUx7f31g$P55>z*!E1Ixk~k{Q{Mdv?QE_ z3>EE3?4(-_#Bu1xXvqD7HHGl;lN0BX$=TV6NfB+y5bV#gY3yX51be3rbA15Jkzz?HHY@00eA~HZ$8P0c>sS1&B*RFFAy{!2{|^1@P5&TqHuP$v9MTb6A}=3ICOM)XE8ig=qdtTV+nEr4Si@^dOG{fo0S3eG~#|y zAvVbJKz7Lbi?_nhdyl87{B;`1bO&7s;FAx~M?G zqMsWWk~xd(vE3>D!E_6mUK()F`dWGx;9m#-Gq+dB#BV@=OX9D#?ZCu1O-EV z_Srv!O~rrGQ+#ltn^LWPvgieE!{ggIq~1~a(B11vI=KwMDo+p(gL@l z318D;jTfIvOIRkWYiQ^ryLEVY=n#C#2mB2W4-f7&(a|BlcDJ{;_kHW@H*dIi3+AV$ zjI_U2RS&RrzMU>uOTwR-nW3D7UOT{Gl0rhi#>bBl2!zR@m5q&rxHxxkG;68>Pm;2G z-1^U-a(a4mEiEnM~AYsbgOQ&UrB3vxMPyM!oj^GkjSiGDd(Hy4*+ zjuD)!jkQia>_cVSX*Og&lBMm}uNOvm-y0hxP!WyR`UVC%Iy%c2bKBe7hlfr_U6eF5 zD=Kz&yhR4)Fp#`tWMpX8`}a0BLf*mL-oHP(x{@quuB)4xoa~Y#!e59x<4Py%-xH(P zLt;-^pBx-K(mRyl1r#GtuMQa$W?y&>0$ne|Bwc6*o$s_J$w4_dW#zS+*#F zPnaOMRM$H3)Ya4g`e3|?D#*{@0C{m%GM3fb#@w7}BJ(lU<>e(PA zF>qD-?8(T;yTlJN@yi@1w-+ zOl%=iuK8Kgdjmwf15DRi;URAxlD{!9U_xr{N%! z8>2r9Ib=kurM4$E=~ZZV^fQ=Bdc~^1@|dA{gu;6$)Eg6nQl4qddD}0kvD3b>eX8o} z7hJqLJI{_nDinKAA}&&lpO;$4)6(uka-+_n7%sqGQ|dWO6p|ED41g#SqU)c7~#)DoRS!PW56t2sFmmYE~$IH8D1S7RnjV zt~U1lQ_O`rJ0p@;sGy`WrV_@Yps{IIftjS9$QsT*Gtw@2+$zOmn~%p#-|jVr?dj&` zkZHL@=j38m6mm{cm|ccL5{mi}@rjbtiHF4!V<11DH8wxGR{{(n__4T{Yr??5V6S$2 zMTe#^asKuzfy0RC;WuyI$ad1kVr*#8BBTPs-~yT-TLRUd@Q0RU6Ku|2UV2@BwLCP4 zGkBh+R&F=RMP&5uU5?j}kCQa)HUtSFW$)2>8Bh=64J?eUthRKXoV`^srlq6Hr)wJ; z(nyGYi_4l||1n=;*{!8;P!@@1)q@&&i*Fg}7yZU&yp`LQ!$w$P}#} z=Toog2z`6@c8q^G;LVF$v??n2REuYPaS-p`l~d9HQoMG0PNgKpqG_rgyF2C*e2|Y? zj_&TM^jVgl8TROvS(~RN=I3W-F8udmsq-C_9+_)~%8A=)j4cXDVYYc&A3~eeSRhpT z;!=TKqu+F2%&%)mYUY181t9$@x5@@LT_1Hi zJgHXf^mU-e@(-+39hkzzz{KcU;f^JfTA`QX!^Oafd8)*o8N#f>hi%X3UwJ7ZN8z+} z=cuPZ??v&Y#J6wbqci+sc>Ln1>$%Yf%ut;lhxV_k^lDAqPG`E*vE3Us(eSac7l|Q4 zfh+4HhY%=Ce6`-6=#AYx3zUHw%D1HABV|CK%dL}6IM-o3%vIMAxJ$hk2PcYyFa=l; zc6WD|h(JtnjJiIq=-i7zSv%L}$qRngjI3N~Iby^gxi4rr_QMx_s-f*!{A#MFP6pEbFlM%i*Mj)@EpL?s31(sVX3fTPQW`aJpcl zNpAmmCF+<_qb8_3(9MQ}rOI!5%k6Z|MbS64F!tVJSK!qQqP~M!-=viiE3PCC-lmLL z{!EYDM1oZyoGho~(fQs6`dy;pO{?Dq7qRw=B6GcX$Y@jZ82f$HSryM}Rwqt>Qpm8X z)H<*B*vyc+@OA9{a_?40pqJe3R>$rxMNO&;>dtqwZ63ZeEJ)cLmK@{Pe)2*VaFiM7 z_35<`?pX8FI0NKr=Qjo<4g<1|Tq{3+aPI{t4^;o;?{9FfRW`5}J$K(3y}WG8LpVLl zTwy~h!lYlC|4^uCB4o@V4~yykLV14AeKG@fswe0LDr@ z!R{VB3F!|~o?Myh%<1{j{rdP&KBCOph3(GBd<6Ef7BdvgH&5ao7&;EV!WM9j62Eo) z_X`pDUND>y2ghu{W&l^*2hy+`!rk({Hx#Xz~TZ4&$gD;@7mjQo;uUHzzIEu11`Go5!|z%&p& zgWo?1#rJ=7$Frs2M@T<;;#*|qcJ%$j*6vJ=y2aq@K?6i_CTawC@UqfPc}7)UJ^jPk zQBA|um1oYx{I+xLk=Uqp&+O2}uJ^-li`Isdn7H+$(aGlx@jBO)18^pn+>co_HSkcd z!22sMyR&s{8Lq!Sxy&2wIFgqutE$Rbe@X0A;C^rROSqu#Ep|f6tyDfl&TO5N*{{n- zh-GZGBw!n)39ab$1|(zq=={Q?B5K{+`GLC*`Qw8_c#A^0q9|&!9~-}*!N!1Ym4yqM z72(KUW4rhI{hCJ(O_WBp<1CC7K!I%x#OhN{2_6N{OTn2MJBWyVCh>jchIyw!32uB@ zva_p;y~>9%u?D00st(4_o+WJk-SkTG5?RVS1tqTqi*uY^b|l(2j7K8m#`lVdso-kc zs~0a$e^){&R|U>G@sc^LZLE7gJ8k*?2?lXX=%&%W6B3Wx~8L_>qf zs{1#TQ}1T?5muuIAF_+Zyuw@`H=GE02R&UiJV;8+Lo?+e(4~$1P{`fvIP3cF*8Xc0B@f&sOyu#_#NfihLQ~N5+_u(M%Kf)J0WQ_| zhiJ`tp}2sbkJ-&s_jh)7ZUPTvZg%m&r&$y3Zd#Mt-K2WbOJ(}D2je-o8^?^JGr)Z2 zbX~jI@o)foeLPk1aruNl78PLck78tG9J=48|0UJO=N6+VrW?u3hwaI7hvkkCB89ja z+YPuBA#SfJf@2Vv~Ft%jt39X&m!na^s25*ew%Amd_EU2$rNqa}q_EMj zFNBcJOFxFE7*jDAj$#wgMtS6=JhBsC0iXti@w12X@)Dfdj zuuv@M>Ve3N>cdDyeyt2~wsy;Eb2nze11#KiZv9Bd?M~xFD8lJF#r#J&(QfKeU{=~k zCtLMyb^eBjh9k%P4Yf-*ixH?P01jwjtDYwj7y|$Wcng4lp*Z;)tN`0A{q!$t{J&2) zAj;h8zfw zwG^{t8IaOk6=4d|bgR>asp$Fu4Vjx6WP&0fQ2oEZ+~kjYAf~cw>W6)j#9BzGwjF=B zsMONca=zsFZkaC;2r_WrC$XeE#F5tli%N^`i=Q*M55Q#DcXX?-Cu3D8 zBqXfe+5F}WN^X~6ylYxuZB~qDJ&?4Wt>v>7FXLV4ryehq7c}XL7Mqy;sZUuKx11dv z{D>gppwbQE*X(k2QirKheJI?^%g!Eh3cEblT-C*9sCDYs+wQk`o#DMWrx&uZzdzrf zda#?lEQZ{hi(B~h^|hPbuP;>3GXjbHZif9+`JRGta$%va9-EzxjoqF z<>`X<76%y5tPYIGjjY4dbVs?$zh&H`V}&Y3-WSdlX=N*kqPK^%sRK-RwI66n%Kkp4NWWar@#x?;-F!nwE( z(11ct^B+N6iq}}bvP*lxP7dJR-l;?}X{x#!HB1TXD{2C_;oZ)UAFKg)J4bD2QOreL z3k)_pO*{%Gsl-+zlAe7~yIi|hd(jua{X@?p(*7pMn^1j+gtMk=NS9N_fJL-mNhT>_OKr#m$Zm>3xQ zozHXRBPSZfIyIQ0_g$ct62jjGmwF?H`Rc zd7qDpNlNPd`IXnU7wEBfS*Bg^$gWAW{B=#y<@wh%VRb|?`^_{F_3p=i{0SvrYG@e# zNqX@5q~pFF89Di{FS>{4$6I4Vx5o1d3S2fvOpgDI=j+b$A!gstS3Qy8g-TTsYcSBVHC3mhBH$D7T)0 zK>9s3M7Uo04XqTp4JMIe7ab+R`n@t5wSg>tUQFKT{>vw6Y;0^j!-L>Xs;RN09x<{d z>+-_Rs>wEzx@b@xdx-`>4q@_adY~i>bdgh!q{s&x?bHgoRa*q_G}a)VG`+ESG0m z7+R(Z+u4$2itN7cz}0x(>FM+4|rW3Pn>)-7HmHM z!xfwe_r4N+z)_oUx;0Ug1gX;inQK#fUOj=(U~3IZuJoFqCC5WCKbn)RNg*9zg^Az?`8y08KQs*h$#N6!7fZ=rU zt5|2SVmOvb0Sz7fpy%rHqF*}mk#Ii5SW|%f={p`n)2qv)QS}tEW}Q-fi0A%o8`HrI z8}arpq1Jrb53M@OLbFBq1fOzAN@k#uDm{wsKp_v2k4@hQz}4WApBU@~I$G=+kI4na zoVUx=qVvo|u&m+;j`~_ss$)&LUVJe`gRyew_aUqc)ZuDRpFUh@Wq!`BF4OX=D`COp zwL`<%pL>R#Q&p8Wh2#E(?JS%(?ux%&|$3OVk?3#Ks1cO6p8*&Vk?E2AJ4Qf> z4mgO@bY*RZGM~s=0P6cLKJf%0_TkUiN_V^}mAU_CQLJS(Z|`gJ2e0hizi9BA4bUjV z%%jg$(}W!Oq)_K`E(;8He8sar`&N1Xvr1|?W*yNWG24>p_FKp3b|dp32IiU`!r-Z1 z!clxW@kyEh%%h!HUY0&-P1ez;H8dQmOwf5z$+tNYzhtXi;vfo(M`vRJxf1S2QXi}l z_tNQtxHviaupa4sTzieJjzel8r3xx^91Nu1inWF4yAJ&Kg;fPN94YG&Z&7s`k!hAd z`jgI#B8KnMhFye3lt|*LDFqnDYi7|$q`x244^fymJ5P7TGKr$KP(99#9@_2_Av@%F z^_D}^v!jcG35v)|L~Tc-8^5sdF|d%ya9Zv8nBU}ax=WMZ*jJ-rNEvlmLmHuVb+K@* zhB)lyZAQrOUDO@ALfcPgJ2t1_ z50j-xX|)VlY=iAuhED3sx+j)CNc^E^ZbmQxxB#GXlVm{Y2bdobKw-eM0A1n$*TnZ%(Jo&UTUpS8T*3`TR?K%C|pbVUy)8Gobzjq!33v z)?hkzEY-Vk>fku4zQWnmJMmtf7604&OVI^H%}QK&Py zNOUuEj6{i`-LTD@6h@lC(7cIPkX0g6Q1LZ&RkL?t>#~G6?KzG^jBe$Qe4lcb#Qj=ojz0;{_+hg!9#s8RlP_IUU{ zvIWD7REau8ZU20}#h(c{d)C64VncCo9P)Rkof?oPH{H4BU*n*h`|lyV z7Z_Q>L5(j3+d2uD;@-uumCyCs7@Sxv`eQpV*Y)?2rd-FtEyQhWHJL8`{!R{Tq&lcJ zatLs!4#Zc4xm?M;Ck|WJUf~RW?RH3TYxU)uQv0_u`IqW1DGnlkLS|e1-K*0U#pCyL z#VrPyi*<((QkK67+6UfN{9E_qiN4?{Vf5^Z>ovEw*Q}k zaN`t!9f7g{coI?+_!?+9eEGs{<#c^@$)=W`x#;ZZsVyLfJC91_xcfO-f#DSDx(57}PoDMF{z05k^HuegtJk0th~abnfP2ol+n#2(YmH zv`$P&pl=4T;drz$3 z%x!Zdk3&1ZY^u&_9f%unakq+hol*Xnce720v*pIdzP?UE?9SDfFN*Co$RKl~CBJ(j z`3$NIThN3qPIfLpNM3$1=1>JQ4 zWZI|=(^@u@oQg`+;kPW=c&;KTcOZqAr)Raz%vxC}+InA#(^6|7q2!s*GBX>SQ+=!k zOMV03J~0dXOKnNK1~9N1K>9$5ysYdjTg-3T_poV&{Bjv`{gjy#*z)flEEyw*i{y#q zyG(@G)H7&ENVGIGeBxDTel@rqW@l#uSY7-H=wn6bctvHUh2aU~=b1{g=u1<1c}(F6 zFnUf-4i*7T2zL^U`KxD<(DzOwW;VVVmiy9EIpqOk-|0wv0B*u24RsS-@{-gm5;owj2x&d^O|HGSc~-Ca6DkE}a=UIYNs)D;I8m+|Eo zKJRYQ4JO5)!~rGzi{3XLFuAP}X^DRW2n%ykITCX3U0wG~`(1Tb)*swNYCKA|3^Ydj zJL+qI-u=&o&4XpC(9i~Dm~<`VW~3WJeiO#$H^KJTu{7ZSq8|<@kd}1++UQ?E99stf zK3v}ea*1%JB;ctrC=6Oya>aWjX% zkNr2&x_pU#x$4_!F!7hV8yxjvL7bMlc1D5X+3fK zTHJN^O z^Ey1=7o()5rN8t8YIM*@6FC&$XnsBGG`PCDnxZajH?I;UC|%XSk$D`1)cEGA%N z+uYn-3}ozj)e2zS5|$wyU0kWrLbkJA5IF!{!}_mYQLlD&bpfa*6LCWrpHTCg;+vp# z0-`C|KRDQ#KlXlST9An;2fXx|mVL|us9(LWkY*L1K)K^qY1$ux>Z>{3Tet>v4t$eN zueI+@e6XF7oZMw3YAPl5P58hU`?1#6hm8Ieag$^NscAwRUVw7$G& z@%qpejmD6q>oL`%zB}J||9&~1uJ(Jm*%z-~DcyZCztk3N_3Mk<<@twV?^vZ^HL>8` z4t40IfG_|rJl<;aVYJ(zO#Ko#EFnD#tT@3vjoZj(0sME^T`3 zbuRE*w(1$9s1+~MtKZP52p`&k6E#FV=nvco{!L$zh3nckj49DzsmSgMHDLzv{!AVi z7XEdk@AUY-pq!mam2MqJ)`SnSKFF!j{bJpFk;3!IP;W_1dN|2?EUlm|-rc*6j;pvf z)WWuXJPr;HG{L4O_^x&1`Zzc^`RjwSuy#-7B%Zv(==a4IQfs4+5L_<%3XLEl_N|es zY0Xu8F~ePZK-;xmqiIIz4?daYYqI+=DC*p8bhy81rw|DrFx@(7!U}JC`aom`NS(G` zL0bH7YS?RA^L8Su!=z@SRopFZX)g0F*Zx(VQD=izt87R?i;?y&J0Rab8&Os;pw)8+ z+2DuUm^Bb=sZ;!lDRN(k zB%3jBD|jUGpYa>r1TR)E@7H~rX_;rL`mQWO90h0Fgvp!By2=&MMk$e6PRFD+R@@^v z^-KFd?(io$D3qCJTue*@ITvsl~)f+0n9VwYVN$1{^A z>c1SiOaHXAVVZOe{yCI!l!u9w0t4>fe;+J=y_~pdBj3njZ!I+y-VXS&N>p62P zQ&c)#t+m}rs6h?B`H9w6{|soPecbDjZ~z29sMOBTz<&pO;0xP^sxK5Y&klpLC96dO$m8kPf)kO&U(kkVc_7127Cz^j$S5;W7_HyI>W*yDV z0$t)D`s4O;5`b!VX+$gsHlc4ye`Z-o#w9ep(p7NJnkRbliKmdqFlVqTqnwbUT}3E? zoA9zwC|WR5wMWeDBemqJ$jO8FL#1-=BDHh{icB2xn?aKo2XQYzN)dkvGqQSzbM{3w z9+```KMWP`zLd_a=DlG4Q?bDOo(Zpq^~+4fy3_!NHfBX?aFo6PVhg&>6r4x{XL$Hx zxr^2!4$hXn812%(uO&$A-t~!2QvO3?x#Ew`TU0$;Ij4wrv=$ms_2L$r*Qpeo--N)s zbswhS8A0~ud4S&Cru?Jt=ljjNjm0>4Kf!omhsH5TtNFt5DA!W)5G9fm2P2SuZgSi{ z4Vdjs?g1Ee15^KG#+!QMM*g`;kuf)aoM9`Sewfv-4J{a~q%F;iRIT+)xh|#tCD{{B zK#BRKI5;q1dVrBg^!E09Azc``a57cir#9MOOQVDd|75rtqpPJ3qLU~1Tv=)N#^1er zS0oOq64UN3MaHV00nRD(S#EQy_3~{U z92~Ibbm4ApH+do*$p@FqzG$Vz#t!GJ-j~eFgs>xVG|A)OBN?{u(S0?Ql)~=u4}T22 zA7b|sCt8U-m&GQ8kiGI1U4c@1yHYhcW;0giN+)S(@qr`)$RG`{%kR30gXg$xIS}j{ zy7GCl_W`ioSphui(M7bqe`rj^ee32R%-p+*w_XX>`kDf+{BGE}SJsY)t*X$C&NxSr?5 zFXkT8$==wo)dImKl4S5vf1V90Y^dez;^;rl5`@mP@Mel$Kw!)no!Q8}m4uX3^=^L< zAw-QqLPCO*v*($R-8@aFJ)aw1jzLm5oXG5`jh@6bU}zu9$>cjw z#0>WKE{9s54&?NU+Owt;n&sVW+zl<_QS<<*G23h~V^>R>DsJ(Mi14Kp8_)p$@+oY| zGqz;u)c~i;R;K@^?W875*)2>;@?1?scp&C*jPMz7`Wqg$9^my}QnRqnJ}A8a2HMp? zrM%5M;A<3&-;}A5vV!a4y52X?TOZURfmpKKQ6tASA%< zZMRywimU( zW%OKe_ga_CR%E;Nt_iSy$!$897+>d2vumv%u>0`VMWs&Ij!;lGjONd3H7|5xLlkw> zX8X%$l~;lX_wQ;>XU3vy5(xE3raWIC{BW|uO8jU1(rT`-y^9XrgNP#kV{SH&O3+N< zLYbEYhwAj`_Ojb;|4Yo*owKn`{_jQ%wOc!e?q((AI4gAQM!Rjq2LC49UDQS;X{D>Q zcNNj(_~txFdvs@f{F)IcZdH%$*8JyTkH?)iWU$MTRBqStoerj*UG|3P0w>6+8vKK z?moB+5l%1MwHv&)F*B9^)vbaisg;1PfKT6$M$6}+KRH|UM4OawN8aLPrA!jRtm?2w z&CAYqr?bHXoa22+=Zg6#xeC+RvLMhucBZVx+GDHQ1M3NQeitLj`CoSADzbnh6D-iX zuEeb@h#U{X%OR*j%|fQ8|782)fcLZX)~PhC4wMp}`FS|x91!tTHI$kARacVj)M2P7 zy{?APGC_N4zYWK0FX}U68t7A3Gc?(2s%5sp>*StgZcxV6bsI$E!&h8S_;Z+B2#h z5megm(IF7{guX|lpM?;}TNk_aybm5c0L@bAw{NqH1_uXA_3E9$AR~Z21^s;wqIX~b zb~LO2MBplyy?H-BzvN`f_Oh_)s(pNX{)`tZ$jK4kIX^!K@(?9b(0YyFHYJ-YIKGMMag!8~fJWoc$_C3vu}HrmzHJ1Cn?Ud2x|6 zYzT@pno5A6CoR80PF7Y@`ZG}qHT-c40||Nk2gmgAp6%S{nR=l}0~URN07xC4t+TgpdJK4A_RjhOD@7nU^~6O#i3*ne>nqPyPNG zUKAP~4Ht7MVS(~LzNwkO_S1>CDZ^k*YbRu_%bR-lG=Ww+I-7BQ=O&d$Jp*Ux{_$}j zLy-InrhhN|OPdg*K0rkNhmrif6>z9S>l+~t?A|}6-+y=h>&ySz<1e`qC%Wqz3!LR9 zBifOis?3`6};;%pAP{(;*Sy`_pE)%RJ^2?ZyQz<;aV7j;~j zi=G6A{+N_>s=OM+zaswW7~Mk$jq?hfi(n#cg{|RMcPUAwaW_d?Kj>AJ*7G(?dY!Al zB`=eD?t-lK2kS9KiEy{N>+LuL7FLklO)J0I%$)4@@`{Qg%RA|c`%=^gBEhi7=$|}{ z>>Gi1;Q==I2pnb+O50Hf&DXgk$kFC#0dSkh|)qoCdQec8tua7^40iE#mhxp0K z$uPX4!a{SvdIAFj6F^txNe!{H@%nxmm%=5u{O`bgEqebH3;5#m7KG99H6myo#psH4AB-=G20C{Uxl z$~=>?pTHsVjPcAl3~iy<{fMzJ@E^NGG0b z2h^1Htu`*x4o2&kOxoFJZJ>pxQLCC`0%{J0|d zmp%h$OX?vU&E#?91wDQiw8P_LmXqJrZ|WRb;Hj~WSy@?Q>nkh!Q9E5mT6^p33IwB7 zX1P~Dq}yg{4u-&zU2Myup;wf_KpJJ?;UQphi~&;4IgpgpR8*`1Fui|Y^}&81@+81V z;AM?1ZT&>C4k0P2m}3yT{ZxgCX8=KQE($yR>m%NhL^zRY6`sx~9;T%{gpBf2?5Uxp z)1_d@Z#EJ>a8#6mL2=_`BPTi)g+CL#cgQ;DhLEZP97v;5&CEH)6-a5H{pWwd5^v4 z<6V0|*U6vR0{|Kax3`#%x9WR;<}kj=htOhf2B)gNpQ|8&8Xbbg@YSF>0~;Lg8H8&N zdXwM`Q`Y#6#6S+FzUWqVz5M;~iv>yCOtnoVlsk+0HY7!>XEIiUaNWW4ONUWE`+d@m z6#r#uA)JdKd@5-oQSU3%9X#^BbWx|l3<>raZN7pqR~{j0eTK;2*6VqetBDE~&FMxNm3z;IV3T_J@jd9;k?P2j2--3RZ@yrehh52O*x z)Hzf)F`D-j_REJ1U5HUxQDTo-T-bKj{2SFnL!Zq^{s%Z`eeC_fN|lPZWOp7%(3{|g zbHr;1ZfbMYD6%}F(W)X)dz`S$t@k~_>;e0&N9=94tL+wSBdjbcaC@V%=&mNN&kcBJ z4?(kye;}SK@&>!yyDoKN(v5xc{0DC>WkKe@QVUTPOSgn(>bGjxd5pD4?e{}f_L?qA zMlxFE>_0dh*ym{`q5@VND}8aU00>yCOk%wOr7}3NiOx%U z2qZxKtBplaZH|s+ywQ0v3C_!~1+1NXK}&~vUxD4fI2}JKp=}@U z{)P3|2fcjrPqLFX3Po2e&NyP0C>EXT``ZRxVs*X`>7WO}5tOh;6iw-B1$Fa!)6G?% zqOwczo5}c4(he2_w?E8$tJ)*58q!1$GN7b_74csGh-TQaWoY9K!EZLV?%PM&vB8lW z*|*zx;rPw9sEf7>C^Ey26~08F5@c|-bdTR-u-Q9igXnza*tc#eNj=D*9i`mwUHuDo zaiy0nyb+VSlTOML1Rj=Je)q6oz~$8;vHkothc7Id(DO*qYuxZmu}2i`>&2kuwLdYt zd#1CX&wR4NryzK4)dh6xYOB?DWd7oNi3~g-O#5_N<@H9`_Zog76m#fT0o2s^)oYq) z1+~Ux+jUXHnd&UrXNl)pCYGu{i;s?OeR^0!wi*m)E{{%oSF&~N&JKOzTKDG6+gJ?B zv=FJ*7>3*IL*HBZy#iGChfk3!Qin7l^AmmmM2#FB`8EE-X z`c47_;@MD=mC|-c+L^~x)P6(VdkFrzgHhH01fv?83{@K6qRP<%KctE!B32q3={W(h z=4(bv8YGt2zmW}Wo)ZRJ#%j!1#4@}{N@7V?&MRyb-T!#Z)y2i+IDTZ3dU%Z#QZv-v zf|r(YZzbF#j{^d=>w&6pL17RO=;Z8-A|oIm0FPSyHx~^I1R5D1&nd+xC2bI<5f?X6 zI1v^VwUcrMUZI9QWo5N*|MSN}UtfPI6Yt^eY#BMZVBFEgMQTy^vz=*Pt087}J#|CF z*?RlgR`2V4drRyzTYGy|Wo51T?AlsaJ3AG(GW{C)23=j{ zpIEcHSRhbXt>?MJ6eSN2kF;yp3qY{I^jlR`)hSUhIAH+pDXq7v$!CWexns0V}lN=HlXl!LIh^zcHz&7k1G#<)8rX zNxCw#u#6rAkAf1>>B1rA`cg!E0pI%j`#E6Nt3gd%Dj3-h-SD+uLSGeaI&F>RnMOb; zOp8VdufmIqpWc2(e&*>ZGU~qx0)>4dClRN>ZgiN3>4qkyrmCo_-sWv)8rEhF1i0`4 zD$FlVt>fur*5rJ2<3Rq&}gqjP~5!Udxm~rl+SlkOl__H|SkOgF{1Sr>8dQ!Pg;0MMdG^n5+*SK-nlD(1T(B z-ya8mzDNH0^-D&%M%<{zu7ZV=lL>Z1jRfN1<^4IVM_nFX{-&q5HyqN21LE4l6mdUT z>gew7J~=r_6LF(53OHR(W^R(dAOFN8;4r7BrIll!Eh7u^`<|ln!=%nuM@=pIJC@7+ zoi|aYK<4KIN2CBiiP{t=g0!-ZL3gVUQ|3P@`0>`8~*58W$H=HuN{xFHs|g z@(yb(@Wq|RWW;7A9mwnu{Y6C7qoh;D3<72X z4bVnuAA>S;a$XL6W?xqT)#28~WV{O{fP&2OFub=XLvShI?at)U|Lu%95}VhvP;T00 zQgQGE25OI}gm1rC8Fk67sNmdT%Y2blZ!T)fuG~^Q%T6Ti3i2Z(r_k5ZI_5kL@x8k& zsHz&}z}3Lk6wxm}%M4G3<#j%6SPTD@n4;opU$4N!7)pHe_gqwUk9{+OSw-=o7N{VS zyX)m36+w>Yb=H*R?WabCYkJgm+zk_Yt_om~P1jt9ofg3j}p00 zo;;EF2K4&*BOld$Ku2=L{<_w0Q>3rLq_z^J+aM74tYH?d-7kfb+naZeXqz<}*R(K@ zq}>ZB1qB74n?q3}@l|as$_;xcpfAzCn+?z$u=o5n{VadIt!*$NgCM1)D-2* z=g*%DfJ=?P{ckK_D$_)|f_hL)Dw?r@^R!$W6h=gG;* z$jC?zubugC=Ud|ia&mHqRM09U(>5P=cJ@iB+aJqap}?oCpsY;QjivXMrRCb%+SXJ! z;Mo_<3D9)FmdIjLI`EOMZv_QRe1f8!1p@WMo9!$0A|+%=vep92_in0X|P@7;rMN^a`#A6Gd9F zvY}SP>1gU`3W}R=CULV`F*jg5^NxjMNWLa;%gQQG7XrRb=rO@h4v@bXJ& zKoQ;1=8}W%7pd&Q*y;Ghaz&+GDt zkuU!%0pWwk+^-D#vAJZ6;&9_nnV-q@UPea7-oETmTSw05<}X4b{u+z1$ei;13wPW7N{p zN;cu<E*5INQVLdrK3Ad=M7#UKek2626^fVJxPtFhN8ac3xhd(D$BH-8ifM zsfPMqECG0mYFf-~@Vx)0^Ao(Qq%VUNFid}~|FPI}9a`&HuNZwevyNZO&6`ajlJR$c~=Gq796-z1qM zjl6(|U0-{8lH7DT$i>x!ctSx2C6Hs$#GeBL16ZDM@zqLiwZVR$U+Z~^u=_eYXNgtL zQpUx%R6Mkzi;9XSs7}F$#14#~Yo4>v+32$Z@+MwQE<0^DakNRsX|xp-9t{{2K|q7Y zM(V0Q;Qk)G4N72HX8NCPl6#zYuBqaJR%wg$)K^VHfqM!J;$;IAW42)ezECguuT}s- zGhyx1z~f1zzkTlZc6WETwrt2k($7{~Hg=gFv?n4iA#vT>*4oOECm9zb%0LXXNsxss zA01WOm6w-C_pSg-SNA+xI6jN_uU2{*hdYVnx7ga+y0^FYW8Ga8__eN}NEjDdtt1^s z#LEUM{^i-VyK8T3dr8qDmQd4@wBbB`&%NL@uD>80zwlx0E*tz%pH{RGIN#l zo_NL$a#Qh_?$x>NAm)|zz$Byd9M zU!@wf;QSnzpcVi7@H3nKShb~c96r;=V!N5-)#;m&Y6>p;;lXAL#ppMBz`BxP7&`(WlWY1)~i4x^Kj-VAD+BSPwJI!MWpVT3@Mep-pWrmomB59#1grWUE z{ck`Hq+ABLDTk!@&40x)>iW}E*p({m@)n-uywYRpeX8TX!cgJ&2jcLJ_=O$v3g?~2 z7Z@<4P(>G9GZcv5;zX>y*rTY#u2LLZS)5YmghO;BTI#)fGK&7`m;^Hd+uGVzzPvx^ z!jmK0*1YHw<9yI0j#jAOu=sVU=lPxy@`3wOJuxvc;HCuOTyQ7cNanxG9|9%-gdR2h zUH3-U(vlIJmzM|ppH>vOvDW;c;(Q4Fs}hG{{mxjPvJ(c{t@;<9;2x;RyCm47mH(_L z8}wbk^UN-QpTo2@N{fLuIU7RCX);k&BojL{Fwwz<)5YuuOGrpqnvQXV)36;=Y&}wi z{?!JKKi;0_UL$y(yg!G_>*C-lfO5<0`g!PNiSGDiFsaGKYP@({S>Gl9FK7foA&)E$}nP#n#*PpDB*pN4oU#QGJu0B^9j*3~Vj%R3$L~ zS1Ck$!6gvI3hOn#Wz1M_HUT1m$XMUOB<{!K0lWS+Z+?|_$oYM)dfDr9e|x^@b8WA$ zPwo?jWxfO{DobqyEM=A9eOA>=1>6x(|70|Kog|o0MIf*Ri@Ku7dF7)YdmtuQ7E()I zlwDn{d`#hg(?f#(TF}PQA+0K>Lbp4*&A(v z1DO1C1xk8IqiE*)EYc<&zBz7H59sQX>1xXXY*LQOE*{rSjSm@H2RTJDr8W8g?1ELj zQdOvvgOKYc{*zGe>$B7CsS5b^FCo4#Sl^B%t8BdQC}wUzac@#Y$pGD zu-YH*RqD3=t4t;o;?-M_0mHy1VOt{Pa$1snBByMW1p68i{GfW2R2ss3A(wTPLKG4- zx+fFNzDifDeHL9IxLoLIpKhrayTT@s+Q44W=h9HJ$%6Y%e-!X?qv**6Y3M5;{#mB|4F}aHQG6ldW;*W<|c3PX`8K zf3D;mp1nc8Er?(TTOFmObjg@T<%s;x)q zqPIlN+Ci#P^N*O7uPe>Fq$_c-barnf-1g=!COQ)O{vOK-+TupflTH6;%6RZhG?gSS zsZ;*SNb7jH-B$za#exg&fiK6L2$lm{wJlf`(J#d=W0PW8wDL!?02klg)^|%)XGYCjxSb>llkAw=JxycuT>vc*g(4TAa-5j`qt@SZBmL& zlIP$bwwt{h>7Hr`Q!&jFzHANQ5WYe@f|{GKvtT;>1!?s<0E=j=txah06$NcdW~B zzz@3j6BD!q4C>H;J0iH`?YP$N@>B6{?)jIKOuhoAO}{EkKk8(>lWbDQK)v5Kc=yT` z-;Vu%#)!I~El_Vo_rCmMwXT|6Yjb&&GdZ~hb;YVyvcT!pkNaq_n{$qs#Kui{i@T2*@ohdFZ_Nx2o6<+|^`q%ob>w}oN%a;Q7#cuo2E}x1}n*Hfg8<|h? zQm_y-yM+}lb&;%GJ3#1q#2Ax>-PEO;3E^3a7x#}^%0=J!s#Eg9tHP!124%DP?b?qE zaio0Ns=}`68Y@x`qp-ABVa~T^^Lk>xxX|`V=naqTJbeBvcz&l$cNnF+)5(X7)p^bM z+@4O|goOZiU_KZ4gXh_f4G59>d_95 z*oIqYcBT*_OeXI2)qxVWV%1Kc^tL%Rg>cfeD}WqGyZNo=a4O^C$Z|SjEIsN)eNXPL zJ5~=cIbK$oBidDK^{JGeg`xjROuwTbDI6qXQj`5*-~P0aHv46OT9^JNMsz4D+uT8) zYWUkaPW+i#oAGaM`?Ni$f$*27Z!LtU*5jXoJIZlU6enujn;7 zO1U{fI9WGg`l68i3?IdI*|7~`=|~qbQ>aN#s5;kuNM6cRGGq3~@|Au%`|wA8`=-jURz&Y-*Zo8-2}5EZ zRMBvE?n??6Vs&w_OM)@u5_qmQidIHyI_d!aN(4E-B5Wg@Gz@ES3nXg3~3+C)TCZ2_pbZ(SYN8BVLEmu zBp;F`a1yUBez~6F2mo^Dw(tg3sAxsZlz*80Wd;*WBarx)Ez{K_dY1=H_yL~WZocWX zs31MtP`nA)i&G2>i5+kWtOu!(W$fqexhOeH(l)iCYWr)}E>m1KKEKfU0%Jh3LuY{e zxko0Z+lYB^c=hL6tJ8%*k>-n!$k370GLLE7cMpk@0Hqr#08jDak z*b)@oueJ*0D6~-{JCz^37l0oCu?k^;PV&_B_G3m|TqWo)cH`pSPZBpygUTwL5SHcG`YzUECju$K)YaTM$V79T=Lr4Y>-k-&1Y&yq>Kt6bU z`g{3z_MnOrC1^SY$)(160^)ry9b@*DzB`ts-)tWG47{h94)gL}AFT4dbGfg#r(E>> z*hGAPoY;mle6=ref7$rk^Ee*@Ai_AFL?=d77T*t7dT(`Y5N3!N%}?^$lhpSY3hB(Q zKzxy)tVE$5{=MQU_O_h|6`z?T4X(|F?o~~OH?hcd)*C(M`akXdD2^?sFG3;EO*Xza zzwB1~VyV4PG^3=S)FMbE4-`w8&UH+1+;AE#)0?!nV-Q?1tzRqm3>bDyUWu zS3D5d6GmHA*^?V^NfX|e4ORN$|6>=&qK zl&fku6keC=*Mv|AH+|kG{^a{TH|x(KLmia&breU(8K41tJGlEv`L{cTq8)s|7iA^M)d%oCM3gE}C-2T4nn|jT#rr$A5dT=0^S${PkN`iI zvLuDORH;cza)ifwElH8hkXt`O1$^wicb7+NKy)@LCTxVlmIU&$Ju-Z*iY{b5 zJT8|y0^z&GIwhO^As7WtJrlD90ObE$;G63fa>GH09BOo>BJItP6z*z}s6wd3?UwqE zky)Q-mWzi-Js)BRYezp4qZE2_gjE3MM&a+o)418O)QB^cM=r&1Z69lAS)ie# zM#zJo9;_cpt^mjv0D99uMtf&r8p@nHMf=_9lC_oS>U_WL?b@@{BI5)OpDzvB$%#M+ zi9$6cs{BZbW*gfPtcUy!lZOj*#`X#xrUd0;ilP*RkVrQGp`Y_G5D>YrvmaIcVIzO7 z0<~zLX3#>Ks%+N{p9)r9?q%l4$nwZbgJs$QJ1$i0@p)6q&^xHPe`~J@5O(3w(>$gO9Wex=!htm@P08k9nG8nd z&m$L8ZFf3PKMY&CQtex7g(k5^ZAj_O{`m33jM93lJdHwMy`GnT!aogi3G3tM(ExL3 zv&nybVYlCMzJPsA`qo(^2F)|?d(%+qYOYc|-Ppj7CD!*fR7e@?>9Vt={-QE85Bst6 zA@xk~VIROCFL=Qjc>Ih7J`yd0N1QC^m_E=2ruNEo2*N(1Z@qfF;?>I-9EypSiMC8P z7f(r2MGN&dwGvQb1J^G87E?Es3d$deb9}8xm&lF)GrA5;eX)5?T`0cA7^$}W5#Koe zpg^s;h5Hpk1LRZ(scRnJqHZsIH4KgtU_E~3i;J!3cLd(dL39RVM=zz=?SDn`XTYdZXz2> z0qTe&4izRcO8UVgK$0tZ37ag)51Q_ktJ7__Pv@fvELwCEQlu82N3L}_RkOq2dSG1Q zcBQzTY>r}yVd;H)XRjFf$j^{EL5ni`i#|w(*N8WFLK407yF{ zs!S;1C{5Q96mxU7f%80E11v^boh^QSzOS3})*I_>pye!cxw~OHuSOTL_>cWUoALau z$D)))?s_XGVh{R?3f1&5>BET&yvYrQ9Z2OHhku|HG^ug1M`WtQT3n`otg*Qt^)o5G zFI-6%^F$wRHKJN2BU@+=dbFM)N1g*!lT z4TM4*=J6YjF|#q>9Y->y2oNC0OiimqcEkMZ_!L$lLrI7$n*&t0nSGcXBw~G&d|(+p zy~q_qvfJ`Dl>|XU!iKJa0lye9y(26t!$N8m~}-2k{St$HE{ZAD18NVN+S`H(tlv z4fgK%m(dp(kPp{;fuw_}}J}L9i z#P;CO@CKf(qgMO942=m4KqXVou}EUvB~bEN`=l!rjmleN)A^HeAs>RC?Y@!bR(vwZ zFG7j_HlUV$GO#rCr4!pLWjSjeC69Ah{HH zL*$!#l_z8fq{gvA*dC&i9u;Fhxnl5F87K^6Lz*E{+iwh|!n}m5+y=gSNc<|;IyEWB z^D5l>Su#~v6j%lkBxR}qT}H{mnt{+wRQGimhRX*<8jF5vsm&?tN;&D^Ht|Fs0ODNPJXC;Tm6sKjxUYr0s2Ah=%kvT=BJ( zcFbIfIW4sp+y^{Ij{n0&i&)Yv^M=N>T)mrPXd$em@riBP05CDa{mi>6Ls?}0So0tO zyIra3H3D*~;-3()upy~C=NjEi9&Z(>Q5PL`_n!F0Qed^%M5BwjdxrEG`YNi85)=-) z$Qx+18%`IC)hf}gSbs#*F*NB7Mevz>RW)s(i8r{7%4KLiuBosCsXoq){ z>^c~1MuT}2nb0EDO#5NN-|fpnAc((0Hw!BR99dHDxjlYjl&#Ce`6Gtl%gJPisTc%~ z!LfPB?(Q=QtB~PhSA2i0Y<{>#8pb&fT>AvkhZ1I-GTyI;)1eo#VT4$OeT=ISF<=yy z7btLyY|3n2S5{-z3YG5xbi>b}nufqB%ZGIAOPR!1OJ?%+Q3`eUQC+kg&nD&}(GYjE z0RquxuUqSI<`!4jhYw0J|(Lp!c@uqHBjncC-X|>>j z^!Hd;DW;vObP7MmmV}f{LSwF!Qk-d*b0}D}Nun`FOVbFkih4MpJc2YWWd?OvUox*w zwup{kF>%%6hxMW}rpg3vCxE}2{Gv*j z!o}Xi)tn#$v#s|*i4W5V)%f7l6GeVQ2H-D&Z}hrRJK`gp!x-EFxa8@2=*Wj=D}NH~ zik35jkv}ux?QF5W;8)^bmE@%b8OO{&(myBHkr(>JSEBG&Bcp60uPD|HUBY6;4m>v+ zd{4b%fr~>U<$iCWg)(Qm-1yr`ooh?`*}&S5d*7FzifCEs9m~(UOHrU1nN2Pv#I(-D zs)9ENZzgfa+NdiV!wfirFKiy#a{Y0i)PH#ZCMP;7pB=-%?rGbMxI(o*Y9;}=1ZXee zt8np~y0p#BA}a)NHOz@huK(l)%+dg|BfsqNw^Pkjqsf>V&;UR;K+YkITydO^pb;3pMw5&NSK`MS)z_71zDKI|_bb$G zw;K|qT$EPve5tBDpC&pEV4i9AaK)3wgK8ee^=C*%U7Y}&%h&Pr=K*YXYS|ion!h%% zp_Y1a#5=qyVQsY78a(&w6ECjrkcuuYHhnl;pm`{|@^_oJ=X8Y+aeCeR4rHy+ndapV zFm*znIe=2e)`a+L_aXbI(y#;Q_NR6D5Nhhw@-&!gq$d6AxrtUN#w*9K_jlLZtep;I zedvUAvjEEYuuLK+0VO*;{~|9Sk1scm-Cv~f4D<+eRz0JcMd5jgco<56N3+X9)}yho z>rEhf(f4*26Q9_Hf-uZ|qrNvs$=sxknmO{LbpTTr4(T%s*0*{gGFm`p6K^%(5~wpY zS8EYm*mZ0_6C}?odMVel<4C5coLW&a2ShbnQ%{y91Oka)r|Iv?W?1N@^RfR4SSw?kqjA zoOOSJ=fl@W%*+`&aaSZQ#%+YF1SZ2=G1pE{6s3yEC|QFq6#__b{h@##JQ1#Trx~&) z{O#zmD5J1IA7ARwd<34vjfQXT7V3Ywjf^)MV21)jPDL7q88e-_=BqkJ+^(ZkC6DOm z07U%{;j!sMTe*vd3yp(t5!!cQ*1mdY(iioIty~J)Sxd=pyV|g;>N{Lre0J$*rk7sB zGVBjP&@!-`4?hM5$m5~{w&tF{(&i~fl22*$_#Trg2_^i}OmM41?xUoiKCb?d9&P44 z5_UO`P={i1HD2^V|da`SoQlL@V@fY6Pt2jozd3-@rZav+RGdA2_|Iof81S13<$Q zQU=HAo_pcljM=%so-;8GLQZpBY=&rr0)U+;8P;dP`G|3nqQ9`7$VGTaao;XSw4=P59wbNzoggRQB{;|-TeAcs3)-5&-j z%Z~EIUk{Q++jN|@PxHU|WwudZ3B+=XzW28ci#~=gUWD-a-{3dOzy?e|ka5%LVpp_Y z71Oh+KoP|ctR4XhfJ^}I3%^}0(kgJTDmSP@tbCMk_*F`7NamH;U_FY=uKZtqqgzm# zW~6rxYYbH7=h1w3wf%U6J?#@OP#yMQ5b?9$FL!6^=rw9a$^gLVAJ`pEgG4<`f+bI5 z8#{)l5dC;r8^Gq4u!_&b-4D!8LrvPLhEj!5;O&p3u+vd%?G{_b>?iy?d@t7$W96SH z3iJnr{SV3Ug#;iu(if{723I4KRiV4~&u%$Vt%@NwxzVqGLsS49JfX7=Ip+V3bcYSqU5gLF3Wn=X~K^cTF z8>0DW=Rai0QYtqC-Dvb|6+l4us-J!&fSK<} zAMsiczd^+K04z$v-AO?R`nW|}k>(jSfzbK3&g0Q?X1azx*| zdqonz3bu6a2l$8qQ+B;dNqTA_CmOFl0Q7`LG(RvXJ@;3q6>?AjpiVfc`M(GdrtFXr zuPe^SLQbFtoOdR*>dpsCQU;QvzbXOx(By%r#pG;ZKpeDDdry=QC{(GY!T8Lox_h9mu)Q;hDeFVY@>-vFiwK&!ArLXSeJ7pRA6M<Iax=*5!lX7=>vcJbu+<8^lAL6P z0o6A2NS{dFFyPQU&m$tnPU)Zw)Ds+xkoVTea0x61a8bE@GX=|HI6@n%5X) zf0k$%3lBV_)T&C?1rRB~9D=4EdB#fNMKUUg%2)k_u6WN%gcXV4nRJOhUVDujxlbnJ zIp0!Tl5CKz6^pNK{ZSB~)68R-%q*AzQd(03gNRw0p+Hxf-ufBVr%x@4^@dqlAKcr^ z?PPuclDihYb5DHzb4I|%0uciu%!O>WnZ@)%IQf;->jtP}N|;ZDeQw;V;kXYxjMDIT zmg4B2>0&9L0W4@-u@x)MNE6*SybC^TKU@D@w<;ZgodEB143ph{^@purq3mqb^Ar(` z-n2F$b;VhzH^Cq_Nmbq%GF&bJK}uN2oY(;JduNPHsKzT)xq^BGQO(fPD-DmQ| zR=7yMmB+a@VvXsFmFHnzIw~R&MRy`yGP^ifZnEEuilqDK$NrtF@xSc6N513D%`qjX zag*$xe@GStEudoefhlvS6I4@ZZ$T0UZ*KjIP6Nl|f72K&1b6q--%!-$ zvYDe-0`ES9kT5baB*T~km_bN{psb)m5ZN_WL+9^>fp;Ei3OBdP8+xyf zQ}6`pT)vuA*y4=X)=e0+AKLIyAQ&ZG&5VHxvdjt@n$y_QN!w^t0Y(NGK2Xl}OCfY% zEt>%I)3fhE=)9=Pfr)&ZUpCvDfFf>5SFRQe--@a2ci-&KSek1fHPb3G6v9uGTpwz* z@S%6yUsReuV0znUabtOzOSxuNpa8ANss&n(j?%gui38WSYOXX7v-pvd_%FUl9o{%} z2fpA{vCs0F=J$Ns@OTx&{|c`+6K3E-I;sDBgKBK6mXto?I~}zZA@r{h7YMQLL-z?T zZ1JJLBKvLP3kkSKud!e5e_a#Uv2+b)@@z@p;voJeQktyOh-fe~9<0Q8sQP=4 zBP70_DN`^$I`rN5v2UFo+etj{7nPm8O4}D}#ft&((J5L!klD>A@d|5!l#)rrp}SZ1 z(8jUN+wdl}@0(}E23qwG!^wu?KP;nR_UFyHI_sxrRh|uw3y6}p*uUfe<;(8iFFG{1 zn5-XPW(aAd4Mjd}uzyfE4NSH$U6zjEwxIN>cG~*hbi>1j!H3f2m{fSyH0OATOX_?% zzs$DXHJX}g6TbCXgd1--db(i{2|o&QzKIvAWY+jC_cDSsXes^=E_&NAWizQzM30}K z;^R|2ul3fKaU#;Q!MR}$*Y}JKjWNXYC(7^6S_H>IpuuQLMh0V3Q}xPBCGm~@{Td$J z*0>!J#k&Cui9}xd{>yOjXWSwnzu8$sB~nsSZtexk;ql<{)i=k)9G5P_ym6@+Sq=-6 zwt2tRKz=DHDJ?BxZSuVX1ChD6x3@_QZs_mJ{R#*_*&KYjc<-g-#bG5McRZdVs024= zttSFy+E6Iz=*VT{`lVJ z`T2Q#e7upT*#@$)nq0Y{5R)2q9tvp5@igWQo`)@uCkKd$c33W%=%~&i6EN($@_JFf zk^g~P$ObwI+sFNH`#$A-Nm^BxUV)+No|chgNTAPsOdHB9!uv>0gsGtp5^`=h6CE8$ zz@UTU$Hy+`n=<>QO6nA6jz0s|4!zIk-O&Gt*w4N zh&A_a7n`54IedBfpD(FE< Ma%!^W(q;kw2Y`saQ2+n{ literal 0 HcmV?d00001