From d36d67bd2cff52a18f8276f34c5207a86f84303f Mon Sep 17 00:00:00 2001 From: Willem Oldemans Date: Wed, 27 Jan 2021 08:27:08 +0100 Subject: [PATCH] unit testing --- .vscode/settings.json | 3 +- ...WhatsApp Image 2021-01-13 at 19.46.24.jpeg | Bin 0 -> 108043 bytes lib/JC_Button/src/JC_Button.cpp | 100 ++++++++++++++++ lib/JC_Button/src/JC_Button.h | 111 ++++++++++++++++++ platformio.ini | 8 +- src/board.h | 62 +++++++--- src/buttons.cpp | 8 +- src/buttons.h | 7 +- src/chainGame.cpp | 75 ++++++------ src/chainGame.h | 2 + src/detectled.cpp | 9 +- src/detectled.h | 5 + src/led.cpp | 4 +- src/led.h | 6 +- src/magicSwitchBoard.cpp | 7 +- src/magicSwitchBoard.h | 2 + src/main.cpp | 9 +- src/simpleled.cpp | 4 +- src/simpleled.h | 4 + test/native/test_games.cpp | 12 ++ 20 files changed, 360 insertions(+), 78 deletions(-) create mode 100644 img/WhatsApp Image 2021-01-13 at 19.46.24.jpeg create mode 100644 lib/JC_Button/src/JC_Button.cpp create mode 100644 lib/JC_Button/src/JC_Button.h create mode 100644 test/native/test_games.cpp diff --git a/.vscode/settings.json b/.vscode/settings.json index 2972200..6ff6680 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -44,5 +44,6 @@ "streambuf": "cpp", "cinttypes": "cpp", "typeinfo": "cpp" - } + }, + "cmake.configureOnOpen": true } \ No newline at end of file diff --git a/img/WhatsApp Image 2021-01-13 at 19.46.24.jpeg b/img/WhatsApp Image 2021-01-13 at 19.46.24.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f4f610fc6ed45dfd357c044c4a69050c4c22031d GIT binary patch literal 108043 zcmb5Vdpy(sA3prvOwH!7B&k$0TdkR#<}79?XEPKXl|<=CCrW12hdCscPGW|dL(CyX z$f?N8Fd{ir5>mvd5dB_#@5g;V9{2s`^dcOVb{rdsJIPP@V3Bh0x z1Op$?-}jIWgj}&=o;%OxL#cyi{HK#iz92Q zs}qg4k#+Sb6w2nUraMgZEw&p_^#8pHOioTt9xbn?prEF&p{}9-|NHT`9$JNziC#gK zf#D$dDwxbF*xyEIJ(%kM9?<{ufWc)DvMa!~wf~PV)nCWrVyO@UyaAGohUX~9fd3%` z5Y6cpoD9MH$G9BuGlW24A?C3dI31(HL1Z$nGjfz!Oyv(1H17Og$avyUSod{4n`4J1 zAlgM`&EyhZOj#;p&5@)MsV~;L757^ifHM z6Ydq92{GY(316KzhJ%#re8Iri2~_YEjFb(*9wa--fzgQ+4rC3!Lyp*W6%ay$ z>O-|tq2;XSAY?reTTVJ&=Mo&|r#h~p&*ggg;+5yN+TOHL+0e9~TJGQ?GGraKm1dEH?LHUQ#-*u=q5Xs~Vw0zZR?a*V)9Zo91j z>S`OK*dNPNub+uRaxh%BhMjkU zDn_E|K`CjZlRe)$h1lIQd;ni%?Yng3je##0Q*`S~QM=_K36aUgvf+y1p%(;ee0``8 z%$E`35QYmuSS*PSX*gKJnKUOkG6o4jD{@p((R?jJ7pufjgM`NK(;(R}P^=aM zDvy{z?I!SCXod)Df8}~_@XCENHILgYFP5HyXtg||tapb2e|yE95Iv(;hW?(J9CA{p zZLR~IU({pUiY-S^UlWf`)bAbYo!`9EvKGN+3m}<{g9ntaLnsc0PXtjRp)q_C>J8=A zd6AYTL%GzE2}i-boIJE?#Fmy6`}+8&@=uXj+Q>3d`;AyTM+gIhA~BefMhIefLUdI= zLRJGqN6=`!l;&re2XzAOUE6WLOu!_^g*aX>vF&v1q_Mo#$4KA-Z%_xl`R>9WOmaz5RD5bE7xH(5F|Q_%STW|l;&;`34N5D)Wvaf=HKft z;HP%dk--ydrEm9^q!J--4jPe3o1{RE2|>!!dLfh?Zli7&cQ@?n5y+rQhL8 zqGgky5+3wS6GXojQ_xpJS9&WnAh2@}&kwaP2Uqc4gbzji%9-EWDUhl}<6y&Mt19w2bgA-lav3>SGm z+nz_~5Rg2u`>DLx6IMQQSm;{7?92N_JMK%K4gQX}Vk}64p~<{j#VfDBr5-yN-&yR! z%^|RIAofbloDegUi&}SRLP$OArcS60eRph#Z)=a(EbN|KEo3E}ru5Jt} z|Lq?Z`eI%(@W8-7sjH36SuaaqWol_Uvzxn`3+hYqSoI{wE|iFg%QuQWrD;PlFhue> z1PE#-ZbQM*Az5|OYeg;Poea*uEuj&k$tYzqqtOvTMll&gHng-q7gy(d?a=IB=#J!} zsBkFr_hzo>s{>KFmPo68U7DTlb|`t^XQf5>kxJJp&Hr8s#|w88`tKcJ98KK`BPVRhSqbPna^C%O|tAZ%bV_Z~p$r z{9?<2(%rq$j{I%*0!KM2l4y@aMY*Fmx9!)?Y41G3BZ^-wCcoSoVR!$>Qi69&{8J>4 zm|~-CJDOXXq2#KS!++H-q)WprmMa_lj2(izaI6?XNsItq%Y<_wm_3@vWTt@YHrQy$ z2_W{wy|gRRYY=Vv7| zYXyJj&rz*qBejtT0Wnp%k;EvqMls>4M3;+}@Z3|!R%0)JnyAr`}jRM-Z`aWOC`TfjxyX=u%L z#2SV;iq_(|xz-8>PFS$V*$y>f0RCA02?j3uls6SN% zdmd2)fY{v^U!h!!WYC!~Paj((q^jJwu9!|$j)YMmDvTynSw$v;0uK%&CO5f1VSitD z>NW?@t1q8O_l&;tlJz7awxKbds3d`7b3q=LPXv&+%HCtH;%$g3DMwv8FPWJ7aKLK! z@1Xz^Sehfo`OF4Y6*`21Ah1VFh>Q^M$pS9O7c_*ccap;ppi~rx2@A=jW3vH_lamVA ztdb}ChWG>n$JZ^*0NVGm^?AhP7@iB2&*saK*Oid=R^Df;a(psB{t9(V@bZtuzCFRK zBLi?H-bOI?5|CvLp0BcuYRj%$?RglWD;xFY>Y4WC2#2b#FP5V|Ew#2&A%b$PZQHa! zMHWB_1V{V+Dma+BEN%Jsh<^PpLet*3R*4x3 z7e75UVs>6Y{?9TkKNFV&eH;>x74G=6RGS!nb(wv4TyrBKo6kzF#s0%drzBZUJHOcz>o-3cZA%76pJh8 z3O~tzsr>Q1wZ}ZALw)$y4K<5fEutLd&|xN6pTpwiQ|N zES3{Dig(;C?2DOM2wl*+>AF7m>&#qYu6~K5MEAX>a~4C(na%oAPgNy!=9HyodctI+ z(ns2Ir%%Ko_{vY3C7SLsG)ipd9%AnC2g)vT#`5n;-c~;3BzO!K;zDpD+=+8vq&?gn zq@L3L`Cx13knxH4Hxi3(S(`E{gfx%IT^xw*u><7*lC;Xy4$7GOiTbF*5a zF@}rc>gUpG-BIzQw(!8#u6WVs*O%nW3_Qt@EZj*s_-o<8v@v94i111Y4M9e)`3JKc z8H*jJg$G6uEEqUb%KXR`r)ejiaQJLiX-dvW=^mp3%`d;NWr(`T9EcQ%CB_{gvXwi6 z4cRJW0UiL7u7tF-H#^RmKQe9hXQ3zmRo9Zzp_I8#AeS16adHnoI2KtIHGLxxpx1B2 zj2GT|*=uXGRBfwVMaNC`a>Dc|0O&X@5m4kNMkjbH`P)5y__8b4#apWJ3%%-D!n!bWV{m zpTl9BOguK&IDat*D@Uh;gG^^41m0xZX9Nk3%Xb7ZYE6BExJ3~e29s%AGRnYMOPfJ4 zI9IY)&k*ORpT{6T$b6(XnMcm%Mw0a;!rpNL6REW!FRAOOWJ7%I9@6)#0|{bF(Hmcd zp!Jmdxex6}rmy{KDEIQ_^4ZEQWLagNCp;A*m&oF3iMYn1?&jov2}9vn!v@*rPIRzi z(lY|zDdE@?5edwP!g^=R)7CF*iRsdG6xz1{Z0^!%sm#Mg+Iz7b$P8p!enE)_EG1h+ zzKz(+shX>=#;_Fjf6i^IM#REb$$cr>YvXEeRHA`?@TJHp)#c|**w=Nj;%B4>qfw7t z4=7oc{^#plU_CnZMN)pnw^i)%_(7H4rP@i&O=pf&%*@&-G>9bpk?QNXcGaz~7BkjY zyxXe^LzX# z#yrRLqV($vQ_Vu((f1AC^L2F;m;K&;HY;uYetBfa>P;7BC(NSdwmW>8{XHQm!c~5M z?J_gfGT2|-Z5CRsuJ~u+Y~qWNr|A)g5aapDJVWut=d)e8xwvd{Qkz-J&>e|_-)^$? zeG}Id*YY#lJ@~J>^aTk>o*|Owf&}VFym_Y!Io7mg;sF*?W%xKo?RKBJ_DobnxP6?E zO(Hd}IpPg*GG#eVa2~0#nCiqpF42jQ&*%=Nm4aU7`Wzsp#gEO62#3t7S8w=l$9%&0 z7s)_F$Ct!A*ZkfqBerH-mOOU7lJehUbJLkw#f^q355a*BqlGTXh$WBmZ|oqBgvEZD zP56xOiXT1Oq(gf?m^7R|oL*-7wKKpkou8noO`|i*8I9Q-ax57LYrybLU8~Md*;_29 z;5F`ciymDX-2owO^G&}zeV-`A8NS@g=WRLdJU#Wg@bpCJsAG>wb%?X;fr%ZzXA}Cp zd!hzD7dcPyI`eQg8xTe$ zZ<|42+Cs<^N_?4tv3$s6p=&)Q@pK6f5PLg1kU_BI{*$Sm2BIr4vf_?dQ1t_Rl;e9< z(OX<9_KsnZ5XpBU-RE(H(YGm+tb);~7vg^2mNTi(Jdw^GS=V1ENiV4iYq&j7WXu~I3DXqy6y~Qq@2mbvYJT@M4Z-Klu9P?&r7S0KM59t1xwqmgdHY=Y>Wj# zGn0kGHiaC#sS`H#F{N`9KQY=>IHgnQDbkiMKpKdu){D|hPXab79{96kqI7h@@0sE< zYGJJ~rAIGVx^T5pav-G5T(5c7b=?jNf7jCgY)-L6(iQ6B(x$ZF9ACPB|m}L-Zpk@Tl0)(K|`k9rUXVPsE@*th6*S+;ioogu_GJ_*> zuRheO8qqB4NgJ=(h<>TVcS6Wr{#5OesN|-7d7>vjM!N8O;j4=u`Azdz4)$M#>j$iI ze`o(#$<5frKY{)Fy|20n_9eBfIuH776i|d5WF8yGlbJ)=|I@odoBxZI#BNg?GAIm` zb;Qc9P-Ma%YYK3+!~H2fkT?0CU?2-@ff0aIdker}UaQCSxS5I9H>u-n)%=bS;alU- zIK6z6g+JADV^WV7sebLFyk?U9vpbF@fJ*BcHSh~TZ^A<*>t?@heegDM4_};9Xz^o8ABPH4AV8iZh=gJ$0kaG*(PY>- zD>$T_^Z>5LD?CVY)4?EvvvEMm{mb^`W(fFk2r{JHqDs_oAUYv3$y@}R3A`zYOIU?q zU_8k@I*bVO66pZH&PQ141}K{wcg}+mTv?ZLw-21nM-rj(D$2f0Z4U z3nAqEF;pxTg;lQeC(GI)q7hGQ|M_uAov3E8Z+t+`a9`@7ED`~j2)KVLLN%})_h%^U zW6`GRNBo%f1_rLB7{y`Z;`_3BBsh;t>m?~kqPN6Shd)|o)qSU6LF$6?iT|!~97tja zY&8a~Ujve1 zOVnFO(#-!vjh5zzA1um>jk&u@YQox}i=+^%o+)W<@koexhl?4YCV)Ql0VTT zxs#&|qu?6jR2>b(MU;NK|xi?&e#7-s&n{RB+DfKG)#+Q?$@75{>XS>tO9(nnxR zrE!ZT8l2Z}ZwphpUUkR8 zp9&-6>UpV*FST@jOAEnzH<=yjZ$($;(vchj2SQY6kc2BO)4q)nxGdFeR2z3x)E;2o zfR#gX)-W;&j$)N67$`UkjexQPtWKPlilpOX5ssDWfgbE7fLAw4T2HguK=A z!bEX?cJI(5gf?fJI}a{PSds7pXcOizYDlAd6jU@8gJ7O7}+o>BVHcoNFv zOK5lvp-V-B1bhow$Qu<0tPE^Pa@OoeTx?YW!3ED zNVlHJiORdt;=SW~{MV<0s+?nZiay_i*4j%CehukQ+z{kEGtt}Row%|7OICUrF1D%K zbh4f(v`H;9Jzv(^-rA1^W<6&O&r4SMI;Z3_$fW7tmN!KQeEhLkG*T7haB8-8tBb(s zHLKn@>p`J&z;1C@ypR85U_2qG&yV(1Uwf%jwBZ-w`3-6|1CkRzT7A`Q{>k@eG94`) zPv%<}u2#1RVg%`~^Z8-Z=5N}J)5CLxH=mD4#95DtJJw0ROwxd<*>CY7lLlrs3ExaE@muosXUw$qyYO8Ah2TUdIHa5yQj}hlB_3l! za55RNW(WyEPT-SxpWy{s9wame5|9+Fw7y;S?|yT>h0-E~5fkK}$&2FqG-<@toD|@} zb3JC8Z!t2^lYbgM{~8{wP8YA0yslLKoFvErTOEC4tFA_y3;>ei7^?!M(H zjyDOi%W(oeG`^i}FumNQjv0g~6FLILejQ0t>deJSw3QSs*(P%(rH06| zmRM^d+aTei@!|8M?La}baiK^(#d4IKzZ?~_0%j*i2IhF!tf@!V`V0SlfdVNiBD$+kypc-a2vh>4-lE%!mMw0c|N%%hPjy&h5y~ zQX?xD|5gB-;Ax;r0Qun}yge)tcUF7cS=~FooYIbSO1WK;d++VTtNr3rQv2EIi7z`& zZ{!JADh`H?w_RF4vw+6m`aB0F^g>z~Ua=yqfrl$~@{ctn5v3EARRiUTJ1F{HdJPii zK71F1WJN1CJHmnEOogzyz^w&sA%YxrjXgY;3g!!c=ky?n#uboIE87+;wCzWdpKx+wa*!o4N}cY>!1KiN*J?WFJ9mOMNYz}Nne83Xkdw(^*GO3W zSgMQsx!HW-SZ|Z%xPhUwkwx|I1(J(>YhS6+9c|m>SBPlkR{#mU$?z6Fk>yTCB7twB z%tKKjS|pj711x(EP}(Fk7W>$s@cB;!(h%Df<=jqV!RZ3q9MF~6<^)d;-I4A;ztHw5 zCrN;o^XK#EaSpy+tw!}`rjyydqRRMv@PCOBFCD7i;XS`7`L=LvYfnQCkHLbRi1NbK z*1OUEaL_LV_Q<8=(e%6vB^cy3G#u`<;v|v?I#Iwsf~c%U5-FPkxQ#m+TMRH>B@T$Q zf5CP*ex#mE2uzMS`krQ(@?Vi??9s{SOd>>u{RpoUeWz$xLQI%J0$Sd zqLg6VPl1vq$^z7+VK#D=l1}~NUuXq5#b58dENYq(ecMjOa-EQJ3139lRrtghBCvh| ze4?1F5-q$$w=1c_@gMwyG-H6XT&ABzLdAD7|5aXuAY{Dx8)C(U=C7dn;!Q*-H{8r> zn#d>omm#UIR&ACsr$KN!trh~N3Wzqu+26?xp#T19Cn1!05`|vpE+L;12)Xu|A$#l* zq-I-Nt=TU}u^Cold;k18^GwMqN7K0>gp#YE|Ktshch7d<)_D#a#zZr0+W`;V^88Xx3>OOs?KV_f5I2fbD6wd3SFTH7BLPyPg&Qf~h5P-& zhRg;7yqg%x4GFI&%qLok3vU~LnRU2uG%g{eF#g0^&>#aH1Hu33*L7Sno#Rf$TJFAb z&MWpX8U-vY8qe^YLa~d!(HApkFg*t}VoA4!@{g<$MFIgtMcsSrar6MSqDqMhIW%H9AdJc2Cf0%mh#wDb#l zHuc`Q`X%UDM#t!riK|)O)gA};J-GD#x9ZRh@h`@YVN}JCD;63wR~lPg*RQ zhEb#op_AmK;P2?BYLoN*fb4sSCEStDcq4HB#n0AH@{w_*NHQE>!gPYj0tm*Vdl4Zl zP)*P}ut$vlwZ~;Kax@f+TMi*CYBpy|yD9q(J=WS7r4nJm#AqHlPXxiV^?R3;O9`B< z!Xo~kx8IgFyqdV<+*`l~CT1r>4z07jJ9M}moWHwcILTVOmiRvX_BbS$idaSV6htCm zfglN)fHG#b4y`@W-b_WY`O2|iqadEPL7*3b0cRp;08S*7{p?71DTo(5o}VCJt~;hX zU|MOT09@%lV35+t(8$d4v*tVY`!FRfuv75|Jkq|qZl5(kaQOfxDv8|Op z;6SocA%nw4DhwErDL`&RC4qzHf(Q6lLVKft6{z4^Ncw;>mzMzK!GYoiMuXV6&b=Vp z0G%Yr*+RG&G(amB%$kgpCD`nyvm$-5xnO8}5<0|@#(k;v^{OPg!$Ko#O0xyJCUg^-f?@@+K}|Socp}Nu=Wt0s)4BB zUT1M3A`TecAdnm`$R7^qz_1A@fI?(&P(hQNn+uW%+~4vKshEy9iBTs7i-tk6xEK^; zFBZBwl=aEN^8~oPqtVQ{JrMXHwdhbuFmMGx7OK9a<>I(|*;oP$n5jG&qkR;DiW342 z0k1~jj-V^ot-{e&FaTr)VCmqF29QA{8|O|g7!8C8R9`R~5%5<)gAq;SXdnP5g8soF z=x1UDkV+~YMkV5EDIF)!%d*pJ1d#bmHddonG`$g`B*67w{;19V1hv{iu)0-b&9ZCD`DLG59x z;Bv`uI1{cNdx{{-hJ)-x$}$lGIE(8InxCKo{R;~M0|OmtZ=No2df9Ym?{@A_?NsW#KFqh#v?B z65PF1?F>QC~`vDMCwhNa-0nBrA9SVF@cR>! zF4AG_xyyx;#;JKUzUA`N;L_sDeZQl|5{rbyRgGi=CCsNb{MqYJ{-;7Meme4GP2i`R z1!BJVOS+r+gN;&2mGLhZy}!`%(@`=dF)H@Jf%92~!l}sXikn`1zc$}87P?YT32WtI zan=UIRUmFaCeX7UOj`Vf626RX>YCaZEIo6v&0d3toOrbVFEpcV`P#uU{|a9mZ!uFV zW2`eem%2)(T_>cwV`$$oGTI~EBY{$-l^#aEQ4z$%BA&8b6`gdF*L{f2Tl}_eD*g8s z0Y?02;qhqEvT&eOoDnXZnhn2!nTb%8KYdPo&Hd8Jb3+F!yS-n2TFr&O(Z*_v)#{rq zq;ByTn^cJt-egOnlV8diqs6w6rbFNULN0HEA{M;FOMjtjS9=Oyz89GeJL?IJw+NfZ z3x%tt3Qr|FQuQX`_r2xhxm2Y;kMNH1H;CI>CMFHTdw=yC4u3t{aP{dKx5qVV_)59$ z;3f*8BK*+Q)#c?s!X3YaJ6;IqmRn|8w@1uR744Wfed`i=Y2k2E!$t?6OUA09WDRR<$4^mIDGQu&_o z@sGB`vhoI)ilkPBJd9b5Gs$WqLfZxP{uJTslAy7YSdEv1f8Mq&NXsuDcxpU6XC|%@ zGz@euRn@%zZde~YL-s>&s`x7XW9ErBnoorzq_M~&Tdek-B>Vc!L#6L4^qTftbPml- z9h@xp+0I)i$P4;jv}4PV^Rv`r^5O+YzRb|VamteP%-u0wAfsZ(qVG**$Z3BD^JI@{jM_%ms*7v%k~|x^IDqj z77cyLGczCBwM%^rX;H!pjY2s5g|^jne^rmXNjN0No`Y1N7Rq#jy4J;?R?n;t{FtA# z{0kkr7CK4~Fg!nejUxVbZ`|d!pS)T^_%$Vf%@ec!QJqedZSw+!wF?v9{V{y_rS+&@eZ5 zMfm4M$C|n0#)l5!KCC)$*1xpX>W`9zCZw}WSb#UGH)ji8d{3$yV|sKzeW$Y9-pz>y zR-X!;JLS5?n1ylYJ&xy`iuhCia(Sw?;@2r-c|%pND8o}LQx2!<4%gQmagEaD+L*5? z6`uP!mrCic>hc;=w!U+5eCU$&W$<83@VH`O#KWIO5eq_vO97S_q(k&yPtro#45ytP zv}aS!eY^Y)FY)?$xhymBzRpII!8Mn#3(CJIknJKCl#}|lmK>5_?r4+ly}ca8PkfN` z%&qub(^=uxb>|s!Cc)0S+?yf&a}$#{RG-|fjl3V1HgI2Kd)np=KIeu^^kr9HBI(A8 zkjYeeTs-IAmBcs;p;p%Wj4PuNp6==Ig|p#*A;Wn|kFvWcLTtPHidBD;IQZRZ8FJ`W z=&*KG>8l%yvT2V}ReWm+7lqA_FG}SN7q=I8f2->Gb@ly(F`GAT=1{>l$YBR=e>{>N zlBPcXXm59_bkIi&N9S=C9UyJ>_1IIE=E$~Ugklm|DPE!Q+{PT#!_X2vJt zi>-^@8xPI8ZJ&6BtX-+cdzCnCenuj8xkTzG8q z>gc`WoWZHIwf;YEdx;_*KH7b%$xb}52ewx2U8@fE=dHU2b&7^x^(ZC>2x~4VyuZ-e z<#KDz=nbiaT~rfVG|V>=zdSooqjsn%@YMx7FSGa~qhipr$A0ceN{Q``c$Jtj!>X6B zB(|EsAvor7+sR4xaes=gc1dp(hGwmdiN@$T-&wD?Uf?s{y8F_9eJ(4K(;y)y2y0L=tv)o)Pe#j}; zyBTS|k^gbS(&R_a^2PTD$|M0QAEWn0EJsK-O1rPt;SmwzRkYfpasb9F2drjU&OohYY+%&nUE z3t9C%oX@&Rx4Yy_^pj82P+%=!`7&-6M}wPX)t83G*~M;E{KF}?Vqj~q$koi%!EP2b z1OgkY7Ij0OX=kBa$k}&M^k4A1i@l*ns}Za0kS!U zo`BWIVmx?-Y9p+n+#5oTjEHkRa|h3s>{PK4sh^X(t9z66`-DDr1r$v`CA(v$H%6s{ zyw1iik19m5KQwG`G5MfW@Y+j$*cQ{-j6ICCh?%c{T z1)0^~SiJI;R*lE{8uI(k91Q0=k^*k&dlt6{sJSk>eG5HZ#I!lsc%$1mmB})>;22a z=GW}qWxvgT z`R!8sXr`X0LXHB^78lNYg!3>kn^sC6Tm8uD{T)nF@+S|6z~lrnWwj8Ojp6jtZBN%ZC3mnH6I$7tYnoVc06zN%IefhI{k-a387v; z4)Lki`BcSb&~u|fnNZ2u8#NGe2i(ICEw=b}ZRUXv+euTW=(iW2oQytMRZLY~7~KT7 zSL3>@ps(aBEGGMn+N^m)I=_eS$*R3mRyE_O%VZ)9>TR)+#|?n8S$W~3y~|l=!{(p@ z-#5@fs?Ud`l`%67{Ggr_0&9DO4+sQxJG3Pu^?y(VerUopA*vox<0L0x$uFt_d5RmkLHd@ zEYadgO0xg7_b#$-8}f9@Vix?Pn9`tV!NV1)&mAs{cg8lZYH0j+UQ7m2^J%~Q_aAvQeNypm(Vc4pOP*F4metc_ zy_8AgiJxc1XR7}~h~N(Q{h5z=<;9}!f%RAKxfF)ogr~@tEEY7}V-i&#_G4mI)yl+X z%x5pQetNJib=xP^k2?htHtWIZ$GO{IyndRy=IW5$HNWj@nB%zhFJy=)?iOk$UULOL z2?a@8R6W|%pVu-qY_{zBq|Lx;C5X+;8ld@?4eWp$EG?6u4~ngijG`VooL+3&SA4_~ z>-~J{sK%;kuY+@+4|&bri7%EoL-EimCB$%>vWHt`P?qA1JjJ8_YiYB#kgVR`w7pqR z2bNc^yE3vku4!^>Ud%~+?$esKh$tX?9NH-UpFtEUgBP+lpR;kqPVe{hKC*otj$P+l zGk@~_`w4j}3}ODHibYD>vv2o*s-zzxPSHzV@ye8Yt=P^4U222+gQCipId}d-HP(A7 zhFd+(^)Qs3{I-mJF`;B3oi9{T0|W!MHg z_qJ`n9{L)HEh-+H*u+`zuA4CJRJaXeSO>~&@k~^c+KZSKn~c*O=*}>^n+KPp5_UW~ z+@M@xwHVzIDt~!;SFqh^)l~WB;}!fE*ppczZ?$C+@WK4_-&srJmlUP z+PpL{+`lz(+oK8bCZA(>Gv%Pmfe2nLLOB)-^G&yJ#mK}%KdP#_&tOblbnD`dUHqDN zniv%^B>mZN>HA&0M0K}KK!M8oUkGpa*@`Zzs{H!neZ6kmZw8g=Hd*Ku2CizuGVPHh zjZe26@Op97!_K;OlgC}Z72Rv|@jIG$JSWr++f;h_R6;68@_Dxu*Zu13DLr@kTa^pv zRmrcf*Ze;A=(z&oa9kB;iwa}Qj!c_P>FB~4dD!aslQM74Vedr{mv8gIRNNogf`OCIf&-|}H-_2p5IjN5e{%E7Py+x6pZ5}L?+;E%7XIQ$}! zed2{p6GjrF&Tyk(-srLt*UH-=oiD}R{tL056U)c^c}9l9GpknS&!r*F<;YJ?wclR0 z;0w&#D#RC$ZRt9w#tD54J2j-8YW>yx1q_{?HnAzQ$MUUE=TOAWupj5*Fo$m{?l!mI z%D7tZF89H$Df-^>>b<-FLUO*Cw&NkpJ=4yqe<7o*3MZvqr&;VeU3WLUfj#N>HuEc# zG;0|PgIBnu`6B`*)}6hg-_OiCcj@TMxq*P#w}*PJU@5tcEu@i@>I3_nsq1X5I__eT z{>(VUMyG*dr?UaVYvHeBD{+G(NUbe5Ft046EG1xVSVvU-dKf5iYSj@x^(C54So(Kx z=%;$FyxMv1o%Y$14h6LrgMXn-*FJXLSnfUW=Py*W=(*)~+%A^>DPl65T8h4z+_on{ zZ@6Q%Wb(bkPb9rvRV`BXZc3VHM?!N6jerPy4DK5VO zu2l8PvQOc?3uPc0G)_1u#?cDY`T({+3(R)J8!wgAytZbzpMq=fndt-6R zJg-~d@HaB!kKvOQtMw>u<1L?AYtZLV%wE>k}t6OC(0 zbeC1i+T1hxXCAiV0)CzwoB4&9`L3+Ps~&En2fu#oR@?#URKY4U(cY%|qi25{rl`qi zRae))%=|S?#(&Cu#Q0j0aS_-{3f$PU;cl0%ec3pqvbU`B{?iKf>t}tEbYjiOco|&jYZt(lI-)p7h0&UIvL;30QLCKOY z6F#e-UFua16dfzi-xaI5cTBQNLJRThNjZ3J;HIGoyg2dVhx>Kbx4+cj4cy$Wp@@ea zbwjPS$<@8As!C%1H#lr#aYIZ1?d~agW*vObr;WmB-KF$>X{ovUKt=(pi{u#r> zkNrq`TYa&jE)0E$8{lkd`E-73SZ@m#uC{xevC8@{bbv9bsP^J$ic`?zztG+T+3r42 zEN0i19+lg>#QO^I>sN*jO`eaCg((H?>pF72_osiC?J|0L$@|0QBM(llZO+PYdy*}> zQ=U>ZE!5flzBPDxLX`R-+Gf+Ist>CyY?x~G;?0Psa|F?!Y#i+5F<%waPuC8R8JwCe z-#zc!K`)QiI5tqIXDvG3P>LO~E$FRhp4;8fn~Xx;Y2D=i#Ay76$`*r(oX0f|51gLb z?4{QKS*A^KO=NXbF!n9PM1vK&Z(0bOPo*6nUJoTfzM;d%PtUs;eyK_IPTjXb&FmcNDr!R17&9P_s4)AcYh~lclg(BI2D&pbf-VOn*8$nXT93( z%ll+48$PAQNKvf7ZdB-SO*5`qX>j}0! z&b{2@o&5RtQROqJBG=oW20CmqED#!Pxl;KECgwOdJ40tHKWLp<-%-jut93SPaVt0}dFjO_IG~u280ir%dZpE>HGU7>M)_g%YThL>+Kg@BTXLz(p#1A*Q{PL-A$wEuPf>X0|vhrwb*a13v z{3mDg=GvS1iioEn`;8smz1*T{^46?wMd4+X8X5|>c_$nwzSG*Lx?x7;tSZOQN3J3C zU6<)_Lu2$MwXGL@&5kdn>%B=;COnD>E*sm)Sj$9oucU6)7Rxmr{`Bx5S_4fEW1k&)sENSW8$?Nv-GF}+t` zJv=phe|4nz>gBfHO@|T2Q~epA_YuSjxzUjs)-LnYsm9YOwBC^05j(EbJv_lV^iw*e zs~)x$!)!_lEKhuheC~a3lb6`^_+!|{4`#`E0^-t)N~?@xKwn!xJQF99UV3>Y zASYm|K_J-QCQa(R&7T4bsv({D19xSN}$;P=3HpWmsw7;1Sm+ zyAI0L8TWLKVIwy*J07n85zWNe@E_Mb&8CO<>8$+J77nxa6@F?}MjIYxMmfc-Q83;9 z{0yh?cu&`^}+TJ z(HG3DU%s-kG^*Q;Q*ym%u_1w7SG?=3I&T$!AFB0BU+kLgJNh$|u>P}tsThXN**9U`hH;rJZTgnG!*65u{%-R^C9PcIYczRJr zbg99)?J?}788(5;5FH~n|qD}*^*bUR%tbzKg@N4|n-P!0vZpk=`|q$*a`-2b2;|Dj3)6QcY zS)m!#x-YfM4zB-c;qNhB)*;%Ru)%#x^Z%jhEx@9DzOZ2=BqXJzr5mIhq+w}xLAtwB zN<<}j;e+yNn0Vx20>>zG9HnFLFqRKdlxTcuME2+8;o(eR+am$> zcIswt4e@Qon^!R7?}x@EM)A-(gQ8jdTOn_#qKw_kafc`JlKHK%e^F9e22kRTx_r9= zDjItq!fxqCuFo(??9+5sndxTVqKOf2;OhJc7fx{~rYy}*(ff7r(;eC##^@UVg*H1mE!L5FT0Q23-|~#FmH5mD#kvGlVeHl1oMa^c!-q_KMD zx&%brZIQ!?w9fp54AE)$R9UAplIy&$Ci=>@;>UiH{6*OiQvS3qoQ}6%O!?a;_wxK| z#D#J3{s-Y$sPR;0;_P5}6qr3K zy^aV&8%n9^Cn<1JR#(SMGYq~la6M>Qx;+&0iBEV*z4S7Me3;ncmmuVPBP$-athn*c zi<^+oYSjge{}n;wks*puFsN3aSO$l@2n|@JSC>h}(zzPBQUk2wb-u|nWyHM#$*)n3t2 zf;3o0?ews%Wkd6iY|k6DvV`MTL^UDJkB98z9xPJ7>|SYv?l<*Rg)E!hZ8BwBo;S@+ zb_~-EpFF9A;`0AAB_WC^O~qMWHyy@xDO*#<$RC*%!n}|#yjrI=ydKM0J_&_chYCGW z?+NL@&z3L_-P<{QfF&DuZ+qpQ+EEL5937%J^JG>e^jR$zQ-n6 zqgX_-aBV!#eP<36W+2huw_M16{$0SZ;t9?>`^U1u*CE86uiPIo|LHay7t9MS#<-8w zC((@>gDIo0)kjy<%z1t*b3X6Y6KhyXZkw`^H<@SHrk)aTY2}rJBl7t-S!602z8UVP zwFK0}3Amx_-u2OG2?e>#IpOddFC2#0wpBCo&GOxd&KAe@r<4>8$AcFuLwr#bM)gLY z?ae&0p0bJhvod-fTAXygh+;*-MUe_R|9sNl@dD-7OVMR?5o%PC1%E8*3(Utpm^m>b zZC6;ik$+LTVpvgLh^`R)Mad61kbaK&_bo+qj2@eh(cL6%Bc8 z5ZDAlgi8339_{fHK3QUhr#k$W+MXnGuNf_X3W9YH_1--hlpnWL_BGW%yy&VQ{zVap zKcWlw(?VU&pqZ4Ux_>1!HFUq0zmq0mwXG5Qu z_*#e0?l2j(n|T`>dI`Ss`9JXrQ5qI0hpyHde(T#Ikufo0^jLDveOc7b5U8ixujtJl z9~B1#xzn@&#vpEo{M7H{Qh%1j#KcTPEIGn3`mQdbuC6W}oh}{y6a+hD$b2B?&H0kb ztgG^U*c&W6JAg%j>k> z<#Tk&-|y};!5hoFA}3`@LHjW#j3tqpni|Iuq8o!?_X!DAo0EJJI_~(U!rFVLhf+Ax z_eDY&SdF)#@9O(ZP3^2+Y#}5p+R#cHG$hYzOf# z4c(k+c%8{6Cbyc)X&lDX_&0y884NO78TU;WNhQ6z_Lw`4Y5N_)K7EIKIQtjn=M`sI zF5`A_&b(%hXt8f_O=3bA8Ou0fR8-W`Qq(HMO@u$Cy0eYIcu_K&&c#tch|cN<>)=?{ z*rw;^&*Q%++qgynjlN!nTeJ4=N^)IR!LFK z2!_#P=c_C&Y4=Nd>OxCXcRdG2OOAarXF4(@%PSD<%?R5--OJoK{s+?)YKOE&IyMvJ zIs$AnYKZZ8M(Vq1H@2UPe^DgOuW2>l@XU8ZLpKL3M+SEt_b>_}S9ONwEz*}XVFU0HNSy-kg0l8(G)(@uV zjGWQ&&(4-*0#7#uSD7v-`xv>bmxfa!-vvwy&b3h3p5?7Z4+@lJKTc*8t|grHU=u5z z6|P5c($*t(-KY{~20q!_9$N2?Ug8NZeH^?Z!)uP(rPE>xmQ0SN@Hzfs&{*%s%By6s=UrDcEymJ6+94lHU*SH>>-t_K zn!acA)NU>z;0PbrQzL!7}~5TXwa4+r8}ZGP&pD+Y+S^Q^s+A zDaL65(!nGjcjuhQ+~d1%nFht`GH^S!-KAlcU$llI+I8>iZ8II|eJO`MPTXmV#@3F{ zM&{*1UrSZRODznACz+$}G;CA-Xd0%~I6lp{+Yn|MYk~icQw`$(b~R4T+#hR`6f?}Z zwid41WW(;w&*NRi0F;qB3@SVxn8@6@36u465PW(mrCH5Bu0}HqYz!khg zQ3guj2lrP!eZYQqioroFSB7!Iup{dIAi!`Y3ja{C54yTC8W~1T9$% z;?V52kX|rQL-*mDjRJUmSz20J1umOkNm31Qvz(S|pgpf@gKfA5=po*v}pP zz0Tm%+t0yT->=|a9-=xDo#50mI_vW}=~<@P)(Yci%F&LpR=X3Wanr8ep7Dov3!G%! z&A}pUAIoBSV*?>$r@=3vZeq54;*Koo4Xo#n29EhuXKmlXX(TgBTx$g=vuQP21&@6b zBE*>EroZwVw6bDFg(uA?QOk{7@ubY_rc|_6q&TbgQUukUN!g_-uByQ@Pi->JJ{_LP z*i9Yx-#+3VO|+<8KeVdCdt{Q@CtKumq(;~B7iDQ}X_)g(@1xBms`BLL=92Lo1$^GO z1SQ4yr8EO*L$D0hjc#)tmOJZaFKGP|?P=sknlwhPMP%1z3?Zh(bb(Ktiu!klDKLr) zaP>8x^Wc6H3P5njn<>I`~`IiU&_x_X>qz3W_?rXu%TKJ-n& zqclvY$QGE8{P#iZiV1bjV{Nl;B5Tb>8&GdfE86z{egcK8)&@yzk#6Z6^Gdt7BHiQ~ zKkZ|`F2rjHN2t%iBRH()Xt|jd2WspLJ_ql_9K|vzq)&FaRmLMo#r=z;)vvfan!ZnZ zQj}-(-x2__`i`%=tbg2`wl|J5CNflMTFJ7(`XJf6KEUdS^hiItvKE(~dVp24+>Wxw zUlf*e`ghH>NnUmrijUF_A!c8a&jb@dv^r-XR$N+LZS1C9Z61yZc=n|PFnYewN$B#D z;}^iqcf3ir$&t{R9Q9H=6$Kk)PE(V4AcGV7cJQRc&cX-nQp@((fH%Ao%rY zu6iPWyCV%h7t*-cc{%K}w6j+IK;6Ryu!F%0Wprg!wwdO6Xh1W_NIn%6S`giB@Qy{W zs};H{F|ALPZbYhG$}UYrPUH@D`5135T|tbbGt_*SoatU$6pAFjv?cJHQEmO%3xowfXF3WhWtoQ91 z7b4YR!RomKe^KrQ?uQ+imJ(|6;I_tpuLt?Chc201jMlYOqx{V0Y~_;9nA{$K=dpFp z*!l>WDofhnpGQ}**CHhO14Sz-^U!R!@*@$M8S@wPcpy^(_OMJ%N<_*qg&2F@^&5K* zGBPksvS|B*?vOCd#zr{dU&_Q##>7y*zp`!UTeR_P88Jo-=-RX36YH{rHITIdiDIAx z;HHcr=is3}ubUZ-*l)+Yh<)(zQQjd)&+HI$bm2P3rfYia!ii7<`&kbU58ae`H%?BT zv_snR5ef>7XhwRBxAn6cPNF=lXzUPuXfiP?VoYQ+U*n3>c_F%q=uVxHQMjgvOGS<` zG&Gijy}4Ci7oG+&rGV(1RhoO*DbpmYuBnO?3@+R#S2F>RRZIP z`4*m1;NJ4Q`vFE{G~Ihl|dO@K^g5&S@3U&Zki@OMy!V;b5|=I5T|!t z`fj%DUl9|em3u~&AQ41lFr9H3ga5dgZ5=r$S}Yc9kFE(}PV~nqd~_qACZFvK%jwrt zQQ~Uf>)Ujq)9bJb!CgpJmB!5IVI@k14OX<+qs@9)r!MHUUsEZHc;bze7`P7uBVF9x zKQ$fX=O>IRDKSJ;(SFUvsBR0iSM`{q742AIZld|Fv9Ua<=F-2aU@5JxFD3?hIZUl@ z{{6^68uz1y+n4?ak!LQs1H%+sF_EfL1FF1n=o`FeJ}YOQsd}|V>ts5DTuIul(IwLo z%9$^RxV&B_`s5EF*n^(TUPL~-?C1<*ja~{PV-gje@DgG4R2mZY@;<2or(_f?^^-eF z&|_?AMOkG$bQQFkm2yaoj>{sD*qyhX3M8jHE8Ve;q*1J^UF)dJr|Y8x9HmV}5&q?3le9$`0&uFDw`Hf8rg za1uwXY(q}X>K%)$Q?zP5A!d_tLS06Z{E)Sqr7vCYJDYR7(Cc7U>M z0z*X zMEAF$uNJKRN7=J5)nA&$L?H@Z?_Fp2D;HkOC#yt8eNO_sTzF{cw8CBQErjJq{vw#V zKskptLJ;O9B?u96qtiYam+14EQ8zW`>}}#%MHQTw$s(BH^@+UB`3E&s*Zb2+ch;F4UYtMG{yS6b{B z$F^Z|pA6$4#ai9rW|&3%&L1hg#oPCdrG8Xl?fSMLG)%G_AiN90HY75LndM^!eLc*L zR?%t@4!;=tivp#y>iKmc?r9@gGqjTUL=}qb*)JVTVf~4tje@;*sZZ=}il(&UyIzhgs0u-TA)TE?% zX)XEKjC+dxCLRHSGOK@4>6a-JholI8?Rm9w>dX&p;CQ<#Ye5{+ou!(n;fN*Z{5?Dxg+Rx~Iezc7Ei-Jip zYDF(NH;|gJO!{1oo0xsnX8gGZE4t`(8d$2MJnMD@RcTc8As_!Z5j9?+JHno2oLCXZ zlt>L!u{yPP=!eHjoHJM&ptGR6+m>eV?GTzEep_1``j0bM4Xtv|WsBO*O?l^LG=1Y6 z`5h(vcMo&yR^H3_J~{SSg= zW&r;#E&loW*~Y})-F|+4ep>z+FDYTpsS9FHk}|ksViKmCpVG$3Z!?&^j3r0hy49-j zBN}5inY=yMJzxRc0BRxjfr^SjLqqj+a1{jwvb(eL4vTgng#WKl<;gO_@!XA z4QQ3v|Ls*^BM2~d$k+4*!ptK33YL?RpaQMU4TSMOuArMz1pdTt6E+Kk9W3TewSd(& zp1m|1q1f%`6%%h#iW%Ss$t>#NX7J~zC^^DR%{u3k@sv;c_O3D{kDILIvx2r3d_uSn z$Kj-;q$CJ-LqkJw!yc9#17Y@Q^rrluMU^wF*#n40$r`f7WM(_i;6odJn}4zskW;jZ z@-r0ME<_W;*!~F15$8{YzD4>+RG5MS>-M$|$S=r8O2`qrO81@%XjL_zX#OE7LB7BP zi=GdH^RTewT#2x>q;st<93dhNyhb{8@?H9q$o6b)?bH+ZD6kYf>4}K26zl1wub@fn z>gj^lM1e4~6a;T<@igw(?^AClYv%@@NzhhO9h0437`-@8^ulSoiX3s7^0ClNhD>#8 zemQPBLoY|56KOXJ-hvgoHF9g{9_H!vVats=)jL`1yW z?%ub(2koRiYX*wO$7}0gSa757Uxj z$7dyusvp}@O~|Ip3w+2xPeeX+6OT~j02jn5g3j9vCJ}}mZf`@p!~`V9V=od*f6P70 z3%n?WcqubMlf+06$nhl>A+;k0dMu62jPvo{dUFhb;ijd}D<%&aYHMrjfLHK?E0BNh zR~y@{Yug%v=`N(tOfcEdBb0a}E`_cHFE``Px**U*#S@Qxs)Mn5yu}DcCOg{qyvE$LgiE{%xgy%=UI{W~^s2g8sW7qJSFE2WHOUzwCa~7PtiPPFvU$_z@O=f z@Vu~z2s5>E_SB}|vm>nwuAb$CvZywZA%{uqIK$+r{E&G2$M1$;#BCfL9AXRwNn+IR zfOoN|fGZRfG>T3dq;Aw~cqZGy!K{p0M@6x!tRe{Z$|d!G9b&Rm8JNM6e~Zt=z%u48 zoj!dEf?c-;D$xTW4_Jx73gcama@%ao3%+;)`xk#;+8Ftjlz^eOC0h-e5WH~#LjE7Y zFk#R{h(35BJzF$O2TSf{(ryljm@k>#{-Ez-B%gHaSPEEgV*sBI0~e5QZ9`yQivPyM zZ(3_J2%Mf%?UcLVu%qw3$VI=W8dLk@2?&2Sici^m?6a;YM ze?SAQj9t%aDr48--1VX!q0Hn39y)}Kk3lSrJS@2Y$LH-Dyt`9-0G&ulkpYZE6EOS0 z4GF_e7%mR%fs?^tx^NJpgT>z)U#d1fABZ*L(?No(*Lw!CoP>x)tUdyDoRI(PQXlq3~mSCiPDwIS-TyQtM{|Tfm2B>d67+Xu&cFk z&anWT2PfkMQ_?BNoSWBo9;jPeBOt|UypY@XF@!<& zAn>JnI!Npwje=-nf2nY#MZl!v5-T0QasDgB{;H$j_mtNx1Q4C4;JXsgP*Jha(a|x` zQPGeKRVb)LXb-`e^2C7a$m&=!@IUp$VAOt1A|RK@B&cg)B@gw=Bdt;Jc#|}?{Eq;E z10iKl=k>=+9aj4eYW@1^4#$RDU@v+4-0xLBrF@60Vvf+)uNoN%s@;8ufYo*z>4AI3zBkAHs1&wDXL^O6TCS7f=@Gc z;TEO7(_vM*HR%}O82d-l++0RZx<0$7&Jin~s9U6_of=k(mHl34XL0!YV&567;%E_D z7Xg7wFyfx^KjVb&tb6KujK~_6Xy?g=C&4*_tuI4PahFBy>WqwC$8!%pKeB_7Vi@Ha zkzg$Al7xGK#>-Pmp{L|WbY?OJaIa=g_z-0Dk#>Re3WFeM=i`${LvYbA<)kHi#yEUz z1o<*w7x%Vj;2a)s4!t2*X^&9Gi0lq%%PC&=NcO}ih<=NaFpiu@I&T!$(K`mE{Kgti zb~^;NpF2V~>1xOBxLG(wfOVe^B=!V?wZ)J+W=M+(X_raWZgK61U7caYByAai9?hg5 zasW6aY&xgB?+6~yw1uIDCw;=!Ew*~jtSNSI$6H7Y)fUAUZFs@oM5(;j=9d*L4J!pB zqW||WV2NMvKGo(7X(?um=7Z;I2QK4~aO#zPuf&Pb&6xlr5WjM3b3P zIwv}mCC!F4VGOT`(%8n9+$(1R*FL&fpHK$(D>e$sKqO~RHjp^ z`u&V(|IOGItim!@dMEszT=wV7EJiGy7|Ta;w+5S2c6Hr2p;OAfG?Q%q86m{u+r$6* zKmqK-31gcXN8dW2`3U#Qo@eWpqISt{;;Sayh{XSWm?3k`b(?HN`5238^)mE24%h^E z2Zu*;gtHKavM=cBBcb`AX}?#`?$nfcqVKlh6xwRkSc@U$w@G}! zF~F^=TmKC@hw#7I(3XxiP_&P`_9%E{=%UGAj6JXUr4$;r|B|_gl4RFDE8k{N)L~X_ z3)WHwm(_pozX>WF<8ALcuUebmYU8qWu9`iA1_F#wcX+U1Cwqmy=RLEs5|}X+h-W`CJ57?)wTa~-x4X9 zpZ+-q@Zawr0_i|V;BQFXf0G<%EhPUauK$8JLq+vOM{3c(!1bi(= z+5zDv@z67Qr&rUkVCXJk$kF$AvCiP*D3hB{^+Jd=)9FWE)j#KpZQu6Xs4rd{6C+O7 z^1!P}&v{oMWYpw0;`QadhKEnrF9_UYrwV7?>))IMU#ce8%NQ;D=iF0mQ*A>Ha`l`r z{CAke5{qxK$8O^$tsnIlg;Ukm$8T_i3}eIQQO7#c>>K~Id&hmQmsIk8aJVv@wHj#C zp6aaZ_%iADNsS}glj(JiNHm9taJ_Fqy~6Kz$|CvBOw{~~CHaz8?>W;LRi^yHTY=m( z+Sw5W+cg>cMdpt=wH$Z^>=XH5X#B|;Hwf{)D27=ZtNRb#ZzK1=v)0mt*m#5^E?h#C zSsSJtGrlC=(mRX@wfkz-R`FD-;Pco2=rNK}6)O@jy2nkQ^;)*|-SNGtPsPjv4cL{q zE`m=NAOJFe&xn`#`jSsPK03@7aw|H1p*T}4Du@kG0#<(lLU+MdnP9vblzDV(fEu#DT#gx?4bC{6P88&Rz zP#x8KBWtL#%A^yE;}dtG_>c#_3+abO$^&1-w{qTA`_Y(ogTE;CI~tytPXfa&!XXI= z&CdEj%3{eR0bPWsP&W-atC6ug)38D3SSK%D=Ls?>r9S?@;9aQ?dTT%mI?RS6>@&(3 zvc84+gB2SZ;jH2)E^%9vW$pK9wD3)y@(ae+Fu9A=hz-dphtwRYj}K%&>{Q*Cl>AN< ze~GOhfZhvwrQteDniTmc?SdaeaEWHEi{~-ts>QT}xwvB)b~EQ1_bThL zs5Xv7Nfqo?f4FPNaJO#-D4%`(4?2Umkf8sjZl|EN;i)!&`Z3s0dB2aaMTvHSuf*Fc zM*l2>Vd2wvJY`+(gwJ?)DgFU2>`XWC-;JR$e&+v!sctEcnei`0#h6Cs<(kf`D1 z?#hKf+Kh9S6fj)Q7{xsru?Hz4V}#$^u=?QYaE$R zV7s7^DJmIKx>W67-=-n!UU1Jo0ILOdfEW0Ya!eG?6nY#zpg(2x~p_9_z#L7FsCjg8))a7=>?8f z>z-%PJBX{5iVEi5TZC@@vEByV0J(l>og;|r>Yt^Lo|`e@=5Pv$eF3SSO}~V;!tLc_ zRs}X!%{!cM9MUq>VG7_5MtMq$eFVc62T>ZZo7l63@y$QFuy7AuKtaI6ygt?F29mPo zCyxQjpzrjLhyc_j;RFumh+mUKC(z7-SvRsm#T78!61f}q15e;rv&d!IwToo0l3!mz zv_H0nbMxoX@25550{u2PqgXR=3Bm%mbq>ggT^?Wyv2USad)udYffNA|mW1{w^$`4W z?GTmKwzbm3U$MI&OX2{oF-JY^1aA1OCWHyVQg)|OW)kM7UAYefxnG;8lh8z22#3VV z!#T9sr53U8u^qjW+R82c+gSbXL$%|rtmeRFhRLzr_dA=vD7_Mniz5?f-MJ@1QjMH+ zGy-?#3JF!uIMQpn#n|7-WeI4*04*ZHNJ=PV2TgMd;XH}`lJCcl(0qt+6vq%>YxXyv zz!?tz ze*yy#;FngOD2dm&;k>J(Op=!R_mK}}N}N;fi?+GnWag}<|Dvd9i{quW_C2h(Glpo9 z+c)^TC8$a!=bCI#GUma`79U4>tdJ^SWU70z7wAiB-5!OU_#75o{?Sj=@9SLAkL&L9 zkF%Bf&c9L?`IC0@WV_1{8rO7=-9S^#?Wd@7CL~{tBAMoWs*5loDee9*p07*x^ORWM zghZ6L9l}L5Das+h4KZ+@3?j)=IF7L9B-H^u8$M0%wIEk!>#NQLS{TlRT~iCaYV z2Tw;|m>hO7^CLF68FBI*C1$k0g$5@KtDU=%IvFhNq_@6jmYP0JnRs?2Qz%YWTgkU- z!FU6urDZNd=ufP?999YlQk8mMKAbZvpG(@Q^xfgckms6}cDr4QVP@hkDXHK*pHVD6pggvFmVi@mF16cToozv3{1OkAJGoRGJZMWAD2v|hOFga zjsM&)SHU=(_FO5In*2hknN!*%I)BrO!Ljb~jC~jJkHZGT{B(YS5y={$%HW(YIn(<2=)u?RZNeVp91Dd`f+IMxs99zn8Hv5#R~5%?V0o+`rGN~wPH zun)5l{v~AZRP@6- z>wduDpv;hd>?NM^Wzn_8<;_zeFDnB4<3k0=UzGK_8L2&sq*Bb^(F!$HBf`-Xxx|yj zQ2)|k9@Z$?2D1ZdL40|OW$lKmWcDyEb}_af6NBhtL5r^-Hj*|8Gb+(W^*rN1C8s)leREewnd zfJ&CYWqZGhc*5z$mP@u7Fw&ckpH9(QEY`kE=<_>M_b(ZaL|4aVn+|Sz#l0VWXL_3~ zm|*-~#K&kHy*2%wbD5|aKMkoAJ)FiNU5_BFOz7!YXqF{79TM9y<(4_``*a%Z5d8Vn z^5eM2#d=)hk1s7nRQY*rEB#Qj&Zj(W1<*2+jjni4$Upu?nI`$H=LD0iHL81-?kpxZ zRz@M1^Fm`@pKB`N?t#)LZJw^L&6iPUMv<_X{vQnHZ zzSQu(0@EBw5M%B(NJppo{`;@l)5Ht10&IwKd-?3Af+zhrNZ9lgM@jmB8KEo{j6ZRv zsgSWXcrh#AfskmKy~xq)Z~S5nisJ5JI~c%XYn*wxEL*J-Ke))yySA$l4av7g5oX5e zJL~xapFQ2#VJPCh>dmZ=962awp;tNY=N?hkr#*Gp(etkt;>(*f9@BN8w7%xZcYF`q zsFSw<9*CgDNEh{ZCK)C87iG`E>I5@XPd~Bn)x^CUsL`XJ*eL_!W_Q~4MdbR$w8N^! z&*Pp_RMMpCIBbs6_25~GWNK|2a-^hdk7D{_=Pw9hBe5R=DWTm&{Xv+n^2=9?=-G4K z!c)yMqu=t_oQ8!G;g6+;V!2L=2n%4BWgo^Tui{yT0&;ITV7}Hd%|{#rdgtAXzV5Bu z`WOzN6xphzA;F-^ztz(shtE&Ev`c0TRho!$R^^EH|9s?!5DSNVu&J3LjQmzbEm?UQ z`F-djH$5_d1Gf68J2s)f^8qtG4S?15hsFP65~Z5QMem(>9wz6&(w6)Ql4TP=@sh#lDhKz_gKbrX0f~YS76Tz>F+@ zJux}(j2#qjg{QjO@LW9{63Zj{2zc<0RltLK7-8T+T}1?GP9GUaltFN ziR)p5$v#4Rg5zVorhHkR9(>08<+2iA9S$Gxgg2au?r-NJF9~YLWYXx2u!2GI(IqKQ zIfKRl8uBlDi~&TxCl{OE>7q#)a=iG$6}a7OLLpM22#rUFBotafMpQx7jKe2kPFi7V z{7g)Q%%+`AyRn%%?#~@;k%LoNMzYC4+{ri`N|F`C{YdftUlgk$IK9d<43B3RUM(ho zxFU1?fAwfEjJ8Yyqy;2py??PH!srYkF8G9kumJ^3U{YP5l+Nr$rkYQF0JTy5{WSfY z%-I~+A`fo<#TeK`@yy z=i06SJOafWC`$95Zhi34CJ8jP(Zl_{h5u#$KH4Kag>jF)Fl2!mV{IqpmY)BTCFNya zmtLN3bbf(~c6~5qSA(vG=}w>N~#EeU|IfgA({96>52Ct4c(6T+~cvIjy3 zQcD4X)IY+iT;{5Xy)z0@ga98Vmte+m9$F0%>wI2Xt-KEBz zOND(p*YdFuP3hjVZPJ2mG2oPI#FlDOGCZHtoo@C{8G0)6g(-(qSxl@A=Vp`o2JLR* zB*;MOaQelj7S}7I+I^n5E}h`Xlhx>~!!1{_12$9+8ow~o3Tp+Z%QZ*J&eYfb8}0U= z(b^7JX0vfcKPf7;Z#6xyD`6f%Z`{mF;J~(k*eUxul`)h@hG+qX-opP+Fae}`SBdaH zZmXRq^9GICDcnK71P25h>Z=cIr?u~oud1mtx6tBOs2Aq+Xq>UJi#tg^$Syr!yqS{9 zzX&p(l3ETGbeeL1J9)!KxG^xxLj2YfT|%G}7wt>pm~-(!_qt|DX&T!1-Jx-gT9jt> z>M!^jp4Y6>HSCX=a;RZpKV7;V%Esjx2n73n27RQj=+Un#!E^EfI3n=5}%Kz@a zr-v~)k4akK)FU&TRSMT>a+Ix0r1*eBlW0FeK=%Us8GhOF6js@aX{QHHodNqA$_OR~ zy;w{L*$_$R2G~PvB!dVB&MCy~|A}k*A5W5dRS9ryUgyrLNMOrnw>~Li1-49EcompM z?C+MFi8F@#9s3*JiY4Dc+0w?^=SQMjo4X&aUe;pWy5|sV|;_{ z%&VEucS#*zQ}vg*^x5ga%6EFcsJ5Vaz;(_rG)B0G<~nU@dtIm)l3%_K&Q&T}y+L_3W?O^f`M2e&i&(e+)pbtg7o$BBl zD2qROXC0kvG>!E@ov-{aN>br4#r%Pvj}V*(deFLQjfs*Tq?&7+dkTJ-EyEhhKgQfZA8azDB$*~*1Q8jbPDl{&8!2B!>t zHgys*63?}*bn%p{v%`&lLAhG#4WzHUmU|;=rJqr4XmX?C8Qas1HS?5NWu#vdL_4hA zeJGu>wdC?S$Z4_Ic*e?6b7mgtC;m-6pXw?r_#0z?Q9_8ypkArPu!z@#XJw@t-&QpJ zbz7sehOyBHIF6o_x8xVlsYkDC8VprXAK}tN^H%W7w&PGZ>U-v?X`J7k@$qF(~^8GwCAf#&zS&*ttjPoGLcOIo?`5B=onA88%A(ln}t zD%la6Q1kN_TAK8f_M6t}edzpprpM8Pue6TTHHmZGOtch+(vldkv<~Z==`D--c-ccc zSt-6ixhqT-@K+j?4NPc=dvRRR-V}S|CAhBXL5#WuqGa>(Q42I@nCx=CA7OZ4wQ_!H z#fw0hz3OAuI>NiTB{eb4Ym<0NE zDYPDFPj+=?JmsJwe;FTCWO1gRXD=o-1rZ-e^8mT@mw2@KhQ`=-{hEM&xP^YW)9XK8 zC7If%M=MmVPMo;lQUS%xp--j0QYZg;NUucdvb&M>w zHnnKy{H8R~PUAnf)4E?I0P9vgSEuY-(Bqol1Ulb_?zvVOW_UX*HzgKpu2d|2Z+)%0 z;Lia!TcPBY5V~6q_aK%8TJ}M{)T5E1iHqnKIe(s^E$sSORti z)heotSuu~x z?t+<+Yd<+?bC|DT+rqif{p=M-8YufD>bPzBtEF5mqsJg1vF=emO^>;z*CZjuEaOVd zaAj$F6aJ5R+V1kSi<^#=Jq$;H#8|Di!mSqegz|iBJB) zOT(uorZD=QNp_4cJM|X@5xSpWEOKuboFP?_Qu<6h@vw2D$mEvQU}KJ&EO9k|>AoXe z)xyELc*bK5YB2rzvw%Ra>Q=4_>_ixP`U3HWT9kzn(JtJj;qvh5L;s3v)~!ANP&(Vv z5IpZZ9NEtkC9SvCG%H$#PK~tTm@iwyyPUeGn(`^79=~`uHYOd)fkiJAYwdbZIp6i^ zIU(j^K>nSr`3sy9QAtniDgu|VQQD+UFA7)9K@W$dbiHaZ%OE>esSk&$G{PpE#CUvD zI^HpZiBqtWM`F3QvQubT({<-h^){ZKbrx)`Lz+1*_5E7m8E^88Dmz_sWdU{50l$WG zK%2wq!4JJ(@WE5ZwjX30p-)}&T37_3HbMv^p|rUb-9QHHwafxh+mO(FyogToaF@|r zPOmU3hgZ?|8I%I|-Xj+@o+?=4NU1)%*jtOj>PMb#SF#&5P&#z&?WXg&vxiC#Ruv(I~-#?5hpGS5hyFQ{nkS)nD1LS5w%6@j!^`?QFavGHU@fHf{$5a^62#UAutX zlMX66d1se8_SjRG!Jb)kVd5%+z`ux?`eeg}!`rCFZ@UZ5TV-*fv@a5ivk;v-K1!qUevTZOeXs^(T^sz6-wHeE8sq>)@Iray_Y9=&`_lT#QWR$$mrJ z*m3EKJ45CQ`J^8$p1yd2_0YF>(bQ)>wGMjNV_DQQ+>!}JPX1-!06Az0)MFVt?H?l>0V%`Oc?dO{pn(_C_h~@ZpHGy=c)`(c(Daum`fogva%HTdb4q1?<9` z?{TVoGbWB_{Cq~E2aj}b-xZj`=eT8DPd@i}BJK<%Uyq<-4ZkV5-obf#UG6x+k45JT zRYCn^BB1o?=7)I5wuD;HdlVaTZ;fF6rzAHjuyI8-T-BYZ@%SAJjpF(q#mH zID<;|!M=|VV4DWp6=M!1Q>C{SYQxvNj~zr>SE+5EL*r+hY5jF&e0=x5po*ATa@x;Fy*NwwmQ7#wjPkn9)oDp08{$WpHLr3fDJ&XlwiPL_Y*vJw$z zydKoK&7QIcPKHz<9uv;~OpjDhXoi}=IvP@4h_6yOGHMKYdYf9AJ1%33R`dlw=hXpV zyP}Y5%bdQ{#pU^ktLKd0hk)W=9o2E6taR@QOM^o#JG(AIlj6VS#~kpLIwY1rlgSeg zrInO}vempn(Ht|_1gR~dXgccN)2%$^vzvdMnIninA1oo7zp#{xVGJhFYgY@Zi48hknWspB3IS<>pqIZOVIa9;xF%nh|g-AkPTo5FI;U15wC}Q2mM|yRmriF8$YrO|X-jM#AWUFY18#lH<}T?!uMX0^G}raV&?AsQysw{B3An!-$r2zo zZx;80=i-LVfK}dH0;Xgj(UBbM<)lEP4caM#@4^3fGY9|+xyb^72M;kiFPIg6&s+&u z#0~F!us}ELrLN)sTcJhMnm_+Q9k91@r?sw$MM&%o%u5@g)h+X(m*9DAte)5UO-u65 zfL;d=d#{$>X^P*Ql&q6BjYp>i*%VhIu8+tmqHai7U;_Wk-xmB^10V@8r9>7b?i)B~ zo8%N=f9Zt@V|r`;0Lgg-G4-)Xm-*LnQIbP7o|Ne(Ojy6z*~;xW(|^tl@RP* zWudaC;GE*u7t0Z;p6ZqE;QhrKvU)!5aQL$DU}w4d8zmQS@htt%W7+p01Y$I=1*tNS zrv0Cy2nfkI_Q6$U3LN9@C_-tnvt#BX$gEC1Aq7`BSF@i&n5@D>X#Snw(%9#}fkyG4 z3hv~8CRJQL{Xd&u1iC+P*~vuSBat38;StE5H^o}Sie6K7b>jcC)RXunu($ELZrtvl z#LtovNb*2>ozqWgb+^sp_5aDP|5LTNNleEnL}L~R-`dBXvs#UC<(Qh{cOQ2aC%2Y< zmuOhYKNxHMWiEUXm?+N6QZZjpp8VzLkg~V3nLE7Q0x-%qEWUqc9H6BBt>-`6yi-N9UyLp1N&sUxN9{5@%8nm$4M%0;^f2e8k9{s0rrj(N#E548cgh<`2wXb}F{ zU0<6<-%S`$102v)E}U&f~8Vx!!!s8^W=0I#0a8l zw+1O|!Y=qshdcMU0S~63ZzyGcJ1Bd4{yVGV9&g#|Rg-V>khjCe$2sVwVQ_dMjOoEW zD@^SSjIg487xMM)UEBMc_=3oAADX{dLQ?`yuTT&|{jyB6mDMZ@7-M$+$c-=5)+T%i z*c%`~8S86)KQ)|dr``+>5Wp)X_7m1V%{XSOPc4ICq)C}3t3*=}-lLW=JLRUvOspHr z^>+XO^Pg{G{Lc7a4}}L&QakeXtnd#O_r?f`^*1JU0uRazZT-`^1sCo?E1`@9tuB}U zQPVz{d|W=utsKD1>-XkUpp2H^WrowVAWHQ;XVwSDxazSW2!gxm%Qe>>nrC+E|ZHA)? z1TeW=(#xyas3iz6NN(`9`lXgVtXL~(R+$KAT5rgUTk=tlrL;>24#1IK=mFwZk`br< z7(n^!W3n5m21t>%tBsHJ2Rk6NrHzi*F|Q9FV!l5RT<&}DY#yl47WA}6@BU~6=Mk2b zYbR5af|VA)@aMWzr6Hr*weNcbAhc#i_jY55Pb-U?qs6nQCT#6xwm%$)n``+}P1Shw`qJbw$-~iZ`0ncE?$k!ypeWqXb&4sn5 zn*Mwm8gF!2{P*2^B5!s($<%GuXYf3Q;;_`@j=2JaJPhm*e<+&0OcnND0QXvY;o97l z?hHc587%dghgW5c#bS@cCzkJE$ln+=N>$cq8E0iwyJbF7`!?hMA}LY7iZBA%l5p>b zVx?%J3N5L?)BlzQHG?dr*q$9l-0JvYdY-QtqrYdz;q|mzf9NBQ%BF#+BvV}bAkqN0 z*WnG|3+x0)=f|=Nc`E0mj93*UysOw=6$&A9yQX7*a3;FYr#aSt-7*NHWG0M>&JVR| z4C`}|xN(l}t?Yo|8xD#B?Jb}z<)i2aGec83Gu*}c9u}e7YX4$oPKy9(Pm110M)j6Q zw7`kp9FUMEVQ@-F3zcX3{$k}^SZlm=9C8c?a_`aK89LLVf|)aCc~mu><4}6{*KQcX z+5i|~qTwXzlCgdO+w|3hlNLLyGU~sb$DYiuM|FDq)hij^9X$YAnJl~KWtTH%pS?5> zw(s80q+rTVy@p0P>#f-%2s1oSz|)8pLo4O>h?`#9iFJlQ=nS_b+YEI#+^JeTH!lVm zTki0b4@E?Ht?Y)Ib{K*|E37-t60uQANyR;k_MLY%Hodo6xT<~Tu}by)s6UAo<9`^t zU9%5@kO=w2-ds9itJo*MVMtYv7-OkXQ=aT6`3_rN+b%@q&ChzkF&G862NHh(L^pbk zzxX#hW_8H*=x;f`@+k{mmN0m5y8?7(4_k|US#!z1pY9mAr;=w@$Gi4LfmH}h(Y{KXou1Cq#?*IBFO zI#1c&Bup}V#-zC?O?T`&FKvC`{!bf(y$K=(=zXM5@wL$+3CEH|VIS;edn=Mr8(Z6T zKkiPP(Z}*7BSFAU>SWC=S4WnoV&h>Zg-$IG{PWT=?O_20J zMX14viXUd@Vr7V$^Ryt1>spEfbN11%Qg&_uA@N`JeS>B zzhbuLVEE~M=I-5`gLfpG@Hsv7yv7K)zW)Jz8j2-$$FPSd^BlDFzfGS1G8!ZJ=5p<1 z{mlod>JV&^rJu(nkwEfgoK8Yq_=SF@3oYkV)>l@&a;`XMHc}xLPee#!`UEeY{qp_! z%Jjx07)Mk&eER32j#sAOfJVTIj_IO>k+Pfj%i7fy^qiiHnaOCyNe07R^|GWlce0Bw zXkET}8;#wHQg3bEtdQRK;)}ltEFY2o(?sSA{4X)8QxE^IF2nC)pHV&$grQy_FVCHx zQBdKLLp9mb-!4cjdAM)(R8!AOUzW95HE%8QE!M^dqrX@@LF`i>dX@ThE4iBdVR2J* z6WQyz3X19HnTFPnSuOMr9AQ5;eHi6-@-)w~gVlEixm8+A5QdWZ4tKh>NqinZS*rN( zt$Vo=9bEUvQ~{GZsyF;9JAZ{hDV*>kq&n#NZzbhYHcH{v#H9ie4#FhFBb6&qG zvqvR9;-{M!@;q13pYFvdyG|!x$@(i=L%pf{%*7xfV>8Pf_A|HGJz||F#f40{q)GcMQ zt8l+;&$G3857wIq5eNXYK}-kCO(xPnhMgJ?@{M*n&$aWdC9AbN8%lS^uw&RIYt&!2 zbUrQ@-FrhS={gPPTpCfijIP9WnPRW^jBjL69Bj!} z%gm}?T2uN4#xnTH)ObHf60tERU-8iN$JniIaz@89$uhMYfj~%xx_gLn*2?>>O1q>Kkz~|hULAiAh-rmT6zW{MF?(z zl#6aaIZ;4m#0J?MnIz9MQx3*xZ$!yjdr}O;d0VeG`x{V?fW5{F12_i&*8dM$lw!UCt;q_CBZv;PFRA3uzgTBlC$lRo zrTUM@E#22&mC!&B@@R%hvBrV1pM2WrmuJGOMUl~VO7_z`Gz({?4PBL}=?An?x{1^C>1=u~xN=l?`drO9 z4Sf&1J-&!PWE@ftk?{1DuTG?UG7chos>jwbYxEA&vwJ^OO1YIU8zk@D*Qx&V-vaxS z8v2NGUiv^At{k?) z%Udu%54bA}PEPN{iex>a{_e-cFfck1)o$DlXQ>GtDN^I*hPCQMxjm`I_+Jzy=_ zpck7q5?}v=_l(BZ6KU&XQ~zHA7_MgyPjH+YaTEJ6GW83TGBo@sM!8NOh9C z?)Bi#QvA;+NwM!gVJXH}poXtRR{nUkKd9+6pX2-qK5|g#Lurm_P^DH=3L&#P(4gfz$B0qYG?7i| zKC9dKl+0=xv16ZoADNFciU_JAG9G`Jp(z;`qsO=PJOm*g>5FjW;Wc$-a&|l$ER!{ z6)L5gOe}tOWRo8^ppS)N$lk7hQ{>k;4< zZ@3L-P@ZW9xG$O~Z$s4PK16k`5gBe&nZA3AlXBxFZ?1Vj4}#6kupy4RMKgC=@LhZ! z*Guy@Wsw0-#fx@7?5}X+fApb##lIpOP+s}(^$BHK9=dyc_1urR{Q)Pf<>o@1%d1j< z2RJgjsNrM4OFj!_R4{pj>3aO2^?H4_0F~-g{-00I$R2e7Ra0Oc;qwNUk_uOo z6?1u6T;tXIH9%DiVg&GO)sqx-1}{->A!)3Jr$JmfF_Cqbw%xy@G~^+_b5ckdJPI~6 zF`YM`2S}1K0uURFIz$2@3*e)xn=(!iVO0!D2?N;(RTi`A1NB^C@Rp78H%zU1Uc7p} zaW&!Xm76lp0xiz(EE8$}N|eBZfuh!b$RxR(JRn5!#=!yfd;ltq3ssO4gJ1Cg#i~zi zrw$&s-{u29;Y}R|xKG=_{(w)oc`uIs1*l5QMWD{jqy5{3yMjkyu_TNGfKjEa#J#a6 zE4IJhii82yxXj+qC$i#rObfH~brn1pPz2RykKu!u z=EiuxB_j(;)yIX=%X{@)`p8Ikb|3mTkAh4#8TbcKm_R#ckCnZPX10TcM_<5u|9i8W zx@m`hGT)mIxCVyjnFm77|6B5llqWR8#7g@2mZL0cq>~Otu`l%7%7Bo{n z1orpb9}M8qLrHL_gPa#A;kx-8kZX|12C8EK4##Z3aw8}1-p?H{exiZgBf%e5!&mN6uIAZnkDqIcMl)V^jtg>)_TBq+;*@_sJTf32r+z|Wi3 z(>I-rZjq5P3hFQj$XR>+_ae3MpdS58yZiqy3=ysip@>jl$K8k-e%_UE`Jl0Rh|J(bR;i=Yc>>%< zRT}Vai%2$E-SyaNwS1Er>cVo-=&i|o zM|_kR`e&+F_`1|Rd~oH+ z?xvK8jrgsLt}_T;^)V6aHcweb5Tx*ZcOVS5{QU5f?3nsrtgWxZ$AzIJshI~UaWCIF z#U;NM^Y7Iu^OLC$_nkONX=KEGc`qR=z7___NH=2jHj13b9q}=)V-d@-6=hnfyN}(g ze0so+I{6Xsd-1yP#AwCB0Za+QU^>RBZ3iqp6#T_>Gpw;Gt)=1u7*N5KV%#fj*sSgh zA#eo#0EbM>w`3WCmKkxR^~bM#94YaT`3!z0NE0JLA!(6GbGxKG=9rtwphJXGWveGY>b*#>HQYVJ`w{24_n+wS+R(lT&;{K2Nf?E!XGe)Kj;Z$T8YidBQ>_r4$t%#8i;E#aI;Qy#>@muR*)J5*R(Qj$MytMYs+TCqLZb?Yc|t=Wkhw5 zspR_iF>*4z@ix*h;p24Y;tpb#@2>WadK(BSq!i)evczX_)LpYAs8B{}x*Btwuv1J^ z(x3?>-b=dkSsIm@Ac~H3t5ujb6*j2_P>4>~!}oM@{)`$cTTe4|CDAJNe6Nw7 zgqg8kM_u0_W*6$})*!x`2=gMtj}>gOwcm9$TSxg%fmT6VW)No)CYo^k6*)`@AdL=e zgN~p&kW3kTbH#!aGHU^pyfqjpa}q-0TpXNw_+M_^=j7DG$J!s)t#~>RP5gcdacV2! ztSgZ{J9%ZNT1P@Buc!k_C^}#M#$kRntJb#so10ee0bky`dHbRgx{SCs*PWQ+$LX&sK~rGZiblKDRVb#-TyXQm$ZWSs%-r&& zvXC4$^yLw^^zF9C$NNFpD9OWvBU09fN>ex^u;)+u6t^v-vlo=8d_NIquenD>XD0Oc z`uD>-5;ZDF9B8QKmRSq;1Na&z2OC2rbx%ArFI7;#0zFKV2-tIfqB90qS7r5es)p{E zM}y`(GRdU~o`NT&YW(=I`K@Fe@1n*B&iNGv^JkE^=Su}2t1U+JDS!16KvOhx(Q3>4 z&wkXgE03O5^gyohyH^qh_$!$AdW>+qU9Rd?i5mRfJUT(qnSDV~!cbnqwVtF(XDbzl z8;w-Gg8wFY9W0cu@Vrf93!!(!E_jRmEBo9Dj}zj*VZHu6Q);3T`7UarYi}Y`sh^KyiC&!6yVX!71OGPx=AREa&@pPFn-8b6k3_k1$x~Qk-^0x5kNw#-&7Y(Sii~Yt*_wax@9imOEM^vX+!rr!xaWDW}=!G=G`U~W~Uju8rhocyXKGOY35_K zDfbcbW@s0(V{BBXp(Gdcjy#z9@xrFF2qc_P3bt{@0~P7udtLAlSD~<`d1HUhbe4b#^2&**g@y3`%l*Q?xKfG z9;7IEK->;hHIN zgAvYM9`&|=Ao>gKR57O+BSc{SQ>La|wLcr(mw}WcW{zJ7+TYoFCI^c_Ifd>5)3J=w z31Yg(=E9b^%!}H8@*Iv##UowT^8}Q{XPfy2Qtxc+IuBZKi)+7)xyIAlHcY~fMBk^G zh#h}7>wNXGLbd5*b#3%H0zVv{Mq%4a_7R7iV%@_6fj#Bzo zDq9tB9NW_3(VkB&K9WtnTNXymM{uaV?t?wQnp>ppN=1AWBm7UVnRjeQM)%MS>ERL# zX=*3Ikj&S3U*Uxk$XS)4`wNBihcd}cA#IOSf02?fwLrVIV{L%(fCeaTZrx1wc zPl3oIc>*X2zQcQEM}t^-B4rVAF%c>0h>r&!pBm}}QIxR!VV-18Q#vui8SVG((r@~U z#okRASfHAVYKDKo?cEK5YhFC@2H8(kvUW56N-WB=+5h0tFtuBo_{!4a{!&^G7YzQw zaW-N}ex8zIa;7R6>E?-~+(>9<=KU3~L-UHgp~2Z%r=pgaZ7^I)Rzc6JeB0Amidamv z2y&huXI&PtL9%j%-Hw>dMN1TUbEmb~9a6K&%%YOnt8PDFT2VAM_Mj%|l+1xY^%b*h z9B&Cr_0f3wUuJ6Mp=huD7uPu}+@cbk{m&g?#iZe6*Lsj&^#R(E54p3$K#d_8u$4NzYugwbMMF9YrT|pZLxg?IW@9o^e5i`^Xk{{))Udm-=`YX zU=HwM(cW1Pj8l)32EpD!l9HqB%V<}5nyY7`a$Zc zuo-eHs<}0vt;*wmSxo)=AHNDPmX)B@or0qZ^CpOoPnZ{!p}n%GL}InD9exUgj(3qa z1x_BnCn#KrB-qK=#5W+@f#cE>_Odlbyv;6I?L#>4Pm(XQ5%(uId7{+ zz+Mb0lBb$4CLx0c(b3@Z1YztPZEze!%2z+xR^dBNA)D!1YqIf?qgoN25=#E% zC1miU-mqB%fsnIkbE;NgL-O=@zzRg(DEzs8^5U#+=9T7-y-*s(-qnTHn zQ<3Y{6=_QW+O@NgWK4nlB16`8FeyRHkjlDj7b)6_ay`(cRkn;dB`G2xDors<31k!g z9W6ta?yM|Iw0_Qz(MD%t{QPPbmYDqN`J~%2MPzhDK0Zsp$UPhzExLFF>!cPh9_|s1 zF~?w65`Cw`q{x={Nwz3nuv+-Lk|Xz?4www>!OeS|-=B`Ei3lZHx1j!92mT%9X^FGK z2erc6dZg&_mGw|&R;6$I?AGT*?_yNCVu$@Fea10KuLko?{F^w3$Iovgm)!>rNe5Asju>FLFpgYN#8 zB3-T}Wo1d|)zH%y9ec>+c7F-~SLQ-1g=2JEa!M{odw4KW-^>T9b~MceIRZDH?hRq; zALtAry{d8t{y?5>u<2?Vgpe-5xu;&3f>%q^v4So=JYjM&F(dL`o^}M4Zr`qOaL@$_ zERf2OdQH&e=!a42Xb3<#wc)?U2crkX>5tLzHpfxRbJgmHy}F`VWKO}j70N>&kaNUK zNRL>T+?pot;Ydr5?d0RB_b*y%-Qgo62dZo%B!v|_T*;q5HPCNYd(-efC8vr$t+Sqg zzf^bHn_?J2llq&MyV`W=i`#M{Zem7fx2Y=zr|H1oq}Vb#vnu?fh>|J{lpm5AakS*nHQheo`eTai}Bz9q?aDlx(we>SpL zu0pHrwQevA=R=E()!1~|Ir6a#_ukoG?t{gwbn0Q&Endh_9p&>6sq#$Dr){>+G``W> zS-tDry#1;rGxauN1V*VRyW$(sYwPcUJH)KG%{SU0D9u{gNbW|Mj9ZiQHP+poD`LKg zUpZx5zEgF%H$8Rh#5GR$Tsla$H0I)iaes)sN0ohanbiTg&1L31`|?qm)v^(WKwhoz z9+{`pj8JPfEc<<;-ncR3eV~=wu9z-EtC0!!cZv@*k=j{2PHA*flKJld*6bR!Y0Iau?IH< zq&j32JB+U)9)%UkjH&Igt{f$+nycoM;l`l`J%}2c>J0^_9LW+ z-h(_L=EVhNaH6VBwZ3kO3QGWDJ0x|exx9*iIZcfnDOo7MB&AU=h;mS{aSx}gTEk&R z40Vzpx{Ca{WD_5D@ntWajb9NqMEg?|PcQbwoYRbA!nDjG_6C(08nG2i#cTMsl9E#Fz?RZNScDc|$gyBDab*9llq$;U^hqkh!V)!8@o`Oj zKY52jLyO8vy`M7(l2GLMhe=`(Q@~RTWWn!3>)W;DoEO3$kaG_Zq)dbp>gfoopqtZJ z96hphf8f5IGg*n%vF6;RgD^wvY>OFCuQgfHKhv$q;V-DUn@oQ{(&X+UN7G$ld&-k4 zD$4Vu+WODglrsvsZ&NT)tA}YXmwe!rbZmw025hyLOb!Tt?jLVmf|f^1$?WmlqJv^a=TAM6$>L-5Vq~XLdZ~kHR^sTVdXK>#by9eQuSI~Hm2$-R zi57uF5FWa#&U;W=)SBOYd%?{+-Z65*UhgZES4dSU?dxZi+3G*952Zz{ymG>wNb@YM z3?31|YKc3)c1A8^>g(&1OMKBA8wAHDP@4r~ZO* z6A6eeTT${kBnUW3Q`_l$5_CGcP^iJ>@FMy{WeDl49EOJp#&ATYD8?n1u4*dNyJf5g z)pFpexTc9YR%;NyyS)3809ubrP#Hpu@$|d|tl7}Llpqr8UC!@#6Q?R9r(rGBU;b#x zUSKSV&aF5?V?MjYoQfd#Ge2Jt{l${o51Y^qRw;zOAQRoCEuV>wUhNRVTx;|u_GdhG zxi96^L1S(;=`NR!q$xgyYOyu>r%$=W2DcGBL3s=QOpMpecDBSe{)_csm~`rvs7Lo_ zbEdV4LLx5l^0-UvSWIm6I=f!a!1_Q7=yLgrwX8$UXe?TiRPPmM|!}Npdrz>oVp3HQEW)tNt&DxE)NtPVQl zSD^kfk-L(n6WiU?oq=4k}+-YYrv+aqY zK7|@871#+3$3)MM@{yB)u`8%N%RsT+`ckcuKm7G;B$B*(5RP`qA2oz ze!{bFnateNK+w2u+r33U!vjhfBMYuUNnF_F(^`yS~UdGLvo;v2$BN27gbV@o>D zBO7Nr&!}t0!!+$Az}8Nrvhsn88fITy)K>Bek4>>H!4NHV$eE8rnzM>4JrQoG&O2M7 zIQz1nYF_HidAqPzl*(E}tA=4~SIr^)UIdfF34oFq1YlQaTsq&GNkL z9Aa`c#r(S-uU3l4MZ`#6Tv2|i<8TYrO1+&he&|BwBPvEROSK`sJ2M$}9^VhYN3>9I zO8w;mI?}(zddd=oA%hks$}xpPN#xv-dphyf)?6EG&SSeMlomCWcn^$VLY+sa9S2Pi zkN))T0s)4Xd{J#Lj!Adkn{ZSyIC8q>Gj0Y+i$_`#VIUSb>sr!Tr~HF)?!Zt=C@Q$3p6y>+{X3xx;!VpFA&SjM=$UzP{|^JdXC?w;a$+}N$=5WG4(o{Wur_9*J+ zb3}#KoS$XeYBTqyec+0XIkv!gO*@sJ9r#Q9=n}K8j6!I|y`wLBa zNsEYpm{tk(;NxIl+Tk>M!lT)6QUOYP4U^U87R!8IBGeS9

Y@YnX*sJur!BKwQ=hd`s!#rG0Qt94q;Ml;)imjAej zscyd}Jkuv2FEe7>(EAmfm_571FE+O2b%?#X*iPmgrXtv%Fjk21>&o-sM_bDI?eN)Lw0g$rU9ksIpYEt}E@h1{rw8 zN%Yvzb!1rkU9y=i?IL%$X6UZQ?nRiF3?p~JeUi@xRj1Q|^_z2pzQfq-ij`JZ2|YHu8|>mCGScdxzX7(@GQq$6_Et zv-CX9=Zd>kM2tBc@kFWnq42xb0_&8p@OKABF^IPZaWRo8W%Y!1nt>$u9sE|bOT?>P zuYFHMR)0cv*ej`?p!3c6{@8AlckTkm9~te%*l~_q`02+3vNQYGi7rzGRCMvjD4K(B zVjEQ1d4s97$9bxv7Fq~WdBf6OwE~*4AN>^;)aN=*97oV++%;REDcPy$$`uJ}CJp2s zWb#S-l~LW;y!|ip?{A^1==uz~7zt44mZWnPE0ebJMOvY_qb%%9GAiXSl|Y)&DPBKD zc)A~M%7(tCd*+}L+q64!$}diJ%DCk;>?>QWye%0|ToTCJMZYV3aBf^$%{RVWi00>) z-_^16h&AoF-OOK(W?O4Q8t>XJHY;VfRXfR-=(7y4q7!w?t1u)cF73_?GG);+6)fSKZ<>2xnDhTzK+@qGb3-lCZ>bxU((Z&EWVt!IffN8hjYH#SJEme^n90J z#2Vh)>rFaOM6pb4JVBP!rW@Ho+4sKQw!7*x3Um`?A_-4DHdc8t3dh!-J(^)g`dKn< z1*lKQy1z~AEiN6kd~KGkfes>VIIMT8z^l^O%3#s)!i}j?EghCkm`>7ex8QWrk37=< z2-VOlcQ_@Dtg}gM)Ed^;lBQLT_rnhoVfK=ZfHIMOnBUM8M{D^!Q>0^T#dl_!3n6^^ z2!4BY-QtL;q|uzns`jA7^7*cf2bW#pK3!V1%F4HbLi{C#OTtm%>C@2+_m)c0TYpmf z;v?XbY0kv@?H!&%5r)Axd&vpF2gZBL){s2;LP<0cqK*nzlUi2a=!<5v>qo$0nG zUZ}Q~CTdBDF!z%=dcL1W`I7T{MN5^+{p-4r!YWhVV#s8GhmXgo;~3sg$^(ygIfpLa z<;XGhD-$%Ha}O8F>wUvrynMm%6sHYd-0G&=rmmpkWJehhPGu34OO4Q8Y!cHfDUpp- zi=5tApUxU=w|ZxmqiA(|tj?r)G%K*!J=v1vKJDy4p;RH|BNlmxQoV9yuW@K;}H#Q#euger+IQc zs825@KL|`YO})U>S92}%*CaSppai2g)!#qi_C6RZIg(i%zMLDjrQ%;Me>Y_|N~nAx z_bCAvIAMBKTr`PLboAKnUNUrAZI zyKI;-K*3V^N^hDM)u^Z%F7_%ByQ4_$@@4a!Y55i66OS|$~lfDC1KZniP8fn37m?ooe@*hQK#&^cH|hw zxbi60Q_jP_n77lj2<&cUHbzN~hS@pEmDwejQQjv6ar1v#7W;hkyMp<>nzjt3e;{Yj z<>e5bl}Q)0!w}BOIQK^n#w07RGlp-o%nnTXP+c@@(@w$drv~VinddGB&FF*4G^FAK z?ne0YPC8V-r3RhvH|2q-xBfB<&6|=`BdNJMhXi!3XLMv=Swd+KhB3gB6m%2ShQhE5 z*e9sbw^yif;fPv#{I86U)@jLU)y3TV{3Cmm`LZ-w+@jIS!))hxs7xkr=Ji5zFn0CT z9)^V+ft?~xr_NcA-7pjx6E&fHLDF$yFZg|z;izZe?GV51H&~ByFv+r`k8UJH_ zz)+;LNRUm|MleNL*85FON)~gG#35!IR~#e!juHTU_qSP{H>=FA6BecrE0edUrCw2W+b|7BUpr^^Z{mG4oZB@HNW(#6CJMCwhI$Mrmh#%I^GjWDDUg-M4SfXCi~2 zq?F_i%$|fbVA7FX^s4zPpW^~VJ~Cu{zEW7F9OE&Wqn^BgMw}up`!}sW3du`2%%2A) z>qs#@P$Yo(%0zX*^)9*XnVjSH;)g*9dn$YRE^KU%D7$%)SA|0J8F|T@6W6fMac*zV zf9hPbLi?z@be=jN9<$LiGfG-IHP`zT76y})_xN(t&=y7`P0^V^r^f!=-pDTAv&i;L z4LkXQ6pb3 z@%p-zMpRr~06J|two{RfVMp*;7 zp)h_e$Fe%dXO=VxmT)tpQgL##yH0dw>u0^7$HFOxC2l9aNossEe;N>ggnl`H;yolH ze&jfis2&u!Oih%aI7ftv+_n6%Uw_22+!GKI8MoMKz1FR+k6^Y`V>xx`<=P$S&V}P& zLDYuH;&$`rE=c95u}QP?@J$jFJm1x;TQ)1Gf;nNCgacOyB26UT+aq%F8mA-Y357&K zcLRPUUV{#j$hAik@M2pk>Wz+Xm(aanjzPtdmvZ-tEOqu-(p5S!hhz1AUh=15DOV)v zvf+UQK7X;W!EmSBXK>8|Ac_DBrHyW2k5rUr@~yvS+DbiA&hun+o1XJ5;e1M8!mr6F z@`YvKYe{-?(*pWRME)}3YpcwJr`i5&UK1bdguo{w;gS>DK)6w^+=iFrGrn*Jr=fl6 z2&JJT{(PJj@j#Z)vTxVWg415NFCFqH4trOCuj<~CwQ|?E``~BxBj5GQr&rfSml4vt)ntE`PQ1 z!T=yR%iFXIDt?gE4_+5-t|}aYARtIu-YA?8Un!RFa96fF#D(NnN<-APM>;tFY(I?;nPUy5g@T z$$;<6vmR0<_Wi!HQ9lU8%_YrqJ7(HE0cr=zpYs+Tzv>ih9g|eo|3KH^(ZNE^cEOZw z*3G%G01T+FU-aOUn-gHCvxyC0j3X0qOM04IlF{r6A)MxgG%2H>L2lZ^^>Yh%1j>^2 zP`P=>S!HOKE;#Ot`*n!#19DiAKjZ%g{y+i02ed*HFoNh^k3FXGN84C^20YT{)L;ek_g>7Pvf{{W<(fgBJ)F+T+h zKjoGRl8_`z20GuLYft37(u}>Awi!fS zFw2L~`!5@_VN~4p4|2g2o*(f40AeeU`KS9C=r0t0qV`1OFnb5sj$ia?&-H`UdI{k4 zA_%hvu)FV~{t7}^xIqkR%|wgb)_sWxapMNjR&7Q0GMAwvaTy3iZYZLxD>Gh;_`eAW zO;;_CQg_1;)N8#w3SR5$e}IREvqsZVvW=o2lCDwiN4R|F+xUDk`4!Bq{{Zw}DE&{e z75Q^lkvIPU(2w=t^og4ha7BrhPPLcUdLQ7w#DeM7cwz}GDjLk~i|n}Fjbi4P4%1Up zQ&Ay_4Pq|4rXGJp_B|5A2>1OML&54Jfh0_!^*-zDBL4vNlE z{==^b(ZThBu2blJvN><}fhWP~Jy=E9xbv1j%6NSjss4TFx{Z+y1hsfw3Wy^V@c#gZ z%RU)Tz^&L{7=DE0KwiUny~eVO8G%LP4~#TJLYEXzxT``NthyA|VJn8%q9`V7bca4f zxgt5~Y}PSugdPf-8XHFKi4xG9He>Koz6Zcp1rJdJZF`${G(zMaz}@)^+5Z4V1Y8jC zLFhyx!pg-NaQc>f^>5b4-Cdjb525Aa^wUD3IYUlFoTE!}IVAnhm;63iVNb}s3&4K| z=uSlBQ2I2Af?6e^v#t2@DodNA)JFtd8g#*CbV%~T)5Q@lnQ+;AFQWC_+)=Q*XyjbTYVtDu&#`=m;1~Y@W73Q2e7}SWpj-k) z;DqSr-iC2^!|L059L@FGzlhxGtvk1YH~8HQN^MYtfLwbbU0%d3W8H)8q$LC;m(zbT zE0VI}47gt2n7O59xVTKci`s0ubhA@_1u05Wm2!v7FncjX+5Z3yens-duEP04cY3H+dt*aAb>|x+dHB-^~ z=wn$ULsH$)ztE4>(cu@jjz&b$W3fnSw}DoPBnHyeh@-aFNbi#SJoaFamP>3$BVJE- z1dn6knxdBk=!7S(ii%Q<@r`;W2_keU2y4e=(Ru7PH;)*l8$+sRxc3W~qZ%JC_-wA($%y^lV}fBSN^uc8zr4X_tVr;1Js4)1q=VgDBhwJ_&ECXfeG@e488mkfAtuL9!wb*tC$x z{{SeVcpAJS73n>Lc^mQ*^2Mx3NYW9)CKiPgU+9OKid=s24T@`sPMTa?l%x_eXuOlj zJdhx#NI$?|l7lg_cD`7J^m;D>@xdVI({RAiUd(y6Fj2klxEmtOV}2}To~>q@U=h1C!tU+H(}feRiiu%Vf{~ra3nF0 zF9{d0tH7{ET2J_k|E-1Th+dS9=WBPvPo6LwtNBG*}TUPL6kEBhxm*ilq^F=W8I z9TFLQ7VKAb3FK-xY&^{mc0UY$ulO{lR}^yZEYSY|vFJVz)cr_guc2g?(whlvb#PB( zi2GyrV@@ST!J;@Lf(Swom|X%`nL@=IFG}73*lt9+X-nv={pN|{jr2BLCSzq}37?aZ zh~SP0xI|nL2sgCcv1BxggF`H%9v@Sa9Ni4PET-5HGlYG zD%x%pQs0NL`lG<5O%y!oF#G9m17;iY+7^Lx1*aDCghvE$LKC-onENn7 zCRakkW9qeVm@b#oGfIkvnf^-6N)f&U#*=>48aC8^2?m*|v!(1djHN465v@NR4VO;R zVri`5YS4-5ka}cDb5V0Vi_GuzE^pcp=yf$`_>PoN;zFREv|EukK3rkb8N`Jyw&Y?{ zb73&Zzg7}k7#8>03DlscgAqiG9vInZhAh*l+={kSc^&8;<4tTc;Z+@Yq>B|)$t`(H zN~d{yW~^G$?<0W|{;^SNaANjKGHgX|^52qrt5xV(H9f^zC%E(_uJl_^CZ)KpLv7&J z*fr~+Jx0YFLWI!0BkVtSk1{p38gNDsg3ak-K3BFW%*x%5^Iw+xDH90WrDd}9%J8Vd z=`&7nHNuM71QaYNO(SE(Lc*h0jbosN6kX|TZA;S=xKl_aj%$S*?LCcTmc8EtpSkLU zcK!ksNZOGw$+?V3X&0g|c-HO)Dq8F-7~^5(h-p&q3RW~)&xV9nx*H4s0B(e;i8LBo z_aZHCXAJN?(|_a|%{bVGTgJWxU$8e@b3!@I{tcOUobV@X(8O{+WIjQw$cN=c>spIq zsAH{`-T~lEUn6`*$4#AKCZl3}RPLpJ$=M7_hf>@na(V=|L~upHqQV|%o+E7Ev7tJ! z`)F*vjp;Qnqu49(-(mHnXdyA@sb#X}mp@VqC2WF?XI$VVi?CHx=O7VV5_p?SX0vlhoGF2r=-zQVne|5~U#6KCvqpNhnK1P?y^j ztC6QDbjJ#hzk(K}4MfLA{br|xLX$Ol*xC?&G!5{7MWdv}0bC1pXhpN(4mRle4R22n zYHDnH2AmLA;9;#*Uc{1GEH{?KQ%k==>-kxw=ue^K30<_%^MZ8T*ij~e`o#U6`!~hx z$a&Bn-*mqX_8&whAi6GWAf-eOc|KWvGQJA<9W^yI7?tosWp-jH;Di|4uHhtTQsBj9 zd>WGiu#ycB#nQ!_6G9Pryc#(xe^yblqLid^O&X9u{aEzuKZs`F+>KLGxKGq@iK^}= zF&o@I+4M%_oQU)bj77lEghVDERVeyeHHlTtE?T2fJT*=N5^xaSUtx~%`;QZ{-b+ME zx8!4H{sbEvEG>g$x9M)^a%Q7jy@rAsY@(Rk(GP8Dr?HX#Vc`6);Zd@pqM|t@l1;lY z*N26C8t_gAr1U2tE=6*EA57QfkU<;~bwWZSPSL7_gV;}{ywaDV6D$d0qL&MWDN4%C zhr#eB%E;P-HnH#GYo{+mZfnnxr#B4T|HwXpwl&UpOnr|9J2s}-jCU|J(4iM{29CSif^bumWkxzdf4K0;r z;UsxU*3IzNEj$tGUnBl~0c6nC7yct2yMS&Vjc<35v_^~3s`aLWl&$$CXuOB)x(Y~C z&rAeDQZV^G3i!ahF#S)WK1lg1mRBR`{{V4<5e$w9go)6CL?%27sr5E*+DL+Ur5h_F zE6d3Z35rGx*WlFOF?nW-$pQGtn-A2nMz6^TK@$&bwl~~n`0%uw}(0p@_Ij$s$VKY5-4ccT1}}_rL!&wgvk#_{N@Qa{4_5m4mAP|Efe+= zyHIR+>~?m&NVn^k=||-9O9+ zf{9Ob{YUIEx)f>78qJ$Z8$^DeV<{r{Dr+H`d?7>TQ7G){^(KE=!Gy*Il505ak9YVE2nqeLYqk){vSUaa{W4^c*@q~uOTa?hrH zvIrxB3Ve=@i47v*^hMw{&0a~;2?>?MNdr$AHHx!ZmTBm?VwVl!R2pMAuS4Lh3xn8e zIL~2Rvc|33!d5*36t4tucqSmQ`d-3wH<(VR(E5D-3&qVZW%NF)+@&t1DkG8!ApQRU zhr=GxMaXmd-uONS{SVZfiO7$ZP+uYlAd(^z6Yx9~NQ4-+V*BQq3M#@vY8 z-w!})#VmRuHH9&`TpNwVX1t4HsmmJvz&ZMb8UFwqWQj;1h=L+?>}(fKf){=Y_7SaW zhNj=bABFTsDd#0X3d#j1$-BQeGkB>aY@Xgo5)p7hEJ0+P za_akkJvZ>ytb`_nHip$8f}?RwY-(0(a8%Xd7@|x;Xd$4i35QtI2|6ugkuMz{1i7|C z+eVT?RCdDDoP3Qz^l8-c^6)Z)&qD8^W7yFD07_WQk2qo}N>SyF^e2nhg)c?I;Utnt z@O-oEUIX+$QVGa`T#u|8H*-=?K^NgIL8|-{qti>28SY@m_z<1;EO|9GeowR9iDDX$ zZCML)SBz}D8*tYlGZGq5k~Ab1{S|b`alG(^2A<}Pp|y)EqGfg7ig?THvGh`*waE+4 zDI?hZ8T2oaLi*tZe3i)`C(zJ>2q4gj++%f{9|h<`4)Kkqo2uwJK_$x?M2|z{UexAc z@SUNw#QgTfhm>sE#Ty>H>(rsE@-T#iOwy3W!GZ7>Ate$>sAwu98d2!*)!~$5RqqEz zpMkYBMOtca+?~HUZFlh-gkdBe!U$WB)th!>enSHXr5Dtk(8R#sk@jp75ZMw$G$oBc z1@<3KmGJ#eecWyL-1p3zHvcGQ)@M5fR^EnHhmH_!k1M1G-^H{#qf=8 zJIl^k$0KV}Jc^jv?Kc{~$PZiXp$JEq*rnhN3fr|1(26Ip@RGe-**uh1)O-v@#VMgt z9Fdddm(hI{@KLKZHRP^I?4H>OK@kxV35kY&>qKOOh`6F|6`!({tc*b=cOcqcN}#-i z!hB@;H4DPhk5O>)hYE;DYBkTV!CwV%CMei_5tYfT)PcG*5)veMJs2c3UxjkU?K6qPbZSz!(11-Y$_{PoD zy@e0<8AS)tmBSOt{)!tH(0>D2t@bo2*WG1uUnkl3gb~3QM{W1lP30o8<3gcFghG1~ zLuqtI%H}3sg&>{}lUISJM@ZT1Q>h;%a$h2mt0asgf+lDd8a#C^VQ24;BhQ=HscQTX zrKZnPmkFcTwNh)J7<~=l=9dpTlpEP%!^rFO7L?iaQ)VTOwMUnBHoBg*BUs3mt`YiNnM%z_*&jG1@{ds+Z}4AB>Kd@e2MqnjR}9{IvZ3Ng zZbpWSkv51<+w3NxnGzdc0vORNaA^wOXIGiDC_M}_N4K%Mt1n^GR96gF>ejV(8k&6p zjfm8S%5*WG<%TskdLk-KJxR+b{a@oBR_{o6jK84+?zQkCyA!vucT#CWdZ`$s#@1*i zn>u@uD)I)AwMAz zs=6z67oEgJl*$<6*)0((3Nb_>_m!hQU*kH*vObh&IGJ{$U{u z*KJtELjM2|=E#v({{ZaAGiqxP+*`8nn%~ju;C)`|M>8X^gcl!e{1jtoXh#*Kdj%e| zb>WL_J`W?U`^8@a2f?PK%|)l^HmTRiT$Tfou37YmQ*(ED@1T};{sIKCG|K9Ii`NK2 zU`U;YdFp@sWT%0$BONbK!uro>On1a1mQ(EL{2B(aqyfACjX_oMPbhuv0rsnHM z-V#p(0xez%YCZ8f5c=7udY?3#HwLJO_-+qrr#SDZ04G|5kc;I0bIO-Rj0Ydx5e z;(|Cf!p4gfr9Wa=hK7S_Vu|{X(4g9GSC%4|$>=wAr>vLJrj0(9QsU*Zjhd0BvGt;p zaeqj7)$SQfz3vcbZSu7l z@lcSHN)xut@o|$2@Hfr9hCjqurAx??p5h0O;P@+o@X0+%$d8e?C)2_ZM;ImG(jhRq zmM>{^zrmfG*KoLf3*lL4n*RW@hs4vlt&PfLe41f6Jw>I)#C$O{_AF)W`6}ShFyE8x zX1XOGx%f>@=zk%+X!+#ZOg^jAylLq^o14*ddrWM&MH|$l8p+RG74TEWAE^v{k@9_y zrb8nnUxNricQ0aeUWWewIkJ~4qeDYVLgqEHK1P;QrL3&3$WPsxHwg~zMDThISbdM& zc#vpY#!-3jp|)U>k1cH83wT$KST%TA=5)z0ZF#AvNFGL{(iQK)rr%Qi}NZzB*3Tlk7_;l0t=~7}hfb#YU#2Dn(rll&FHDG58muM$LpEkCHxe zLJD+*MwnlO`rGckv415lo6&o8(53cO$dk(wC5Ov3_$z|&$o-FDA0)yN6RC6|6QY-@ z5ST=-a^jUH`zq#eGK?Qt7V7o z5}D{mg+;-!sH0~2xGH)SB=XNerv>O#coUts*?ktyW-c${F|l+`r_p;F7Y&rCo<^jf zC&BVp!CxH%*hc)1+)c|N?o1_N91w&TW_2-P<^CdNDBs||pP(icwxOo)f9qpxcraMrF#;`4ii$w9C&)~t)Qr?ej)+*-q}{?P;7iG=^n+sJ z^%hi~*ze>P={M8ovdcqdbTPbb(722vk*+g`%QtL%4ZaJ&`N8sJWpY<1)(}A$L?DF3 z%I&V7IGLSz70)9NIiuLC(hNNVCpItc!h(ZvVUAL+}SFow~1H8l{>BxqDNJ#e`^Hj^=q9*q*~5qc2K($55BU7QK1}?H8vWyPxx01ZNY17H6tVB`oc)#6Q*>eLUc~b>SE~f zEJ3|GNFe4~&1o61p2)E5#Y+#Ou1dTOl*=j!64azqD~7Lur9RkKLAcb9c=OVGVRd%K zE&D!uuekaiA76p~3+=9tBV%+nf?~QW$d|T5Ad7-734|`m_t5_U2hUH8F$?d6>haK~ z{Vd>O5~Pv9@QXpDvH!#XClCPu0s;XA0RaF40|5a5000315g{=_5K&=qk%6JH!O`LH zAo2g&00;pA00BP`SV|Du^rE07eaq)1<$h7dfX2)61XSv$?AiT+$t^Y{a>T6WcaRboVFqIKCp{j-MX6HrxS)_? z@P)Fo0#s)eIF(W8xP}P!n5lV{`#G7pQi5h*DUr}(UruAFn1P6D4J5;oIp|u-ra9EB z-XP$ZZGlsWl?_0FP@Kk4z~vUm$5@nrs;Y{<9@bEnH_XMy z5Zzp>yGf&&Yg>wQI0@otiL=u4D&utntEhQv`w)t4U+{RB*o{W1jUL>bSBM-hS@<@T1kUW*z=GkTY@8=S+*E-ZHp z6&D>2gt!gEKBc@t#H->~pj74` zUd+twUy_x-vb!-6Y0OG#Y@P!!#b244)G?Uqa_3Y0PA3_OVS}*#H4Lx=%wW#(1*(8I zaXW^KW#)d(IF5HeF$q^IyzdUuvouUGKwl(M@dk03S-XRByY(5iUlDus-%MOsvxq}? z65`{`=HS$BW;1$*NHkPdYNEl!%vkQ`a~ssUoXwpAYonO8IGT@{ zcMwy3Ed7s5;uTYk!l73Tkk%zZD7U-OVdh?C%gps0odP9FxlyX~9YoGyzY^tIW#e+l zr9~yjcP`$ZrB^bu9YS0n(;Da&;srwt77an^vRt@98JbkQH#OJ0V0=m(RMQN@H$0h$ zxwau}KO$=paHA6atSk!SiEEgclub1is9bQaXB&dN4DM+yv^?f*!8ut~yNfv40<{95 z6X`P1QG4cLwqj7kP~et$xZ^3wZZoTS- zMQSKJpYb-VAt5=nF=+7r0Ap3!URbZ(d&Q}_RSM})7d4q%6&%gfsNwNAXCM5HT;}EG zIhRL6qtL%4USK!4oWzw=a@V=)BuavuMs1IIW!zh4;igt2IGo}(u-8IqgB-H!uM+bw zqQoV)D=>z1RH{6&&rNTs9C?+*t{_!cLb-DMMTs5s#l)!eOvHnU`5uWLBWo@xcJ$5X zrN`Xn9p|~Icj%eSBC23ZmwVLSh#~xeDyCqa8&oW^w&v7r%=0*#si&pu&0i&s@kZ_| z<~x+!7mA7-bq(5p;S#q|riqRrSFB9w3UeRATWA%LVRQ<2hWNh05F3K9guya)mq(ax zIo!#5h~2{?wJOP}R8tsee`7|%V7x_g#;-ERHEyl}<|f7qOPQ&7j#soVaQBG4pxY@C zl-URNCPV)KLjj^v*R}nFEX1~*O6W1CQrp%i5mGMl_=_GhFb?@kz!xoLV%b)YMy0=# zaDj=(M1kIEnK3kUOh8zb!Iy|)R$0gY07P>; zK-^{2xT4QT5}ZZHOYuC$?gMh^irR$cF}fxBk5?pj3YRY8)VXo!vCIMG7JNa5Sj&dv zuC;LErE@CfM5%be9ZXeE8J3__(JvRwCp{LYw6mB9%C`iO#2?vm^8|Gq%PM~*QGrA3 zxvpoEF~?UCP!&7MfM1y5mSWg|#^Sv>l;xF;B+8!fHra_m%|fd*J)o6W`B7(0%N8bW zMIh}Vb3HZkHQHQHEI`uBH4&YMxD{>sn;gJgh^F-wt$LK(h_YPHTO|^0b^MriJ4=^{ zo1Dvra|06INoNwkxm}>U$8m9pWSV78DqS99xGBsTc1j-Qt7`Q$6)v|h#Ks`_m2oi~ z1x-QDWqE<0JqVpH$;@#X@1^E16Dd-dmP`p8As%7Qq!~{u>Sy#PaWdd; zDz}m)ceXTC5Jt>JiD#&v*!qFOI8+*!9FWO1&|>k>)TVih-Z_?@BF8gL)LtWL2tZa< zOQSsp7c~}N*>Db+PK@GLM}{~&%Z(rsJDQGT%ovfGmp7?Q?Gh$&INwhl4v9QNdFfVk z6PdV^Qk$BL#^Uo7+97e=bvVSXW0`SdG~8F78Iy(%gI#L>0QelvFRN^3H5Q|k#8(!G z-Cr{dtjxkVe8w(d!Ga{Z#8^G$!r-hdz|1AhLFh5piA)Aut~RhknM1@+c<=>%L$M4o zQk8t;S}4(eVDACpb4?QnCo?7|G508yr7)waAXP}q4aSrT#`-{axN{{>_i@63dfSv(uQPaaB%|J zq{%Q$8F-c6Yo=~kOh2&380uUGq0qx`Ly1<56PU`mdd^u?6LO(HiKu2)BhbJM&SxDC z(df=IIgX-RagKSo7^pgleHyEqm57;vIh@Urs*VWmK054#*Z%+uLa=duCGHWyJj_Jx zD-p_7Ml41xOl*d3aT;PTZk~EO)GdY%dQ_@01EqG3C9K3ymlt3BIo=}*qrxr6ysno_ z;x%*fTqQxoyvpaMF)f1HfF&Y?;<%HN0#MTB(F2S5Elo4(33&TuqmNe-yCTQ>#a7as z=k^_l0W~XizJ-Jf)bgcVEEj4tcM&kc?fr;tV9_$n&E^GV5L-0_U?DAq!ioT>uQfcY zl-5dji?^S$m2A&>%O+wAn`^X5LGzfL(Kgm^Q)UT8II)v?u9TO71!U4u*&C98B^C*>EO1!#(pAhEa#wS&S ziIXtNa^t+mQ=QGVH9Je3%Fk4?a+eLnnJP0Q20hqspyQ%=gP_zhOrQKM8JBkG;F@L? zQB1%jvBVShBqK~|2K~yW;9HeMaT;>wU<<^1#7}afE(F8ETVS`XFgzcVHxJc8Hh#w4 zlia8%eU>+g!XJdUn_m?MZWDR>N-VS*ER^j407X!8;vJ%2iHSM5H_!^2ZX2A!4P%HP z6=%o)0I?NLAPrIKUB$eOMI6h!wo&d_XbOt>l~5F`hhy>~&*BPmEz1(jK`RUbs?0VK z(b_w}9%k#8`GHt&VK@%(d%KvKWpSUh7zP;bwdN>0h}Px#h+`@36P3iGt8vj9YHD2> zk(bRwF)$>;6#S8@(^_9GEoJ9{&L02YE!SPVvOs(cE&&`5nQ`a>QGg zFPPNxSCjOWa`Q2FEDTE>bkeFF4)NT?yP020iw>8GvOcEe@WsqGs2fI|O*oe-0bXXM zl^RG;&uo9P`mDLGV$H){Hyj-Ua^>{8g}N+UTv>`fBXu_1<}YcV*qEH=KTz&~y~d!09M4j}UtlK%iD^DSkyE?q`pv~bLXSiLa~<^ymj#H=x#%$p%x ztg#GSz=IusBDPPne6wsovtO}Hay&xCYUQ?Khj@*7W?1G~S7$}mAh>1YKgq@Dm8&2s zx%Pp=q6iofNlZy#bepYw|y{^h42jNK6MPT-hLeL(k<%|!nI z>nd(~igJ9hDPcmYRqdEFe_3ggkQTy0aQQH3m5PB_CT^is2gJgA=-}ypCXM1O&r?yo z!X{Z&IhBk50OIe6H8_PG3>^wsb5XJ_d_rG&bjJv#WtSQI1|DPLH*s+VdzrP+>T^s4 ztMv&3itCFRSQkCYwmuaq5lW^818dv>&Y(>MEo&`yN~jZIOO%8R+s7X-&? zmIKVEea5G$Z3f-wrXz4z2=+|x#MVDK<)|afN+rv=w|RJ)?pSjKxT(43C}uL-q-(Zi zUf4OP%I5k##i``zw82)*LoCG{kU+~6Ih5}_(N0;Kkbcb{?K=VOos#{{gP%){WDKLa=XdfA0|3O`8*%w5OQ~-DgOYXS)c10aQ?%% zex)j{`pVly_OJ~R&O-NPWm2X~q(ADT$|g;IO$~lPv|>`UL?qHvsX#+cqn(j6;v{z; zaY;+4^eyz!4k0ScL5XO9G{A=C)FNl1bhxn^b1pV!n5gbX(Q_EH$3>{rbqz!*o+BRD zD>J+fl?V&eD7uPW(F;0Ran7RohGmm|9Ca*r&<}ZI%mmph;r1Z`cQ9cx&j*%xfgRM9 zr1DEGz;cDTM;XLx2vuCoZsu&Ej-qdzLa-mAEVYOMfT%sd?cN@A!q#UdeC8&wK%HN> zHC8>$3I+m*2Z)DqP{RF%8Tx{X&B|ySmCU5U8#9x&#V!eP$jvniHT;_2m zRB8oc53?}d5N(K}s}llNu;KFe0C#IBKAkeFcA42Y53{J20b$GjB}e_hInUW&G0o5R zG;RAHcFOtt0m{vAqMlOy($$zP+`G&hN4kP-r)q~M;t8+fKmKWhRq;?{)ACYmzM-@c zEi@CHza{$-->T(tm+ZOb{jfVOF;~GiLHH7^Xi6XsBVC{!q7t(W#?GY`6prvm%r2v< zo0Jg26~yUNyy90vENx*k)n@fImR#ei?srNKW!&cDoXX5ID-5i{UwOed=y5J$7>j)` ziE~jdCMM+~%({+KCR|y0mzcSPs>}&-Gaj3VPsr*U)*)dHTNEpDz{*E~`5L>8*dJmJ zM7*)XDW$%KTLbheXTpDCO;5Xmi?CoOte0J*fotVujURcMf$}+(m^qGG8Lqc}Lo`Pk ztP=H#N<_T9du6V~qORdp%)yF-ZV8)(hly2jI0A4r09xid-9pXWO$cjHmZYmechq|~ z6p@Zujv`x`XzT24=j5*Ig6}mj5~+d_V|tcmu@Dlc3V4mnaSrfR;H<1;r3tu@!Zuyw zkBkQ**Ju1tpyvn(?k;82{f$g^m5EmzLOF(*lw3%Ps)KQXTIe*!UM9w&3q5qa!j>40 zSj#_R;%-x2Hv-{f;x#oG1xmzuoAnckQkDiM8Jm|x7_-!RH5bHsIF8}Cd(63bi{fcG zm?|wZN~op9GKrgu(741s{{Zp0u*;6C%(!Kh(F7aZGl^Kl*D|73u`kR@%*EmbkpsDL z630+(S>7kS#j$`VC6m6D(x{z*et*W>}TzNX{$ zh&g`6ihrnEfVe9Ghzq<#3`8YV_Z{P*{pqGj>ODDz?h&P+ugJ*(Y5j&ba*1;QL@!hG z6HW01y-N-jz^qs7%)9*P%Q4+TxFQ>EEt(*kF(HM;joi&_fn2enmKFxAm2Mr!&I>Ru z&*Za2qinFT{w239R5+9f#bRRj(0gK3y-Ti(Sc!+2-#6qQD_BSM#LDZdadE?$wlP>- zV8lw5nWknABC=ZxBrKU>nD&L-<1+ITf(>F{nODplz=oo|S#Z>5A*3s9<~W-%((@QG z%Ej#(aU4unh-M|VEgizTSB|?bF<~w-$ZP%%3{z3>?*^mY9aA5hCXZlNRX!Q!TuQSg!C0wFj z($6Ach5fR_KZ`JL>QL+Z9gyV&hKI^GXe9?pM(R=6oInPm6rjcERSM=imx*yqnT`l< zFom-bZXRW$bA%xWp}wXF>bG%eD%k97o`MT?Pq^NQu6xTXa_zv6FbNexyh^qSjwPa< ziCnUP+50dY#Vrh2R}mEh3Wz+;!lF}hhj1*uAknhpkP#zqxOa|pMHf!x4e+BGVy7~! z^&CsgRTRqC{6}2}DZI~H>2mqF+$&~Dc%OA)4al_nNC`XF>tFO_Rj*&uE=EjT(MH zJD$*0bo_!(7ig+d4XXZ9%l)QIn(uJ!57;HY(-SiOBiJ93j-Md+f69jfs65)g5G`eM zB`fwLcKw08U+h*Cf5ii!2ciUOIYcHBsOa{Xs;IccXhnOC3`>_bbRxtaC1NHzbJINy z<`}rJFWd~kwp7U)LkV#%66!hWc#au#MSTOHMUIzDUY9u~5@G$UxoUviIpP#sxa_HF zBy6-5a0Xz|nc^#TU$U2ER7G5{5HgD#s}Q4bJDY12040WEm8jKsi=ZOc*atOHExwSC za@5?W?ipiisPHp8m|;8!Gz$jx7E#av0SrSH*kM(e2Zen>Uk9mUkAxqTx^4C^ZGOtct8gqXX=W{-1XA;UKpOd| zlaJ&J3wfd_P#&NgxAt3TdSU|YdtgrQ?06s9Z~dltS_Eg0mgMWqeJckj^DnMCdt;zVY!YI3jZh z5X7bSiRfdd>0vO-FEPer-W@`^ zHZVKJ8-!uIj51$Acwh+6a^*KsE!=#d2xY{spq!9yN7(R)n~@&J!wVQg)KF~|Sp9|f zPuq#TpCGxv@?`D%FWYPFsb+{K2$#7>9S+Q19X+)RqOh%0UoymwTc|FhZEgdeIi3hr zWt4gRh+RxsiZfALl$t!u9mcAqdu9k0US$hbneddRp=b=JiE4=!pn0rIIl7kA%G^_n zl^7wQA}f#NaNO53H^g9Ku5&HsG^=V^0aZ_cMvSvWyN!FsLLImQvo94tV%#X=T--}B zDjJDwGE*oOGR>=su`UT`LSHiA^ zW?`ru*aI-h9L^d=zmXMgCFK{OwRQ+N8+F&_Em zFEBgi?^4~}?51SIms=s0JHC$LEF2g7i|WlRB(fK>`}J@HSIR2mGcPk(?0ZaZ0~a(l z%2!g5?MsX8K@ae;6uVY7o zMJapE8GwZl)Y2y`3|Z2Pl(}=nZG0CQZ51~RT&<(RFDeI=hhy=Dz@db= zid`?U+B6%&{eRqP5T~5*c7RI;jW9=Xmk|dIUZCyw1&H!S3fogDlsY&nFk0a4qcsCS z@hQT=*wk$EdfWxf?=a1^Fd?|aVJisp3pZ>UGb+n2F@kdu`7F4BrItma;Zp;qLe0UK6ub2YHp4RNUM9EEYl(QwyNJV81G=Zf4eJDE z#G!zwW?q*84AI6&Ou4FnEn>N49mEEw`sQgO&6hI7+%3?oIfX(UvV&I%Vh1?sPS*?; zkWht;Ax3d1HMTq!!+VyxGb!+Z-xV*8B3F#Kp}9-BTtYSN60pr_`wqrnX+$0YJ7Zsg zrVU9)jWz^|!+xO*b*B}atsElSN(cmDvf5MI)pS{Z7i+%FQv{@glg zSwha7z=>6cm&6&KG_Sn7Un;i40&JgwL!#$)Q z8}2A~JjG@$^28c%{D=BUE#qFJ+n$JbC!mKvz>2r{l@9*^)re;+@d5t;B8XhxJh5Hd z^?+#oVP)6cYu5ch`22_c6hr=q77;CEA_9Q!L}R1_VfM|4|CHsJ@TD$A4>Ka$PA zldy?tioT@^BmV#*AO2_){u36{aokt(73Fy)mRl?i6Cg{37i$y?-UL-2QjMpgR3V;sF0&Z8)S1)-UA9MJ_gF6EbT#Ce9Jb#d;? zzMRYbj$l9}s+g@o%m_q_6`d7eE19W&V#QF_4>6>lk)~D3%&I)}Ox?`)l#fzmYB^&U zh+8p49CWZFl5HG9svs^l!d()avX16jvS6ztcFFDhB5O~`-TW$9#qLr#eTsl9_6+2o zkpXG^h`CSf$X-%YRv&Wqr4=wHZeH30@_7J1uyuv)0Avrz?VL&&p~P)9#%3!prkD)F znB5U&QG1S5H7c^QfMtlh8TSITiHMI0VOooRA_CpUyG+r^%Qs#n1aMrmb#pc*k8f|Rht&u)Bt@$0T6Q*x^WVwQdH43nR%OG zf-=W-x?_@1m~t%&_nIZlrpemeFPUV&7kGUa{6|v-%c5a72Q?PZN1#;HwanX~7C9Cx{P!nTs~|&jj!xs6I;4 ziAEtJ9TJ&XxpmANjI6|As5_9)5ZnUH*o+LFcRbX89LLXIXYai_+qpABludE6_df1y zIeV1s?#z^NC&`GcvN@5}8F568&?WPdq);T|_w)Dn`|tPh`F!86=ll6m(_wG>7?af6 zuT-+c+iu+z!~vjJ!I399RlZ=?oUG{;p)|&cjN7qXj?iOF0+rFj54_ zLn}-gN&PFTNbc#it<`>l#HF`+z=nxqOkJpZe4d(i zBU7VV=|oTK(y4*Ht4}MlqFLv!y2tIf^u*`MTEG1?hVH-;5dxByoh1 z&!jmVg(J#X8um>}1rzJG@+Q&Y^@!R%Sd%TXK_!kHD3+9`2`{{f1136TK)u*+#b`0sf+ zTG>Oas!`T(kLl$kKW0%++HcD6X(5v>=_fyV$w63%ksCpe=rtxTFV)nTrdVy-zLffu zs-e`UmCOR1{+2A6)05?A5kTTk*CFv89?3{|dG0e`GMC6uB56z~53yd;42uGebu>s) z9IjWRpjJ*DptqLh?w3fwpi>nR*l-Q#nl-eq!Zm|Sp(Jd3{Jv-L9!FfimSsL^+i#u` z$sszC$Ea0!2}7@w%r3J0D|JW4j!IznBNln|;Ew^va-oqctDpfnjXJ5HXYj>p(odJOqNej| z&x@KT?{`CnR9J5qwcJe>N(Sy+r<^n3Y)ZVNTwHR^y8_A#1-`vED1!|J-9gU?2CE6D zKrF5lF1g;h=Jg{G&5zKR$E- zf{A$;R~^ufJKfk)?20iOPN+5tZ|yrueN=mKTR4rE_#8}k2V1uQxAEtuBYO&>wTNz7 z*n??`!f$;aDl7s{6K>*`s!e?Uyp7^1-8bQMi7`PM(N37VlVNOIV=o}Y#x@kJ&mOS@ z4JL9)-qw@uZnzT}GWA{j%t!mrhmw#NaSwe}DvDs%$MVi8J)Q?oluoJDjOzqs4Ht01W@7nF2+@<7*j)8Kh&@ClvzT{Jj3*W>XA zpJ@6*GdRGUxTJ1Q4653vUM0|P@uPBTw}@Vbo{~?^mrHQI9_~bo`l1K%_f)5Yf@u4t zmzB8#@gkN%VIC+j_!g?Scyu=3+!;NRVIo;JQdf?cW8+NeJ4y>d0Usi<8mLINO-@A! zfA)P)896uL`iQQ-(yv3sE!tnEXs{&A{li)YcHnOr+-_L_TpM0ZNK)OAaEJs}0vn0d z#ymuxpFoO-tx}lQ9d7zVDy38?-&(Ffs}S^l!De1*S}fl%CQL%92;W(}unH9VY}6s~ zit&lQc{Cc*fDHh%ltfCk0w49iz|kkOFJ-rZH6Z&xZ~~2K%U-y!@Pv$V3Az*>4cnZx z_~dYt#=(P$T@~_-!#T0|?GY`{J(#HWcseWlTfH47IQ+U5|E6N^mpac|-UHLpL3hb) z1J5@<{m5E%*<)~?aD4F2#pm*bWgllFByz|-agoD9!2%@JAsXm652%M4H-zL50n12< zM>IH?v~z8wx?Ih&cQ>ey)-GR<6l-eKU=_?{)HUMJDl8Gd5H;q^yVIkig@;U(o2>PGspP-%NeT+aO zW^p(djOb7XnL&9%Sb^OymwqegmGyssWnGgI5!Tou*7^!PS%AHT(_b^~^x=J_H#O=m zPLlNP!rwgrz;*RhR!@-4GMurf-sT;KU=*yVx^HcshMi@y^Q`$DDP-#jxMxoIV)fxa zKqsS=tJ0+Flp+aKa-624RD{#&Qf(-<$2zho83x%! zJ4V(D(WSIjwfT>=Od)5*fvu(wJoYpl8Ssq`LL1zD6xLd?n(wjrwBmD&o71Ar`$Z=Q zf1J6`K}^PRT}CkENbTypS$ck*QTQjU1YDHKNLxWDd9Cy(IXH`;=)gdw;=s|utK@^H zvAM0kugr~Ik>zonYDI1oX72=@)Tu%{70_+Iwj#twj&D@ zKJnT^b^k-f?XUz~E~(4Ci>sYpn;6U13o@w^MAl4Man_@5;ZXJiY60z{CiUTVxY&9} z^UL&8I1jXKWSbtI*eWu}7Re!u7M4mJYsuGKW-+;I9O@0@yD#ZDW-I;ck=$`&SbTFK4YXa-H1ZqdnNEhFsN8SEJ5a7p>{|!~;;_ zdMio)3E$Mb8+1S{r6|7Te7qwulOCurutWDwZkC6H6w!Y-q%cVUx)Q?OtzWw&zxKt7 zFy9^No7BpFiWLW$W&!&Lr3~thz|OT&JC%rH?87>e6&g``)(N5zUBh>y71-4+c)7;W-($PFw5NIqhFk%WhPL<*AnLOvohTO zIzMFG^u^!Iuh+71F>_$SGBTIV5V(Ezv!!tFmk1}JX##K1vib3`2v;rj zgR{3uvfShZK1G7NMUIT<1X0Jlp6L73fM0Z7h+vT8ql|y@9!46^Fv1FCdhgD6#1Usf zSl7arBRNg9%OiSUNG!x)6x{b%Y68*-eTR_w6kWCMymFe zqr7V+GgPHA3unt>-qaI`88%Oy)z6wZPT5V4$mUWk(-3|lh>Vd*>uJ-;gd3vp)13Mf zWl5ucSxh%iq?#IPw`9_vCL9BJ075c4mTj%9W~jhJo$3-hxee84X<+KDNKuNTLZk@9 z$9C9bve-ErUt9t-V}wq3Yk)BXkvKHEV_v1moIP;BuL7+H*+}>ms2}1X;jY0v`UPYw{K0>zVAF2 z@1?Y>p}Yup69?U;ZGNR|^6Kl-3U!C2fRvsDE3BK_0GS;#D6PilZSKph7GnAk<)-;= zg}R#VU}5FWBg_e>xm6{r#J@Du7YkDVLQ2{Fum7;--CUKUe+0P2M(-o)c8Ra0+C)|J zS%_H_mOWog2#p?{IP(T_d4@mHXK;k}==N2JVU3KN!e#%1$gAbdF4Lh3X>2 zj>PAGPm3g-ATWtrIlgtYDxWR15fEkK=uztQB9i@YnloEKu1n#l?JMepl!PE9MN{v~ zPA;ikT|scDWXA<2A&VRLZpjt+o?-t`B=Z`elo?wuF0)K(^2-$>$jx&2V#!sVVm>K;WT@88T8W=0=r_=G8ewJ= ztHJZ(6*D0KThViKhjlC*?}$`hEwhtnp!;n|7f3Y<`;9E%#UeWt@EcXFLdMiFx9ol| z2(4`!;~6>Mp(4?YUo~RmGWGFg6evMi6}}*72^ie+WLG6zOh}U%QY@SO(Ob2%H#Ioj z){+PkoSSJ}FO$PbQLHIvB@Y`aLnCcAoaE--V;fT0aami#4_(*Ob_O|5M6f)pUWv)+ zU9%LP2=o0DQ1VYrl|JX{nrZ2u6?=eh81R#Cex^C>O3b?%sy8NhZ?YIYvjGnfUauw@ zFL>F#&d1vOK2sg9JR-9d#u8L6qnZzMpXfuCby{9X-qQzC(dSwm`$&sCzifQHIu8}G zc$AH|eC4fdAIp5rk-P7@>g*8FlL4z6c+A{LLvgyf?z2^VTP{zD0cV=2)Wu8d&6F)Z z4k#XK51SdEF?uyG!VrG-IS2?nwy%oh4^GA0-m!kE&pMn%u2r$S3P8!dF{Q0)71q3p zhtk7+9RPDZ#-{sq>|A+lxyAy%T(5$yX)pNHnrzNWo_L2UURQW2^XL^Q$hCdOT;)2C zH_1(R7#xt+U5TrW_lMxM;p<)&Wft|1z}M7dL?Ft*-mAuSL)*^K&n;$0E=AO;IHZq? zsM3?CGs*^ft^B(_?2YR54!ayAZ|8YG=S9Z{2QJF1chmR<#r8aEI0H97ROv^*J z26EVDIQYF&SMA2!oe8i3{Cj?I{TwM@xpBQQ#5G0GLl+ZZhkwXy6XON(MTN2q-W{`6 zf84Rp;ph&2|Iv7pAyJIL6g=z_dzQgY%WxpY+2?C-`q}L|&6l{BThVV?$`@Kfj|NC) z=_WPAxR+;eyWa@(?Bou@B44oB|BM3T`58XdMbmiz_O5!`Tv`~4rSmG2nHp$PQb!Bj zEt5Y0jruItZYj|M2d5>?cKgh5F6r*K-w~}iPNTIBHA;)-2bul30pW)K%nx-hvkagSnJ6LG~9ZX+&L68HVr&tpc&Ga~_`EJ?Nqw)Fm>kxu>B&*pCS#C7tN<-OH)Xm-bHA3u8 zYZcRqM^Jpa1}oh5PGycMy{3m_H+`|iH08zJAv|MghE7)bOpJL-)K9J#Z8))8d2qOL z)Ui57$;Eq65{d|xeDm0QpI>#d9MKKl;M(||kBXK#? z2gV|mKHoZt&b4zzo4%&P9xwg_FuJSpu~`O7&jRd9E~FGYpDljN_1D19nhXw~@wPU7 z?IeUWGx@9*roSdS*`>ZnEb8zCbPs|Gx+DxXI!q@*ch7ycRxRW2O=>7k50rH16P@wd zWa;G2+#JQiKo4o;!}uD*+Lzl%(Ig&rCV`{f=&53p5A`Rgt*6PfZ+eexkw49g=^n1n zan7{KS3Z$uAl;GJqo>F=K6-l!tYFVuck9^^zrJ10>AjUmJ58#HQXGh*i#WAuzp$-P zq)|WNT!xQUkSf;Mf>>dPB2b8oF~YYR>y2L7SHR=8`6sw5dNSvJ9?>aR*Bg^6dFr5!>LzIy1X5^)!iFp>yU!9DEfbD z#*+%KzH)~l?3)m|D1~jzQ^JGz9k~xm$gWA+AKYB8=EpdcA1^<2{}eTOA~2@UyC=U} z`o6_Eged)4=5)&TkrsfjiJNxh(+$aOb?&8lKkjOs4?z^bD4zx*^Vq8{MW1I-W0~e^ zUcYe(_~V;>5nA=RX1|{`gW_%ZLPId7NzWJyLkHpbbxQ3*Zrs6xoAy1&VpSdF2H}Jj z+kko7-hUY#_Q?C8)1z=4g5EotMD=_?!u!kN#r(RO|J(UQ0+ zIgY?XucN}48x66aUzzpjd{Mj;eB^D4rF{)Tu6ax-Vy$!@xX;+x53c{!@PDRSma|~R zN8s(hW`6}VW40|^TsN?GQO%-oo3XN`1~(aT#KJVOL4HhXaa)890i;dXH_g&kn9)*C zG^kz#bTVkLgxgBer8WhB(Io|qpKu5DZefJ)*L$(XJG&?bT#~yP$;?cvPC`O$ETgti%^EdNB6rs@qQmBqhun6X!I^~S$+>5Wq91kWcvIi^2Z@2TIEAY^Bl-DV7s~z7vVt(>hUt_iBFo@6HLH3M8DQ zCc_A2#dN7N-D5_JhhkK8cMftvyx}8&}Ff&i|&FCa{g0*+|z=sz`3O=hMsmfMr$O5<**9u!bCEtkz-2MzzOqF4B% zwhDSxzN`N+)u|#Y__*HZ0U+l7P5n+&NUSHLqxvuL0)p74Bv;p*qSxBh)|ENs4H&50 zqMnF@|JdidV`Za;u=-cay!@rTH|+uAvr`zom-B}Ou~h|2*vB);#@{Jp2YHY3t?8%? zlyryF`z~kozXN$RRK6K&m9XQ}x1h5M=|}6*Ml*c`Hyz1@a^Vb}YH?@d ztb`ql7tH_BnA2@paDh*1V?qguYu3Ow=;<7Dj!6wCwsrZ2lu5=0Mgel=n?XyXtS`8< zWdwNNu7Dww@QJp91SavScHgVz?x>KfAAu`-z9H`8L;FnaqhD|iDG$^C2cW2nV6%sC zFR9eas+hrmFx?!ESg6Mi-P8nWq%^a_n8dP_9)vyAk=~_wOgl1>yW@BSD?%dzkEF*( zmtAwQD8-d4o9I61+bKAky)FTSRCBR8bUsn$Fk#NZQ&;`6nm<)HmX|dARxI{h@beG8 zbq}ssDTWc4#dJZ~Pl zU2d;~78bAGAIApT`@QxevEd`y+Aaatvod}0$3UA%j)f2FMSiN5)g_iF^&aF^jm+SV zAq*jLI9;TypChGZvgk7sO^)R1Dh`g>fc3JPWr87oQH4M|R{!*@5ClSDWiP3q= zzPT;^^zzxNcSj3~|1vpDi|9A0kL>1Df5D*mgPB*m zlHq!Y_N)C8e1Y5OABc}J7lbGYHby|C*Sl0cqV1-8MU(kQ)o%t|Z8Mn7!U)*vCCPF- za$OKeRhkl9Z-y~3z7t-#PMxwMD~;{MBoobKbz#es%fKDp6`R8)89G$np@CuK!lPwt zU1Lp@{}ZenJj^ZCxg$^QJ{&gOrMAaa-b8KF|+$t~S$+L;@SW9tv=_C~1$>PfM zLoECZ+-ITM z_aYug+udPDihMKjj*{y41ciO0y3yqo_6u%W2A6V4}pltf^ha~~bf;45_} zQv6&qYx>N~erpJo{U-Md^qHvY*R}HWQIvp&YfU5BxQLTNsUNe-Sbyvm9U=;eKM`LZxp)2jp0+R)Qzut5AnmB|hx_6= zAgl&xXJ$z6&q318TT`Fp4{V3Lt>nic>=R9F4)S%%R~KZgC1^MvZMtO_({Bm2(I~oQ zypA&{Y_>Tpdwy$vw6RTUxN7u+?&y8VE^>TfZzM+|wj!4VsCrb*wz}o?oqCv=wu4Ez zl{ZYWunlD1MQ2}0Y`(27<~tm*iZ5?=$ii zJN|M^G|z-`LyNe!;5X`1$DA(-ZC=S05cxQ_U@_66(D}oZLd^o@T)!lk#aXCs?hp5b zAo@n-kkRciC5<}iU+I1GM#=^@#RwbiCvYhj(FqFgDH!;|og8n7n!Tz0ATU~x_)e?r z4;i1WgbATXIDb?fbx6T_cS(`gB|G%|9~}8BIQ2~Yv%r&nD4sC4@@DZLC~BCif4Mw? zAKbLb|D1gIAZPm18T{vZx?B4;dMc?Q;y*yVN!O`u^|SUcwLQ({@~w&s4zRd{>_1Sr zxCHMb+l_`?2Ma?yCi3=+2muLS)mnr}mFn3DUM&_F%&Yd!FEFoF)S`z_|Em1OZVzfA z2&{k{Oyi))sPHWB$njDyy|*;Z4ns1Hj2-aCr9t>yW6(O;}c4> zRe46v`Sp=tu=#BtpM6M6q|h~#Ha_-=J0yyg8M37rmCn>-z~5g(a-+~%OMT@;EHUJj zS2oJ0>xvC^T`(z+0T2Dhg7cZgU3!}uNYdi@u9pPd5@Gk zAC!EfhcJ*MK>l%d68{jYdz|xhaXFEHP1d~9`J)nK{{v(icr-GtrcU*L;+nnJ-lq3Z z`rP^lbX_yxJvsmrPkt@EA~B_J6wS+F%IRp+c+B2@7f2(R6Fn=>SDPsCiQC{oFt!v*jqa>-S5?g*)A?S8x$CwKo@zk0 z%cL{(=4($~{h?=zMRMZn5*aY0%arPT-GRat>o9L)qWzE-Fd?OAq@ppmZ<>H=CGZYW zzoc*07i)TP6hUH_m!rO(;8KfJt-5i?I#(m}!ni$b zvbwuIkeWtxXrD2B{1xqBZovd=H?aw!7Sz`+Yy7bk6GF3jDLB{I=MEme9ic;VQ{ujh_E8PZkoNpY z(GME|Uc=t+_q8wO*D~Kc8t5OsXg{FKT_tbbN;@C@u_e+V4?QaMvDyt;{5|?=t9JmQ z0)F?Yy{{$gg1Gf%F-z@;I{1{2b6CZn`#LBEd!;>HuHkNS_zCqileq-ay%8Z=<*;r~ z8%aIm?W#^FvYq2335?L&!(8o5=UF5jR5K;WO)y|TM&N4=yafM!q7+QOmSb6yYf{%` zsy?U^w^;13*J9Bp*fVs{86GRd3Dn3nBYP5IosZ)!bchPInAkd)!}6=u?1IYW!odh- z@NUokBiHpjwj4N?1p$d$as&f_ZWn8t@)y^-MBuF z9&}!UQ(5d#JHYEPw5^%G*nC&wS#2$`St=nWgkJvHrxW{cluS)k`gA*W@NP0w7F0>X z+Xv>ODkD#|o=ADy1tvp5Lc=%IWie#<2~RiBq=(`$Wu7xN(iRc) zh--RWyZp6MEGB(ql3=Z0`#HxtWVguktM4WC^U@+4eFg7e;Hsouf{PU~p&%_x2Js@=R1a>3yr04kyQ$qmz^@?<*rg9sOcQ1oryzB}r zX4!Cxl)MKY@# z4q}*Gp$5}SHe&GhP;ALR`oN`%{Ax9Mr?$5@W?o*j)OT-}QdJ3Q+*q?Z!=df0U@ZQd zo=@Yc^v+VjFRd2oFACLgb}cltLWrJrOo$qu|g{DC=!;r)FLI8-Wrg!1VCw*?6*f+m`H# z108SZ^8uGVrQ7LyhKJC>DeS7F;zX3e89w6A(j-8014=9jbB8!!!Y)<_m~o19iU85Ai78 zK=Iw$8hOk9Mf6&%y;icmjlug(=&u3IXx=rWm@A`24_dYgtwOrvgy58G$Hx=}P1}x4 zHY+LHOzL4Lj_6kgKcRO{X(9u!%uM_n@SRd{?m9DP|0lKZAK;yS)v-;(tBVo34h3T^ z{z+v&hU{WW{&+Y4ftKnC*P9ylJ5->pVK$(gZe?& zvN`;2$fF7g5yHMLu)6NgY15?NjEdC4U>?;Rsz3tLh%%j!x*eOL7e^F`CkU6u(pw1K zEq*yzCpZ+@Rr`2ZhNV!ykDx+`SeGPmeM=35m`ed+6-rOjI1H%QvBe$}I7VCW^nSy* zudlrC6jT{+-aqfM|7KZ~g#L?^ zch|lT8a0Sjpg1OuA7M{?R#zR&yU8|Iyj;36@!*?`mEi$yfG$)FAh+fxG?R%vn(HX-8_j_WpP!_j-|K>5~o!rMyP>2HZaiOe;Zvdn8+z% z^#_-)h;lbI+8pcI&ak~R&L?i4sIPmY!o4R^-|2+NZU!}FWA#n|QB^q^%4QYTd@Y zs&_Sv4%UZScV-Sv}9_?Ix7TtZ+n;BY!4xoF(7KpYzXSksO z=y}hG9BeHHcd1&1f5TE^yiT654$X6&s?C5Kgys$q8Z?5J=yqbNi||OLQOp46e}DjF3h+ohn<5ewNWTH2n0}xKr=aQ93;RB~=+6VOs++ zN@m7c{0I1wzLoU;tT5bRb}M)99J@1i@ftC=slR%n>S0ovEa<%5RR4g3HzIc=e7lPz zbS;oV8>_;rg4V+HICr^#eJh8+wXW&e&gIvHQpd%v0VjXT8K+NH?F+3-v{e==m?8oi zg;{2XA}W9rXvdHjlPH<-70o0WRIY3NLm%@_A^tp;Ac~@OLbhU_bjIK!*A#^_NM`+I z+e!cTQ?_3X()ZS=uGSw%kj1(#hAmB9Nw|idF*(>X0q|j*?3EU~IMVFJ5r^jforc3ebRqI~P@xRF|DK1FV#IMXE;3|2- z-*Dy)$5*eqwDbW^fsQ!K_|%`wJAbUsCYeknjtd`O;jYWpYZpbkPYSVI5atx=VX}e3*NxGw053?03B2VdzJ%|&#iX%H zV?K?lzLAPh*gb)YB2Q<1O_a<_^krXLf-!w_AAjuln=k1OA^$*M_6@Yn!+U%kGmlTR z@h^5eU%naCW#849GGykBD|wvWNJ`xg@25>N-evTW$*Wu z@FUt;p%~73>riYY-(uT_(>*Swt40$*lKb>x**a~Tc7p16Tv58O6M8Q=oNOJ*2c~2* zMeFx>Uw}wzO8Bg7q>RmTGG~zFUPA_t>oFhGiFD`@;H#Fl?~6G+>*`voQ4I zuJLKO_k~F~&lD5q1^Nr)?!X_ulhXv{7EtJ z6tL6Ku!+Ia8~}j&Vd&;zYm%xJhfN#-Tq~LJacL3M!Fk&^(L~p9Swar`wT9gBlYXDr zRZFcoT_Nn_ZeoS;4`4gE^d#)+Yq9jCE=7Ol6t!=LxhlXaGJtlZcQ6|Dfa?I{Gs&0= zYUi6Dcpbh%q!q7*OiOFZt0sePgVh8GRTO;6lbo>t{;P#BvU8zKvud(#)N4sDr8-C? zmX2-aQc3n`pY}C^{93WjpYw-&zNwPQ3DkpPW~QSJG=$Nym1y7cl)h}w`3=tOQzi5k z=Y3e^5Nv5yYRPeaqjMYXuO?&&jL#i$HfdA%3h_2`dS3<6;gPG0NhK-N9IJv^qsSC_ z!Dt9k&G9#13#{7LYSZ|*f-Zi56WCc0-R|}49A}2Ip!r;qQIO#ReTby_O|jOB_!zSk zz1k+a_E{982sPz#b=H}@%RYma6Sp8k9V6dUiw=R~{{U2J-*}SA^2u_1c{5oZ3aW++b2gUomny~~=4(aF z(tGrR6Wy)(Mv1=nNal9Icr44A=}5nRsNam)?q%)Z4#Rm%*5qDKs)%}s2ToP`y%Mr)R*m~mp;)W*S@yWm=(EGXj?l)9AU zYCWj1N*sd@Z}nBp01c56U0ZV@uC9xt)d=2*6nw@85fEA5abXhj%Xdg|^)45&K96xF z_vULnNaUfPVKq`Rz}W$Y%`Thj7XD$o)-%-QFxuJW5bB5M!3Qe|BdY$$`*iT;fi^ti zzY%Y8$JhOi1}E*)vwVgTMiDVsQ)lBEHb+*7Ss}e{t2BM+RI&XLAjz!zZ1D#<=+mBk6Y4fkcJ#zlH_{+zkNjuf_-W3Ztw^7K{%JBm9N z4V@!4Dkzc)x{?CdpF5wWw->C!5HRL`iqgUM)wM$UIWu>sIzd7dI}w_=7I4ZEu{;dd z_IL%1nqI}QKI+Ee_)c&CqU6zcBB)v_n#2gk>O$&1CAo64LxAM?TS>4$z_5E?!3`#V z$fK|mCv2&l?&a{ZV(DvDmkrfAwX(nu9>sD)32y}3N4c#F{Q!TT6y)C3qkM^TB#Eef zXS_3c%)8kdNNw9H-yP|Ug-Bc2&{&(wha<+EX75_)OiTMQbg`DOUV2l=;kQY2zE1o# zUv49QJ9m>@Gv25`erk&v0TtX@F3iW(H54ktSVy!!kAAXdc`H%`5RyWEP#;svhF?op z9X<8VXAh^rWc^`qfje}fOK`V_WzpPG7*j^(OxJa1D8~{muI8zUs~t@cnWoTAF!h{x z7b=DV&($ICaBDdZ4vh5x<2aw3k+t}RsV?9RhB5iqR{NhCfW?U}aoR0$Z&$fp?_p!Af z7~eLO({a_2;Oad!*hpR#ljD_Ct_Bo)PpH0A+?Uf64xx@I#SIA& zxQGa^=1CGm$tm9h^_~l<@vE?AY&Cbl8|_2>)uMI5-5-F0O#g}M1uDCgCCP$-_7<$7 zSl(iHYHsrAaAW8;^18?!*UW5rVrU54p)Lw2rm=Fx*c_N2^mLwfRVHqB*-VYecpPV4 zaY2WW{(BFopj?EP@KwR4i1??OqF!?)d5G*%O9|M40UWieT5>MWq5EIFE37o2)?V0StY-7z4qg z7LRWvfPMouBQPQLxrVS{UUu=JvW9ADi8eNyfpdQHC(wi_^%LeSc57Z`vsbY1{Xw?2 z%-4HQ7V}@ktNF*V*Xx^I{=_7WsqQ5G?gx$a3C3z?{MKY>ZqmSn8d!cXAXwi=B(94v znRnv6ov_eYIp05EJU!50;4!1*9v_dGf~SLGhtNd-zNS@x*W3P1B`h|y=qDGUTX@;_ z7;syrK)|`jN#*_@s+$=U7v~{)S3H~)VnQ@1Vsuxvcm-xrIjf_YF`_Y`QV z0lvdkCqe4}@Bxt>dDDXLPa10>PW?OA_tc7y_|23#Xa6&U6$NU?`3SBDwA21PO?@Dm1BpQ?_-Z5x%3n^auMK8+a*1lIK7F>W#GGywTt?xA&>Ge z{+g5cz!tkM8P%mqoL#}4=cszqlSftQQy;{26-Bz`e`o$Y@#Hn!LDKO7_;Ne3^ z%{#JW&=uflPF&s7z?O>BOgA8X(6Nxi>GYtMEWvh$1ycN?ug+@jT;DIveuTEt!TkBF zd(A9f6kBWAdVOJ+49PlC(XYXx0!Y3zQ6kJ;6KX>m(JwKc0Q)M2j;Kxu>+B-O1+nlK zqUt6DU-irh$=cl)N62aGcMf~K2a;o<3uEn?TuUQ|&)V}aqMSJg!Np74pZGi0seD{p zZAt(^?>Q^Ouk)o8t%E_1@DYp@)5 zY=@h(YBbO}-{;WO8o={4vNvMBxm7>8A{`-?)w@Gu80b)Ae1$EYwo-CCCol9flsffm zaG|`@(bdfxi=vH5wc{#p%zxQa>pRk_aZSKbs$@C>wX#-889~eYRXKv|U7&|xIR>kk z;h-Qzp@CI>Ev~fV#u1qa;ZZt7bjOIi%^kZdKKfeP2zh!hGfoi$ii_y9G`=+fw3dp7 z=W);Ra=JY=w*?g(!dst<4ffvtSYAd#sX)^aYP<@UC9g34??aLu>fTE~tf@q6-><8K zasd7)v$(wChpT^=t3>)mkcBqQpK`Qr0M4DW<;#J5=qarC--F&ySGn4X zpMmJNU(Lxj=)Zc$y3aRzs}=>R!VpBwk-Nx58- zWb!t}KZIhA<>tIkpM?y>coj8Alr8N^?R;tZ8($QROCR-pk7Q|kX9_4fPuYC`$f>=L zsG4pvW6mI$tb=_uL!l#R`n3{8I3Q7WOyNI)HP|BbA~|AMGG`13r+@9m5p27ioij;r zbR$}PyIhG536biF2A`y_yxuM;o0bA^OjD53bxoE1b9y$6O6PEr+3q^aW{oksKwqnM z{KHmZE)naj3Z0ha+N@6kEkpPxlN~hfE2?!=9#rcOXy1mj7wl%SvGg?=NWHa-WL#t5 zj8EsHfwxTt-T2DcNFKJ))HSok;^3?#$O)~)<(0=@Ti*fcC>dC<3mM|szXRb4V4OLm zpE2jeq}HaOZNG85^f)vsZ^3??mGIBMs7t#bSXBO#QK+)a_z!TZIGkbw;9HtaluE#_ zsh}z|YHbpHUJ2bFtz%uj`8+=Ltk{5glN}0jIZ*EMobpFKz*aXVw^p$iu(3a+dI%45 z!q~QRb4UxTTgmFDVBsw2bk(ZAU!rLhcVci7B{m-B_+AL7WEdbUmV)xb>|3(I+HzXAO9 z(d3sdg68#ma^HlU&MZ@sOk7K9o-^!!1_nCy!ZT3-lhIM7@?1EhC}}*I8m2xY8oVD%Sl*lT3r4g#8bd zxzco((xYU<*GzZA+$C6Y^t0nZAM4u*MnqPRbnglDuew!J1ab@$>Z0U5hq}2r`Yw57 zP)*rWDlWO50T+y_6U{E%tBohs0rFfg_X?~2)L*W-lIjUt-{L@%#80}W{{f^Mv(cJt zb0m*;MHS9S0a%Sq^uVspB(dx4{x45oBXK1t9hfFV;)6T=TGu(By?R%w=IrfNnn&*T z-tyIt(GuCu$A|O(sLlz?E#BVuDWP}fKyHZswzyNh;xX2+A@UH)hl!jeD3y_WGdHm9 zL1h(gsC+1+MrfT+T>8sDNGB3Lb?wzMp{v5JJv7`Rk9SW8+R~=y2M+XFy#BZS{Ru~% zAVc(9LA!mvG6wv+@ua5kmy_-@G>HPOr3pFO-7|){&8Hk`Ubvq(92Ii}FX}@ol1#?| zIoc^C>&hk)KuHr9jbF;m+%mtN&isU2TU+VqF-h#ivo4bz@XKYnH&&NeS6`%Ib6G`7 z?hJd#ZZJ;tE@+7tO!Hs%tr5l{dpi(`%@3jHDf;xu4JpLeCAer|@7SzXe(t#VGP8TE z#4u0qV8X155WzXf@zQ#nxn5gssF=o4=Ki|N)SSrAEy(!t^T=3_`TDA_5 z<8lNVHbfB=Y~A}bXEMTH0F!Y{ie1-wLYngBz_UED6)TVPdCJTwVB)r~gI(%6 z41<BxGc&b{!hm%vdMh-tDJaLW>FG zjN&dE;H3pe}{(BZ`?8D}`7XT#8s zf4BP5W);o@>z0BN;k8MRL7T@NKi!U$f@%H(WHD4FlB&}-sYunX$xt=Lj-ecHf zGN(#JsL5T@k67jZ0Glp8%hwWr^7Wp7(pzk*{Dy9i)grzo4YUx1v!jJBB^MUdmH1ED zYJOhVS*N0OMpYXGi>xfB|8ZkctZyr#x#nC4#_1D+kC63*J~Og8sVQrMsOfG1Gg&HD zHimJm;15MqNB7iFP;`8XAJASD<4hDHy-WT^&6#M3^$wHes9lUV&QGVt1>Ht0NUMbx zGb2`WXdQ0T4D{ffFsZ3x)Vrc_mVwSs%dJ{LLv|stw)h-pbK+Op=OKB~N{qn@#1yW! zW1wewl1UBOKQ7z!XIUKw^d_&tsyC=xqkl!3A%cbRCx?LT_Wg&}nD7S12E&OZ!O`#4 zgGO5qVdbZfseIj~G<7PSy2G8Q>ODQB1nA@6EFq#k3!VLtmv;*NXL7rrYmd$PLxbg8 z%cQ~Ee&syYij?n@g#7v|QAQ&~7h@arP`(l$$IXsgKG(I z4>P-hn)##X-CD-;w4P@60%Y-#nx;dE0{4&#p?jmvEepM22E1$Jk}i}DwPzV!6kW z>$wLa?#0b!1R+*QbnUF(e5mFZNbQ#fp~rWK>p8wc1FeG9zIKo(2*Ok0x(Jf5GYS*s zWS8cV7Z}-MNG1VSl}INH2!x81JB_!cz{WaTytg;nR!+Z>k$xf+Q-|LG^QnP?2mISw zx&HXr^85~b&0q$;tBzt7=hV5wnzdB|0w)Rc=j#&^xh~D%7<){@F*h)r9BVYtbaku6pR7ClAXz*jX{84DxI#~~omfSA5b+DOWHx&ZAsOdoA+;met*YKY5q2$1yMRJ3 zy|%D-80#tSE<+2ed_85eh7)F3aBSg|;8!$~d^d@=l%dteLt zr7WasY-xQ!%q?EJ{WLg=+Z(%wwy zmifM@R6!llqH^X)BvX08FQl~1?nLw9Oul+nWWCX`McENrrZQ|5^!4_}RPz8q;Kt;O zM~Ci(Puo6zgBhi(zQ0ZVcvb{!-OQINcxw`KOX}mC)tJNG{^=Rf_kXH>E5j-hX90Hm zBQkXxge_vGG054(f?A$j*iF9cZm)M?7z1D&dtab;9Eu8gClZKDYdfqj?Y42`-7wEY^H_`xF&u zKe(x_j$3|<3)Y>GOU^|!=lTIUSsoZx+$f8nCWnQau`|5uY| zr@=z_Js0wk>VUI@#3lM?2aI?T6#;L&&+$hUih+1PZAybckT@={f@_U#ta{>6^K?jn z1B&LOMA{<1gKZQ4WBTGGGG7}8mG9AoP5YqVIlkY@GAzA0ks~`@WM_TCq^`Ug5X~0p zd!X(59niLT0T9Bq`8vghi!vvW%<<*5RX*VWbKm-)XssTDhkkhVAo`xSz?X*S=zeZjE{2n&DJU zG;It@Hrm#Ypi1@OwOCr1D61HjH8pEn<0$5D9P(l-0#IBu$af=a z!zCzPNV-JjoYGETr4`?4ZUh>nriqZsBRvB;-5*-U-Q+XphXhc$IBpT6KL^~@Xa6bq z?DfKo#}$*^gY)uNYiH!Yp8J^{krb@!ag}x~P9^*WUA}k^Xo^31+FmtxyLcRjSxUa# zbH9_E6MCqq&0s9QaWm%1%1)Qc>&2jGYvW6M;wAWTj}(hBV&y{pmHP1RdD}-%uy;D- zLlAvA@IhQoW;pQqn2iUyr%7B1peUXf_8KNRs(vZaPC>ue;9I71z)MpZ{U-{&luix} z!UJ)gE^i}0>X32xZhpodl4Y%x97-(6qV9q|X0%nM*VwEh1MMyF6{Ka+eB;PW7_U^K ziEHH8u)`p*j;%37_@c=;t($C2DickFXP)S205On)^o~8L+$U*5UGpTmWYxn0w4lBM zWG%Mz83*dYbEPb@{F{$NsXOgr9pPGYl`? zJuM4SzGJ2f&q;c;V(mOHfufq!`m~Fx-mwm06fO?x>^-!og!9nX?h_~RP0Frun8-kL!+rvep0h&q?#OavilzlZ+0pBRe*!0#K z-OKAYi;ecLvgMa%&IL7z40U@W`P$8A)K@HX75N(9I4`cfx91u$$7@XP5P#)&pHlC- z(7ddU{K8*j0*d~Om!E3!EB2dg-NTM^E%%lDmEL1^;Cd>RLfpPYLD19?7TN_~1vMyGy11Zp0-NarQmwlA0m^fq6x0)NT)hjPxXL@$j9nrptU*<$o%|Y((m9||=D5%rC6~4A^fY|x9H!&& zvN@!x=*xH6tQew4|JWm$&xp=+Bads7_e*Mwt`EcagbdI8-rwHnm@x*a?pUBdFZwSy zac2)}c0a8Kf&K4W))*hH);KPI1#+Gl3jV!+r7|t+Mr3Kz$ z4nq40@FfMrz_Kat(chOn7!}ci(w%XBo0+n4cST(kdat>J31PGGugx9sp5;{?XJRy; zA0~)m>&w$E2O|7(Q%O^wK%swS@a_;#czkD=Ly1SjOL6t^VHhdB6~ zyn;#>U8y#-7_f=PW}L#suc37$iR~IvxOZjS3E%FDiNAKr&dujgMA{TvP$shjnN`U| z>4`*?C3`0}v>HaNqf6vWHxHYyRF~to{4CL)1Ttl^G2Km!;{Qha2Tgs#v7OIk9P}&K z=B_3ga>NM($}#N$Lu;x@`4=Y3Op1%Y{}qw_{;*;~@SktduIdT_kwu>HHF$KU)wWNa zYpr)aGJEyswePkfttv0*(X0QM*jmMo0jn|WajBL6F@<4NZ#A_h zD*$$gOcSI_U~gie@X)BTC@cfLL!`4?C=7TFjH>PktU=^* zQtvbn2}Hc1^PfuHH2O2@OQ&ld(dO)Ak&o2jzKmWBlY@(zi_5e=N!KqtR!nuuKQmR% z-Frf+?0z7^c#D+}_dWkZT)^z~m}S##0618+tFhY-F#?((4;Ivjay-v{N7jRuM*Opr z9m|!VxN<@(?<4?%Qs2)Z10%R!!)XZDJwqJ6T}MNk%h5I+r=e_olabx+#Z#4Al3m(@hp?qCV6wdKqi^?ptJ-mM~w9J{oWKb=^bgX_Y;TTbN^gvg7%T*giW0ke z$q_-Fi|5aSzLqg4Pq8v4gMHy0lx3XFEepn-b(8SdXe&R@giEwPT<3&=bnm3Fcy+ze z;u1%6_xVDv)Vk(HE)0;KTZ7tKZB&GZzG@a~whQ+0dy-$=Goz%I5~f*UwOKxjw{~zn zKxsjW>89DOMvwe-m3wcyv&Ht3T65f03r_* z0?10!zLTV~{wMyVkeJMCd%{DFu@y*u8-$O%lRnO)P>>$3<_T(c4meAv-kbRrwm`c= zgP?@6Em25si30H)Ph5na3Q6f^xIbfVBd9XBr3CmNldH?8Z<^2D1_`qQzsinobcmF5 z;)kB(P48;L8d8C z!!*x(SZ*bb#cQUBBvJX=7JS|vK2oikRNO>+-k(tP-B!PqIONj2*)aLex#c~V-&M0m zuoe4Z?KGB4*oA8_W{DX6BL?~k2i7O|$&Qgoq%L@4jEo5XaIP?t)>%o>B+z?vMZP&G zcc}Gc1~l7PgJWLa?Z>^{3sDOoHOFWG=f3ok>&kpDRXp2bh+_Po%?RTXID-_Y4ncy& z*rd>o-JiVT_NQ(5(rxdS_0rN)o0l&;GDYnnwS4dbd4r7eft3PBmVulAEy}>QS0mob znXNtgwW5*(|1Mq=txBmLI*@8!Q0|{-Y}^{3s)c%0e27~0&@-TkvNzy~OKunYgE}`F zuQ@#_EEurquN$6Rj)k94v&V%#>W zgOZU=mwKbE4Xr^jxn#&XH(tW>S$z?*F6K?6t!XUo{1L(ms-+<~S(L|!#y3)IY-Y$& z_&zn;2{y!QY>ydW0SzXAmEry(AS&`eq#Rck%Xo!8Y5-E(K%d5!ED5+9mi9P_9(BLG zk8YxvJc{zsiE_&p?6Fj9PM=R-+9mH&{vV5yu%$nK$WytPu~49o$mZ)zIngRvRn7WT)^p~Se|*`xV%@Q9nau_mHv)J3zO}U zP__dBfAJ$TWGuvpi0YGPx`63`vDcOoTDe}9O`=pIc;YhHskb9|Tn1$;h2yZ5=XL;U zK}m7f8^VSu{ibvQv}%MISs~I?^BgP%4I!|u8@}>{a;*FNfd%|~K>LTzBmdw6RYm?jCNOMHHkM6}FJ8pVKhjowWS4fG?7)48hcqu>?_D8}f*1OEK8lZLr!#=+k$uib zqU+ko#yH9|xdNE9;8+3uPiPHhY?gq8$baMj4?q8rKvgezviWH&R}8O(5r43yJluO< zMa&zXag z+h!)$ierT>Aqp}VpPLIdz-o0G$796RN4ao(d+52TT~3OR-*Is_$K>P9)!IecuQH^I zCGrdY3fG=1x~_3fULoHWI0g2NeabL+Hk(cBvTs`1xx2%2Z#LzY-GgWJNs@XgdNKz2 zTxfNq1YRQQrXHU5#RXdfxT6V5BZc=q$<%kfpZPyks#p56zWCzpf98ua-_70jvxk0B ze%@Y$1pF!O;@OXIS6$gGYP6FuUtOt94c$O zR*^LAxgCFrk?=6~elT8Jj`W^zh=O>}eTyQa#&33oC2uYJPcxZR*G9eBu>wv(1pN18 z`s7k}FQe`}n!UV9+ytXPxg2|@saBM&9B~BoCS`{&O6Wn!Gdf!Khg?OO9y3h(SS}A@ z4@LxJ6$o4nnAH4tZY6W!{ABblz{k+Ro9 z4W||iR#rGyX@gPDT8ir`|;4N)7Xfk$=wB8`+Vs+HA7karFvO!suy#s~dY6p5r`9RnA~;^7>j2;k3w` z=j#}+Ma6TPIlQgujZA|wD^I_~L8lX~q>Z(|{J=uT9|PY#CB&5`Qo1$wonqb8*u7s! zRw5>XEkc+_#CS%a4trx;X1&T1QIYshUu)BT^U=}2Gf%DTS2sUH6AB z2PNPa>Jj9a$0oF^vLDF9@}X)($J8cQCo zm#9qR-{(R#Ke%vIcm(oE#{}H((*WQbaYACx$1^aZ)1;c&QHiKjp7k7ua1^&S((x@a zEYEb*g&Qk8Lo{FriV1e0Sqg(>I5aTx8J?;;1lkMe($C_av?jmPNYyXZ%C{g(p(w7G zwD$}P6v6agnJ`YRV4uSm#eW%&#zXF=(LUpoQ*)~7Z>h=d6_~?8=6rT^Rk!@kh34Be zzf;QsMn!uF)F_FWqIkIqcu)n(5Gb8AEb#Df7xeTC{V!4J61sZyJ)%Yzw>p zM`Di4xO6C>%j49nUZ2m?`?0LVXEDBx7XQI+tY-EUfL?|CoIdy_E@SLO$MA+`i@2#D zU{zKLG_1-PDm|OK{#PsLWlOZyw#xM+#bSlEWCxxj8s8&T8h0bgFTXGF5greu=tP#f z=(cC&$=b=^j*7EctO-}df5pmdB5;Q7s$LFqX$0|WzrHT`Je+BCu2VjzlFAy{?7!;W z@eP+h41scMP$a2{W$-$2gx4ENgdL_mCdVZ2GokWbpYh#w+rOrD+9YCjnmisbWGUvm zoeX_vmz|Z={>o$zG&G7-W4f_vw8fP~HsPyE1>bZl%QcF9Z}Gt(e`$o{doo^ZTj%{% z6TNHi%9CBIfgS8Tg<740Co(S?!VR{aQ|m@tgxw)+crM^t&qPEZta4~yd{m4B^LF5-jF#E0K%ReCO39jjp@AZsmYei3z~BEu@JuXjJnodTt_g_wR=A5>}c` z!oRz0>v1;S^GWA+?0#eJ+-!*oeRUOtxK;Y)V@-=9_tU#u8as~qt>3LTNS(Z^2oaCb zb3|TJ8lb-jf{VQuCSV+epWFB)RQQ$?nb5^DQ+KE8sq`ho`jFcR*_RS6|6G;#X6M80-LaC^6%E8rwF{tEMOLi3=B7-cfm0Tk)!WceQ}1s}6dTiq|BznT&rYvEa3k9F-CGPp;#rx`31a>xO0 z=^uzC`(D4ED%S`4C2MzE=&|iISnjg_<5`8rHNvj?cb;vrBLGXVgc1r5H`$YA-!did>0Wlp}2KthMNL=M)nvF{km zq|b93^wy0&!POnIiic9&y zQ))GEf$9C7z2AA@_TaT(+<CylJh-GKvEye&M%jl19Of0v zW#pzn;RERlC5B+fz1x`4ZZpBMbagT_Q_7f`YKf(y*U`K~E_NcG=cqCA01rbdef(n) z!Sk%xuyavi6W`o!=D-UGP#cAz))YeVEjy0#?Arm6U$7OWM;z1VBG8@##_6_JPMFYC zgHWh5m9#21YxzH1ud*WD8S6;XFYFPDwll{1S=?eh^ zoL7$XWW6N59OZm%)=pI;w%?SAV*+1o_(M;J#S0vvI{{!i7t|^vs%10XCmGZQqI<*_ zLKl&L0jbFX??hk@x2r{9jA`~3QhB&4Mpbtr%CRVd@Am_8t&ulV(1!Ld@3CMTPGAS%5*2^o9|T2nNrqhL~n*)Xw75yMvdV2-k$RQR#?J5Y?~>~F%5Tyho3>;<|LH; zRmeSc_+ZU2NLrmdnOeY{4@znpjTse~8i!;ja};Bua!@V<4hd+`Y`N+DQIHV}{f4@G z4I)PtPj(l9)Y_NcaIF86o4s6SxP=khV6UA1?ti{c5m+ChK7E^fhz-YRd14m?(QeU( z$@Dm*wyS;wly!&)sq3BN6Re@li1*6|=^EP0p)k>_Kn;gMfDttenmFVA3dsN|`GnR> znSY9{IMRUiFt0{=q0FdV<)>u`>m)`+fE~Dzc^!MFw*rUV4)Al)-@PpRTT0d8FlK1s z^187YH1`k8BgxTmK)39;e5$sahibk}5yawR88z5+{@H^~+FH-8aLwEU$Kp|5;kCXI^4vuqPnC$ z-sF}IO%4i%$lC?rWo3hVa;mawWTvuG1)?Af!0MMWi{o4u19Bs3rvBDzIJUtqK3qWY zr;G(k9(`U(5|{mVUSr{>TBNlbUO0ra3#^V_n-@LNN}}H7vpxq~Aq@9;Tdw+LDuSTk z3s6-NDSNNV%^Yup78d;Fv+z-bC)mL6n`c`hyvL|hHwU*X|Lj&vNwPt>Z&3ihUPLW!i0>ll!gx?kr;_mrDgZ-p|}m}$EG=7U%|JKh`aC5)o9vB z9f*E`5}<@~AOe2@{1!_b&Ng@W_oJWg<)oDlk1Jj0ag{6PNfBwpC}|DEw&a?>;0w^< zO5@|%_Q1GjNhFQQ7;QWEr|5f?DvNuxw)f;&&-qp8fuVM?ux7q1=2J~2p%5bx-dca2{-(&)E(SG*U#jlKdx4GX!qwLLwk;_o-EX9t_ zLI#*3Y#r$$BBfS;F41(EN)xu2@ji#Fpvrs>G#J( zONX?{lAM!s;s*d=DO8PY{NPP;GE+5Asj+pjw?#>O&bLgUJLccDEgJ5(8nHJW7VQgf zOobp1G=yL;?AKF)H&6%m96x#zE)}#(JVYB<2qQp4YTm!Nudy)re=FXa}&`U^riOMH~cVyn&M8B zB#YPU=s+q**t}=-^NZ-FoV~m+AbNbEG}V7BjO3G!>5)p}D^knS{StVl;Z^H<|1l{V z?uudCYe(FBw&ik+B^5OQdKi7X-wZ8pp+BTuQ*(u?hQh{RsX^Paeo28e+A0!HNIguR z)aeur0lQFo+SKWRB(7rXNLxtt{9Ez|`=@?_Z}v3{x+Ff${4b0(N^R=)A1vKFw=rd| z)+|27ds<-A5HKRHw{ZAMUfO_GT^Q9aB9S;Y`1_v~`-JdxGEL+`LEB%ot%R~X#CU)2 z@Bf$_kmdi3WB-);2PeGV7=t(_q!?)Iybg|BG4YRX-Ej0AycV6cLF{JQ%FMw^-?(l` zx6sVRp{(3fGtBWofpzhho$9YZaWpv z%K?XyK!7y?l!eV8)rE& z!LKkgCSkiH^ATS>MBs22ck9c|KE)#dHD*36mhSi}*%hI3m8-GRTAou(w9ZNSfPJ(e z+-;ImD56+P{tIdN+M=H5XCd8nu=`h$q)c^*e5EA(+&52jE`|BEF#iUQaF)>?&(8D| z31jMx&6*%;4{84Ly7kdSCB}&@gkJP9s#D~)AR{3NQHD{jHC=T87PPIX51vSRJ{@{{ zvrlBoaEu&1Bv4&t4_-TtE+I}tKcN{$^w#~8wVP+8+3m5RS_0iFSLM+PgGQ4w50Dv| zsoxVPuD#9R|6Aq;iEDLeOi7Y0-97Y)t;1iWc{Ct#~G8 zZZlNk`=YvtbZha&y zV;!+@M0d)zkSOgEZ;+5EqC6jpE56Bse){#|%goK~nL$N|q;_rB-y~KJq`>;B^?8Dr zJ*Ncj`UH{0GzzBd!ap1&RD_&+_O7_v9o^2-qTQMDCY z=Y=aO)2cqSj*`;9#V;r1S8Zk}g9?{vk#JSbxp(5S@z> zxAxvMqD0lTW?C{mu}8@)2C26kHma#z`(f)0k1%J!rx1d+jbxqam73tOiCVVq$wa$bQ(N3A6 zZ4`6ePn8W&Wsyv(YPuQIJ)z{=hjPKi0wFtaxk}R|eNPfq{fnd+z9H6bz(P73Ju&%c z=oxp|*li920Yj@QREw|q`9NPc=^Tb(d-bMi|(dJn6buO#=Cz);N|jN);SKpRgfzX$Xpmu ziV;~;8nex2=Ajh(Qu*;q!ZmS`g|?jxf(FdP?=)Y=8eE$Ny|Ui@$J!<} z;v-1yf0ZVqoH_C`ux(jjn_q$C8*~)U@vZlXvg1wMNxXgHAh%Q5*_<3+$pvR~wo&4- z7Sj8#v9WYqvI<{VgdMoD*q6u($Zy+r#fn;Tvirs9N&T)e4ST6cpe z{eanprxL9__+5G^B0YYV5?!cmXU-_9tb*PRn7b-muP$BSy8#Gnj3m%6&mcc)Xi*Wv zLJe`muUd{@N=57?az5LK8_J?HUp>f5Wzbd*=}$t0$GF`6%YW!SL2j?6p8q~IFn07N z%+ev_)pp?`_Zg}Pnz8oMxZkR-2zkGyX=j}nKH)uZe8R&YH)-D4(PTw;o@?9Xx~nYd zYopA|!fz~IYCOGGSry=B*|1vQV&C^!t=eBM@cH7BQp}-en{Ux%Mn{rL$)8)fw*)?L zxTwk$B?P}!PW9o{W^8JuU2B<7yFpqO@x>^(KBE|q`+qc^O*FfILBVfcC?uy<$gTj@ z){iF+H5T(NNWw(v5d7mh#+Z3oY%$k}SpJU)O9!#ZHJly;X+-W2Jb>^s?uah`RRg5j zfCEI6(D#jUxA!iGPduP&7{FClY~^(O1~dUUM)gUL)5i%@%F7Hgz2S|`4DFG&%W)ua z7bwn3^0L{#*cz9!GVh}WeQzSI_DcJ_d_z0rZPgOUb!4x`sc;fuPz(i;dvY>dH0^N~=@8MVSknucPsqyxU!6;_ze2T#Pyq zN*=IV2s`iaauy7J;1>kbptMmtPSoUQ7A(=;vp@T?*RL09t+*6zFZv$FrgJaf&W8UO z>9;Ci*R7QyN;tj_(wX{?iDvd%nM=as>Q|jcbkzN(i&zJ8ux<8QQFFhkL|QM$IMD)E5+1QP~d2G`8m1c4BX?3&kZS zJMxc{d)c+=BP!C#>7qYfdC zDsKj4AnYd6)8UFrn!Pyw331eeyTVvaKT#6)?G2{0)X6>94kJYyjUt^#3lc@`mrfDi zjoiD}UPTQ4Z|50CX3Pkbw>+jd_YK}@6<7Z8ui7$i1W4M(ijegXG0mzwgI(j}4nsP> zr`tzZP{T1l1;Ys(-#_bisrnvZG%B6O#EJ7y?=7ezg^2zWI7)djSkq%&Z;!&OHK*nTOupUOGQcd{#J?p4XLpC z<YcZ~k)@Ps~ z`;|yHFzLik7Fosq^>3s*-#aKN?A%_~Lr+CV`4EI_;!~Xd>E~3SDF68Qwr}yW_CoOg z>OpUNdo+yy3gVL*sTb0n@bUP&aH(G~n(xvrm*dxGh}XeVdsxxbi(P<&*+XwpNE8i1YC2q)%nsyUzQ!>8>t>?>!hciP&a2>C!JC5UTBfu`BAv7HiGNPoyhtBdL{UzU6Ki@|A$GxX$xE#I-^j9a zaKD0E)`nyt*x9c~2X$^LeD0=l^gjRa53=^`7Wcz1epwq_^8&+>c}SL@fL#N!4fPrR zM_J!{)BEWWG*CykN*tZJ_cN6q(! z?}d>VJC=aDx+jYK!{kVl9{v0)7GqX_H6#i{GdwH917Zp>t`L{5k}$4z63%F{Tr$yG zJ&8-l3ECv|A5)iV7bnRG7!v%x?ocXeoC_773v(m(Q4@*{63H4#OX0-&ZI>Dc$!5W4 zwf3F*k89GKN@ute-lpV~XMbsxETDtEZvb~l`QOl?iKJY8;UjjcLyW`V=c#LZ0wp3dY^+oIsV=65xn1b3umnIP&hA@_M?4dA zC`+~erBZ;QP9I%7BncmbUeDyCD(8xX@b$}&qxWE3K2f5(kad-E^N?6j{Z~38V z(A4tEu)t|R!?T}8Z0V?>9&cV9vqKW%Ch+fisqx}nr`TqVB6!|;P>#`48CpWF@P+2X zQR+QrDb-WZM_&c1{K@UMlfN9#PTO$IH{m3Q)+w6J3W!rkbegNjOai~FAz5h!*ka5i z(#&`4{Fpq2N@FdaAdd^$AEagm=4`3!EaQ}Je!l%56Y^TAPeA5v*!BV~3I>iT=wl~q zama}SRkOz)eYOp30KB#f1R%dgzqdF2l`qexp7T^pxdde)$&+FR4P%b;C3;SkK6eh8 zl5BdYJ|2kaz28bIUKLmPj|s?o8(6FmS?Z+XXxyy`y2aLOo?@w|Dmcwm)JYH{uGTid zaJ;JbS1O-Rr!-IJvGkj~F=f-0i+!hVV_l*n5oU_6MQZ-fCJY=)dT@`XCMH>6NM7}$ zd())yf^wXN9IVqcoZxRfQSTrpT*<*u0lOZZ|>B;eE zQRDK};f2D*i{YPvLKrR4LGsR{ZEx6a)@i!TOMS}isT-IV!Bzgh*)u;eOv~-=Ym(Z zfN7copJcxEJElN2=MbsPm&Rj3UEXcRA#50aEGJ9dOA0eK0Z>}!aBb32u0pAA*GMp` z?%o80*!RdqT`x*HMoR5lie$TwE0@Q5++v9HMHhupE+J!<#4$4ka*JJPY$kWMQ%=sR z;_*V?CAZj$YzHUHpAKH%t+xUQ&agKg-e0c2?F64qQ-mCI^2O8&3{nw5fge_JmhyJ5 zJITmiiBDHeo?Qiyl8WIL(sP2@4BkH@k;Nrqi3nVO!#u4*DKT#N$aIU`gWqNHQ%X+} zu}@X1;*^CA7G_=QJqs^5hf(UbydrJu zT5H*sCi#(RWPhNUe-%qw5giY++tgnc9CI)`Qlsn^dyDY97w%HszhU4ez@Tiht|kc zwN5ojbRdZxd9!4>FjEpaF8fkHAM}v^X{Gyky7GqSpPtyT24IGe2I~2EN-uDw?otH|c=K+^W>-W!xDx z%&sKLUA~LCA@wV=HR9~L2Q2<##WDZ1UN)ziCQ&JhQUCdJdy^qf>{UoM}Xcj~;U5{<3(!;#G3q zXj?Ssub38AblTdxs>sf2t{8obg6n!I7m;_0AJ$|W{FF? z^(?pWpIR;@IE|*GYxcro_D(#gZOs1ikb8Q97I&GM>p4`3J08|{nL3<)n0MV;P#@yt zF(Xr3wCZd>n9s6culGq99!KrzlLH!yq-)yB;@4{t?~!js57gD~ zCVyRcH~ASJQ#wcKS?~o1bD>mBB_sZI(1+@K6GuLR-?bM&Ed)@)#6)s9YssTbcbEQX zx3c^Bdg)ZLHpdnv;&5n~YLcPxJ(Bq8Ptg!(qVjfLH4C%JU6BDN>I?hMfCP;3$VaJ| z)7Lt^@za@ZfyWN}mw7dV63tNNSCt~=1UYoHx3x^(wzx*|<_ew8)M^B~u-31Fj5Vrh zx5$p(dQedjHPADd^Qyva42v4C1M{aprFS%EH?kC2XMExXio!WOJJ5!B7DLLyF{R1> zETtZ4rWV>fWYf4VnxA$U6Pb$uK4fXDoV7f8L>@u7?@M;-^mGQbcZh{>tV!|RVNp^J zUXU7>>ut0Ya*=*mo_S?#_%aVZch^ak=h8SAx9K0lQ7tTEG1**^WvR~Hsk(~}7%3lo z!=ydrQBYr7h9G6fa7X5cdv4|!!0}C?OJyfC1ppHvK4M3md5o+OWB`~*M1Tw;JhHNqB!%FwQ-8FC4Rw4hXEYwNDo)ktn;C8W0 z{^Glie_x{UD~B~;lzkB)SVF3W3q>q=oEJ76jJGrH{t5nmT4;E$^tSRO03J3&Ct+14eG+2dY^)*WB}-J9+3^VbZSPD}LVK^z3> zM?gc{BAz35088C@kGqXUi=A&in`cKh`6xVGvzdNca+#53jhD!#+_PfL%Zp)33Leks z1Jq6|xwWThjhNDcfM~DevXXs=HGe~KoF12MiHZk>dD3P!pk@UA{su1u=gq!C4$C>u zqsn)$6+e*3R2y`E=AHGMvu%X~sY-pT4bbgWjclTofPX?2i1aAQmJ&+jr|6uDES(Zy zK0ExF8xt@kb`w2WX0F@y4;n9J<#nZgzdXD##l(+~DaF`caPIJxf4^UgTnFmUgU^$C zD7xz?&tgMts995eCE&as<2S9BNi_8${8E{b{?%<;%H!UEQPMG4CEv|S39%+0B8 zQoUkr=B0D~TBGQ9qkRBE-*%cWg9AFm(^r+qdIktojxI zG5ybp+zK0(9t`Lm1bNR|?7q`}`h`HRp3RdM>&+$Z-3FXUGkn-!BUv4ApIZ>kWr40$ z%$O~bsE^zFyEUexD=)$I0)Gfri;8TG(6FmzHNewqWh_E%XHi-n_CXeC_2A@JC%glz z|5Lss)6VoxFr(Q1+VtDhFR~ucF9iDlsnq7_Tn#|_S$?~iW;-jO9Nz1mOZT1Zu1Jeu z8~70g$tm;sz87Gn5r=kF>A zPEs57fsm0pV;AJXeOm4}X-8R>EmaI!OxUyEZaz=cV{_t|d*YC33mfiaYhIt~z&@zp zpg^($#^J=fMO_1d)EP|gs=gL@^BrW#B&K#;LVR19xJD$Ck2JDf*vixoRmpO$+q!Lj}4R zxO4$l%khzAq2Xf45<+E{#a|Q5#Y7E>qcJO+uH!o$SKYnfkvMv2j38j8M4mPGNVz}x z{q%Rw(q`b8EfrjSFu%~^@%M7)YuG%W;9uLvHNBgH;RqVX&5Ntm*;UTNuzl=$0TcKA z`g8j_`<>hl{1Wprp=7qMyE7I$$^U>4Hj9yb-E*kRIk`TlwTRk}?23z)TX^RcigTdx zH2MTA)7?;=9sZsEz^r%if9vH~5e!$xuZK-;!-3H!ehC~vECQLoEMuw=d=45@osED$ z+~JpLh!yg@XKJfmQ%7ZDpw=0GYvoPm#PwA+_GdSQ%r)#cQ#r4iyNX?t@BDm^%r^|_P9KP#lP3e$*L@R4!!wfNHua;-+muzcPoo{ z#h~0SK=5j92y|3WJl*bbJ9oxl_ASqfdC}bk9#dztI1DGFFDcl`$f1s5^Q|lI@Xg8X zMZN7sUyp&w{3-zbXso|t4|r`={eBMpJBt(ui!O*Bvs}yd1o286n|twvR~1>Qgp8z0 zRK%)MUt3ReNARSK4SQvObQ}=EFyj%W*ZT=t9%XR6 z^hc@L#+UqQoWqU9Nn=Rh@nAwMz0Ttzd+T?&uW)G1_x zD7AzSXLd7qLFQ+BRu(**{#F}|hpmU~puH8?=a`tec%G(Hp3k99UmD!t;oeqXXbifS za!HZZykiqJGm#yaD?@e1+@#cY!rs<%+Y8A4=ugu({Gkq@@{lk8_^4V&+HBft7l*$r z_SIq$)0rOxedK!UK^p&};`l|s3>l^W|K%HlOjP@u#WlqT1|?2`4vY+7cCF$iAJiPi z=#saPnvS{`&95Syp80J1y2gl(Bh+^;MFNJTe)v|Hs)6mD2Q^4V&+aUEFsKIR~MJlJ5hYxq)&PXqFsHl4A#zAvxazx z;75}46fTKg0FJytGd)4>>g6Kb%EG^8Vl7hTg=cYq18brR%zzyB{{WOgsmd`}N0mcD zflcLn#A&#prGwQm;u(F^CA>;>)8<;P!Hw~M2wk*Z)eG{|9R9Vf=$dirBl*CDsH}e)?-$j;iz@9pD z(xr45)ExC*2ctyR4b~x4^1x~B6z}1HOE0zDX4;yGa95dl>3NP}h|9#qW-XD9TAFtV zoXu`IW~NTM01~fLNicUB2yPwFFyxwL)X6AYOh+=GW2A0(UB=2FXczNPL$}B$pX^oG z`+^M{?Q;8P+}}_gqw;cpnUe47rB`kHJm0BfdB1YQRSGgnybz*ORTA2iqY{qO8q^HR z7z=_#2}UW*5P*$dwG+l*ETW}u!lmqD*U67k$YP?13e3oR zfURaC;<+viSfwo}U6nY@MaCW_Ot>W}ei##gg1SCNnc=Bz7&;5gYRxr?ePRhR#+c$K zmSI;hH3Lr&bki;O#0}MCiQf{fE0;59rqxHNvb}RG=a`&?&){>YK9rjtBC$cOca`E% za-a|&Py>lZ8HLd)?tUltPyFPvlkSXj*p3ReHG|2dqssr1ViC2 z5ugsiP;AU`E?#3vDizVQrPNuNgHst=xpyg08(0@tmLkaeDCCXWK*}~R2%BcD!s*eVRHx(f%=AW%Fl_2e6HmjZnh;rH2WPC^z;|XWhYhqG#IUMiJbp zlP0_p<1#01nKyR*m8p=%XNmF#^%Q9i#Ir`BG-nVK7c~&Q%FH#madCN=66X<|Uq)VK zW*r>nXqTA9iE~FrqUWW1fsZlNxUWU?(-0<2+$yS8nQS4t>2mQ*pwwkO@fmoSzKwLn zEF4y40_8*;R^T`f@<(2{n3Y!E=#|i1sMq#2Dv7%+xFFFzD~?69C}v(NqN*Ztjhl(M zBg`EormraowXbmvC+xBo(ap|NXaazIhJq7N1&r#C_Y_%7N|;*qnACp3OLEK1D^bI7 zrVSN$PEKWMEmG~30`T|LRv@AmKxo7wy>+O^d762Hn6l%Uq>|uwR#!2BnQT~=v+`PQ zI4%i}BE{SsTrTkvvoxF3T51Ac6PN**rxN&x)LSR0;y4E}6?ZJ*+*NTaPz)Fz`S%L$ z&$5egzng)0eoVN2OCjU5d{Cy11G z+)QAVja&&rMuJsW>V&5=68m=RCgKs3+Ua$EDrD(l?OdJob;>z08rLJeg_%nHl|Ks+;XR%AZNHxTag2bW-^4gk;)v(#}=Y4Z)-R;9(LmrcwtIb(e( zS%;ScDuHz`FflHsJw@6Ph#5>(OQIH(V0V-^9GQ(5XV}+-`#7#E&&gKx>QeQIRKagh zZIZ>Y`w`KYj|8-4h~tWu;RNm%)Ki!0G;Iq~zp}Nr>@hZborkz<0RY5Ip~L}lLS6~t z4U&P3HysfunOf*E40Jn8YFJBaT{xe!T9|o_TwbqGD;i=M=lL{+%%wmHj##^u4OHHk z+#{6e8-=4c$4j|)E?hT><&S9olZof2iNz~7&r8Qf7+_*Jml*DDX_c7vfk@5NQ06F* zX&8&%Wjn&lg60-(B-{hMs$gG{yD)wt4j9~ETynqsN&@SX5X@{ zZZhQzqHPlVOw~r^6ZsZc2qA=yyRl)-o#q9AEKu0yI5fqY%Zt=C!jJnhtLnPu3BB?pJKV{;hJjZaAd6$le)FC;7*}JXl#2W?Yh>iG_ z{FN@XP^vjxJE2GuT{RkW3q3;lg2a6zeba1a2CxCSS9MXng< zOD_48F|t@80_{}Vso|U2LM?5txkePhjIqfny^@Q}0SKdaslX9+b(!9Zp3v@MFL{V} zF4G2xr+H?SzR)!YE~TO&q@33>Rlt(e(u&%{#!GkxEl~F?cQWv)?n`pD+ELspdx^b5 z5*dJ|8-eJ_0Y-;dhnkD(UCX9DrxZf&Vjib42T_LQmx#HX&1M;#oe-u3Ued~oj+I6f z#w5J-b#sZ1(W!Wsb7UjJ4Z{)1IhVQTh#eiwnTv45;&af~Lwk(=#Ik0Nl_+4xFeYkQ zVD$ZnnCP%*nR6=_H#N+%S#b+iOB~8o+(DKd;jeIc!3U!x3=>u|7r{+(9yprBth76>MEg z#ml(#tWI4SN`>ggG>gSX_?f6gGRsl3`hWQuH>rDx46sXA`!Hq9TG4XdA7E~1^$_L6 z31R)22C7qwoC%(l6D+Wf7{ewQu})$p49VVkmL*(7xF$zUK{&*w;6AP+!$}0KrP@e8 zF+ISp)wpnOWtm>kJA+CYVO0{K2m{1d@+?ceGOe6=o1PN&eI7aHU>~vEDCjj(n%uVP zFmoMr{;=0hF#`HxIbcj_nkN#3T*m~s;hBP4Dj7v87tW>jmek@AW#SPnzGdQ8d`6a5 zXY9N}rSzwWIjH6-EUDTNQ<=skG3ZVv8Birl^E-B!sEu4$%K_eC$d=V}1@2VJFhWfm z+~wEYw?QtM_MX);TW`oa8Mc}7)V0;M8grj=g(Rq;e3UeZD-Z@G!^Fwl3TE8J#my(E zk;+$mLvhqxlgwr#s6f?Bu`^R%dKD0iUdZ7rh15Tg?JF^cx--gT%Ed$b1PRQcsm3Bo zruczdAy>;+(jcw~veZ9fU7l!`>@S#we}XRxj>e)d6DD_9CBR(9pn~EGEr8x1th#c< zBUzRVMQCCgR2T;B@JC`G69PDBlvfcMgXR=f<}1T7Ft{$D=P}C-uu@sxE@hlc%}bdu zc!^Pb#k|gCSp$fWc9mp%Ol*<+ptm;+p%6z_M$*WlLC2U^GO>uxH3;r+GctsasNt05 zfU)s3W+!50P@C}tz!;Y+1i;KoX1VB7xXq^?V)%|>l}8?6-OU#+;NlE?#qNN+mM{j_ z5j(T&F=ls1*b^Iw8h%Hye2YvdE33;LzQjXIf{jY-B`!%$QC=nOqCD@!?vL1mC+jMu zzhF!dJ)lj}Behp(4a8Nz2N9@^!&7hw7mgqoxc!B*a|B#N3|3oNCYY9~#L^mGExv0z#u4kOVGb+rPl?+a0aa|0`xYfd|P?ed@!OJp` zPw@vki;0+RM#TRB-?NO1FG+ECWJtS#%D`2uycv`^<~ZKSy$GEH2T%>F1GSZfvnLxt zGQgOq3&VXj@|4G@i5s58K>q-!;Sj`I7RiUEHnQps^8+%QY??}I4Au9I>Jw7i-XdA% zP;a3zHkTd4*Fq{@ZVb+op!u4YnPJ)r^9)RrnOsWYhw@Zxsbxpx3`$0$dWK^BnPM)G zZYFan7@ADt(@b#$y18dE$C*Y!IcODH4rpH+muwHfV!)N?guH(%3VsRmxu%0 zeAXXDqBC zriiCY>3Eo^PV+A2E6m)~6vWvp%zVLx!Z*YiVBB$urAvWiF^B}d@~=?U%&EDS7et+s zz2}w|Oc%yw1~nSRHqA#txI7kziM_yLmMo>h`MG%!DulGrsEX2hn z(*<`cmL(DIQ#wncRr;FqJz_9r^vIuLd~RZAQlW+_cQ_%LaZ8taW#r67UCX0$g5?fR zu@cZgyDkOO5^FyrmYK6(2);-SEyP3h*!Vl=O?(9FAHdt%Ker= zvPY1WyiE!q2Bk=j(yIh*4Y-@1;V~GJx;|$qAoKMKLh`5W2V|R(T7t!&U>Rib- zPA4(k+Zj%dOmuI37cfbwyOt|h$3Ej`E>`N8ty|<&!iv(y;NMd>5MPO5hxVgJza^y< zi8W-G3bK2a8DGXE(f(xy2sff+!7C|5d#I6A**K;k$D&MCi;ET$##Q7E|O zoTDoN_r2nECtL%uE2y{>I5-VJx@>oQmRxhVvr^f2E~D8o7tFdYQC;Fz30Z=Hw%|iI z#v)J!7s8ws70rG@TwM8JdvWSocR{&tTHP`xDnPOT~`ngwq9blH0EWwT*F>qd4?f%G-q>q zoWn7}na@X4Jn96wQ9JarEVevJf}jWFThu|%F~Jrk>f?r`#-QSEF{u9lA-Tk3zMM+7 z8=hs{ykcH6sZ!;a80s3{dR)gbW>Y*tsd(JELzp}<$^_(JxPfGyuQ2zk-Q-UM0DO!VUm0S{+&{5-}ja1T1p@Mqm4|!x+ za;=Ht6H_C#LX*$%#@|1&+rP<0u4f^+V|#`7mgO$o7b!bLkVaI1=HQ!{I3gDgJwcgs z7oHN^~+Q{{SV> z_b856^^VCyr^p4}Pe>W)0%V9xAu`I&WkELt!h~GZqIc-2T^ol=saC<5)n-+|ZVqYa zFPVfk^aAb(QJ6O)yh|&~FR=pVr7Kq-IbQILA%0`Env@F(Yrz&Z8|arY5}c)OFd|%9 zz)Ci$XDqpOa4C3~cTZBlS!}JMp^W;6tvG5A83HcDxFali47G*XfFnowrmv8MtoMOU ztOCX%0VpEiQ4qZm+yl7njUjq1i$)-+a^^sBao!VArealZPA14=I*$?D(Kt^1cD)Eh zoYXmvMrvy|)OQ_61UDEFH_)A?(zh=}a}*n?q)Nm(Gl}MI(@DU=>E>2CnTDq%H3HHR z+~!_-D-n(%sQ&<|bVnUIoI!DG5OE#Lg-ny8gng zAZ1d$L|&r-oIzTg802~xXK3mhhdw%z2R>%s*nhdqazMcjj3;<;G>)QX8hUp-M~;rp zhcMGF8}|;3i?~?I#{06Y nj<+iiVmk6>kc$Uv)H34WG=QC)Ly1^-hBQYeXaD{H0|5Woeod(8 literal 0 HcmV?d00001 diff --git a/lib/JC_Button/src/JC_Button.cpp b/lib/JC_Button/src/JC_Button.cpp new file mode 100644 index 0000000..aaa50de --- /dev/null +++ b/lib/JC_Button/src/JC_Button.cpp @@ -0,0 +1,100 @@ +// Arduino Button Library +// https://github.com/JChristensen/JC_Button +// Copyright (C) 2018 by Jack Christensen and licensed under +// GNU GPL v3.0, https://www.gnu.org/licenses/gpl.html + +#include "JC_Button.h" + +/*----------------------------------------------------------------------* +/ initialize a Button object and the pin it's connected to. * +/-----------------------------------------------------------------------*/ +void Button::begin() +{ + pinMode(m_pin, m_puEnable ? INPUT_PULLUP : INPUT); + m_state = digitalRead(m_pin); + if (m_invert) m_state = !m_state; + m_time = millis(); + m_lastState = m_state; + m_changed = false; + m_lastChange = m_time; +} + +/*----------------------------------------------------------------------* +/ returns the state of the button, true if pressed, false if released. * +/ does debouncing, captures and maintains times, previous state, etc. * +/-----------------------------------------------------------------------*/ +bool Button::read() +{ + uint32_t ms = millis(); + bool pinVal = digitalRead(m_pin); + if (m_invert) pinVal = !pinVal; + if (ms - m_lastChange < m_dbTime) + { + m_changed = false; + } + else + { + m_lastState = m_state; + m_state = pinVal; + m_changed = (m_state != m_lastState); + if (m_changed) m_lastChange = ms; + } + m_time = ms; + return m_state; +} + +/*----------------------------------------------------------------------* + * isPressed() and isReleased() check the button state when it was last * + * read, and return false (0) or true (!=0) accordingly. * + * These functions do not cause the button to be read. * + *----------------------------------------------------------------------*/ +bool Button::isPressed() +{ + return m_state; +} + +bool Button::isReleased() +{ + return !m_state; +} + +/*----------------------------------------------------------------------* + * wasPressed() and wasReleased() check the button state to see if it * + * changed between the last two reads and return false (0) or * + * true (!=0) accordingly. * + * These functions do not cause the button to be read. * + *----------------------------------------------------------------------*/ +bool Button::wasPressed() +{ + return m_state && m_changed; +} + +bool Button::wasReleased() +{ + return !m_state && m_changed; +} + +/*----------------------------------------------------------------------* + * pressedFor(ms) and releasedFor(ms) check to see if the button is * + * pressed (or released), and has been in that state for the specified * + * time in milliseconds. Returns false (0) or true (!=0) accordingly. * + * These functions do not cause the button to be read. * + *----------------------------------------------------------------------*/ +bool Button::pressedFor(uint32_t ms) +{ + return m_state && m_time - m_lastChange >= ms; +} + +bool Button::releasedFor(uint32_t ms) +{ + return !m_state && m_time - m_lastChange >= ms; +} + +/*----------------------------------------------------------------------* + * lastChange() returns the time the button last changed state, * + * in milliseconds. * + *----------------------------------------------------------------------*/ +uint32_t Button::lastChange() +{ + return m_lastChange; +} diff --git a/lib/JC_Button/src/JC_Button.h b/lib/JC_Button/src/JC_Button.h new file mode 100644 index 0000000..7170294 --- /dev/null +++ b/lib/JC_Button/src/JC_Button.h @@ -0,0 +1,111 @@ +// Arduino Button Library +// https://github.com/JChristensen/JC_Button +// Copyright (C) 2018 by Jack Christensen and licensed under +// GNU GPL v3.0, https://www.gnu.org/licenses/gpl.html + +#ifndef JC_BUTTON_H_INCLUDED +#define JC_BUTTON_H_INCLUDED + +#include + +class Button +{ + public: + // Button(pin, dbTime, puEnable, invert) instantiates a button object. + // + // Required parameter: + // pin The Arduino pin the button is connected to + // + // Optional parameters: + // dbTime Debounce time in milliseconds (default 25ms) + // puEnable true to enable the AVR internal pullup resistor (default true) + // invert true to interpret a low logic level as pressed (default true) + Button(uint8_t pin, uint32_t dbTime=25, uint8_t puEnable=true, uint8_t invert=true) + : m_pin(pin), m_dbTime(dbTime), m_puEnable(puEnable), m_invert(invert) {} + + // Initialize a Button object and the pin it's connected to + void begin(); + + // Returns the current debounced button state, true for pressed, + // false for released. Call this function frequently to ensure + // the sketch is responsive to user input. + bool read(); + + // Returns true if the button state was pressed at the last call to read(). + // Does not cause the button to be read. + bool isPressed(); + + // Returns true if the button state was released at the last call to read(). + // Does not cause the button to be read. + bool isReleased(); + + // Returns true if the button state at the last call to read() was pressed, + // and this was a change since the previous read. + bool wasPressed(); + + // Returns true if the button state at the last call to read() was released, + // and this was a change since the previous read. + bool wasReleased(); + + // Returns true if the button state at the last call to read() was pressed, + // and has been in that state for at least the given number of milliseconds. + bool pressedFor(uint32_t ms); + + // Returns true if the button state at the last call to read() was released, + // and has been in that state for at least the given number of milliseconds. + bool releasedFor(uint32_t ms); + + // Returns the time in milliseconds (from millis) that the button last + // changed state. + uint32_t lastChange(); + + private: + uint8_t m_pin; // arduino pin number connected to button + uint32_t m_dbTime; // debounce time (ms) + bool m_puEnable; // internal pullup resistor enabled + bool m_invert; // if true, interpret logic low as pressed, else interpret logic high as pressed + bool m_state; // current button state, true=pressed + bool m_lastState; // previous button state + bool m_changed; // state changed since last read + uint32_t m_time; // time of current state (ms from millis) + uint32_t m_lastChange; // time of last state change (ms) +}; + +// a derived class for a "push-on, push-off" (toggle) type button. +// initial state can be given, default is off (false). +class ToggleButton : public Button +{ + public: + + // constructor is similar to Button, but includes the initial state for the toggle. + ToggleButton(uint8_t pin, bool initialState=false, uint32_t dbTime=25, uint8_t puEnable=true, uint8_t invert=true) + : Button(pin, dbTime, puEnable, invert), m_toggleState(initialState) {} + + // read the button and return its state. + // should be called frequently. + bool read() + { + Button::read(); + if (wasPressed()) + { + m_toggleState = !m_toggleState; + m_changed = true; + } + else + { + m_changed = false; + } + return m_toggleState; + } + + // has the state changed? + bool changed() {return m_changed;} + + // return the current state + bool toggleState() {return m_toggleState;} + + private: + bool m_toggleState; + bool m_changed; +}; +#endif diff --git a/platformio.ini b/platformio.ini index aa20788..f513dd3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -15,5 +15,11 @@ framework = arduino upload_port = stlink debug_tool = stlink lib_deps = - http://192.168.2.3/Bonobo.Git.Server/JCButton.git +# http://192.168.2.3/Bonobo.Git.Server/JCButton.git + +[env:native] +platform = native +build_flags = -std=gnu++11 +lib_deps = + ArduinoFake diff --git a/src/board.h b/src/board.h index 54272d9..12d6e57 100644 --- a/src/board.h +++ b/src/board.h @@ -1,27 +1,55 @@ #ifndef BOARDH #define BOARDH -#define LED1 PB0 //D3 -#define LED2 PB7 //D4 -#define LED3 PB6 //D5 +#ifndef UNIT_TEST -#define DETECT1 PA6 //A5 -#define DETECT2 PA5 //A4 -#define DETECT3 PA4 //A3 + #define LED1 PB0 //D3 + #define LED2 PB7 //D4 + #define LED3 PB6 //D5 -#define SWITCH1 PA7 //A6 TOGGLE1 -#define SWITCH12 PA2 //A7 MOMENTARY1 -#define SWITCH2 PA1 //A1 TOGGLE1 -#define SWITCH22 PA3 //A2 MOMENTARY1 -#define SWITCH3 PB5 //D11 TOGGLE1 -#define SWITCH32 PB4 //D12 MOMENTARY1 + #define DETECT1 PA6 //A5 + #define DETECT2 PA5 //A4 + #define DETECT3 PA4 //A3 -#define LD3LED PB3 -#define WAKEUPPIN PA2 + #define SWITCH1 PA7 //A6 TOGGLE1 + #define SWITCH12 PA2 //A7 MOMENTARY1 + #define SWITCH2 PA1 //A1 TOGGLE1 + #define SWITCH22 PA3 //A2 MOMENTARY1 + #define SWITCH3 PB5 //D11 TOGGLE1 + #define SWITCH32 PB4 //D12 MOMENTARY1 -#define REDLEDRES -#define YELLOWLEDRES -#define GREENLEDRES + #define LD3LED PB3 + #define WAKEUPPIN PA2 + + #define REDLEDRES + #define YELLOWLEDRES + #define GREENLEDRES + +#else + + #define LED1 0 //D3 + #define LED2 1 //D4 + #define LED3 2 //D5 + + #define DETECT1 3 //A5 + #define DETECT2 4 //A4 + #define DETECT3 5 //A3 + + #define SWITCH1 6 //A6 TOGGLE1 + #define SWITCH12 7 //A7 MOMENTARY1 + #define SWITCH2 8 //A1 TOGGLE1 + #define SWITCH22 9 //A2 MOMENTARY1 + #define SWITCH3 10 //D11 TOGGLE1 + #define SWITCH32 11 //D12 MOMENTARY1 + + #define LD3LED 12 + #define WAKEUPPIN 13 + + #define REDLEDRES + #define YELLOWLEDRES + #define GREENLEDRES + +#endif //unit_test #endif //BOARDH \ No newline at end of file diff --git a/src/buttons.cpp b/src/buttons.cpp index 574b73e..62c28d7 100644 --- a/src/buttons.cpp +++ b/src/buttons.cpp @@ -1,8 +1,6 @@ + + #include "buttons.h" -#include "board.h" -#include -#include "Arduino.h" -#include "JC_Button.h" std::vector buttonlist; @@ -113,4 +111,4 @@ c_button *getButton(e_ledcolor color) std::vector *getButtonlist(void) { return &buttonlist; -} +} \ No newline at end of file diff --git a/src/buttons.h b/src/buttons.h index 3b93958..2ef0415 100644 --- a/src/buttons.h +++ b/src/buttons.h @@ -1,9 +1,12 @@ #ifndef BUTTONSH #define BUTTONSH -#include +#include "Arduino.h" #include -#include "JC_Button.h" +#ifndef UNIT_TEST + #include "JC_Button.h" +#endif +#include "board.h" #include "led.h" class c_button : public ToggleButton diff --git a/src/chainGame.cpp b/src/chainGame.cpp index abb3f50..bd5120d 100644 --- a/src/chainGame.cpp +++ b/src/chainGame.cpp @@ -1,30 +1,21 @@ -#include "chainGame.h" -#include "Arduino.h" -#include "buttons.h" +#ifndef UNIT_TEST +#ifdef ARDUINO +#include "chainGame.h" uint8_t patternIndex = 0; bool patternFlag = false; -bool firstpattern = false; -//e_ledcolor cheatbutton = NONE; +//bool firstpattern = false; uint16_t cheatbutton = 0; bool cheatButtonFlag = false; -// e_ledcolor ledpattern[4] = -// { -// YELLOW, -// GREEN, -// YELLOW, -// RED}; - uint16_t ledpattern[4] = -{ - 1, - 3, - 1, - 2 -}; + { + 1, + 3, + 1, + 2}; int patternlength = sizeof(ledpattern) / sizeof(ledpattern[0]); @@ -44,36 +35,44 @@ void ResetChainGame(void) { patternIndex = 0; patternFlag = false; - firstpattern = false; + //firstpattern = false; cheatbutton = 0; cheatButtonFlag = false; } void HandleChainGame(void) { - if (buttonIsPressed(ledpattern[patternIndex]) && !patternFlag && !cheatButtonFlag) + if (!patternFlag && !cheatButtonFlag) { - turnOnLed(ledpattern[patternIndex]); - patternFlag = true; - cheatbutton = 0; - } - else if (buttonIsPressed(cheatbutton) && !patternFlag && !cheatButtonFlag) - { - turnOnLed(cheatbutton); - cheatButtonFlag = true; - } - else if (anybutton() && !patternFlag && !cheatButtonFlag ) - { - cheatbutton = 0; + if (buttonIsPressed(ledpattern[patternIndex])) + { + //pattern button pressed, turn on LED, set flag + turnOnLed(ledpattern[patternIndex]); + patternFlag = true; + cheatbutton = 0; + } + else if (buttonIsPressed(cheatbutton)) + { + // cheatbutton pressed, turn on cheat led, set flag + turnOnLed(cheatbutton); + cheatButtonFlag = true; + } + else if (anybutton()) + { + // if any other button is pressed, clear cheat button + cheatbutton = 0; + } } if (!buttonIsPressed(ledpattern[patternIndex])) { + // pattern switch is open, turn off pattern LED turnOffLed(ledpattern[patternIndex]); } if (!buttonIsPressed(cheatbutton) && cheatButtonFlag) { + // cheat switch is open, turn of cheat LED turnOffLed(cheatbutton); cheatButtonFlag = false; cheatbutton = 0; @@ -81,25 +80,33 @@ void HandleChainGame(void) if (!anybutton()) { + //all switches are open, turn off all LEDs turnOffAllLed(); if (patternFlag) { + // pattern LED was triggerd, reset flag, move to next pattern patternFlag = false; nextPattern(); } } - + //check cheatbuttons if (buttonIsPressed(4) && (cheatbutton == 0)) { + // cheatbutton 4 (momentary 1) was closed, set cheatbutton to 1 cheatbutton = 1; } else if (buttonIsPressed(5) && (cheatbutton == 0)) { + // cheatbutton 5 (momentary 2) was closed, set cheatbutton to 2 cheatbutton = 2; } else if (buttonIsPressed(6) && (cheatbutton == 0)) { + // cheatbutton 5 (momentary 3) was closed, set cheatbutton to 3 cheatbutton = 3; } -} \ No newline at end of file +} + +#endif +#endif diff --git a/src/chainGame.h b/src/chainGame.h index c2c1ed8..8efecfe 100644 --- a/src/chainGame.h +++ b/src/chainGame.h @@ -1,6 +1,8 @@ #ifndef CHAINGAMEH #define CHAINGAMEH +#include "Arduino.h" +#include "buttons.h" void HandleChainGame( void ); void ResetChainGame(void); diff --git a/src/detectled.cpp b/src/detectled.cpp index b5110c5..c123fe1 100644 --- a/src/detectled.cpp +++ b/src/detectled.cpp @@ -1,9 +1,5 @@ -#include "Arduino.h" #include "detectled.h" -#include "buttons.h" -#include "board.h" -#include "led.h" -#include "vector" + #define CHANNELS 3 #define SAMPLES 20 @@ -36,4 +32,5 @@ void initDetectLed(void) ledlist_ptr = getledlist(); analogReadResolution(10); -} \ No newline at end of file +} + diff --git a/src/detectled.h b/src/detectled.h index 4359181..2a817ee 100644 --- a/src/detectled.h +++ b/src/detectled.h @@ -1,6 +1,11 @@ #ifndef DETECTLEDH #define DETECTLEDH +#include "buttons.h" +#include "board.h" +#include "led.h" +#include "vector" + void handleDetectLed( void ); void initDetectLed( void ); diff --git a/src/led.cpp b/src/led.cpp index 6066c65..c435d36 100644 --- a/src/led.cpp +++ b/src/led.cpp @@ -1,5 +1,6 @@ + + #include "led.h" -#include "Arduino.h" c_leds ledlist; @@ -237,3 +238,4 @@ bool c_led::checkIndex(uint16_t index) } return false; } + diff --git a/src/led.h b/src/led.h index 2986f2f..a4454e9 100644 --- a/src/led.h +++ b/src/led.h @@ -1,8 +1,9 @@ #ifndef LEDH #define LEDH -#include "arduino.h" +#include "Arduino.h" #include "vector" +#include "board.h" enum e_ledcolor { @@ -92,4 +93,5 @@ void turnOffLed(uint16_t index); void turnOnLed(uint16_t index); void turnOffAllLed(); -#endif //LEDH \ No newline at end of file +#endif //LEDH + diff --git a/src/magicSwitchBoard.cpp b/src/magicSwitchBoard.cpp index 3228a61..5825ec9 100644 --- a/src/magicSwitchBoard.cpp +++ b/src/magicSwitchBoard.cpp @@ -1,7 +1,6 @@ + + #include "magicSwitchBoard.h" -#include "Arduino.h" -#include "buttons.h" -//#include "JC_Button.h" #define CHANNELS 3 #define TIMEOUT 7000 //game timeout @@ -171,3 +170,5 @@ void handleMagicSwitchBoard(void) } + + diff --git a/src/magicSwitchBoard.h b/src/magicSwitchBoard.h index 23142be..bd4c1d5 100644 --- a/src/magicSwitchBoard.h +++ b/src/magicSwitchBoard.h @@ -1,6 +1,8 @@ #ifndef MAGICSWITCHBOARDH #define MAGICSWITCHBOARDH +#include "buttons.h" + void handleMagicSwitchBoard( void ); #endif //MAGICSWITCHBOARDH \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 9e8bf26..dbc3247 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,7 @@ -#include + +#include "Arduino.h" + + #include "board.h" #include "chainGame.h" #include "detectled.h" @@ -8,7 +11,7 @@ #include "led.h" #define TIMEOUT 15000 // 15sec * 1000ms -#define GAMESELECTTIMEOUT 5000 // 7sec * 1000ms +#define GAMESELECTTIMEOUT 10000 // 7sec * 1000ms typedef enum { @@ -188,4 +191,4 @@ void loop() } break; } -} \ No newline at end of file +} diff --git a/src/simpleled.cpp b/src/simpleled.cpp index 7521b8e..6c8314f 100644 --- a/src/simpleled.cpp +++ b/src/simpleled.cpp @@ -1,7 +1,5 @@ #include "simpleled.h" -#include "led.h" -#include "buttons.h" -#include "vector" + extern std::vector buttonlist; diff --git a/src/simpleled.h b/src/simpleled.h index ab030b4..6b75a6d 100644 --- a/src/simpleled.h +++ b/src/simpleled.h @@ -1,6 +1,10 @@ #ifndef SIMPLELEDH #define SIMPLELEDH +#include "led.h" +#include "buttons.h" +#include "vector" + void initSimpleLed( void ); void handleSimpleLed( void ); diff --git a/test/native/test_games.cpp b/test/native/test_games.cpp new file mode 100644 index 0000000..598b5a8 --- /dev/null +++ b/test/native/test_games.cpp @@ -0,0 +1,12 @@ +#include +#ifdef UNIT_TEST + + +int main( int argc, char **argv) { + UNITY_BEGIN(); + + UNITY_END(); +} + + +#endif //UNIT_TEST \ No newline at end of file