From d7ee2427effd818c858673bf76b831f5382e3adc Mon Sep 17 00:00:00 2001 From: Aris <64918822+Arisamiga@users.noreply.github.com> Date: Tue, 9 Dec 2025 16:32:51 +0000 Subject: [PATCH 01/18] Added Touch Support to Gumball game (#190) * Added Touch Ability to Gumball game * Added simulated tilt on touch * Ignore orientation when touch is active * Fix for multi touch interactions --- static/scenes/gumball/js/controls.js | 62 +++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/static/scenes/gumball/js/controls.js b/static/scenes/gumball/js/controls.js index 761f00057..690336d3b 100755 --- a/static/scenes/gumball/js/controls.js +++ b/static/scenes/gumball/js/controls.js @@ -34,11 +34,15 @@ app.Controls = function(game) { this.onKeyDown_ = this.onKeyDown_.bind(this); this.onKeyUp_ = this.onKeyUp_.bind(this); this.onDeviceOrientation_ = this.onDeviceOrientation_.bind(this); + this.onTouchStart_ = this.onTouchStart_.bind(this); + this.onTouchEnd_ = this.onTouchEnd_.bind(this); // Events are cleared by app.Game in its dispose method. $(window).on('keydown.gumball', this.onKeyDown_); $(window).on('keyup.gumball', this.onKeyUp_); $(window).on('deviceorientation.gumball', this.onDeviceOrientation_); + $(window).on('touchstart.gumball', this.onTouchStart_); + $(window).on('touchend.gumball', this.onTouchEnd_); }; /** @@ -59,6 +63,12 @@ app.Controls.prototype.isLeftDown = false; */ app.Controls.prototype.tilt = 0; +/** + * Whether touch is currently active. + * @type {boolean} + */ +app.Controls.prototype.touchActive = false; + /** * Handles the device orientation event. * @param {!Event} e The event object. @@ -66,10 +76,9 @@ app.Controls.prototype.tilt = 0; */ app.Controls.prototype.onDeviceOrientation_ = function(e) { e = e.originalEvent; - if (e.gamma == null || this.isDesktopish_) { + if (e.gamma == null || this.isDesktopish_ || this.touchActive) { return; } - // Portrait var degree = e.gamma; @@ -121,3 +130,52 @@ app.Controls.prototype.onKeyUp_ = function(e) { this.isRightDown = false; } }; + +/** + * Sets the direction based on the touch X position provided + * @param {number} touchX + */ +app.Controls.prototype.setDirectionFromTouch = function(touchX) { + this.isLeftDown = false; + this.isRightDown = false; + if (touchX < window.innerWidth / 2) { + this.tilt = -15; // Left + this.isLeftDown = true; + } else { // Right + this.tilt = 15; + this.isRightDown = true; + } +}; + +/** + * Handles the on Touch Start. Called dynamically. + * @param {!Event} e The event object. + * @private + */ +app.Controls.prototype.onTouchStart_ = function(e) { + this.touchActive = true; + this.setDirectionFromTouch(e.touches[0].clientX); + + // Let tutorial know about touch so it can hide the tutorial. + if (!this.touchStarted) { + this.tutorial.off('device-tilt'); + this.touchStarted = true; + } +}; + +/** + * Handles the on Touch End. Called dynamically. + * @param {!Event} e The event object. + * @private + */ +app.Controls.prototype.onTouchEnd_ = function(e) { + if (e.touches && e.touches.length > 0) { + this.setDirectionFromTouch(e.touches[0].clientX); + this.touchActive = true; + } else { + this.tilt = 0; + this.touchActive = false; + this.isLeftDown = false; + this.isRightDown = false; + } +}; \ No newline at end of file From 2148d6ce83aee35a061332d52de208c88074a96d Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 9 Dec 2025 23:37:15 +0700 Subject: [PATCH 02/18] feat(a11y): Enhance keyboard focus indicator for Santa cards (#221) * feat(a11y): Enhance keyboard focus for Santa cards Improves accessibility by adding a clear, visible focus indicator to the santa-card elements. * fix(format): fix indentation in focus-visible styles --- static/src/elements/santa-card.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/src/elements/santa-card.scss b/static/src/elements/santa-card.scss index 47d11a9d1..dab40fc52 100644 --- a/static/src/elements/santa-card.scss +++ b/static/src/elements/santa-card.scss @@ -39,6 +39,11 @@ a { &:focus { outline: none; + &:focus-visible { + box-shadow: 0 0 12px 4px white; + border-radius: var(--radius, 16px); + } + main { &::before { opacity: 1; From 43c2b095b6430e730814207abfa9e9a539da377e Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Wed, 10 Dec 2025 04:56:57 +0700 Subject: [PATCH 03/18] feat(a11y): Improve accessibility of scroll and retro buttons (#220) * feat(a11y): Add accessible label to scroll arrow button Adds an `aria-label` to the scroll arrow button in `modvil-arrow.js` to improve screen reader accessibility. * feat(a11y): Add accessible label to retro button Adds an `aria-label` to the retro button in `modvil-village.js` to improve screen reader accessibility. --- static/scenes/modvil/elements/modvil-arrow.js | 2 +- static/scenes/modvil/elements/modvil-village.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/static/scenes/modvil/elements/modvil-arrow.js b/static/scenes/modvil/elements/modvil-arrow.js index 718c99e9c..39b9cc19a 100644 --- a/static/scenes/modvil/elements/modvil-arrow.js +++ b/static/scenes/modvil/elements/modvil-arrow.js @@ -36,7 +36,7 @@ class ModvilArrowElement extends LitElement { render() { return html`
%x>w+vnxRR4cf2N=Y&oS*d_6P%kB>Jpa4zkAT2sOq zZENesj@jf>ZHirwGWP0pHsI5?-UV`TCXoSp?XTo3<)hEEa7QeeDb~it@Kr~Ja5wau zsP2Ts9ehx>XAB{g!4YySBDei?tBdp@ftDXMC9jZ#9GWO72YV~xGu}$PhM`2Y;AWF0 znaz47&}ZvsOIfa@iwGrS`mJGYCxM;RsB|$CUXR)=i2osSlKT|w_ZcYLt4bJaF+aT{~|GWgb&(-w9 zMLUfgNPc5K`2IA;x_S7pyzC;@O_vr)*sRwkNTSq9!UCg>kqFXr6|$=v_w4j*XcjM@ zMhh+5f*gj^NywXtjjY(W#gQkij~PX`p4W2YN$;15vfn|(I85ff{g)}wr@3Q28hUX8 z-h<9Tbs sJ(4)#RxShlB?G`V+}afHsVrNq{vz|-+H z^JP^5JwM_9pv&J^`kQ#FkmvC*Lf)X}$2Ic{Z9wcD5{FNz)@ zI<>zC_+;$ES0M;Gu*YwpJDo0vxh+=pO#aZhR?i%$5*$1GHTH)H^wt`kTXBF^7qgrS zs6JC_tTCz2)v4u_Cb{+(_l2hJ98>`He$$!I&daLxEw~s_Me9%}M;z?_5rO$n9n rNX#wmw@E z_2R}pL%#=h8E<6Fd?~mfQ1^-27k%sXfe@fs#=6@W?m+#T>Zm1;%Sf2VVs|#0qQxwA zp&L&$)reFsc1(%^> &uu$Hw~GqjJH_BbB2%*oPyE-)dhZt!J9bwGe}&~W;kw6Uu- z67kOOgp!b@J>0MF(Rkg;d#@jX9JBT>j+ T z$!M9@N$skvl?~qs{^#~nlYMEQ6mD KlluPnDtHYKDXgNWY;p!HrJ}PQos8hb722d1qkV64--*3m;%x z(}8<~d|`xCMt4-ZdITf7cmbH|V<6(`8uS!sbg3Z2>vJv%w(vJmDzB4rD|Wy7>S|Nq zUM)r#teMQ{6Kw0Zr$vrw{*48qb~ExMI_LV5xE$c4+!|RiNRNGDa)d(r?^yNWqb--2 zbhgkPMjWQDm0UkyUcb7u<}wo;#+TPoF|KMgI~>$oNPo8bj#e<7gm7DOOtp%&EPQLc zXR?t7Qo;_I0d!qN!^b`=&EZ=4THdXBy0g6I?e=2{gMKzI89x9SImAJzf*GqhB28m{ zx@opCIN+gd>{||UV?q&yd0UawmxFhm=6I7OWqjAVN^8=mW>pg6Y-9(8WxNca@1@^J zU_q2i(1VosK@74#9cU#Cu&aHf>fj(&n^L)w1ytcyC5It4Y#Ud_kb-w+YRdz1?}Q)B zUR3+l_2CB9Yf1L#HvcH8!cp^u{{C!^&-8A<6ACDMY$j?~T$2{iOibH+MK)j5u=8hu zk@hQg03>)_bw=hO=at{+XQXDz;294Uz1R`U`Pa@|%xih4Zw(3MnwWXyQkapF41|k@ zRwtS>zCK=1gs <0+~Mdth#WXgmP4P==rJFCE@$cI)`xl&BvxwK=G#Z2C>MHyf(H8}o!;xy5oQyA zpT*1X2v-PCQuq+VO+-EjOM=4gN;zKnWiF;7{X`o`m84TjJPM@gey3~H7GKmEjlFmD zSp5W%??WUh?2ZWJ<&>e7RQBzKvkS7;vffYr9zL&h@IOA?nC+z(0Icx$t;e2p+?ZBw z8bA1$fN-w-^nQ`dDfB8|^>dEtM)Ud2WrD#ASE;NC=@8f9ROEht%7$~h>d2D-WuE zGSMO)1hBj?rNy4I1ozH#n5>qh#VM|Omz Oe%!F*})&!OI!gR^!n>@E)PW zlpWD1xMtT{h(#V$>sE)QpX@PE6;P@__)w>&f^YobhxW|V?XTh+Z3A5~#re0a#(+`H zt~&0LoIhQvdv(AviQBJ;dpO2(hMU#hPVTehDu-TiDBr|XA3_^F1u)*Ozr!>pyueH+ z9)b( `RHP#W`!87qMGJGIY16e+ zT@ BHW`ZRtf#zd`pk6=%!89XA69* zPa*!wofY5Dg*D!X{WSk8s+Zd1*umF(W7|R7NmHN5Vi}v>hm3kf-zkR >YKYAh=Ut-dCeO_N)AZ6@H)#P3vx6t{q) (vg0ln`@Qj2Ju=V24LGN9 zbRn+(C+U{&W!=W*ff{y!&>lxl!8m0hb_2FEw`)ns@s98h!<5ex(~Q4p ;>YEG)`kki2h(+!L|EH zI=!*sAg%Gs@xA$Q>T~3)yZ$nX!>dDU50LBGo3bbSzza9q18sHADXg-JU($z4a&DS# zB4njQxaAuj3TlPAY{{X&i;zZ1+k^v{n)c4p+Nqzr!`4ILnAet%$wLsYdco~A9 Ga7=bJLizuKY!d%=(?0YD>Q!=Itu84f^aV6ON{Vmhb=krFx|dDCLg z-5r97K2wS@=BIuIs>LLDrTM;sOdZE8;yV7g-Vs#;(}pJ1H8}0KlLZ6|{i~MrwCEwy zrEpDF9WX7bzO$+qLg8HwU#1rqSdmSsnv bx1V+kPIqbRF;F70M^NA(;-pv3?VjMwYyV#Xc z>|S^6urRv0bw3#xcki`&d-=l(`Pdb?w)EmUm?-c~>RMqs`wt-9^&sY1hw0QAp=FQV zl0F4hxc5v;OrBeYRmo=&AolG+ia;k}P>DZ!@xzWt(7mPZGmL5fT$CalMv9g<5xtw< za6~FRxS28*#I6hQwzN0LXHj(zYYDWp;Vwo;{A FAVkKh! zAlEzXmA>7p0R!b@-*<*=V$9tv^+8j!{v#c*p#WlhdSQ(Vkix7VCgy-QvM0?tS;AWx z();P{*`X=4YX|DSTDdT>)sde}F3gHh5NCGHo`rF+*M8ULCj7t3_|kc@%{WZy!^QRq z*0r*3Rfbp-{%ri~9sTEXSP72QmH?@K18bmVM8tAMCTX8Bbzt7JfZy#gqYJr&QPG}LSSR+>+J2~E9P9hmW3Ax4aSiL&nN zn&`BC^DriM3qUXlpq9D*G#)LDGj8!qZQq=odjyHv9Wau9@|_zfvvJXQaq4h#b0^0w zSgc!!*wXmeRWZpNG}=Z`#WjWFJ49{`cnrB)xjbMPaxlx6QjI?~&kuH>|3%nUv)VUn z-wp~|d5B|`4BZ>n>bl7vk6_cbxHsOA84|j;3j{n17#0t7N-5{DZkR~^UN{Uv7Ns@b z;`U)L8uI&iL8IxXj^*(QwBCcSzQZe=Bswh<%4Hoh-yQ+{^U7;WG$SzmR|GdwsaI80 z(>-%Hg|)TDjZxpZ-F>D=y`N2H2aF9{F*{xzCb=)PZty2@El2Q~Z3i2bgwZl9_l(DZ zMqis!GzB$CL!FCU!@5V09hDCwZ@>~MQF7 v7|O*~Td-PXs#l2hS)lNX&z{MI#R z=z<`J=K|J8OCp7x+El}HvxW8KZK^PHo=0xIFley>E4KKYa#=2Znm%uQ5HYdgw?W!| zMSe?uH9G1(bbJDvfsI`EB9=g&l=#S6SS3u(_4CC1W#)|v=BSEnpA2lp1*Eer A3TM6{xX@O1hw+wsC6_O%%UsfUu~+#s zF#|e}Uvf#cR?|_5Mtnq^|Gj=HJ^z9Do|p9&N@edk#%h!OfLLNchB5t-CK|5JyNoQ0 z`8UiQ|4vNhkn&8nLQ#6NVT+PfRnLrCe1)zDqkfm|#-(Y60Fa*hymRaA(R>f_PbGxE z1lJFiE}Oc(3}UQqE_g(jLF*2~g5+K&)??*T`-%^bOS@u@s#J($CxcKc|J#hnrQbfY ze)0IpyEQv)XU0?Pq>yLjN$qwYuKIlX0tNcWJg~fwdVOhahq^Bf_FoJ6 Y9 z-TcC~r5 |-$AL26o;vi9f`@Z!s zkZ^Mp-Qi`HqCmPyy}kXqi 3IbzVzlGvtmAR+I&JtU~&+keA&FbhW>6} zMx-6br-`j=!-RP3|I}6JKKxWwp7`9V^T#pFmSAk`MDFI8s!= l4@54J3 zRK09E6g;S+#KESZWa-0Aaz6SzemD8d1Xa$eDM+idKkm^Utm>uV!$NGCW3`Ua18aID z_^;JQwj0hkg$f@v)QqM@bI*%(ee Th;HEkij(1nkzX{ps=!SAuu|BWSO$m-90C!Z>SWy}Q4fvND^ zK~-AW-V@M2vrC21{{sFY&-u=VQdm>Y^hOzaLZid}Ng?oW^tJ}=DSb1{&DY~)mz0K^ zJ|nZn>EJ5o7oZw8RM@WvO}a;O76Yy|bD>Nr|Bjl;C@b=zO^syNNCcr~u7zCv)-~-K zzVq8S%n}+UJtAabv}aQ|xVe&br?aPl07lGcUpp*mu VUW #}7Zx9&^a| zuB(N-#^cVdb>y#Z{V|vF`tnBaI#5fP`&wLj3nlCx`pad#O9Bx^TiUmME{UCqnE$cx z{>7!gK{wvqxXXR`bp@Da`Sl@JtkPs*8YNqU6eqy!Ruk(wrLq_O;04?B+8b+kYw1V; z4r3F&+W*#a@{x?iuN2ShQw~Q@zcRn^Rss;$!126l(@G50wRHlNdK)^Jv%kG;N8_v( z3M5e2TzFExmy!-DcC(}!t-3Fd?vDz^D)ZaIdK5K3Ya2sFd`oKb6zA(#;zc;d n&8f`*N?oe_)uOa$o}xgj7SQgid1E%#TlMVc z`TESQPeI8Elbf&QF1-$435U#|2xSBq{fz8cqM$M<(SG8E#;fm5oOW_H`2uYQ!M!T85 z5%oa;xlUc`<0TZr3Q1|@gB2FgDJwz;b!J@UX~cGLdR2Sug@T^&v8rh`Qtti ALX*WGu6X9MP1p!#+u;*oJom_HLN(yvY^Ni zVl`eG_V%a^ATYTxpz@k`# J0H*W{?17c9Q|KP2N z0>{Wcky-q^-_fkB6w{D^P4k dh?y*tDAwf0W%hp2Tf}~*CX((TV_F9LV(bh zqrh579J2J}nVfe6j@JQUL=~y(wF3Je+YgM_?yRRB+eC% WJL6(v`~nSeEDa`K_4cdXM*VV^}Ax-fs$=PlzdL z8v3f0ZmA!8Iezojaiqb4PF>x}t#4;K(V9sk;KQj4Qc(WK)HkDVxV9eSh&??r+uc(9 zt)yysubvaULw_PO5kjc*2BFW^&xscWmsz`YC^w4;Mw`!)qfFK_$>!aeXCfANLZN9& z0K2*xZs~*SX)n=unR&@!D&=2h4f?cLBb0{BY)BN=x6Qy*BfsRD1nt!llj5pj(q+bD z(h=&nW&1%iX|lRJF&jVgoosMG-Fbal4@;d|ht@a+*{!HwfhvJ!`#RlXr|q?vPXDfh zi)6eUk5se%>CQMTeb_+-jB;BRH+CL;39bL Bvn_1qb~?haKbSl0@8r}lHA8Mi zf`7Yo--Pz`2uj0>n1V5}p)6VOrsxHWa6@hDowc2k9@T(zvz11Rda8N1fO`??oB(#4 zLPu5(rfVcqBxr$4e0_%{?nJi+#~W?n1!#rfpVmz^X(^#uo7WHAl-MFUmG-;eFy}o+ zo4u^_2lpc?Y{u-NT`B+c?IhSPtKES%U&^I+mA&$1$(Ck}dDRD^?3SK>D|XRg$$vwI zWiy&o)eU=kW5)h{(E`1z@sUBcP~#-mz**vOHbMD;qM%>ds(K#A1AN@5MJ| b-6&yJy#*m1i4{RbIi&Z?X^#jG*p0a z9>hZZIQIE&J#x98E}(YMFK`MQq!R4c|7yAH(+i1z1j!x^y^FQ(>XVOLPqLN2NBLc% z#*}_(NTI*F{#=zNI7))k()?o`LK55(BF7^A*Ox*rR{M9HQbcPBb+oW=J~g!|%(l0+ zNip}%csN}B_}`f?)ZC!6Ta6y>Mg`vq=eM;#-krJUr66$4At#UGU-dWN-;x<=m2{zJ zEMogReg(7ns_6&wmsQ-(vi`)!N0uDMi&~)C5=rm3d+@0ysofa-j3X<)DRH|tURss& zx0uCeGH^3rH}1DvuNv6jFkPtB#d1)!#rPa+zxKtpnRFGSjsUWuqBc!(zgce|-wl|) zY~A>tBDa5j40R6jAd67egMd9Jn-_`EE@`;oJB=aagg&lPs>|^z+o`a-=){f(u3PhU zxR6DbhCL_OjEWan#HGI7YMUn2>Q6sZ(s9k9JFZsjaFP$z zmgn;1=mSd!jb?5ALVrVj=k1>VEme?F>Amy8bl|bFhxaHy>z|zfnbfUpsbE2_4P>_* zpyHw!OQ+lyPmbC9L7F~Q4O;EKpz1~o^U_!06CaqxBv8;{XvL7SZOy_27Jo!hZw z7+&f{9E?1y{1LDQwJ<~>tI$s4|6#(?{JrT+WYsTD9U#LcX};sI@oRArECclr90`i0 zdF=))w4W;8T0BfQ6N;iKZzWhAVzYhd#*5L3g>nIXK+J#LK5hojt|K(IB2CO%>-{cm zMuufWy&Kd$tL9J4CGGJ+ny ZoxIr&<6)0W|5EQHF#S_P06D#4@>NS%1l;J`eVU(G&qM8n0+iDPZ1VvedJ{hwUUD z54Uh8@Y6c`nQ;hxul7HVikzMGR@_^CDN{?A>}JiBsnlUk ?==!d 5(J?$Z3mT2{pQ0L zD(l;`%frF2**HH|M>o&?U^WW*n2_g``EW9o0&5s+-2VO7rzIpKKYwgPdG`TuBYGmj z>Q|r-cBRD7O9I-ZcMExbY<wv1kpYHN+NmctRt!vxg$;X3;P^SGC}ogF=!7cnGP9 z4vxf@^@g)%xBA{fl^5%gjQ>9WY!-F-o)bM=8Ar2j#Ag0c4TU9yi}awY69G33sD81g>CC-nu{yHM`W~;} zBcOv`5v8H;>WU!zVgiJ~pHe0$S)!_YG{ I?D52}6w`q)Zm^ps>PF`EbqmEVZDDW5N%bDcE(4XZu45_ALS%j9vT%j~n~lV=)L z+f$$|7LYm6e0}a9Y({B)8`;UTeS>`(r|w~0#Aq~OmCF5$@?24+51k|S1gmUXF3|!F z*9in)tK!wVB$e3mO03dhV>IIUVG)$u0*{dYJ<*ol`xzn4@W4fIrQmgsgveUH3r*n8 zzM-Zv nP ztbXipsmx2p9zs@SIPmxw*pBhR=0qBwx rR8BePv?0v-%$$cg&uQi`o6Xnf_WcK5KV8@Lx?R`f{ hFrklPD8 zR`#Uacf4@v&>d2fi>&6nbLYa3hV~?glR>Vc^C+gSVFDXtfWNF$@=Du7jZv|=L>rmH z#${?Z4uve;42XuKx~r$x_5$W&{p_Gk4)8*~B^gB9Lz_HA<45DPV17+|(vX`yiBhIO zT&n4XU73f1E>h!C+LDgah-QQ_;}}~sHK_dESmD~4PzHusVCOa2;p7$nOrdUh-l4}F z{PmAKR3UxZ9n-BClY1zR$g|yeQty#%7naU)f8T?tzAAyM{=A j5e}GfIWro|4*}+ND=^v{X`&+G XCe$UBISQ7Tfk*_uZzKVOJ B4oEJ_!JJGzjXZIuj72Z6|d4cWO=c9wtCq%`;WZ&aNY|=aVa`*(g8& zD~}sn9CgDz2W17SDIBt$AK_f&wsp^l1Qg ^+>5|$c#SqJb3i? zJV&cfi%oa^p^Il>{` ?OShd zMgCcB_ws=14Vum{FD?TN&dFX(oBnob`M;-s{hFc_bUrNnFg5uNJSE%wsgAer@jYPo zwWd!eUDn7Bj^5#X;o7I(7u!tMUb;Ek+#Bo{d!WIks2Fm^31jP`9`?z5*LLsEQL4jl zOmbYzdFt}qn6F%nuf@(~A%f}q;I2P%5PKc&{sx2r(z2jN#C*r>^-t=Y_WaJhter$z zIY|+rMSN`vi~p3+#L7*3|HiCCkWUs UfIKCK@c@3&9w?Ql6P {8HYMIL_vu6VZ$S0GB5-kQj0m`Ru2ssFmBjZD4*JM-+aaNQVCUrP{ z&%mX$cQ4S^U@D53@m`CF%7|VsPxLX5DaZ0^O#@v!W}4oLNp}1}Mum;8w0xj=ueDY+ z7wjg&bt+yle$z GBxz2CBEh}0N8$4)TIw4eAYoDf>cls2e+T;&t z?~|OI74%~0u)>P5_*8H3V b!f|WDU2K0wbA7`-#aXf~Q zW$ZF3%|krbK$3CVlyx?I`*(Wl2$b>2_r~Hc-8sCXLtQguRDEF(1y}J}T|KO65jy_x zSKRu7(+5NX!P06+y?)6_ax*8{TXSJB5T#(d2e6IEcWhXkl;wUwiJ;l}+&;a1(}QO^ z{`!dD_~K|BV&o#SU6}rAFH5e@X+lO}v^~utG&k2bY)Sp0hI#Sy%vj#G;vYip5V56l zZKmV!_Gj%E^id@K`I5Cw5L#G;=rfs$&vf17*D6il+iE Xpq z6VOUNfMoxQtTY3!!0Q)Jy!2)EITrBMpY{aoj7HAcQdX!l(jvbuCRqy8YUXN3tfmF7 zwr)qMZavVk&9<%Se;XNCaj@_(Rp)Js4q|@u6ho`Q&JGv&zv~Bg)>Y&Qo*-wJW99 zP(O(+y`XFh;b{N-4kkJ6y!EM#M^K@^kJ(N`g}ioQG)$|6>d?u>eUS-JMzhC~tp7&x zy9a3X9s=DH?O_($*{y=>^_j 2a}W18lch*GwNV@^{` z L<#WJKH>0?`LWG{p z-)g7Zxtf`9ZfX&v6u0IN<_bS<(?*1j-L`*@MW-*c@q-ZptxJ(auf6LNWo}Oomuf5_ zbf=gdWg|XfI}j7^+Ezc$$g-PowVeZ=g8?dX)15%cPdyyEh~`IPIQ@k71&vW}RTo z*8@DTz4l#j?H&)7 (64#9v8N@=DqjDlNwt#=M^XV}dM4OFltl#zh@IWz85$O)r1RuzhkyYb?}r&$DTq za(d!@^12yjg?q%71UXs>7 ;2oQ0NQ02 z`ME3JqjD!Qvp>J5qHu#lyMI7ObxeL$U9Bw6l3J<*+lXGWrq&%4(SXP{;?f})al8nK zCt4p`q}z4bjQ1V`Rl5>1#_n%J|G!T7_nY&bZmntSd1dy$ZS(tK2)))*u@45gl+F?# zC0Ul=*h1ZLKCz1)dwgEzKJZk0J_bq{<)>w{-D>o-xr2HyN^&}HXjy+NiRb#6QquRl zqpsH1wL8BlX+PiCFN2Mi_vcc~SD;&00VwUFVGZ(+{hA(d8C%WDOEuD4)=p>(=X{T0 z35}v63{b!QqD)@~y1IGT%{8q)!5J&o_BvZ!jbT)CCV3_e>*0Jf_LecxJcHc*{opPX z7K>=$s&hPNi=8z!K8f(O-^gPtBqUsh%Lc`#Z(_{R6V6owXwv$`C=po_tNA6>Kxf>1 zsjF%MTDOqh(xYj hnOJLZSjM-i(%k_;(&BTvISaE zj#*)m>u%6D7f$scZl&XS#K-~i1#%(ry4Ep(X=l?9e&(1|PDSOO-Dqi4z?)D#ASu~G zi7#XD%3XDDMNR(#@dX-dNOx9^ZovnE0u*0r^83kl)%jcpLlR*gdB)dB<%*SC>cT2U z12LL^H+QN?4&xrSQoQw}Nj=)rYT3C3VS1=9$W18BeXTQK;_{JHF(;<<~G<@*Z{! zl@jG)|6eiIGRH#2(?dYa>x7n9OWtuO3?>FyN~Wm_ZU$_W^YOrKP<08zPL;d$`$50? zoiDn@g?ry*+AoFo8%}h*pr<0X-ehEOBm;dMtnq?d`Kq@*)+do5uTNo#9+%!oic|~` zCL-(iz7_aMJqanq;SV4Uuz}Y7L=k3J$YKO3Ot|$S*@CrPal&V{L^>Hx4gdXbV>@hj z|8#mGrBDX&+|GWfySVp(3^aE$g;Xrtt=X_?72=6ea!qGG)fqYYwMIj;SRmaBVXOv+ zPl4X^!3WYEkF`c`+_kU%ZEhTkogEqzhWkyEZWYfmV~I^$s*5g+8+6UQ3G=3+Vzud= zYS{VxS0kzu(-2mfO{^b5v{k$Z0@&7616Pc@3DQd7?XWoG&1garFj3$>og&3^1B3=aCF%lt zxF%zqto4)v?k!lKy&K^XJ?G4Rde@a~QaLb{M~%Q&Al1F{Uoth@0fO8q0P#gPJN%ruuiNkZm3V}>SA^ag zZq;mwZl?GnDoyD>U2(5ar)QUSNIugh&N?{Mrjzx_iPf7r>K{aITHhJ}{7V;X`(rQ8 zF5ip%hQUlz#BxvU?Wwo?TSlekM^vnvzz^Jn>kdBn&1f_AC6)=V%m^Paai`n{%F`=F z)JEd0@N7MHLO)A_#(O^_hj_Y;xo!wK69=S82Upd0w{{HIuEy`hz pLbpw~1r9a %uN<#%p1=p@s$CYrC) zo~n&|9Njd^vwO~Ang^9&ZHcd=@>+{g9gY@LVzUejyM`Al*6UkgTW{*+!AeCleo J!hW%3R$AOq-|E z&WSsAc4Zy-6O@SlH|(%#+m8 x1!w5tPS)d2 zFr}jIhQ;-qb2@o3`W~2Njjy=8J#|5v_npAqG4{BVPu|TJIh;W5p_P` ?5l!b7X*Z)SN=0N%+z#FJR@dv(vFZB%Y(dNxzuNVe5)1KcN$x| zr`F3ug!cFBHxYz!FTI}~wYET4M*pV3<>EVa{*Y=FhswNvJ&eusI_AiD_Dj<(Oo{EA zZwRKzk7wh+DoFaxKtSN~sK66J`=t|b&jg14^b9~7!TUGYZYrZG9}+@Kzy{gTb6Oz- zk=jVRnuIFIbWC{~ym^9qiPpQ r!IGofZWuSe8wXbQrS s-E@?XvZI|(ydQ3A(>JK?X}H!5k0j(E$J zYxR9^*gZtP1P-?^L2ZgJN<~F>E%admPYcndOI$5A0(n3_)MTUWjpE>;lGd9qoV%Wd zW|($e$CbH!hD-Q~6RCBSa#WGxGVO=$5Rd9Nou$_0*S6bX+e&Iq2)WAheiUY|9iz+v zD&HD{|HEwYv9)>%M#gqjgn_T)z8wi@-XR{hFQhW^M=u LrgZkz#q^S~LX-|e?++Y&cT>Oggz()sp0+ciQvF-V$-7++i9F909@lu2&EPMM zI=#~)*a=;H0##=tc2`QSi;Dm?9^IK3Ug|TZM{#n?2n`!N5*)1l@0+-^pU}ze#VdpQ zsN--rWu3>+KcjT``L&{@vP6;5P}8^S{H;B&?g8+?;$xx7@Zy)4cd1q7SYhYAMds=o6~PI;oa4b?RJv+ N-J8Mbg&&h#|z}D{%tW_JTjY63)dx3T_j+DWGU#cdJ zsA6aLZK=FU6M)oEs$W(*vR++a(K&sz*|W7ZYO`9S)M!=_)^EFFj?Y8J>oKr+<0-du zJGTU}PU!N4z3$lY3#~>Y7gjbzX9Aax;#(%4K2?PWkv`O~3KXMNC(OksR9DleIrMhI zU)%Jt82P1KE_zwzS2DP`gK2*vFkgC)gqt!ZhCo^ab z)jk|K@p?y|ds6G=p3@0cywRkg8tWyVgcakN2VKt;eC75!QNNWB&8(Q`<#*&{fv1BG zY)8#vMNuY RLcn^3ot4mNv0J JNtzMwRuT7u z7 <`DyNoN3B2qp!Z~6phhzShbu;3ABIT1@RboXJ^nL_8;UWUd`J z;!0xmRN;04eVAt3+03_wS0{y#LhK>d&Nd*2Y_EeDHTluLpsjGpVB=a>9fDawjLhnd z3A`O2mt=fYFWuw&Johf;;V1yHh|wNEy_&7X(P&gAf&2*&!J-}Z9(P^u|L&ICh<528 zXbi`(Tc>BZzh%gGxJ )sY zA*HvHpjWpmE@eEpSIGTeyz_Q#uVI7{UC66^5PAFPW!A1Qd+LLDV|rbdNu#2SET4FY zgwA|P1NoOJag3YSvp+&O*r%->-I5EQn@mnGffU@&bTGGLI2c(R)8z9%Fk6j^UtX(> z;QYm>;`$rRSVbk 3Y;r-~)sZ+0 zh^ Z 4JU+GF-<3Nc@&tU*|07I=>4hjQ6BGUK#M#MQm2VIgPiIymFMOZy}e4 zK-PS@+AT|(m=`wE569-kOd-7_*kBIrWn|csr5OL{_~^^x=7qOB)%T-wYOZrjl+P$= z<(R7!x}~9@LChzfhKP?X^`rqL+GqW @`N#bkW6+x>9xg z-((K-`o%BAbr&n{hmi53TZXr$&n)tsQQP!E?%zCOZRXF`HtZs1n7mu4A5@a=fv~0O zU)pjRhK=D$sb&YCe;!4SdnUt{;m4-TWqDtsi`Tou*~DDw*T;;gY!-U?GloQk&yToW ztkjS>6(I8)XPQKocX<4m8uE%i5n}wpV70BI;&se{UGFE4QlBmGdh(k55E!Wa!RxV* zTv1Kj2|L08`}K>aqwnW3-~Ic3d-vlJy$&YX5)bDa6C!p$#A(UM0JeQ!GxtP$Uc0wH z4RJXkhSg4Eb#rZw=XTMUV&GKMuvQ@7 z@uvMod+_aap>8I9M#63Nm5q$uC}_u(k#~6PJERI_hF5qO5ZWQ*k8udE{p-C;) d)ubeb(F(-d)x7r2BSMFApjz!)DABfs$9db^n2pUQ^VKh9?KwjNB40;*b6Dxir57 zIYwrJwDy4}CAsI{bo2ZSL3O46h{=N?L2WVXCe%hB&zZ+vr%~KUcUGf3`6~-=@p?8@ zb9F1d*g5;$o)*G)#CM-G{=+|#xA55Eves$17?3Hzwi-0N^jpkMn@`%g!0s?`e(+zl zqDMM7Q)y_mZX~**#6V&;%|JC~PGM{zEx*J|F@kiN4}VgZ{PfB-q-(-gYZ84Umb2YO z%xvkF=Z?mK?XmDjW0$-;>Nwf> AcACYu#=Was+LC<=?_Yj zZ<<( {Vsj6}Jn}UxUA(&ZmrNj^RD+uA3Z!$`?S4)1 9VQ`)V8JaBlY5=`o>E0ZthC|2Hw z%By+Sy-g4|jJGzpqY!IIk`ZBgP# # za>?owaV*PZ0~@-`%4KfC#(L1mY0|aHe)1ocV6-M3(SuP{@*LP42hzbU*+rjti7P(Z zoOYHYIT+D1#b2E*_?Ehl$f*O_>yOj@hWo1=+ytg8zU-NDW-RGUp#5@Y8~42`4~gaT z(srh5n;jLSTbcjB*l`Ww&Bfm%ebFLRF!D`-;#R=3xZk1TUK*P$nfTU6>sIh i@> z27vSQk%GETaoyET2F*kVu#fwXq0U>)`>hyG62 o5q!U^UfUxNRBLEYKM zf9v0>`rjf|j$(g5Q?~%Q{ORP`tEYI=krr7e_|tWEUMp#39ZaX|+EMimQ_rxL)55jb zd+s&2WV8l8MV(BG%GXCn?NnV=#+WWv7*i79K%|08-BWoDgXRm>o6)GGeGP6QqMaj_ ztQ%TKhE`tiguJp@djIC@=ftSp-Nh)bSf;hVjXy}fn*^VxB^Vb0)cwWawe=HUD8$#k zdp &Vr#b*SC_d&U#J!3)N<-W(u&tTou%kzAt$`(hhazq| %gl0qxPUN2VH`x1+U1 zzPOFVopc= I< zn4vuieg!l-5ngN_pRD7A+b9;}h`|5Y`4u!6KbQW}r8XWM>S{hsR9hxjE0Gq-xG#Bb zBkSwIX(m~614V!CopaJ@NJs4GWyTWUAZ8*RD=5qXd?sbbJd`T54lM>WHev44#{rG> zuPIu<>um0mhufrH=x)$^CP`0H?ZoqlcNkpnY1&LkMy((} R z656|TMb@S4dP)A#nh>bxUgXL58E%-Z7zt#t3>xd^6;X~y!)-2^{y+%H*1R~9zsmPK z(Wjf#q`+MedmZhd>-DDNLyUID-iHiRB2G2-0tRvyvFyERc<&f|=`(u)Wmah()`FYZ zjy~R9%SAr@gecHU>v<&}T@kO%(suHd<8F)5akHN514o0Cjs3qWPS%ZDF`+%xuuo$d zA9zQq;~B0wJ=!$xxao$(rSfF>F$q|NSTsDdJ+r9B`~iU^K1Aa!UOnZOlhk05AxzE@ zWrd!!p}(Cy`SnqD9dSBcx?=rEfR!=sAPqIfi@az|QSjImCUA^AVf{)ZRG0J(eWW{& z_0Rt94Dy)qZ|k8!68)BcVhMiHQaFtNstWXs(6$JDSSLQ6Vhz3M6}RF;q#VbR&IBCi zVI0ZtSQX(jEUfJyMiym^%aB0}w!JHGf-|;Kk`-^evOM{%8xId?-utC?K(hOToHN_x zR(svoeeDgX*jQsFgq}dvC-2@zt^%feGsu*9PBO(a-0^AtFRPvKQ2IV6d_9gBQV15q zznc>Gt29yI)%L5mh; +DiN~UV= z6>|WcaD#|U>VXJk#Tk2qMbnRhAW3Rb3vTke|Io;5$`DqH8r}da0VrQv5f6PMZo*@z z?F6Tcn=OWDk%xnXGeGV_Ub(9uC= o2bFt4^DQ7B%aEKi&dCiZ4AFdd@keLaXeJpVR zW?E&wTmer5q7eNYO9sU8OBw %2UPlD zg~r`RbA&? |MxH3fJQz$N|(IhpVk zCpQQ~&KhHX2~1y2nHEBR7Sqb@0afn04+bH3bza>$*Lm#gt;tYaLz+%&?XjLe>FJMj zDFGx`ksaUk5nnpouM9woouLy*^CZs#E`cwxREx2E$r2kShDG7d@hk^1|D3~-97P@? zbuy>7LLZRyM>zPDX$C=sIv4_ZP_M39xnhP$ zNz&RWv{Xs)L34bYS|&U|)_F3EAOH)l2qP6?Gb)=OGJvF9@QPF{pY0Ha`nadNLXZBn z3MQJIm> J7_PGkfTt5~H~X^cByaLaA% zrj_4~&^znR$DU_+0JTi@Z;%d!ITsX~j}B!$BK*((dzIy3cdAc-E6Z*vpKY)hOy=^Q zy4$~xWbVk|j5^}pa9*Ci*--CIRafW(O$TvS^BbQJy5axs9p2((Ru(RrIyU45Z|3Sg z)p6>YZ&5oZI>BXNMaks(Y_JRe AzF?E3xy%`o5j-3=bBoY@3Ad>)Q* zILe2t1RN}#P$^kHe>~8n`jIiB2IW{T_fKa^@|7mExo0erfBwbB9VQO%pTg#sNyvKkNHw?X`i}L!9OB>cvN!GqMc|y-N*St z-)?o%R($VeCglmyG{~pA?WfN_Fe|AVzG9~XrkQNgCEf9bhqTINr6Oe+XyJkOWxj)D zF&pgqc}Hj0Ns9y>9SXi-#{?!g6{y;xnvRQ6F{9h5 z7pCI>_W5{zKW7jf^d~LgN@{0hj`?adQ|R1cz^D=|5##fn)t5|I)5X!@^jC^#u(Hfu zw3bTH S7C#|MVPeh;3!LooNr9M z{K7WeKr$|S{%}42WcgBg+0x^cUTVjBbO>!+On%2v?wdl%v^`Y;qemSuf>VYrC|N3q z0glSt+tzC!V%@0V;COn`=M;b=huG32$j2Nf37jkvMhwz~xMEx88y78j?piUm=m(=n z mrSmC9!{tscS)3znyuymuCyVq(gtSgZbZE+MI%hvSsS6 zGti^ai)!@;l7Eh~7Q%nthj)L E>@plg-ZZg >A4yjm)$dv-%~=N z&*S4 R75nq!cFhowieFCMgn(@;t^8#_%e=i)~l1h^Zd?7nZC>^VR>15v` z=W}aUbHTTCu)6Y}4;$h?YQcj8>9+R$CM!)-Fr#$C$Jbdqo8__crxCtQZd!KCjOVNb z%cB)4?pIt#+&H^R JxJWAj>=^@&bWUsSc+xpjkeScPM3A+e9+Jg=$#1=~}tXA~?Gj?mktC{eLUx=)3 zya9_enhPS-!I$B~M8HjOaoLOasNI{eK57r3m29E@N5u%Mx=_8CTJ@6r30rc+Obggu zlw>YPdeOy^nTnzP^^CZ S03(=z2F$ SO+Ju$v@ETl6l)YgB tgeou?VHn`?)@?FwkSB-yOsKE%Y2Jf2yTI+DkdqHcK)%76e Ka_6)@SAh3Y0yjI8=3OdbQYeu2w5S1BGZ@DG=9liCN5p}+h%tW zSD;56I<5XnUQ~npr|CU;F=*)Smuw8;g;ITu4IR;Osiua@>TSBs_r$v7O!!=Pgy~2e z@6#eK5FEW7>6zSH7-{3I5uxW>!)&(3bOxCU1<2bx7HVY=z2m;(w4Ry5&DRq$iE(Qi z^3`th-VaZSV-XKMGY$BbJ}So!zTpG}XdTqJ$cHE#`}M|ax<@(LEKSlhT)pdWy)eq4 z xHN!em`uEA7$zo80LBMRYA7Hw{fJRed0k{w}4=wDWDd=QqJ$w ztN~R(+uNq@el=eg%5(pdzPsJt>x?zTUFeBXH)h6yx({6DU;6!M7FhS?kYDu}S4MTw zp1)0>DLdntJ`-l6@K%Q=y^Lg5V|MmV{ACGxAMNe$A6er 0~Hc?UsIF`!l24*ZqKJ+fJnY4DuET>YVx3{a(p8Cl ^2uJN3{ zVX|;v!1!5fQ6cB{p!&O@&v6@PiCfkc4a-qjpEE^ftl7J9@Uu<>whKE_hPMm(W)lnY z>a&qNH8~t06K&Zc#0+YSduP{E%a?6I;KnY&Fm?PrpFdyb7zeEhtbMJma=93osG*UP zdH5p{+|}5jdLlCyy4)-P?^G8!Qz3%8oGH!exCt3GERAs@JrLI(i?l797sY H|aI;ge^zVUKsEoBRvh* zYKnYjd%Qa@ytk=Y=N7(SMmphf2c>$+E9s(Ki}SFRS05>#G*Fo%E>U}3H>_C2M?!m7 z5%@OBm<{>xRVE5 KAvY==(F9Lbk3GJL+y>sq)rq%JfIpoXjMb**xQIb#AGZ zr1G+(E%N|(2u7JH9{%_XY~63p1jhJ-&_|fyPuVO?P`kr&fi)ULjTNqjT5p|uRCmO; z_uFnqAe<;}p^!&!C?KSDG4A0kK=LV$`gx}?_@KULK?`WxT<^0HJO JxQ|Qb!2`>z@_o4FxK+DKW^+h5*mcT080_+nyE0 zMJ;E)!`~RUk;r1Y7i)WyxrYJGc_GCtKHyFrma(zo(=)n?d0+Vs#t=!nOU&|;^G{Cc z8F_!Y#IDuf7ByQg4|%sZ-}zVKeruL$3nqCP7UY}BMlheb;) z4R(3e*7cdVMqQ{s__h>mWs)Q8^eJh}t9b3cY#WL%(p4 >1<(t`KvwR z*97iEsHer^GVTi0{KN*xADubi)|+^&I&r%STN!(L?2&(r5hbj!r!F$?eGEKZ(9weh z9hxrxm<(+NPf7a1n%?=24V8C#aeJY?>SH%X=42W{@*0bpb5Fx}o4h20?@3~7CWO0c zD>T8TTTRJl$-2;3ZUMVd(L;ApF<$F>{M8>mchx#fTCdk^8=s3!J>#y$S2VLe#wk$j zk+$B0n{d L$dFmV+g`|%jGgMa8d~1Dzm GL z?x@pN;?;BUDPQT>j00msO8a6T@LCA{GwnltpVPboItsT4gt2`?uSr+Gt=jql%H^_# zjz5Myf>57BXY fClX=S8ZaX|e_gU#w^S_&mf^$Jv6SYse6uS`~9L?aXJ*y_bqO?f) z9YVR$^r&b5)mRS~x$-X J2|#_DJ#QHZkX*I+-2i)%QF{I%AENTL*Dw~^0LOXJSMxp{b}Ovj i {a0FR+mvxafVlMjao$=7%z)%m@vNrGl*F zBlfu)X@>h*HtmlzmZY9a;RTH7=D;0;nGyE4!5@`E>s;|M6Wo9U$>|3uT5b`ms+bp5 zFd-lvcEGV7f?yaDzHB}@y~{I^+)5MabP#GUN0@1TlO%k(%#DIyp?QS*9~vNqk6zfN za9q{dmB!vvODO9xo_b_7o s~MK5hj{^L`&xG*)1L9r?`o2D#jir>c}Yqs<-+H^`rYL8 zb?WgDxwS3h-}Cw~w>y(@u|>5la(`C>dkCW8!>#n2&1Sin`M82)w;mEW^4w=eL9f`^ ztq6fU+JDBEojYT#!_>?ga0~C;yEo_Gt#ZokfI%3gpV%!@aNR2?zM6R=9aaRtrVRio z=FQ#gFEx?ao#L+Bn*=nj^4TpA*+)!Y*PUfDmU=HCdJT=A@LQZ^GaTq_JbdXteXtp3 z7Ostc7FKwY{OYIDtiS!!dWP$tZ0b$u`y(`tjCk-}VET}U-(_|Gjp((=MW1GYVS}du z&l@yoFFnEa&%cAK7B$9iXFj?B%lj{^_ddUe(_63VUl^nNzoe+AZBy7D6C&YWZEAZm zM$6_N4ICZqRsO1n(o^L=Gr}yI;N4Jho}h)m+LOC?m9PX{b>B%Z(i4p>t{?{HaFN=k zg^^p@e!?R;y!1`aGAp!CF5}PUq6QGsTij?S*4o$1hKjWH>#tdNJ9wpI_)|) V z>pkbOyq%H*Nn6)+PeO5Oe!OG3R~XhIW_`wEd``b6;L5eHXXaPRrQLJ5+MStn?@yFR z&Qoc0bX3FEsgNdOqQaKd UY9Mg#8N>$xS#2x#*sCDuJZ+AB7;i3g(zK~@OZ^OAI5K_m*Z$F=jt z<8Cos%Y0eaRE}&27~t~h?iL#gmxP}B$wzIN8CUm%i&_`@u`Yg0DuM51b$4;8UpC9& z1*G`VfbkDD2U0COGJxnWvU;oE5TCSEw{sLxB$S^x^a8-SK+S*pzv5_}@^xweHEi3T zHSjlx9^-S<*kCOdl*#x3&pl;5!(JM1>u R@k+{9`tz?pH`7)`bfmUWEE~ z{n7c-9f;8a%&U3Rf;QgYkivcEWTg-vZ!`h1D#jqhblr^H&m_#AzU7Y?c|GwBpAmJv zFCI_m>Ia `o1jOjURrb{0Mh+ z2tP%)@=TpnXAgeY$X=Uq K74I=kHtPMIE{FVn6wuF9i{cro#dsYiK=j3qic@#s{zagAY+Ev YQpEnRJALNuPviq feAOy<-zca|-fR92U@yEl-GR|C7^0_csS zIqvmTcUrQ nMQa_(W7*d(_`P+H#aV+&iJ} zC~Ui$0kdB|K9`G`*@9PGb%!~8Gg=R>XZuTQaetY}2=oolWMg~FrhotL^O$7h`1v|3 zuZYfrhk(bXYsMk1g@`neyyQ;~%D{E~;J*xe>cbFsZDC^W>@gZ3d+>EHdr7XUv2OT* z{&L DB}J0TmQE z#OFgB0Q3z8E9!Nlh_aV$+oFANT4G*!>lz~3c^0@4&DSFB%EsAKyrt2Xj4Y_S&TVru z&>@K6VWX(a7vDJOLl$4Ou+KQzo90#(+GY5vLs0QUOS$78YptG@hVHNUh&TWKeiU|{ zN+NVAcYK*EvkP53@fXMHQn ^1a9aGy#rJHs`MhB{zCaG?J~RBC ze|L(mK8OEO5D+~GdK=}n%F7R0`e#bM3M(l ;WS;lV ^Sf=0y!C1+V(w1bPdBeh8% zr|^`qZ6$kkVDYkZ)sN583XYOuEdf0KJ?tA&2lt&1@A%%I5cz@6Yp)vLm(TpoGR49w zuG4?;RrN+rfArfSBD0Y$H-i(nE1$xek`lpV>pOw?>vnS<)3?~CE17q`B7gTye~b!1 z7_;ly;sWAnpITZuw}ZD!pb4O?bfHX7hT+*QzS@so9izTTgN@2UpLo@jI90XKidp#5 z^Lw9!u#4%)NqRzIqtN^_@Xx>&06n{y{X##|-C{|OW849pZ=Px1^W&T!$B)Ln&uhQb zRvZLBP*180MuO4;DI5}yjT20^9~ZBvEhzhd1KXr_li+4u$f0gB@L0BuFe}F^aAg;l z7~XA%?mr=)QTNn
!P*`=fXeR$4%kzWI zTyou1C8_xE1 _|ZL%PDwSO0LegFI9;Zh(876z xBWsX z)q*&j0-RseIE>2WjXqjhy4gqcqoSp?#ASLz7XyF>do! 1=_b0^YHF==tmlXe{Pg4xk0OwFX`qapzvRPOqs=x z?XPn*t#&9=JM=FK!DG{t-m_d27lGT{7n$}yO+>YzbAPl|ykhVYzpNjfLl>}}?3Dhz zVeI%tJ@BF~an*KfOP+?7cF}5}9ebc<9;o)TL+T9jR@r;_yMoT>lrs2FH;GU7ZMtqZ zlbf~_Ck*6a`Ekf*yy9O#pVq{925;d}xpE$_-*Kaa{B2wEocxR)*baOsJ_#lN=q7pB zwRPrewR0I_PJZ^$GBvN{t92%RsXyf0mj0kaJ*^3oc(N@0DrEA(oOA_$wZNahTbkvC zkJrO{gBDQaW%ONrq&Ku*@^|}^o#SLr47VJUV@BRr^W5dF1>qrI^exbm@7Ny@*Ww}g zY+0$ZmW^Ys@<8LXUa#sm`J6O{X7$melCrmKl25#V?#M-6%(LreQ8ju-J@~f#sfW7_ zLq{XG K&dU{l>M`P<1MR1Y+z#!AYIE!U_2*4=0CLOi@7Q7ZM#+3)%DiJ z`g4y0`sg+Nw{B3*zSFPlr*rBs&T(CB7!TuTS_q@R^gO&5ubjW3ukDa}6JL2PJ)|y# z6R$gmJsZj w)cvzA{hZ}pzx6A6>xrq# z-uQ-#$AW`D&Z}@;ygcDgS)_}DFX5LZnpd|oUzQ7YC(m7 oF3o=T7iWC znZzj`-j!Scne_2wz;IPv@j9>5sIB 3}wgwJFN;qk|e!5h0X)r8M!V)c&KP7zf+x(lqYw_cA zPxPq6@|A_#G7LWlP5Y?Yox0k3)a%Yzh^gP5xAEDKBiq1E(oNbC{XS0~ s6dpRP3@!^7_1HXYwm zzN!B7v6f4C)E8x wSgtUFWfxPvx{6LEl$znT$wqyz3IuBHypx$_cI&+ipc|5{=K))kL*?I-E z=yDfLEFg%B^6Lf?^q2lbdgIH8?~fXLhab?94#ozfGv=ax%3Xjy^R%BhAS2q#7RV`- zwZ|*)* =^V}1nHSml$)$ @kQ7a &-g~N T3Ofn5gUdrbdr%wRZW%-~HByeCr7?7QI>k1MnpH*UuB+@45AdE&6v3Od1)e zeYb?a3E-eO=lxp|Ey6e;w6ojMC+W0 UK5(awYmy6jo6g8U z{wR-iDsa*+KCaYx`jgs3-_dX5r|nN@8A?XAk3Qlpb$9S)+u9bEapO-r`;}QvO!dXu z^p)WgvJTzGCBL;EQ?BK^H{J;OrEB8e^dN(M?DRYL^}q|>k{0mFr-i%tD;~ ^F){ z^@mTW4E>fZa*?F+kx~9!ZH!M(VFrd4b)0< (2v+L&hQPd)=%nLp#s_M$0$7eBx=Ij?Zc0yy|<-EZ0e>8bh_ z4)USv0QkIV`y77bTq@sV?kL~tSIdcqaxOW@S1)FpcG$GReex^GSIb8{op%|-fg3&` zKad@PYvhoOx}hO@lu@+Drrlq9MIX1(b+o4~ r=Fl!=BSpN_9h+M z2{fy(e;(u;4Cxzc2Rh0Dfpg?G&kf~mBVW~9SD1@|zwt@Q(B;y9`HpB-xpV@)^3{56 ziwE^99#=W)WUB_{+^~ss>l>Ar7j$fC%o4BEh2vH@g2sc*7Cuw)HEYaXT!)tV`(_ zG77iigg2q2M=fSWXWA>*CoR*ok5R_q|4Gi>SG-8y<-?g5Ge1HO0`)uNZ;w6Hd+Mj^ zI6v^B_~38&m;84=ee*%U8;Jzz9sQ*<+hFoq-@w7cIeY=S7Ql5~M}GC03tzno{paTi z@b}#GBXLZ$(-AAF__cvqh&Es$noo@oAa$-mwgQ96sRp7BfUK+j`~U?Pvr0S)wps8t z4e;Y9$LOPg$ccronXDtQl7@mNdCj1$>rB4GN6QqvYEd{7N}Ma$r5j9&6tEa5@w60r zG;RMDNE3z}z{K eL`X~-kuj K+%h^iTRU z_<%g(&o(-BdI$MEWRY%Chp?e^X}u}7)!q{d_ucKA25mTbpvvo7K3@IF8+5UCYg?#4 zbdqws%i`j%?IRs2?u!SOF-Pj>C5^Y`l@99K{4Tj>are=2>72$k5u?s)DC>5VO?}d4 z&QH81-O)oy+`0lUD8nSVb=NqATR2Kiw-qk+mt0dmILwD}1y8MKwX@u*E8O%s !IX7hKC6A#t?pzHIpJL-zR{ta;a4j8hc zEqqIH3tLE5 x_AA}22_KBQiH)&k$xb;d@3b!SCKYMWK9C9hd~<*~ZRuk3E`M}> zqJJ#jI3`x?RjjuRv}qrUCUif%Pi()!&c#3EKtJU#_p!cF-!Qtu5j?7G;*bn%r>FlB zdy-SSud*4(B#Zo*w4{sbcbzu{n&+~Wc#v*cUp3Wt)ydDygW6l4&>vz9e(N!le&1!K zpW@B^t8c}p9wwbMOsn((p2iPWy?I>nbh&kkHlNU5Qf@AM=reg@azpqIb=|mS3*y}1 zwm63^+n&uEc?e$RvpV;jq3i`cyB}k1a*fByc`&C1a6j$EtI+-0GoSwU!uL;q{Ho7? z{rdR`*06^IvIznF+I;9ye0#K;7_aR|2u_?3L#HTeO)(OI3d zUi{BuJI{l!mFx~1WSJ5pj>3rnZYE!&8{sXQx=y)XkhhO4|KMHx>6`o&9{7tVEx_T4 z*OmdvPkdE>4@xPECOylRFD>qBKsw6HcFn`qk8My;xam`*KXsI|<>16rgFJL0ebuqr zDPE#q;TwP4{4HLh&iVu&({J?RGVp=e5Dxfkf@H-cacru^?{PO5cwKJ2fR 8XkO7S4~hS+y;@VA3z2>+_ZyHcGn-XWlrGpQewvpX9bp z#QRL_TK=*R< =!bj4EarZU4y&$ELzlw?9&t7w$BHEG}=GMMrea}*6-3S7Ytoa zJG^@>Al|ng9D8-1bz#4eSNec1^c{rOLF3AplV86nt7yM1BV_@8*73T^=jjyXR=>>E zqqo6@+> @vr$^<%k +=FOiz*Sx`WDvtHrJ@b7@Ct)M`Wx?cj z>dT9~(B(kXwO&Ie(HU9NXJG@ilgw#H@grRz-Zd|hUjYBB^j5s`PqQG_N-pIx*@}Ha z23*Vbq{ZvAUDfAi{-B3C){QxQo21&yH_Wd={$ZZX8-0A*S{Gg4wka7S9zrhI)cMQt zW7*c?YK>Rf$2ohCRs215^K83~kH)L}s!RSYbKxs{rVhg9MVB~rY@W!2#vNT-2F9c2 zk)4OAvx6VeLhj~y^21yKJ-EE-G{A tI)rH zz5@L{x0zhgfppggN4z%BFi(m(m_=fk!Iy!Efv*As!KQ$6qGPhq0(cS`9NG9$FMf7A z;ZhJH8Hg4ZQ58;1Rt*)X3Qz~S2gbbfWKbW;y6CbTiC29xaS6W?RpQo@BGDwjN(DjJ z$pp9r*Yy30hk()#`IlVcWAWT=lh4!_6B6a`vcP%6(?=z%vZH+Dvs|y=>1lW4Lx1bs z@{P=`8}Yn(>ub@;@|++Cu2r_$oN^=|YA=~XrUg}o8%4Vf`EH%S4z`8scYA{-=~(#5 z4&c2f9UVjRmp|i!8u&1ng8%X3UKHh^lyYtQsgLbLwh0C?pG!8yjPgRpqhN5?06R1s z?~N<_)YG0WCvdRd*BP(o-@eK6ZeyKJ9%=nr4qQX8%^T$~UgH_Q2QP8A9K!MHcmU5w zuIql9jIb?vx`yYVGxCWS>qd*X!h^*_^89psM@}konx?=97p ^=0}n$#-CiH`I_9+tkO58F^W z@9UK3@Eh>}-zF^Hm{(Rm(}wKEf7W*!+9=Cp_dd(E(r3|}#YOT&IQYzkqU7<7VYLli ztXPx{qfMRXb@MD _F)-fRsMYTb$gAo;>|ZVvmN;hfZVUn+u-@MHDYJRBgN6e zSrD|ztK*V*4xZqrbuPO-0r{ITL^P7e&BwCGvL$J@yp_M%UdIPJ)UoWh^U-)_ qIb znrtfxFp<`E2SC=deA;FEYQxu}JNbY&IJ@t9ci+aHI3r=cb=L?1mBHrohu{m)V2?y3 za6bpHCin*P$Tray?HRzWXX!{u# nq;XK6SR+ z2$$Pf=l6E= fsUC2Q-rpx0$CGMRz9HU)e@Bv0ZQjXO~S~ z*na4-{A@e*&4>Ag@1;y}PQ6td`RMS`-wWXR%TGuF2hNA`vFVI;U-kJ*|MAUxU-)h1 zQ!aMjv{maS$|kqj4<~;JU+P4(Z-BnY0beg@kmtgdG1kLZA7XCi8-M5FiuPZ%Tlj_Z zkZ;>V=MVn3uF-brQHSj}hdgsbYT*E{XH3AqV+>*0$@4YGLcsFUTgCFUPnn8JHFeB5 zZZ>Z5w)!qW*~M#0fHCXKKD)ohv3nhGjZYq97zBnKqq80_Jogcv8FzxNa3no#(*MF8 z?WS(%XWhOY7~7t8)_vx+4e5g?J>{a^=8T)+ftssp&$sW8A8IqiI)<-5Yw=ru0;&Hj z62JP4k7EhyE6_h5!TOe)@0!$639SOPoQtnM_d-nzWIYv*r?VaWnk+kE%>YIRodnTP zWunFU#^+b7wRlE75(Vn=RVoFV0*XO00f(UXYo8D8n;(|N`R4Zs`jT&CjJCt07Z)zC zKA(K`SFCy6b(zRxu&I5~rc6w(+Ui=9h$noD@3;e}B%DuHZtYp-@{h5fUS&Glr5!*A zw$8!&qHVJ6?w{qh &$tH9riV6nnSrzVn(rwK{-hI4p!8%@Pq~(C zJH=1k@ZV*GJSU8`L++7Da ^qw!Sx;ip;Vf%@ovJRjau zPt>b)K>X6-l&KxTIX&%o`g`@;WsuSO)Pk|g+Mc$l?QF1ZkDF4m+sK!8#D?)Vbj5A= zMV)kWFRyd?0igNR6ZH1;&+9)`CVTI(bOB{g9iDVS2XB;FKlIyz3-+0O&5sV^I`Q~= z>@$3@jpA;uUj)^$&%z 38Y?1Bm)XpQ&deXc{%hNQS_DIr$rhCZVLQJqBYBIHJev zuGd5Z?Z5+Z9kBQrSyW%T2Oit|9AF7OF@p~+*&Be%ek8i0Q|IU4Ab=(o|E;ehDNoY= z;NZJ)ZMp~F9N a=hgJvR@!!NMc$ z)3oIOYe6RZvRlvze&pN3SJ(x4=JPyWgOu(w7ry7FNXmLb`H*7e6?Q5cQAYJ2ot<$5 zUZ-8R1yARb>!hvR_*G75C=Cz26RIBj=%n%arlreW@5OEU0YE+uz0)V>8v4ons5r9y zlAdvPyRry*hUdzMW9*= ^M=72^ulI2pGaGJ@tSrpj_Egh(dWM8p&W6( z#)<*<=QTA>8rJ=eZ{b#*^37{_gxz-g8L!$-j5pqp(z*QnKL0!YUG=5+zxkCRWlw*% z)LqK@I)4F1hC9wGUv@sBc_+?3z97GRk_+6CyX9m%=}Y=KaWB5457Iie-5%}kzVHNS zpE!t-z}(I{+vUW=x|Yv!?VC04v9rcN-|!(wmy4gg7B0aD (|c{;P1I%VoHaar@ED}%F%RP4ut`#9eoxv)t3WM?%f|a;Pf$I zO#qoL1}9B8=;$3V3Pj@TfOD|vm1w &+6+%806TxEV)8fLfS=q^s(iX?>+cn`=+laS1r0(fABJJwiTbgwqHvQ z%ee7mAKItB6xueb@~wN*2FM1djRc;Ig2(m5QSyZih0|riv&-hs;HY)AVf^YVBXh z^#xbR3OV5mYcVMpy1pKt>l~sw;qj#O9`D8_{Zn1g8UGg#jpI7~Q0L;`xP`@S0oz~i zIL`KW$jN!iQ=r@<9_Tyd4R+XZZCv1OuHy}*I}aPOf0m!uPtaOw)4gab%mu`&VsUIR zeRZBZK9xoL#v$MPA|D*P^r4#}IHJA%YTGsW)Oju_ZhY}P?Ro{z+187Pzvt%!@%<+5 zXS;e#(b4$9$5nM%Ub4m;HHhu^=%ir$?q)mbitQ)woOa#-f4P@W{pe2ZpW4)M)4+DL zQ|ZxPeSzmade9A=Y_t0)2BkOn_TYKTM~Hv?;m#BII(53+4)m@q?JU{8?%Vu5= z<(w=7y(c?MW&r(c`6G_V6M6{eMK9JcSjXr?nfh}`z4-m8H&^vaH2wzguiyXMPlSJ- z0Dsdhoo5_qCXBjkuj?96>ztFBc1k$-RnAG*RnTC iS5+&%ytqTtSC4EvF{-nuKK%Ag`?_Z;|rccFs8& zXg;HU EX=T{? z!CnWxo#RegzSgUxenRBBE6$VeVg%KRuj(U)hBkC+JzCGIR~_)aThg3(_a3|$TyGs! zIj_`?_TD#;HjKU$7cbvD#7}g%2$mh=wadjz<9haU^CMqK8(Ba0gPMng9w$#ye?2e3 z^+{*0PhPqlb*YQL=>~X`cF~pn1>`Z{ wI#Y&o{r0P0x$D=eT;J!!C7BY368o7T z+(zYf?SRA}Qp%xza#D6nT!Du>WGy^Ono0&o`_PB@0>9K5Un>K=Ab(HBoOGe1vVF>E ze3nzV@6dJYMn<*eKoquJ=QprS0`ru--68L`gC`%ST@Til$-KLt&aXPAELGN }=C zs244jtDpLMz*+Lpt|wn7Z%<`D64YkeG3IFR?El}u)+_uGv6Ar&+MYN`{yP-Ddi8&7 zJG?*8j&@7_ITjyk&+BOqdiyt|^!Zsx=n1uX(1gT1-}%}ATCebFEwD^a=hW3zkrI4U z)`ree0>-5Jj|`Aow*0G2%eSVjfO_hjV4eAx{jt~2NZh}8Djs&9ya{G~S3Bx5^~%>K zM{dg5WwBU K+rwo=O$KtO+G8c{b%4_JtH$e(&!BqbC$-n+w z8OJ64PEvoy3^&U@+MkfWrH4G1tedZE+9b&D?q#@<`3dtg4dHQn$Fup+P4%{4#gN9- z(0SV3I!Re96ZDw2OL>F$Sd=fhX;XUfTpPdpJk{Gb=}Yv(&C@ILlE#4-WRLiiT`a3^ z_C3k|3>YWL+X*9qws-5r4{u;c$s@U8AK<_kbkaqc-ZE4!f*w#ma NuA&)w;e?~{%=wEGGnR2O_WS`4@;&@LK+93| zWhd$C4Ugru?G-#rhAFQ$o``ijoj2d$%d{n%CYhwg$yVA%GMYcrP}#^ncG1)MyN@Oy z9}BN-3cd-^c7L(I_>>M`%nj;a^=b=wX3_h3zJ4>?b=9uuv8-u2UblU=o*Nji=vz1_ z_uyh1wQD}B{nxrNK3xNMwpUE24WzU2lWN;?Mw_y60dZW^+1ya3Ej8YHQYhM?+tf`j zo|5;d 8h^v+<6+uFL+NtMta)$eiu| zd%z~#@bwMkzv8d>t9CqAz5WE4^_=noq^lw)ySfk)~!2jZruS53} z;7|Bdi{F2LE{1;=z~6F1viNkA{xAfB{aonQz~n#TULVHd-v;hKcF(|wpz~zjf#rc1 z$)x|3k|rNaFf%ZAAOU9&Ofx_s5EP)IHLwO5B)iq;45-H8q}7l~r-L?vnv=8Xw+4tv z9Nnk%h{SmE@&uEhUQN`Apz)LrLcgTZJTmpAOdGe_if2qRRA02twws1&iJsb4UtL?j zo42HW=PeTJQGU|B*ZtG=Sq8WWxAJ2{nPpfyo<0Sn#l_v5?TCf_{>lF4)e~h6-boL9 zrTyo)d_VhWqM_^L`=9vQpba!QnCnJZ11F9h-vt_wVo>UdEdbYtt%BEof~$@lbHFVc zRX4FXzN~yw*VSKi9iyfzT;;RkJM&lYAv)cblb|DZI-Yc-{K@Bvow`9ai`Y9qH4#TF zNmjv$>j{ER*a`WVH^qdDeZIy=oz!uzci-WAVxRcqH{qDTQ-&A)ecI-E=Gl)~Byavq zBW2mLcceDoxCU u@i`>ga_d CZ2F1&z4wj}#%=pg^%Z{Vck0P^;ZDBCo@k49hiuXt+xSKvVotU<&-SG+ z?Z5O1kRIGF`}$lycd^X0pJ>^4k{91VJz?XqPd(xO%I9|d*uVEN 6?V+a==h1(+ zJ9y&&^Hev$%y%n4AloQgqHo|08O}bsR#{xY)}edpKkYVy;adYpozuQr3@04CBrcub zCp+#xGA >iT<`+O}n-9PzvzfD66iOhf5R&+)C%h-C1yUpj&r!Ss()L-(< zt9(@^S;zjRH|J#O;l!zlV)K_WuF0i+uiM;w6B9H~;Qif)Zcll{_xSPX $ic>5q+fEthW&g>OAKpj++ICFQ&Y8K7TqW>so%p nn8 Ns0|Mjx~{>~eoNYrFi1E(jna2`CV?FI3?3T@~`a16kiyzTsQUbS)CnRtz3 zYmgFD0DDn9;rMpoChUM?d7V!%?zVH@$1@r1>pLV~)9kXKCs5$;Et5(1F7}<~QQ#W_p zhR)ir;D6dIm+iOvy~>iThh4|sT@?7UkN92uZ9Ye)k(F@BpZVto)s}dB;z*p5Y4LRM z=#8> M+rU Y%H3_2-o9u* zV=eXA@@&~g=CRB6bMq>^g-3Ot?f3z@2Gx(v@>>L|OF63DoBaTVCvA%D^L+H>wo`kY zk1Pc>cc`-IZ@H9rB(wSo@caBz4+m8F_*K>&wg?_AA0Ty-G22JtyQ)6$H$P>|Zcp6? z?@zFF(`Al}Gj~lJ_R*iV6rLN9U-2&6x?UEgT&P_*F5 K7RG9;P?OH&mjH!Spa{_4S}EuES}zAGVE8L{X5`TDCeSe7N`t3f|7zE z1EP*ffS>)3uft9t4vr(R7(~O12Fz+Zfp_#