From 0adfc860cb1408b078a8b65f8968d0d690f8eab7 Mon Sep 17 00:00:00 2001 From: Kaloyan Stoykov Date: Fri, 22 Mar 2024 23:30:36 +0100 Subject: [PATCH] wk5: Tests finished and check with screenshot Co-authored-by: Dimitar Byalkov --- wk5/src/HighOrder.elm | 50 +++++++++++++++++- wk5/src/Modelling1.elm | 10 ++-- wk5/src/Modelling2.elm | 42 ++++++++++++++- .../Screenshot from 2024-03-22 23-29-57.png | Bin 0 -> 25278 bytes 4 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 wk5/src/Screenshot from 2024-03-22 23-29-57.png diff --git a/wk5/src/HighOrder.elm b/wk5/src/HighOrder.elm index f6bc31a..201b8cd 100644 --- a/wk5/src/HighOrder.elm +++ b/wk5/src/HighOrder.elm @@ -62,4 +62,52 @@ testCollatzEven = repeatUntil myPredicate myCollatz [24] == testCollatzOdd: Bool testCollatzOdd = repeatUntil myPredicate myCollatz [19] == - [1,2,4,8,16,5,10,20,40,13,26,52,17,34,11,22,44,88,29,58,19] \ No newline at end of file + [1,2,4,8,16,5,10,20,40,13,26,52,17,34,11,22,44,88,29,58,19] + +testMyPredicate: Bool +testMyPredicate = myPredicate [1,2,4,8,16] + +testDouble: Bool +testDouble = double 2 == 4 + +testAbove100: Bool +testAbove100 = above100 101 + + +testRepeatUntil1: Bool +testRepeatUntil1 = repeatUntil above100 double 7 == 112 + +testRepeatUntil2: Bool +testRepeatUntil2 = repeatUntil above100 ((+) 1) 42 == 101 + +testRepeatUntil3: Bool +testRepeatUntil3 = repeatUntil above100 ((+) 10) 42 == 102 + +testRepeatUntil4: Bool +testRepeatUntil4 = repeatUntil above100 ((*) 2) 42 == 168 + + +testLog100Base2: Bool +testLog100Base2 = log 2 100 == 7 -- 2⁷ = 128 + +testLog81Base3: Bool +testLog81Base3 = log 3 81 == 4 -- 3⁴ = 81% + +testLog82Base3: Bool +testLog82Base3 = log 3 82 == 5 -- 3⁴ = 81 + +testLog80Base3: Bool +testLog80Base3 = log 3 80 == 4 -- 3⁴ = 81 + +testLog25Base5: Bool +testLog25Base5 = log 5 25 == 2 + +testLog48Base6: Bool +testLog48Base6 = log 6 48 == 3 + + +allHighOrderTests: List Bool +allHighOrderTests = [testCollatzEven, testCollatzOdd, testMyPredicate, testDouble, + testAbove100, testRepeatUntil1, testRepeatUntil2, testRepeatUntil3, + testRepeatUntil4, testLog100Base2, testLog81Base3, testLog82Base3, testLog80Base3, testLog25Base5, testLog48Base6] + diff --git a/wk5/src/Modelling1.elm b/wk5/src/Modelling1.elm index df942d7..33b75ce 100644 --- a/wk5/src/Modelling1.elm +++ b/wk5/src/Modelling1.elm @@ -22,15 +22,15 @@ print f = Const val -> String.fromInt val Poly func val -> - "(" ++ print func ++ " ^ " ++ String.fromInt val ++ ")" + "(" ++ print func ++ "^" ++ String.fromInt val ++ ")" Mult func1 func2 -> - "(" ++ print func1 ++ " * " ++ print func2 ++ ")" + "(" ++ print func1 ++ "*" ++ print func2 ++ ")" Div func1 func2 -> - "(" ++ print func1 ++ " / " ++ print func2 ++ ")" + "(" ++ print func1 ++ "/" ++ print func2 ++ ")" Plus func1 func2 -> - "(" ++ print func1 ++ " + " ++ print func2 ++ ")" + "(" ++ print func1 ++ "+" ++ print func2 ++ ")" Minus func1 func2 -> - "(" ++ print func1 ++ " - " ++ print func2 ++ ")" + "(" ++ print func1 ++ "-" ++ print func2 ++ ")" eval: Float -> Function -> Float eval num f = diff --git a/wk5/src/Modelling2.elm b/wk5/src/Modelling2.elm index 2f69608..48271f8 100644 --- a/wk5/src/Modelling2.elm +++ b/wk5/src/Modelling2.elm @@ -90,4 +90,44 @@ simplifyHelp func = Minus left right -> Minus (simplify left) (simplify right) _ -> - func \ No newline at end of file + func + +-- Tests +testPrintFunc: Bool +testPrintFunc = print f == "(((3+x)*(x-(x^5)))+2)" + +testPrintDerivFunc: Bool +testPrintDerivFunc = print (derivative f) == + "((((0+1)*(x-(x^5)))+((3+x)*(1-(5*(x^4)))))+0)" + +testPrintSimplifyDerivFunc: Bool +testPrintSimplifyDerivFunc = print (simplify (derivative f)) == + "((x-(x^5))+((3+x)*(1-(5*(x^4)))))" + +testDerivX: Bool +testDerivX = derivative X == Const 1 + +testDerivConst: Bool +testDerivConst = derivative (Const 5) == Const 0 + +testDerivPlus: Bool +testDerivPlus = derivative (Plus X (Const 9)) == Plus (Const 1) (Const 0) + +testDerivMult: Bool +testDerivMult = derivative (Mult (Const 4) X) == + Plus (Mult (Const 0) X) (Mult (Const 4) (Const 1)) + +testDerivPolyX: Bool +testDerivPolyX = derivative (Poly X 3) == Mult (Const 3) (Poly X 2) + +testDerivPoly: Bool +testDerivPoly = derivative (Poly (Const 4) 3) == (Poly (Const 0) 3) + +testSimplePoly: Bool +testSimplePoly = simplify (Poly (Const 0) 3) == Const 0 + +testSimpleRecursivePlus: Bool +testSimpleRecursivePlus = simplify (Plus ((Mult (Const 1) X)) (Minus X (Const 0))) == (Plus X X) + +allModelling2Tests: List Bool +allModelling2Tests = [testPrintFunc, testPrintDerivFunc, testPrintSimplifyDerivFunc, testDerivX, testDerivConst, testDerivPlus, testDerivMult, testDerivPolyX, testDerivPoly, testSimplePoly, testSimpleRecursivePlus] diff --git a/wk5/src/Screenshot from 2024-03-22 23-29-57.png b/wk5/src/Screenshot from 2024-03-22 23-29-57.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1ed7f240de054a9a448c964f7a4401541caaa3 GIT binary patch literal 25278 zcmd431yEc~_cusFfZ)M`Lr8E!aF+=X+}%C64DK*Nf=dFyEd+N6t`i6_xCD212KQl@ zg}l%Ex9_X1Z?|fzcIsB$neKbLtIz3k`pEB0go=_hHU=365)u-&tjq^BB&4UsNJviv zo})gr)D$(5KHQ$Uipy#|fB5)4{}}%8o77EG$4wn*>E>zbVu57k2z0Pubv1XfuyAy> z2D%*~gGC=6Vt#x`!o|YW%?9ZBO2fv%0!hln<`pOBD@9Y6SDfse+^;yf1UUr+dH7yQ zNNR{R)T7PD1f{7=ODP-u(Ze$#pSd;>+jx-rJ9nL%UB4%HP0C6T57MctO%lzJ3w& zI4(OaEC6yDEH_(4L57x;zenGgQtV+tA?H+$@3 z{OZOe9@`&rxjD5+Cz7t{-H6N8L?RIdeVy67fnp5WbDJ>MnEkA`<8ApcsNWY|Wa4I9 zMTRL*byC@SBbhVbHJ!wxF7*>tC1|V4#-YlNOtt6iaEYNWT{KhqqQa(Av(;QHzTWFu zNhmdyQAfD0(Efd8dUpX-Sv^^Q^X#yZc-GdQy_`3r3DXLX#~@6KNK7j{i$FK~OQY~O z(}`g+bX%Oy=k9?Qjuhqe#fHspt4ldz6H^mv9>YlQE0;u?Jgr|qVqeZA7Li@CZl!8A zX^;*q$we63u;K8Z^9PSgIS|*fiYCq{?n9(;~Kn z=uwh&yHB>nOBDttWOI0WqZY7Gr^!_+em5SNfK9Iv@Mgzp@1zY;x9~?;dz@}bYqnB+ z>j3$i()G^Yq&CYpEW119LfArHbi(U=nv4tg?{UswS68>= z<_|4hG^I^L1lD%6Mjsh7x?%s|O6n_qEWkvo(6)#ZhIUO-}BPOz^GoHkiSi1GajLMEwV3<%H=7EKc@HGho5l2os!)_G&j05f;_qFi5;*t zinC80^(=bI16~n5LONK$9C_(4ep-_d;eRK&BvM9mc%l2jK!mHrRO8MBXDC~I0u*i0 zBTX;G8W3#tv_r2dX~W8j)BWBNE6J>W@DAHK0VJ`o9wl2oa%K-%_JP-v^bcC!?Q^Ow z7CqY$IzEkm2o|27T11%+UF#0vk0fy6km1qP~&Uso(X7}SRU8j z3|9FT^q`K+|I+8c*c~vYy+7HdJqp_C2ELdU4_d@Oq6y}JTL|{S2!9x*gnLiA#k=~2 z$5yZZY3508V2GwQ8$6O_IiojQdh4buA5MM7&-K!Qe#BPUk8(NSQPpv|&n?15mvUO0 zU2yJE22z?!ZoD*e#}xF53H39Kg+9yXuKYq9kQrj>{?110aAV6^meVD2ApHp()c(FZ zoCX60=29#!raG81go-5vti`Ty_LTBd${E=hXHDH8N;GFDj6WH}Q7S@yehTK5mA$o8 zyKo=d_oVykNb+7oW06!LIEOHJOb;BLzjKklgRKdT1ef2=W3?4gNRE@2uSs{gj^HCE zY6h{NbvN*d_NZ}^l^svjj|AdwCA39ZMcHY`NdN^UUx)cj zc7#dNSmX1LlWJemvMqzRMJne)Uf$-SsIElalA9io=`kq7!>PfqUTUt!X4EKCX(YnL z#s>D`og5zzHfr;6Iq8&y=+)VV>)moEaNo2Flp^!x)pCM=V854V(nZ1kNox1bo9+c( zk;J+~&qp;C7A*z(_t0P|hx}f(tJIr*{uZT3TsbjxI`3_v4_A$xfuGCrPTtBi0I|OR zz+^c2Y(>hmfSY~0AeYZvxUxt1vP6z7u8s9wu(dJk=%t0j{7E`x$+9)O$<*Gc&0xsQ z%Xs&hxbH6jZtZ$y7TEO?K(iDSie` znW5yj1&6Sb#PZ#&_gngDQOy2pZ`Gyc?Oj+s>S~FwC3(qiWu)`HNdjDD-1FNS9G()4 zwD*2uyt)O|!e<7IHUqAi+@Sf0jJ}fZs-%pZJ_I~@e0s|&ZeHqZ)Sslv8QSt(*GtoB zlP}mrMu@dt@mUx!4#2W>j=T6jqU~grW@NKE^!Tz|f$Jyrif5FPl7;~`Li{aeJJ#^2 zc(dp|yq(TgbVh-$Ad1fook1rJwUo9YaFOhAcjLg+#*KNuzVZeSNQxxF$oA0xi9O?Su4MW$c$g$_R52iw=w_e)< z=;1VtrDXkO&$~V^9R;LjwXB&v6oSov?A;g=7?24tXXqMa@YWClQrKDql(v%~2R!3x z#gj#+>!QYz^f{M8G5nrb8+ZBsPH;-OWNne}6kYH7?H-$Gi-$l{!di=e4jw${mJy0S7RxLgUS0~?;!NipqzubPs%Lrd_=|MB9OkNYlrD&W(fh* zQa+m8r|d5`)W3K>H8)|zBSVo;4X*hDoe`BYLDDN>CpnN;L6eT5`>?H^OuMEyns@Sy zNs};fh6B`xey&CBrsulI9)Swb4pnhuZdr3RfuTRFT4`b{Wnv(i&Gqyn$MROdNJG=| z!`JF{bY>Hd-M*S29v}}8WJ>3<>i0Trp>VDIL`qC-j9dA=UgmOR0;{gp>#ZRM-Y(p7 zj~8PPhCuPK)qcC$>1F17@-y1z-=(P>0m5S=6|`^s>C_?0G|uKZ&|5GPETvw#y%^Ubab9vbIbDb;FQPI|L&%$DXTEAldk*GS$n$0t{r&$Ps zN+k@s_tWHtDvV<_+b7OODOunfxpW{ci36?uCpO6h9VUK`_sK9mV@MR^vW?iYo#% zGd^qDl!dQwTAygmr}XLslNgKB%^f~W$Q{ONhb)shx)Gy(@h!!|9(#WLkoF?f8kxT>tkiJdD!-c27wd>L0wUHuL!6lWF%XGgV)UMrS)SKt z`7=KpGvP|BKRJs3<(s%^6t=z8e0*Cxd`c$%vHLmALM-jSx;vo@@p0d62Z}_{NS2TK zf!znG$3i~?b_T=$KIbUXU=Z(fB#m~h_+eZbo5E*{)Wgq?&d%?d?x*ch;?%QU_T(;h z>po-ew?0UVnp(q%{a3y(!N04i4?qpR$vNxcex`yscwb-}TnB=4CQG8Y?6!RhQlY5d zd%BdR+s%&Fu9)t|WG^1~v$z4;!(h) z5ran5_l;@24}_G8jUVZ-=F^Chpz%v1cGWrux|??F=f;Ftpv$Bt@~aI#NZ|`&FkCAn z@RDX~Ix{lUu8+}{W&TZaZw(v{IL7exOqPgqjy^;#x({YDpRQ&dza$+vYgx8Zv}6Jx zIAeFm&|@%;K}&Uh)Ihq{h>1vz8Aaw#ph zbqD&@@BAtfKWgRo5ODDnpl0jFnG|U>j+6dFNrncK_>#5y9gDXB@0Ga`&nReC%htBI zhefiwPwh9v&CPQmPWhV~V@&jb5XRc)k-{aqy8le5Jbghleew`c|hYx z;axre*W}t2*8na<4o(R>R6RKwF8UWC1)V!K0{}e=ptQgSB>645TD(`)~%l7&}CXn7> zI)u=+%0+bjC_}(JC%gMHKVW<30Lr$h_U@nSFd0;rEpHU%qtAzJlttwZo|rIeHEFHb zbZENDbu&{09{02cJ1BcyDQx*&B1vbrUOs0Ykxu@()9tcEf)LHBX3-Ib67~^HuZmn$ zz6~Fy6>#*OcfU*-JTq2YQL9f3@NeIYiP%RXX=lm|i@j$kT^6voa`_&Rv5Qbx*|xG@ z@UM*CCM=&O9D&S8B3Q{KV0 zKy>tk>v1Z!dv-A*_?PeCU2F9OouZF&+WYS%U)pA&GAfi4|81B`P*crfkh$6ucVMjq z8qYQ9s6D=NVh{sHL)|uKJL{CVO9SB<0GyHoc~y&hhnB0=*8ANU=d^*|^YTjZ_FH#q zrF&7T(9vZsZ1FeA`GQ)OGFi_}%zm%Pv=^E5-ro)ARHuK8r@`zPmGWCYhHA$c!H#%? zOma1gLA6)7wY(1rzr1@JJob{nLjPs;R`_~3;%@BdT0a}Wbr?ew-HQAu>q3_ESJ4_s zhgq^~RtaN2)|NHdkH@*iIb07m8=Iwdu>HRlie?5?_6O}M&@d#mb;Ytmy%v(nZy(|c z&uJ=IW~pegem(c9xmUff)OUW zqj$g8;z^vh6PKC!YfsE$Q!-vI@kCPR#6_E%WK(&0PpSAj0@BsMu3{1~i|qRlUE!zR z8%-p(o|UhE^8gE=FD^!((T7bO4^5S4lpP*eSAg~XZx$1CAz|s6rEws>g%iyMm4#|h z6Rqq8ws#O(u$x=U?}Rzyp%iA!o2`LLrWSM~9k-ABoUuq$i&6yS%gYu}YpQUXMqd<| zdV`u4G-Azp*1|zx{6Y`F*OInp%#r#|-EdqyNBUKqFuBxhQVhjW?~|^vn@VKqWbpRR z2YQrmUoXdShUaDrAch2~R3hPXT=TP4Ek%c1U=n;PFfkh(paY9rr_@W@uc&FLEWZ>I zYDc{V@W#Q0fu{Q%KXDTIHuu)EDU8YOY+%=M3M)Cjx8E;|Iy6*!bE4Za9Hjy3J_`~~ zI{XrDPJRPn8(O@K=cnc~JB)`H`=5y|hqGB|ulBLzGBm-I1KVltN@JAXV3x+nLyEj^39(B`A`na=-w zzjXTUBE1d9p)kCkOCu|?VftOik-f=zj*(X>jb~*iHa>!jJ76(qtj^$adI<$^;*aE# zX4GCq&1k_6{~%g}NEfzW)6JICBGvcLul!w?jWf(zJV5&6FN^k(nZa3GAZlz@ZwiFX zRdCa;r9=Za*4(8Lbsd+;plFPnh5FQ5_-e|s1_bkXH{q6lg#2(^3CCYBkt!80Pn{aF zm0z$Ss+@}=uUvng-d+F-8HyKS=bgE))1z}GFS5U>POWg3NXMDH?mQ|4R^ATG0J7;3 z`-T*iRqx|u*66R+dJDcuC12kHE}3yPfu`yO@M&`%(~&c;_e{nG2l-|7&bl#jkSd52 z!9pP#RT74ri^rFf;1k;>VDASitUc)lA>ryQz)*GNmCMFLrAHmPC=cG`*wJw#EWq#R z7% zj{#GUAG&}1rgseTqFR62GBKTJg$QHHXgx(UieopU#*}dNB^C~(8jtsS{%Jf9;m%U% zz#5i$)-VY^Sj8DIZcwy45RLNDbVrfG1>E`mn#E`=jbrFJjXJkykI02(zkw;wLzK~A z(gbNO5Inq>;nKSS^?Wia`XZt;w%``%^?`usbzJlt?)TDH^Bt%AD9o{k7M@1yN1^qX zBPycy z{62mfex&%M5>>{FCnpCD0x5^Foh*?1RTUg4HPjlM59MN)kdFMsTDK5n0lyYt`doYPKfc;nsOa;Ri3uNg1ZB}Hiv zS~$JU4ceP~ca9NZI+&|U!Uz3P#u=QjZEP`WXei+Q;~wh=Lx?>unZ@cNL z?DILqnaK)mo{P08Oljlm7y+rvp?Pfj-aWprTT$wQKe>Q=d+6bl2YGONJ;lmIIOk5E zLyjzd`=#BV(m2gl6-{B|M4G`|?jc;1bYV;}V-$&&bsdu_%fD+s^!5j8qlV#h#I2}s z7>8#TjgUKW{v@*>wO2GpoMN8k{&q%1D3F(RoxD5l_}U9KIyUb$5N%(5K&2Ge;M&%7 za@!$=C@wDrInBJnxihDPvDh_1DrBf9NtQ^b_uZIihTP&Xhx*WDyJ-UD+5DbyedECCw4QBoG4$7sGVYuFZEmcC zX@U~ixV8YK_-t`!cCr1!+z#RDhImk=yC#UD!t>`_In}G@<*cu-sQ1${cx=|MO-lV+ z*6d){E6&pd(M^zqyG3f(TR&{7JtJ%37;Y;eQxd|7#B3bm`qG6lXyN%~_fH2(V^qaA zf_DK*c@^seErlHPGSZISr1L~GD?2CEppU{id*YWs<($DErtiJ5a2IV5Cu3vqToEYW zylDRmA1_j-a^>FJ(6}6JNx|jPA0(rtEE#qqntdn_G`hgJNy8y;V_rDA#OVCIghdoCfs*!JOq=0qhwH_1+H0kxhNDUa z^I?en%*3hjSl#x|S;TMUloB?zO9vba>tpEZ6Ds&~s=34(pfj7wyJsxf>kbvFa z-vbQOwI?Fa03TiFG^VQ_&JBj)D>IW%{%887piQ+4$+t;lMQ|eZi^^%7HKUGaSHa`6 zzWlo0U*#tOlW=f7;EK0wSx?TPoPmnC-TZ2-nM;d40dA~u*cxDeL5(yXH%mB$*bLZ( zm}^Yf?zk7Cd7*F>X=BqZAFR4_N=w9^#U!~o zO>GPgC}P22DlG@|LU-=Bqu~%Kgl8@2Iusro0y*rCPwp&$`s%lqP4As_#9l%pDu>pC z8N5_}=Nm^q4DXWjBYd1SquYM}8uxvr464_zfOA3O#kg7%LA^1w(!x*ugoS83dg9I} z^uU$4NyQs)6USHi^~_4|i7IKQ37AaI<&S{j4NI~@J_SNBjMLZijr3LAW$p5x%ac>7 zjzKz1uX9rA4}dpK#?-&B?Xa0EJt~%yLUU7Gii!@qf4u;gQoFYZh0=%!pJ>#b`DK@{ zzH_)xMvG&^@kdMv`Llm!o#$e|NbfxlaX#0aoQm8mWUr!wB%Ghy4Ku zX0YjtWJKF7o}ggHlQ!-JEwHJGNX)k>Ah-GnM*v1k_Nb%4h7r;-62KO;Fm~HfuxQ)p zRIxT!S(jX`x5BIZtCV=r@kl&Q+Q>}mx2~{AlZLa9$%wHTPs(sQxxZNns=H^*!&xG> zh{@B_gYN4}bMV zzEXzC25ULM)2JgJb`n0r`YioBJd;9VBNdRKsyFaOnt`iIFtbfR?nK?4)eCENY@4c) z*W6u{VK`>B{d?91)j<#_n=HT{qN4!|vdfj2G+606B#h-2XtU&;1wRo<_cP@O(lr33 zi^`!Z1Wy*c;4=q+QK`F&Y(BxI={aZ9D#`<0fE-}LDC<4(gr{3zA$Bm6=yelHq6(gBB5+#h|y?DoC!Ju&hN>v?fIV}DrMyAA`U z)0R>SOE|FUL&6eZq8kv$KrEkE8NDIw%sgZ)9Xx zmEk%ZBU(qad}1LNEG_19Za%2Np6R)UJzRggov0(|<>$-|IKfTr^_PIJEO>4>E|28^ z@aKPT;+|EO3x|!ZMI0sbdPupOFkU^1~IK1BN z^0vALQQQBq>w~tB8?fqrf^1^=mZfv}VjUnD+D`oE##aiZO{!;fxis;1Zo}p*Qnh9K zK|eK(olYlFufuXFg`B>bu0mSfPHV2zXPhVw-Sq(Fw%Q2KGSD~5MajKTO+WRem=(wx zspXZDB@kAgIPd9KWyHAF+a5QY<%+kAb_mq|DEFSdeNyscw%yG@-K0w)1;W0?ts}hp zw6HlF6Dr$IDI%(6@`I&~jEXwZcgOPRes|~I)CyMaNWJgOtRO=2LKTC-;NMt)9kJEv zG;vfz=Ur#`$!)8j%Ja+(krH$+o=h0?AJ$DF^~ zY!ntlA*L<%4-4fueh2Wm933rBr-n;QuU2xZ={W|@fm98lF-Icsoh^5vJtK+d)RceT z$`-K>t(QpyLa~p+tZep?=jZ=$9e5WgQ%<+1+Kzky&B%O6TMI>$_|}xZT`deHZahLDC4b1XW*bu#(Fo;IWG0cFDk>Pp;CtX zToB}a+&G1u4tOmr49&}n-zH<6D6=i#-~dowGQ7PZpnMw_-3gwDE)-mv%Ur|VYDBEK zSTEUxrbZl|D8Iu0+URF*uj-6h$GGwfv9d0#Ph&Cw#pF6oB>>&5!uYFt<7h)HK#rnfqXb-daE5!y4s+3n75wI zRjUIgh>c?y_Fki=l0;Cs?|ZK7a9r21BN8v>tr0G6h^iWReZ8@1hk)(dm&bdb3$y{D z!uS#3x-anjn1te&>kaA+j)tn9XWgKk4^-6Uzt0_fYKUX`)xhNsyW^xg>u7oE_NWh3 zX1RY@$z%hW^_LbvxPX(XB|?|t<_5@#l8Z$_v7L*)0&0k`!7F2s{KQT~7n--3KqUh} zC^NoVkxlxW%a54^+21Q&ypVSnFrU#14q#7f+>NgT7Ou#Pk?+0lOgLO~TE86aA3;f8 z^2NcLJv(XwhTP+f-#ZOiFvmHX`YMsCNbIhfGvd;I8J$m`Gd|B)Xj`51`Fpy+A<_LtM?0DRMZCj z%gP3{+=rS$N3HexqUYyNseXi>Ns|fJ_uaDnTA%F_eJmrU-A zaJfmDh~4vzi{0ab2nu06MvJF5@^jMr73wmz)f}5IB@0~#Xf^$(`Nd%*Ou};lg~<=G ztZ@CIUte=cccyC`%bfTCq0!jV=FDs9``j9NHS@%W5R16)doSGC;~1g~tsdEUvtYB% z{}=-stKXY53W;q`Mr&(THQn-)#Dk6h1g2hohB?pw6Tn}a+DuA@{SBCPl`H-~jEMc; z#myinm68|cgXe{$Ua-VvJO0E=98$oPT+=uC|F~`xbr1dCd9&_0EOL8!`%J*q)T2&< zRR1&B`4II4uDMvb%KnpA2zm2S;r~-4)Ox+F?XOz*JWyS{j)Rr-9|6JIJ300~Aue66 zK8S@g576~3kaFR-zH0x4-5IJ=>6P&V3p-UE)AQ0|P_ZmDQ_3V?g7S|ZMvKrA6EUd5{eSYUqF!n6QkAm-e}`>S59dX zVC}-8l}t-%uY?xon>W{Wu`X?eOy`{&zKzs&gJalrysyV;-4_%HT>}u44VUYT8CO2Y{|W$3VyG(4_4!HCojPN0!Qf?hvC;n zPZXAIFy(x>P8T>H!}%sV!YOVjxA%kC`^X8YZ$4=S-fi{bjFyHB$W9c0-=Vgo#0H*| zI@sS&5%fXQ>yCWLpDC7VCFq%;(tXozX!}iTjP%AvmW4xvCwqp5jB!?Mg4}YdEam-s zTps3EPB1acX~@k~3b8DYQ1j)SQ2-Km4sE+=*vzURVQE(D2;eun&&xDihN@Sk0b~yB z5uhx|11HwV;uHyT?J5&_8f*F&h$=qs0phczie|v;Q;f1_hX&&I(bP7e@%pAaHij}< zWrE>_&o$vx6%y5Cy)a?&veDy^)$rK?nP_yWX^9TKc;!7b7Tp9*M^|`zMpeA9(6Dg5 z9@vwyk7iHdftQ}nZGh@xLRQ683 z0tzjB070>$^EygJc&EJpQMWQN0N3S=mQsMeu!4Dzp2x8|0XpMcNA%O_jDE%W#F6Oj zEZVhTItnL9Ddj^X+tEu2ykOjFNBWR`T_E6S~=%`ixk?Idy{S@9I?<8|mNz zk?aS%CwA|E$|SN~Da#33TZ&z+x;sCUUI4b7E#J;X*O{>PjSPR>yIUlA+ijnEL%v3j z2yKKA3(<+yS>5Cs8;fTgp)aNLq+aiq_F?)Z$=+iZs^GmikQ-e3yCpB8?!hXW0dv=r9Sq*^= zW`uu|!7_L2%CpcdUmpQG(q;@H04KD!v#Pzb44xwmzKe90kttZ`nAk5#Mfc_9%FZkgjLl@gG zBghVe@0~ngR<-JyTD%Ms9noa(%)dS;%f`@wp1cB9(AP%YY?J5mul@D$zouOd0lCv` zn5?R`vQ|b{T`(}@sx`I}veYBni!dZzp_V!E=R~H>Xf{e5U+>35I;FBk)y_*lVLRL%gdqtIPUhP(XV+FW(C{o6GGXjCshxu8L>d`K zE{(?KU^8Qnm4eqsJ<%%f6;3s08}8DWKH!ESQE!+7y;OSE$!Wh(U+fEZ(VeiChjEU(f7{NK;B*?cDw0J-5kie#Z=?6v288z_@;7>c%3KL@r`?m=P7=b`)-X?ckTirdTNw4hc_$^mWXqm`{t}nrhq8YHi!9sT^7gc3*SWx!Z{kHKfWDm_+{inT99 zwJ%v1wTE|fikNNgHVq6=$J+G>9gy_o`fR<>C(`7N&_6ue`}7CZRhOMYh)yOif^ z&ECWAZaxi+z0NKJ5TL_WnkSPVOJA82dHeDl5=A~}(PRIVdd|0}^yZXh z4vG6)f~H%!zg-8q+*|YgfD`IyrE+?wRi&RVc~eyLI}P%>S1;_W;NGS9GS~wfn+*Lo zW?Qy6Jc0vI9R&MP+K6winv8-hjn6U;ufsy$6MtW&Tz&SJq-1xF-L_9u4i?%yM)!_$ zA~QIrjl!nMY2>EeS{`A(!>jSMJT8}gVV*w&rZ_nxGu&8Pm(cCt$sQ~bm49fd z)ipkmT3;+^4Gdap`}OG;b7rh{O@1hPL2yY|T$^I8SFJPzN2dIdhYwIXopWKQ3{R`JZq@w6r)Lc8wOc?? zK&gu>X}=J0XBCfU(F<(KMgn|dx?(Pu-%re4R(rzcelTJ%m+54-%=4JnefkkU0Dn+d z2ETWcVe3NXh#K}pVpxSgPNUS9NSUMNoB*$-xR^KFlQxU)G zP{{*osoRz5R3q(eY3~~L+cNgZ0H4CiyDBe#FAwJsP6hczlKu*>LLE`n>_o>5T5Bcn zsI9ED15}BbtyN0+T8Mnhcn`b~E99BR4z@mawFnQ9I4A@7tWrpk-1jd4hzPiW0SQ)# zf`uRrqJz~oZTyrIRifZ^2F_0OrnKDoD_apQmY0Nt#DLdws)4gEZCAhtPBdUVWM_7x z@WcIWcx-U!3zx`%goK2OFtE-42G%2p(vxZ5_Y!+%5mAPY8rE4OpL!Jd~9!op)4q!BFQ(=%kR#>}SgTKYKqfJuUtg$xD+ zccrL^i}#!k{t@^PKagbT@fK`KZi9k>H!{S)`S=E7#95EA5T^Z*<-m6SGhqaSQ6{0> zrwYF2?>^? zOUuzD(5zeK+d!HCi!2w?14gCrjzLU24FL_KxGhIn2PD0KhoSN2c6D>4p*PLg-uva^}?)Y6rK6tU^e z7qPWk4oa7k>i4tXpSE`F05bZfZaKg<1KI>PeH2rWZLW1pry>wik=qBr6?X&~53_>% z<^bP(16*s?NL0Fk4XMZB8;KPj;S9Np0k=`@{nlImujV5XFCRoj?+iGX1;1~o33ei* zOWAN>8FS2dzee29Yav7TZ6i}&B}w^}fIOAXYyo*S$ju2B`gWnGB~Xau!ah>I^E9m&hyGufp#{PX7w}`Y{(oQFz-JJj)(CwS*4}bj6WI0ZGI5^8 zWKQr8SZ{VCF^!k8gZ60f;}9+N{J3BgXHo;s;c7XfcUbe|c#c#L?>1ZZ%SbH%;=^~d zRn2Uyny#KrQ7p*1=&XkvPG+W-Wp7RIaMg@`$|=K0z&uQg3-G5bHnw;uT2T1I%SQ9A zx0_A3Az>u%ik$XZF@TqWzmmp6_$Z(*(8_JNRP7P!!$({Q2x4|I!cVK5{>d{^S1Dhs zH$P0}kT`EPQx{VF&TCMqYk%I0rz~SaQhM#kW4$jvV8AHkczJ561dYeQAT z&aw#Iu6fh$)}|dUIV6S6VLO>pi8l-Ze_c4#2hDT)I;GhSdCWWA8#u{(I+yC@jizYY z(Har*Y;UyaEs6Z8tbScIkHGXcrH*3Bqyp!VYF29XZ> zLQ}{L3Eddq=!&qQI@;_BT&GpN;C@L=-JWt*fZY7#?wXE!cd}k<7~-}5R2(eqG-~}Xa?j_DOOXs znPSc9&UEsN?ewAfngHc2S?P^dT1%M3)FhL}vo7J7lU$2I9Y^u236|EIP8QlNMXNU6 z6eOkUcGFIWA^K9JcnQ?sJtD0lrnE=iVLxA4km8+Ls#aN`pSYfT!I%m4X&g`R&FW@b z`L=m*Qr)}WDVUYq>cN7y9ahR2-|RnFuTo!$7Js|S7~P@v>~hVPjMV9ZSsxPQOR57p z$5rBcl&)jFCL%#CJy=gTm8gEQ^ax0Zp=F|Qnr5bRO+nkvl zZldxK4sRnW>Aq4W4CvP+eKj4?)%2&&HX4%c=kTiymgOKoKMg~cRC=zEPvdi;J+#!N zKDyzVI~JWtFI!@XG4^})*N@3OqLe@vQN#9B)%h$3VZ$W`TF_VH27YS4o*Y@(XU~`! zBmax#__T7--hyY_OziWI<&FXJ{k@#$qe?W)z5O|STJdRCsB*dpF?!Ygo+-uL5CZD) z^j1x_QyVSADXSU&?AjuQALe&6x5oWDV6dl_ULE*dlzpZwn zM=^3V9CV*|{Do#}of**1x2A0Ed&X`aMc3KYNj9ELz?YOO>v`yJAzgqSDXHWo1F5ro z@(T+Cd6!P5Q>>|Gq0=kT-L9Q74N@iNA1nQJP;rHs<#y*%Dtb^#_z=-8=0_CPRKZ=?WS&%TI<;| z*VkX)d8}OuX*>~t<7qhCU9k&QWhh%I(%dK3LFH6bdkEHyC8v6BpAo6txqHxmsj%W9 zG|%G;yvJ5ktE0Xj3ah9W28oGwW0`!=3EnPZUJXGJbIyWB&1nUlj zpdU70zL3>_^&oj|lp^7#0<3K|F(VdLlp*iadh=k0&05iYyd}34oyKFCaHO42+ zOFKd05m_Q(JE&|t)^!2;2SvujiSG?G*q<~vUvRzdLW|a-9)3%3xgU38;4|&b*?{MN)r=H#1%NnefU4DsfVyb-n}XM-1IiPC)8ttglQ&OQE5}Bh4|zb zHU06@W4PsrvY>>OMA@=tD>2cXFL4)NC;K$}nW4>n1GURe!^>!dj`%tC&nGhf)A}hZ zZScyx9&me^lFV*Chd%`_Kuy4tQ03kCoYj6%Qd79!|KPzF#%XOQir7sV`z?k}hhkVb z4mZj-gJlEWMO-L9Aif5t1h{n7P3nMuVRsAX_lom1%LosT7ku3R#h_8TdPM7s^Z&-a z($i?jCHuzx+vdazA~(q0Qh{lyxu zzKzeTPZ*m^Cq29G!iquVp~pg*ZEdsW@s7{^TPn#P^KTTOqjb;zQT61zmKMMROdCXD zcxC(M_cj}Ti*WWkb#*V-?(iflMz3`3o(fk@evhx$6mL!hq}E)cyS7OpMmX@Z&1pr2 zb}XxHVB-^QpM|qMA#J@=>35{ie+FdJPd*teF(`@NYQ{Y}fMog~tt>xrzndQo=h;1|uVy76ljha{o%f#Ub(w)6A`r|~sDWse-6 zjkqJA_g_9Es_zEJTHj3fYvL&gHU_c-K4tf%rVi$BFVp&6XR6#GWXOEOL)KZ26{vc8 z$}e!~H5JYDR5^LrKF9yeJ*)|cy6;~alc$Gs+zp3&)0qeg3-JTr|)_G{I!nOb@c$I4~ z?SS9ehfy>ZEYSvVD=Dlm|6bMK#kHWUw}>@q$NPNVB(_yq)xASpU&9TM0z^$A#)2h` zJza2WrTY^)oI^NqL5&sv*?kR#uuwRj^Z%fbm#HKK1AI7UxFicnlu!49A|hX2S~}?EvuI^2T6B_q}?|wg{;I zhFs^r^A{rH7yI?v5!*2{k5`+oYDPW3`4)uwY<(Q1A4!RF)oQ@a=Mw(;>=G*^>A%ml zx$dfbC_sM^D|GTq_^2`WWIM_2yzo6S0w0cgE+)bs$$=n}yh7cC@n!WKCDtjVk#%Gu z-;RpV2IWNEN96>QYj0B4#GeN#C@MZDE$)el>i!3F30`YmFu4+{hJAlZ4 z%WpU`QrrmUIx#7W1D~GHXkSOSygNgxbVv<8%4!hM@GFn}nIBhu3Fo?QzqT^E-+p2= zd&+AbT3Te|vL(VU6E;_}t@2g#KR4k6yN*J`kF?h2!fyUnFbJXH8Z$U&f8?C33fYmI z&7_ozq80rYf&PnRc*ezj7qHhQf4|3i%nrH|Oz>%ATn)L_{(8~mOFxRA9sEDvX@Ph~ zIq#-U073)%Y`d%WuM`Y5cOoqx)Wm~T|5&wP@0ErmDOS$BvFOZ)NYzNDD~>GSBLkwK zu=w~lv84U=CK@fSt>G#xpC+T1R3>Lv8#4y}No~*w?oCl7{8Ofo_8(;m|53RxjD4x6 zag{@r_G{w{S^I2rV!~u5Wy~2?l)PD2=0nDDWwa+wz-;ed1q{wC@w9d57EVvq!^m~P zHo)}pNex6~pIho)8V>gwUhkWcP}O>iH<0;Mq)X7-2*$-p#-fKjVU6^kSk3MZHz7dd7WpXV`}zeZ`#Rxe^0)yiEYA~@%QT>yf3zJ?@CPfl2c1 z^7#RR{d0n%(a}DDGj{}dIr)ty0CxLC+oV6$JyrF}JFfyEBxf@p zZ0iGtcWvi49}kNchbsk&YB2)TH8c?S3*(;#1xZ`7%vmd9*vSDL51^e#bknNeBv|~y z!nP=<`Sx}4TqcRnAO9IFOYBm_q*_NcTZ4-A)7BvLL$pHAqb48AbGJ(>KRCL>n!vxY z09jj0pDHrm9Zq}Pj734Qr5>m4q}#yLP||wD-P~3Pr+n#M&wYUFLeR47f1r+o)n@B0 zMCR-5>ETtWPvW`=<_3@_+EmQ*%33>gH|99|hb0=Q$o^S?qj3Nq}zFE8K5O;ga zxOvhENOD$N#of6*Z^VziAhaw-qZk6w3&Sg}op;8~-iyQk%D;c!qc;};75@qeeIfzN zxm0sbZ}zv+6VY7UDL9mCa1_}UI!6!kHQcg45vZct_HxFC|Auf?NozZv?L{DVmN`b( zxgn8kbMJtS7{Z!fNX&^fVJweS6rZ{LkNC&uEYlH!#XxBlreFdukLZfNLSp`U2kd2y z_tp!g&z5J;18T^Isb>eLf-Q=W&BC$v!+IVQ$L1w(*I<=b+`e52f+iH^ov34HvH#9O zn?YQa$N_`YZ^0S48^>8vxMxQI&Oq2bGQBlfvd0tNjR5 z4dwU0nuK7X_Mg96Xmnnz{dcM~M*jb8subdoF!9M|Uj|`IS3Nfz+cm^w?!CW4wG^p# zkS6RrFNWjqxoL$Q5eQ{LAm&>TMJ0QFi1iU&pDP=w#Rm-}mTndjESKv6xk>Uh; zvw%*h1^d{{WK=FW?()0&Y8;sWo;! zTtzBd!D#o(Y27n8GU445iWQ2*x&7*w^0>Z7BLPSLv8QV_09cLkD2z*35cK->Yj};l z4D{UlglhK}FzZNexHF}{20YiVtPEnGe4n2GQWbXi#CB?N?yODr^F*ufr`z~lns=uM zyd$lj^U{Gd-j}7dsHot(5T`Z(9*4T_`B}LJ<%~Q$(3aVFm_dZT5h;MCx^r8|)R|P% z^m;+E;H7FEOZG zELg^MCXnU5{5cX5B3r$3HLgsBg*kozpv0~fHaJrLvmij5>O0$-N5YmXo7M6qzf{oK zifG)v+gK-brxnz0sJk)zDJ^5~3*Vw@!boiP0o_#x-%P`5@RtU*hxu`7aEqz<2KDL^ zYeS*-3o2s4K&Sb_veK>HzRN@H7-3)7)BcuucD1OYy9n9fuQDzg3@{@8SuT}1K-)r6bx7OPG zT0iiMonp@9InyT9IL{tQiZHELUhm&4aUF;!(00EGdf(VqA>aO(YtYmrNO|PbP2OF1 zbD!c7Yd^ffFdqFxxfxHY;LR^)8(@LY9$=MJ6Zzc=PeUD= zp@HGP59gxK|i3}J2#{{!|x<@iASyhYWmXDN07iGOK7<{cajU#IW?_VC3b9v4( zAwR=^%?YFh)+vqTb$Gy*O*O4}kX}N{=Rb-qn|@i3^m3lsoJ{q`zk=(&%SqBXw2Ffw z9~$Ue=vDA#KH)TFu-rK|P=X#le5J^uWSk!KwJN5c%OkeISJFz0h`@DSkb6(9KH$E4 zKRi0pXP0$#FrkG&8?Q}8E9mL=8i=}tj+}1bNhRuCAIg9+rnD^PxZu7Be|>a+y19O* z#+$%~eDqX@fu7JnmKE~a7FUE*?O3{G9CRc0&4 zg`U!48}3^@)T8~K=|0`*MyhiCbXM}nayg$HWT%_QggPcoU5j2Z);c90 z8tgexGst^m>A%p7og0LqO1$Qq4mUB-WW`Qkx!&w=%f8tVC3ZNGd~-K zSBjkw5eIul0%A3jJ<|8pC6NyEz=(wz+XwwWYB+i}Kv-p+WWr4HzYCHuk>JjfR2TM@H_ZE+ESfcUpHoF-cgxJ4G?GuuxTgUl2z_ z&=x&S%Ah~R8@(fAO^D=3#;1s+0E*yC=xdxW&$`@5w@9ZRe4AeJV+=!{?-djL+PO1* zVVt@d1GWeamr9ua&Ulg>ww4$5=(P5@ylmb<&Xhd z)Xi!HQ*@J=-2H_0Vt`Ba({YN9u}t#!At&g~xs0w(Idzx5-l;N{2+K*+J%(HJXhhto z0vmk=1JRzFXEZ4tpPC613yU1ZpGM_Wpyp_rvLSq4+l;B@3b`shtbUVCt3?!H=TM{Ya%Zn z%&`V6q+uWLkG8Qk7*u_n6#oH`MbaNE#8J2Lg-oM@qF%8+8G64ylAW()GWs1Wzny%8p%pLUQ8sY%Z; zYP;+0mqDHFES0j5SaO!*O`qw<^D>{9K-u_ZXR5MP6#)D2XHab^XZNaxK~)Uf9>4Cf z>TOWOk$T$KCr>gnqw;J;_SVNMLt_|wr3HagG$+kl9eii$n)*yvh21C zzM5KW+K86i(ax+6EaC`StM$rl|J1qpoXz7vTiuGsRa(-$itKzz2q3}=c{};m5EPa> zV4^f*6L&}(j88r954FkqDd+89PpM5GxE69h_P*$Yd~WFRo0GUos&sM|bjQ4dvx?6}$OQ zJWhiJrHjahvdfT`&yd)$3=`D-BckCtp=iC3KpQrhwn5R-p>rC^Mnp4UL}`EmF*Py& zqtXejI>F}?wT(2;vrYD#C!DT#_M2pXqjTS&_kt9}>3-?N|KidK-}myB(o9^#wJ%Oo zcCWiM1w=D>J!V@LWznr(_9QLuq|PS@wfXqlYt5NeRE*mMfMZFGstK$i6d5)HLqk?J z*38qS_sV{PBv1W}M0MSUdTQVL2yec0x1aB#u0-ls-o#ckLN(TdJ1>%)vKLP{UE7+w zbkLSM=Mm41+oGcLs!y~$Dlp48$wpH^X%w_ERfpEO$Qi!Mbj} z0RH}*x%o=)_?Ee*v2k}||Fbfa5Hmk8o;}~l`hrGDTNJVXh9N-!8SAB$zA=dDK*t2`O%yNJ4e&!+<9 zTvM+?OT8rsDmT28T0fqmX;#oGy02Tx1)T(J)b(_G!_!Nly|o$lR3`z2EG&M3b z`KpO^E|+<%Fs{il=FZ+7GHFBj9JFJT6+p|irCbir01K%)lrI$IExYe&{!D*vl89Rj zq;(c&1$C;f<#X?`&-lau9lxZQe%Qv=s!W|q77|h z;PYI5Dc2{{5t+=h%gs@YPNU!nKK@;=tbk+g_zjqu+yvJuSni93hm;MxZTNd=sBf{M zp@pV`JPu&8v--|)G|gfzeha7ff0R^)N(04WGUss4#;RCap_-q})^ok7*T=sp6FWZ2 zd@;^=-ppT!9zPpp*yO@xbOF^Y$!@KuRL8tK;$<5GCrmUiCDIluj5YeaPjv%o{1W7# z)I8e7-%`m7sXYup+_pj!Wk~Tau+pE(`Re$}_iNuj_vL;?h|=`WO6^TLQjXrdwFD7@ zA}F&oFf&lfI+n;n0Oo5kc8s!)1E>00EBPT;!M_oFUy9_%6O4wnAFt>+I5bVEtTf4w zgH1J@peYl4XsUas@`9osemjLS*ajTCKFHiN*SF5z;Yp)*IQNmqXgo~vYx4Sx8x{^n z=p9Ab^yx`{{+OTG^ql*B6Y!man2}hkP*;6uXs98REQ2P{F}c!~+lF{{y5@6W@KY%w zP8LTF6{l8cYB$BJHq5ezjV7io~*L+%bhEqtdJe{o#W^^S=deD=Y{31s-)8OfcB>ji<^7R z=cvAW{k0*-l2rTK%!D-DE=nY?hEkWm6t*zAABx@4At8#gO4avyprKb8p&;t*#qK1s zsTW=LML1Cbaj1-7z@+^5ah195U4wOxcC2IL$73w;ba3Vz!RD|lKSyg7hsrVN@$HoB zpR13vFc^J(FIF%w<&*eHj5s_wI9a?ubjvyf^%u+j=q71NV?dNNOJ(SnYMN~ya|W7| zeybmG{95Bn_|5i@KAR2#tbR6xi4M0$d7VH&Lw=TXwTG56J5D}iWMs9T9~@L|$F~S9 z*XkoZWTk{D(Ya!QbHn9H4w9&mCC4tr`FkLL zpaudoXxYhzqrcGJV3B$#X@R~`KZ6h?a<((jm7@^EflQn5;Pu$E?#pZN)TjbN`fYM- zJR4&iDnkyuXAAfTa<;m~M)E!p|Giwd;iDncPF~CIW*u2xzzg;l}p4f!}-gpO1pBd$xpyM zka_xa5d%pz=5KxWQ_+|MOpn^9+@Hvx)12L%nQEa2oDO3m$Z-Glrw{a*#XCP9fS-`e z6uO^S+9&VOSUAfo<=wfb9RMfKuR!idrK(T%wG z@H-yAy(RF0JvXnPp9Qn)DOM4|E3U8&B4lKF{F*X$i~BQ^9Tl-L1xsEzy4Xj~AnP9# z=$IfXZh^P8dCj;eQF@TOIKRZw9SUD)Y;>xVm`x^%d+%kXq^4h$5J*ICZ>*`5aKe*@ zWDi}1{TIv!6|bt~Z<{y91?F%3Ye^WP=S3-uqk~oHDVBU(G}8kJU?o#*PC$b-14sFG`%fi?f`fmN0FSCFIE#|0IR1Znz4Fr?`Mog zCa;7Vlq!RQ!XB*6KjwDe&@Pm$!CkvQOx&M-NdimWUE2Wahefm0fHyY`+Bu&@e4 z-|9?W#F4YKOg{D7yMsUux9G-NtFq0|gpCUC;$D(fRAgk3+s1!W*Q@yH?nGkvL*4YD zD#_->8Kv<&@~tGK;jT$VL+bHE$*Nsb%KwLQz)3^i{!8R2-prnvH$#vHFt-XW`eT^V zs7j>0df+Zz%!8D-_4E%P1aE$BJbqI|C!YQ*(jE*JQIWje1I~)!jh=1UL)5j{p6nxr z=59pvPQ=lS$35CeYUuF2RY)9&N>An5|>%MvS{puHu&J1a3{Y!tEzVI(Lk{x7a zg#;RXr2d+(_2TQU5-!@62H)N-Eg(0K0@ZA1oD!mk32+Y~&bJWvw9SE=eTM>D3%LvP zQ8v-+Zw?ydeNM`!i;cCf@{xQTgVAJ)r*3x)#q2nnc12g)NZTb*odAYqa6_Q|+7pgf zI4RGg_y<EJIh-h!1L0ySo~C)k%u|Ea19j zCi=#~5+`FndL4hv;|u)n)+Ovdy^K>*PTZN-d=HxF#C@O8eYv55ER-70Khw_KqLo?u z05I0yFzIk1*4G<@D?4pVB=|mC$b|lY(VS9MAjUoT!R{C43M3E=Kj-?N23pM%7rVxs;Ul zf|nwV_JteGqXgKq;%LGWo&T#vRwGH1vguN|f@ShIVGiN%(UVS%Q1&0?g?8}BG^l=S z@>WPs)4De_Lx)_O!UB5rlavG2y~hu5)MgW((8k*#&1sXqrR7)jyJa5GEegof^4Cg0 z=6!;$Qo*vH(q5ajL3qA1bnQ+vRoZ!$SXO`EGc%HUBq7%SEHoOL))pW=FQeJ%_NM@x zX%^AN8uEcw%U#(wPmewa1{Owr^h;#WnC7{-1 zGYTRy+tVb(2kll_`m1^Q)`J%{rJaXWe58ZYzd($T(!g^+(3Hp4de2oFro{AZ@@C^Iyjb~&SeF;inEE{Luk9A#NwpQN`SJCe93z4#?P;qTt=^ zxg6xY{S1eBbIxx{y%6W}v^U*n2?0KEZ%u_(E_>#2=g3YnGgH%*gNhIfD%_l4Lp#@% z$Njp1Z63h)yBO$iqo8l&!MYFM;e3EI_1^TO)K_q@BJ&ncTO zxufVATh*Vn@55XLV>*u_5^HoLVh#Ap(7j=TcN&vw5`SbC z7w;HS0d2w$n zGVw*enV4J4L`KC{8Ss?D2FQ~}G&v*KJ)I0?=N!2WX6yMO zvGC{;$O=pC&X8_QY)gP0_*{Y-0jNplNmqsAliJ{Dn{ASm#YP8at&)q-^8~n!q?JX# z^n6RaPV|qude&UQ(hLe|vi|22?ci=!I^ux!ztXri`mD`q08!i{(+)0w0i~ZFhQl}N9 zT?dz+W5ekU3Z_akQsputF_Ws~FdBT6-S^d1B_EjaS`+4mmIE7IrJsr4cU_nARlJPcdrQkG5`Q$CL(+(8unP#tdqCZ*eFN9u zSvH`uw#mu352yBal01ud`6JQ!X+ve5O0qLu64y?*DWuw3l7Hk^0oI?NVhfy>eqQCd z5Bd>2_L73Z67_91r0O8l3Dj0;LG3mW2777!&3uZ_>;|hKA5eIIy2({Y)Ytlsj^P<^ zqYYzQvK@bjMgAuwc7*~fMtu^5_-u!TP@ z1Qs{W6ITtTL5~(2wp<#$HXmklTuLs|A22sLq5GQqd@=(eBG2$d3<^THuPl0Jn|AQ! z5UW0H1q&xO!5Ksflem4X&NNu<0Sc$Fv>I< z`mFZ@!rAaai&A5&|JZ=jVxg2pIH%9?j%teY^&CF<9yI1|| zN=?HWzL`I37%t12|0$M~j#1=qEdq!44sm;a;))4Z>ATUn(BDC*lfLw;3Ugt9I}MC#+F z&~5nY@-Sc3+P%`Qd77yC-`XoYT4NT@$xZE-5jJqK(##w%!W}<=kGeV|;EVI4s|w}r z9>(aG10q~Z6bsU>Vk-m&iHTO;c_H)r#%zQl9~Yv(pVY_ rIsc|G=KqyAyYVRg53$3><@H~yfz$htzqD{?OW-LhsLPkgng;$Kl4