From 354a342c8a2cab824ef1129e17706482ff8583d1 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 21 Jan 2022 11:40:34 -0800 Subject: [PATCH 01/17] Update code examples for paper/paper.md to follow syntax of v0.1.14 --- paper/bestbasis.png | Bin 12969 -> 13058 bytes paper/denoising.png | Bin 90089 -> 95236 bytes paper/examples.jl | 8 ++++---- paper/ldb.png | Bin 55619 -> 55486 bytes paper/paper.md | 6 +++--- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/paper/bestbasis.png b/paper/bestbasis.png index c415c3296804cf8836a61ea4e12f9b271d015d41..064dfa949cc1431db1debcaf94b506963334e9be 100644 GIT binary patch literal 13058 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 L>I#KdZ$JDGgU~>C literal 12969 zcmcJ02T)UMxNY!AQKYGWbPbAn01>4|igXYJ1VIc<5a~sv*LXmsi5x^lK#Eia0#ZWg zC`eJNlpuuOi*yJjl>5aq@4owH?wfgU=AP|L0JF*d_x``K*7_D&ro5C{eh zb!9yS;*b#nLG?G?A^4xYJ7Mkcg~n1-O&M`O`Il0a6@x&WMrbH2-1dIAFz9vfwn2a6 zij6?r`i*F2lVf4ww?!2!6zpmp{vZUUA}@S;W#Bj;9>jXfi~5Pd^}{ErSlw9^q6_J7 z9Jz~BXQiX+YmAp8_mtXm0PM!HSDz7wyNxkuit@ZH&% zx5;j3Z(qvJ$tzzdA<7->y5Xm*%>7sD=lF%$n)&vZL(HmtTi=SNRaWi>xlnHn`s}VW z2Kf71x5gVZzTMs3ZRGV6l98#@&(fA0^1k2rf+s=Jg_nm%)_2{uVsMd@jfZC;TO5Nq zXuedD3n$e*V=%7tcGb|(Xss);@5%P{p`oEEaT(rE@>|>{5nW_!baszN(TT8_mb?F0 zj6rd~IB{Ov@#iNC_{Cw&!Cp(;)j?HN6%|vT$=7J|ufC!qM~LkXve0E%?vBoIb%2UhYrJ?*2-c{e7S^McIo=pm zfim|VrDll}v(wv%re)&oKE6I4B`@K-@_A_h)}&&!vp!oRac^;;4B7cnKPxCGXm0QI z>(@Dk*g`ZmFG<3wKeXwuKWMX=G&M9hu3A42eXEt(E=SJY!KkRJhBy64Q!|zItk~l_ z*a`_fOiLU4`gP*c(DJ;u{d%XERny-;e;Q?V-QCmZMtjV3jDDfzI~hI9edHdQw1B)~ z-~Hk5zyF@wV~dz=7(X$+^tgKwDT+?RhEBA2VsdJPdCb(4JH8B~0Z43s{1xZY(3#%y&A`OF2C?6)7vbH}Ne7!gL(sW^ZqAQ1y~|wSRA(Dbf;8EGjCBiHRZN z9PszP1ij$7CQ)1dSH$<3A8GPCGiiL7UDuJ%e_2>q$oi3f4ONjB@WX+F9=&l|0(*_K z9q)rft*op{H{@5F`1=zc+|bmF;<;w1t9#jdd1Q0QuRYlK`pv_m=f+@*(YK@%+je*T zi~4>|P8y)mXtxR2=%YuE7JFJ)yziP7i_?1W-~qdP+2{I;XU|$qwJ*#wb1=ZEdqct8Y!w{B?D8aA%(LSiFFMz?_V_t82mSdJB&V&xKC=qLh@B zPoEx6wZy?H7vLFvi#ab_$#7eV*(?a^#A3x#^+o;6SFy1*tKS7Zp0ATgi+x4YWAza# z6ZP!o#eI(Kwqc*^m*#Tvc||S1rm94|;FX0tzLV3lGnL>nx7!EBB`lN_9cF%ln_I@B z_DRA0#-wXr&X6*^Mxue#3f|x5`f)j-u(#8aYM!&5^+e(|Nl8gz;npn=s@Qm_SXEnN z5y(QnP3J`ULgzsgOW8^T7sf4pUr{xfKrLTdJR=AHQ^U50jd*V-KxV8Q1F z1bC$%eRY(mS!=t7T53NOThfzrCo3zf!ow_Zd$L{rV0SthBL~S(bgsZ+4)*Vu2jCzS z(CGfo49)TJ@qmDU^EyetNcwQ1Jk;(>NNQ?o4i1iMp1+#f+wn$1`Eb$UeG)!izx}PK z64^ci^0}p@g@H@rBs;sBnwtDt%hhL&tnsSkN0MTpq`95Zx)4*@ey_-KD9s!ajz$|I zoF0Y&y&t&v_>!sqpn<|V`MZ<+sCFneOuXjhiAvObBNP@HiQSI=0-5JLR9Uw3zIcff z+h$qtwV^?7bHEMyN{+M#*5#euQ04ZMBPZJ4NxNB;iN8iywb7o_;w-!!TGG0PJ|IsbN{_kNHO~ateg0=nd-47E%Y?Tz`#IOR@R}R zA!r53(ryAe)`uQvF+X7sS*j+t5s4MhA9oARB9?`Mm=P&ra*{L%T}}nM|NbR@y5_Ec zy!=5UAEvwdddXC;sTqPXB&}dST=D)*Yyi!(q5z8-d16LJ#;seo00=aQ%&~v?LN6~O z?tR9ml17&A2|fFz=TT97QV&xaqmG%FKuwT@$R4WlGavE!sBk^4h=yT1@5d$6^5uZH zpXYjVl$4aX9@yJ6GY^V4IXpoiGFbkHUwXzxy03A+fZ~4_ODHXsa&b}GFP43b(hYvh zvQE&mvzryh54=oHh8)z@(}VW>26CFC{0gGyR`6qmbvf~!A8LGkjwMjw0uS~!drjP0 z0WL6@vLPh9Pv2v%QrLn*BeUM2)L$gZB)_{H&MNragcafS&zo=K;y74YGjM6CsaLLE zP1K&wXUH3`L5Lj_r#q$W!u;m->+P*ATPJgK^PC=gJQ3q`S%uD)n=vGdQH9|ULrNCS z28{(YFo-rBsjtW;LEOQxF@exxE%%x#)VrANgF*_`dUw!}ec9+Ut`a9=CJygJBw&s4 z&+_T7@BO}kK>x9VMqctb-@(u70P@Jl2;@E1q^z^!0o6k#hC?(zxSsH!+<%t3jt5cG zL&t-}9>TkrE5%ZOW`ISe^O|e_z#2;?MN)CHz|Vi(>83*5;HUc+Ue+YWQYiIex+U)Z z*XZ{#gU()3+-wmU1?;I}IX&gJKT;uVOtwCL{GzJHu+KY_tDqG0aCd7ZM&Ra^v8ImM zE*<%sT3YX9{XFlBDBD55hztv}d-Z>u-qGGJ0w5xkUn%SHV+1^P=cf&B-%qrot_6He!|974QOW&WRi$=rlMOl*7g>eXO{7u3=yF3C$mLM{JgANuD`?MrIdrI(?xsM@`+0<}B<065 zE^l0=xK+8?N@v6jg(1RKb%akHe=^`fEf#4&-+emehd%w`GxtshG25C%vO%Jm2(4E; z+*Ss}en(gLG!nDZmFyo700kU?41@8h-%u3ZLmV=xSjz zPT?65HDR2GpMU<>Qg=Q!DXH47OMw5yu|!5bxp%K$*JC?Mp=S;QNLG!D=X7-M9$EUU zjZ^F_-H8(?0B}W0tv+>y{#{sD2*|R*OuY`U4^Nv+<><__2D2ug3o#ObPL`IIoPInE zu`w|x*x7q8=<5eZUJ?`(gwlt_583~EDmGB&HodyGX7B-mYKx1>Lj|FHGTwJ%4$yq%t;|dsu0a4E$B!SE z+g+}stVb9CBB1y`yZ@a)`yIHMl5~JP`Ftj#Js0{-12%f@H$4CL?VG6kUBmzchQd0H z#f=*`va}No^GwQ|2g`GFbEEmyILn0)&al6yhfs}!fQtc;RuGb8d6hy#@_7 z)nmS;AACZ%r_xaI&oI;iRvYwRYlSaWQ10~fDMzAq)_cJ}ba^QCbjjffu(tjEea%=1 zPWO)lx8)H93<*5`g)oC6|sb^QsK{nPDf+ ze`i1jKD&7@##*8E!ds=CMi=8YRy z-0AbHcjlCsWV;I=Xu>BhP!6XVwjtknEP1I$9);>p8K(t$`RdiF@~6=2n1CO{R@3lc zHs*R7275npiEkyCK_myYQ6G2wdDz;HSS&1Vgdf&mSmiu}xNdj&fB0o%i+%%G{Os&3 z>>LH*)?11?-$d9$XIAatdeR&#g85a@m{&Fx577JN%aqIhg zid{H=e!Avh&qYtK6Sn^R&3LPsLPY6%$R&tq&;~?AM6iQEH?z9ze!fI>2XP)grWe&q z=l19kg_r_(8K*>Mwdr^ zKsHscci)rcWqJ1WX(X4Vw(<^X!4JC0i&LVtR#$pZosLub9FIe@9RA`wJg2E6ES8Q2 zSj){w>m~hHgCfHr-t*EvG>Z@Oqnp*3Or#*alhH@s>FefT1s%-_S zr>o1%&7F(UkVt5ClraBgd^t|b%*+hc2n-jEC4ByTJ#n1t(^H6P_;yb-dx3)c(4mkhrS-+@U(Z;+^nH$x$p040nM+(sr`dROqv|=NYG=9zigszZ z=HO#iQa@-*`{Q`KF6*VCs`u~TqZ$D|)+s$Z#vx|=ciRe||MC~mUb1c`WV-FbH)_vM zxvuA>p&BDXTV8+t`W1Ah8E(12-L1gAok6eR08}GpXErM=EUd_;oghtN8Nswn0OgY5 z-i~u|ktbu#LE@U_KIqohsc&e2Xi%KqdM$Xz8FaAG+NY?->4}K}@9{|J5^xRm_9R*P zt&w2p9<$u?cAe?l7uU{dZys(uDn)EQJ=!U+a{c<_{Ct-H{ONsENJMC;hN6NCj~ z-rCurfo$KQcMV3d|~BI8C>6Va>qlOJ&X}ZZu54 zb*MXKtH(xT$Wr;=svL~91|Y8i$_~vybOduAmT9gqORFI-R)p{cN(l%|fi5X(tMI!8 z@!pA2djf}Wh2xLZr>;3vy0ifCf}q&~iT(-bjy%Ue<8%Y+0!NYy;kiiXBUGMOytZF!wKDVy4!+4fWvwFRhOKqzn| zXk~9MnW8ZJ{^sVxYiJ(CAaqoz@}SF7Qc{;LX*--he;!h*bpOc6Api>F-Aisyke&JF zHE-XZ;(v4KI+H!~a;`6}g)-%M!UEWV7O(@`u=vsco{9cnDeC{j8|bP7#VTH?+X)g* zozh#-lR#A5fxKz8CPMSk)rIV`0kZ#aLu5lu<4lpGX4=Np_5yHgR_WgUO{QmlE7ev}dIV-3Zfa~=1H=M~J0sY@2^%WuCBj0fDWvK)yA97e{5BJtM&|cI8sYRIZp?Cm^(6%UQqVpa+CeSu#p`Ev8 zfHHSpLZZYPqo}Cp=$KnmQ)7GpavKtf3?aABx$cW0bu1hlcZ&}0 z?I@JxHheXVR*cRR-&sH&#OwzQy6~{{0Z9c(rPX>%`5;+Tj)e;j?0}#HL^~}l zZE$Bk@5{T9cjzf~b~{tz)f-7UUphNGfnb+2i3qiP`vz6kb-vgBQ@To|xsP^q7jkjq z3=+xlNIxpU9{UBZBXhYU01NVueP?=Dmi^^A!MXrhiD;qO;jB0GrBvc?Et;7(6T>Fd zE1HQMrom%@gLaKC0|&`_&JF;i`~wHqUdSM<4H5I| z-7hur7dE?%Iu4X2LU+qlF$GQJF`?{9U&f#XNC=YbCzYj=ZgF7(ukO8Es z5KL3HA-_El0|OHsnUyET2f25PKy`sspC!})9|JmwUOMu7&!HgXSCQh457=QWwLP7j z5Azgk%_3)u-OBQ9Pc~`d=O;vc|v~Az0Quao8v@fILT7@ z+TZwdg3>tz&UbPFzEQlg13OS80-J^L-q|#gn?t{@0Fa1I|hyEuq+ zu=-L;t=gNii=ARr9(px4FgEP;FEygykQlgJMrP&` zQ)#I;yEifp`n(?=^wgLfM;_(^~ zbs3VW7<3+pM|6jS29UDJVgX}?;egFSkUe2^p_L>fEiCNRUu;(+@zcV~+t%lEee3A5 zk#KhoO_;{@wBOaKD>gx;M}m|m|KR(p{XMc~kJ-c1wL}xgnuH7d%7iEDDU2&z4=0{+47_{_QMs z?4)a`cUY);L6htDM{{LIgNVYglRX3xWc}*xZT)I(bC!=EJ}j@Sh{kCl3x5`Dm4p+~ zuW-!Kz%E@}TqyIKoL@Pp+n%N6zwB8G&{*rDzUF34WeK7LE&2~keC-*ef!DFZa}r{n z*ZUB7;q=?-zdU|nAJAtYIaXmJ5E0rn3w>;TV}q3?p%s3)IMC@Mx+e4_E33*7$3;0L z(vn>?!j?<+0+Wh-cXsY;B3pF<=BoeP^5|Mfg^0M)S0Ryu=?9zpU7dY3MH0BW(NBGj zz^IUqpxuHR7OyFM;X)HMOOKD*S#AJ%#K};F0rmneobnXp27VjNB=@t}E{51QROV)5 zZEbzyM!2W7@>e3!SQ)U81rCk-n3KE!b0$0<&v#p*$%+0h>)l~gHIJFZfD`?>$#ZZ=6$7`$VZ7Tmyonf{*CRSxudZ+EwtB%gS&tGR7{46AVQbs2fO zTtr;wY)*;rt8lB`;@fymf3+c>%wHT%eLW&0Wo>0Hl`E=%K!|Ktu3Ulf@h0@53MUI- z0H6v$A#*1x`ukVHEJZ^jYfy-e9oc#I!Q!TXkJQNX6J=W~7QP6?aXpF`fNLNY zt!wsapsbQa|MTLM*%W%G=&ZHvb6fm35lrNNUqC zCMW0PV7h9VN@326CE@Do>i)Md0BTK;bXXV}x#!}t zl-zJToO{1s4<`z3r;bVfSpFE=*xP#xDsga7P;tpOtK-AjeDbHqKG-Lmm69^zDgq+( z?j3h8+gCkt0sV=Ac1_l$Y|j@>-?B?o;IhTZt!-^XrLJiN=puziLg)%`ADAEP#1a@G z#}iu7#NlBO_=mlOiB?yhK7DGpKuyn9+V;H9(R1*qpkeL>LBXzms2zF2jsvBl*RECU z^bz`DNC`69qnp#^_g?VH?++jBq*#ix6QsO+A zjr#*0-<;Foyd0#?S*1WZ;i>GBMNap`A)tP}9tO8-HW;$MB;$2Yza*_a6*eIkir;V76h5x8U5`zP{CGE5-sK>~ zyzH^poojyxY;X5Aone`8XZPeMq!1X79ErPX^J2c`z$8K3zQf}T7LCjP@S(|rzufsF zXw&bcTooP2+uIy^!P+_iyZbdos?u@nmrS;%Ksff&_Q~(B$&@Jb*q?gvH+cVUQwoa4^zZ z1j=f^0DKs;{Dl@xj%Hx5MZF5 zegIPoof#1XZB0#3-#Ystzk%fEJxI_J2&sFIOAxbrv^XG*<>BE;eEBjJH$FBNxHU?P z9fZ9H)y96|jMB4QqXI>TDDY%_38F@m`)raEC7j|3f#Z>q0y;^#xM5IrYIY|@(0*Vm zVUk&XOfZAlJqXy@IImwne^mK-VFMk{|?ThH^oy68rhXN6a6Pop8~{vq+~#L zj&3tput451z_nM<6crX0dxA-XLalJ%f?078-&$$pb69{z+>#_~>`=4bsY$_Tge2JC ztL-vrIFLt_%JS@elvMf+aC~fbYh8K{gb|(lN$e{*o>UP{f(A~Q=;`eKQKXI`j$ft0 z5SNz0;-Kr`z*J~zBX{}oa>Z;SvNplSF;MF2aZKPJ zMX~!moXD8fI7NNQ-q&8&g;`Zuc>qA(moHzCSD=o7bpr%{bJ-7ZIu8&?UMxj8K*-`! z@Muu^;}a5caL~@7VuR$vSuKXx_^lw4IY$9;`ED)_rm00WH8t5J2Y9Z}{CIYW{xR3@ z!Pes z+il0}Uv>O>88mx5v8t-dNx~R9dFbum2O!7L&>nkXVPOUa1`1L#G%?|3V-uj5XTZdw z5hH*cb4S6Wfa;jdLjtG@ShlMlD69i;L}+Hw;9`Ou1U;DLTXQo#Bjcq@m!RVc!3WaO zeKHb4>KPf$%u^0QB+wVOi2C++9cAb~E!IWAr9)r6d4o!918tJ!qM%?AaUt&k2$wXp zv=QpS@9y4>D{;)}LF?&_p}`Ymp{}m}kB=`fu-bth7U3pL@x4Le^$@-WQ%Oe&hi0hx zKT7_F$vCKM=n|m!pp%w3^6~LG(bw14gEX4=z=75al?ae<^r5Zs1rZTE8rxquFSQ2C z16n!lHie4>i2|%2K7M`?lnY{Qs!L0Mf+=C~syTeXUeL#l76*1MU0q#3T(Bl^E0s`( z)I~!V5GF3PR0xx0+A9a0H$lcadj9n3>lOFxW!GSo0@?(S5SP8?nM&Q@?$hE%`JC(i z%;D+)Em%URFQH=11Ir9s*iVVm*{*lPRD=%kxjv}(zZqInX3o%Rz$$W4M5G21F~4FF z#h>{Qc7Qw@!Uy?U?lJEPv%m5kP~<5CJfM@5o*+5wU(`5_>vJ?NafC*3L0FjLPD=C| z`dD?>_3+Xfz7U4`4co(g|3d_yz-zKhK>zclz|b&yT69d^aBL^}^&;(s=-e zHlo%orxqAmX|}peoXkPMm*IQis2ry`a(sYP;TR8jQ@ztf(seM)b7012W5 zA}x*tb33{1i4!4pqF`wR>gDZe*87X%T`X}jR#$KO{MR4gw(-SMNcJ`urocti_?#oH z3cI@*%$ZIjdu=eoG&l*P3|0l7y^Y@3*jP!Bdv%iKz!_Q9nDt>1ekV!HuJhGJeUSS{ z=7aFM3R-3{}cVt^P??G-Tjvq|!4ur4z7?0W$ANWCh+1V-f zBDl4o>VS&IEP(OTU}XV=%TW=Ld}y0~FyKHRz-%TN?NkTz#L%<;bj(;k4S;-SZ-yM<>ZBnYDqr4rk~8C9ti z!pNJ9udE#C83ODAjD+;Q8{*Li@DG}@2hz43r=xUC2d^zvc2#(}z}yE<1kDKyQ4ZKa zuxN->Z`Fo!0J*q-|GrJjTNbd7Y`jBxeDCd*K$uzYK8 z_nOD7|4;){T|SO7m3hG_{=H}oiUG_~l~q;Q*x4(vS>Q>U@6CsFg`fgs?haVuWaK=8 zZ~aam5!nAyI0KwiwhI(H)nIwgxc=>|09ggBLr2ni4iIi&!%Q~KWmL%Vf86x(DFYh< zDX!ItSYrBV0SXPcON#(wAYX!#`sPjMO&GvHxLF5h214?HqahCfahWdwP`FjlD}|9z zgkXpSU07AC3e1s!V!fan39!<_glCX3Ig=V%*aTT@zL`u zZ|^7?ybP(Y&OnHm4!#U{9E2z|xv=@tHLpbz@JTe<{HS>b^9C@8{rcq?JOyS~%-+2D z0SRAYH++1eWDh1ep!P=T#J_rV5(HW{wl_&h`vhYbyEUkq4(3T`k;3TWrtjZZw<^h- zOXdKrK%dX?G8`^+)!&@&g+jdq?nNjBYXJK<v-|` zH0?wbE09@Vj)oLr$y2aoz2J?pZOLZaVW$r`cv5|iguFKTZ=$v755?w+o z2|%|G2;9!+yP($Y6s;NN^o-jOA*MWZ9>TZ>q+}l$T>?QHXe(jC7xp;<1u`vrlo5K2 zTj~?cFk{Z^q{PXp;B&q@ybY|6@CpNiDZIW&O>QHmST|N52?W5{^4 z8ZUSp2LLZlmfs&M*`th;R|Gqon+0VkhyPsnN4W4^&<;Tyf~RC=mPAs;!KHltn<1~q zA;6Nn$BwXE1UcaQcd%W~L+u4U*kg4r>d&z>p3@9?zOb&j=FmF>NWQn-2nUG zDW{(7*Cg2{WGBea6@z&ra&EVP8jWXAjEbWx|v1~(U zC}yWYmpD=iCI)^J3DvL==qD5fKToK;L>Q&CC(C1?tU<~023c&nJ(-V}cL>Td;2_fq z&#U_0jdW>wFa_+ZpX85dJ*AcP%gYM|J3vGA+9FAi+yRV+dh z^Nmw>I&5GWVkphEii53MOcrtu~( zcIGK4?e8f2_-sQBF*Y+B0$X^RyzRT_=v#Y(wg5f)&Fcz@3((4?!D9ut^W0lo0PV45{Qr3=KA_Dd2Z}j39q)#}Jwa%wXe;L_-V6E6Y&94(Ucvy1TnWO1itd;am3|wo`bw-&}jAQTW8agnbs=|>rk!npgy{q4;h^h$rx-oaCbkc1&2A{YATLEv3X`sXt< zGdt&94G8K?vI+lXQ-w$~AWF+f%W!{a=5H4YTCHLV$<80yEnjwCNpUrHYI__Z9>4sH z=m&xO?TT>`bGBNY{u@o1{!^}!4mKeY&EXlSUfuWxK@Y)VRsC0ANu z*UR&x$!Ka~eEgI#E$2WSjVwO1&QcqfqJzfHcvidRd{rH1p9p?oiY zKfktuRTu>HkyOt2{QS*$AFSYIe}2%YG5zwmFkyg+t97(kAKk(jPQYB&uA-=j2?_5t zpJlaKX+hGPulmktWN65eGP2z4{QliL``4bofB&MRql4>8H=muIg$R1wO~BJ~`sL^6 z2Ly;eE(lK&9nDt&TYaB_0W$_}@`JiO=Ps%tGRmJk;gmzOWI8p9(cMbmq_ zJC9T|WJ__sIWkjhM?ykMH{a}wgqb*TR{Hd*NGh7_*g{OUbG6C3Zp!{@Z<0p#r>VL5 z%UzD!%@MEtmb8`CF}ct*cZ!hr%lT%1U|?XOT-t2CjV@nCW zA*VU6f2S$)Kj z9v&W6OUQ|di3thS)zyDzXX{y8mt|*nwAMB>@UXIek(Za(&`42MS5?Kw#EeNz)zsDo zYfxHTTwGWvl{fj%(n(w#R!GSE`LasAWME(bo;$Y1;~v}R*RO3KC>R$mv^Q)4j}`_7 z26lGm;12=<0(b&pMOs|Wso2<*6cr~%Mn0>lale26o}FD;TU%RGGqnVVlob5V%G7kg zh>cvpB_<|jB2NlKR#sL;MJ1D6RYe630iiHI-{a*;Lr2H!Uxhvq5z%T(Jgi7SU|?@w z-_F*Sw2TbH`}Y{6dupw5)zmD^ z%{4VOFP^TpHcgC-dh}Sx1U;k$y$t&zzI^%e$GgeT&yP+aGrzDfJS+^IOyJ+ZKuDn| zxNUOstjtWZ!T^d8Zkv^!-d;~|Mc@Ids5lP9P+otF1f@nvNl8OP1O59Kd*Trh(JP(}g>=vJH2}Lm1*VkEDS$TPRSfVW;=UV^(Avx-hjTkMM@h5`r? zq+F_2u9I)o>VCV^wl!6#aH-yPc{R0vHD7HqH$82uwrPg7v$K<$l5)O;Pf3}xv9V#J zgC!B1+lfyZtljJcH8C}{$>edlBiHWr+~Dn|p)v1%dtx_7`FN9;mp8Z@b9v|L>Uy5O zF%V0=+~l|^xbXW+UR8B<%}m$Ky+3`h3)t6G==i!=I^3E_w@8ck??l? zxGDWse{nfi%j)3h=;`TsUW&gy7*7WkLCjqi%l8)C4+=7}WCUTS)xVJxcJL@s*QWm{ zr<>i3WEb4Y_BI+ZSHvznGBPqgKEBsw*aGPgmKRh% z7F)_^dlzaJmYC|qeypl_OHf%5u^`m*%S+kMpIhv=k>`&t&(7A4dN&clZUUP|=DDY@ z4?OlZk9+&wu?+8*dpeDE@cpKybz|l2FUV_?c~ZLUFQaMPTh#7r9ll{`kj-bZ)4;A`tl5J#&V@4B`Zr;TAH4bF;dxT_$T93 zf!yWIO;kuoNN8xI+x5HqxMs5{T5EO}l67$ZPyilUyq@_O8IO+_>($D%Qdsn%w-NbC zBl)|wwu~SgM2yVL(H}x1Bac^Fn?Y?Z)LQua`-7zt`1ld*&A@;F(06$F z*8vOy{GYEe!x0i{2hYdNjjwPa5QP9D{pnLCj~$hu;LA+0T3uZo1QivvsHli%23!bO z0GU^jPZVry7k_`rf*+DdC1+)omzBxqO@f|w4f+DOPS9rJ+`xX}+vNdE2a}zhZ40Wp zrltn`E|yv6}IbL z<@1VPzWfIal$2j|bjBDyD=6%4Zca^4TY3ciota7Wz{0`CCgQUE7l!wqOvp=1TYFSF zvL6fd6kOpfLC=QOJ5ez)GY(DvsENVB&_~nDolzLuy@?!2)Zx+5L;yRnvFmkN{a9c% zoepP9yU{z9I5PT3DMc`iys7&KV^8%7n6%c)e%zjDL;mZhg#iu$@pKA1Wn7@6K+=sh z-vLnG?3Xc?O|;~0s=bFTS`mi zP5@pHdTCZ=#pmbd`h9rXDVa2zD&Ul87l@izT_qO=0MmF)OhzVuP~S$qwXc#Ye0a@}3rOaa%pUW3uh zk7@EYM|Aw&FHd0mMMOpd+=qsSb~;_LGBaZU-Ftt3en7|hWa+gtwEz}JK+sn(#zMPob+GF%B z5>hDmFnd*5Pei{4&?AL}UQ;tFwH=Zaf0IVSmIMGkB)6gwLmG9sd) zvT}80mfyNr?mkcuGXZB8W)VzK&-~6O zTB4$&PEK66v zdH!V5URYy_+`9#h?)s2hqJ4KfO9))Khlhvfv)8CSH+Ow+IKhuA3u|j@Bco}JD_P#I zz6!9_xw*Z;9<8;QqgBWpsje+4L4Ea(XoyWr?0x;ELk{j2a1P6*hV%B|FSju_KggGfciG9~@=H%o2axRV-(6?5xHFpO z48Di)TiplEnvm$|ar*VnV_I z{v|-=?(XiC&pUILIxQ}hH8oehFbJTQM4kAHi;7MF?*Gk~k!vvzlNSM1=jzG}xo~BA z_YOKHGt&!fh=)V~aDXQ^%Ko?ZDseXin8B_&6oDUbuYf3_|LIXE}~oxZld zewR=~Q}cn7dJv)cyqcR7JU93MUXNCbb)#8AuUmuhWMpLF_>3Ew{@ppf*UbO}6ciLR zG&Deu1=p?AK3Ap@Ff=soDgC_mAb#ze-eif8}5j7izk=*oDm$ zixqKLI5>b2NT9{6S+tTH*;pAH(<-<=#}&jRBsgphV1Y>jgIqA3&(R#fGT>-Bt!|uv zaZ-bR1=z2Vv9V5@$Nc;}FFX5>p#%m{{Hyx#62XBaoD;LNKa-OBUmcCi%rwsMctR;s zpTmXU^z(yR)1x?+H7y|=C zP_PYD&6!a<4K*U@G=ndgaey;{EfO9YY8O58qgy*A007Mq@A?V!#_nzwr-ka5FR}6Q zIN`mi>?UK}?u)wZUdwCJ*D35KU``s({5Uf`O|&#QKd&JyymoiKxm2DGAkoIiK$bej zCJJ!4r9i1DlEI-NbC3Q9=b$6L&HXoddo2M$K~Y4U?|69|!RMuW90CRirU`(o>qZaT z1ux2zJYco~NHjS)xs|URmzqk%<}x`r_@}cK(T~F2qH*2pY0m*bz!Z`ng-N8>s5CV- zH5eZN0kUoW1#pF0D#~N(0*qPkCSkD;fIfUtQ?s${|D#+O_pptB1gJ7`%D=ye`CiJ( z%8e+|WFH?!Z@xe4hDEII;XeH8Lu~(#vKJ_1dF_n6$-Dr=?!U#w)fU$uV9Ewv?W?jf z3L2VrwK19qCiu@MO@wCvEY8OZ+dDg8`(zgss46MhA1~B`rLZtHjmfzp*%?Wx21O5$ z7YP}8ESYsP%}G*Rd?ZU~6^u`_v#Ox#KY#wf&VG5a+-yWL5QIidL_z_Zos(0k-yL*) zI0x{cxw#og3~gS|51`Vw?o59KH>07Vf<14&+SclHydV=#J84>TI9GnU)Tk^bmUo_F z29^~R0V%t21YqM}4mL7+%j@n(M17PG=y2*29Kbw)w}a^-5YYYY?=QZe_}q#Gqo*V% zm*}+e@$oH;jmdxemX@CF0vO|eJzdoZXMJ;X5lln?mjQ?SC?GJv^FYe)BrYjQL`)1S zhP#2lzf%$1zLQg3Ma9JQG!PoVDEJL5R;1+S-B=_sw;_^XBB_#Pi__@Dv4k z`J3zONU#^f!(l)*0@fq=eF&G1t`N*oDXFOizkYF2eYB>crrsS%5j#-R)y>c zT&COpVu1i2?`nhHW|QNg^z%Cg20+-g075ojgXzx^Fv2J=o27_zDhEeUZ^>X@9?ZOlFflQu$AJ?3p_^AxaR#n(fT4WpTm^jH z(!QuP7^e;kkF)pgY|8~ZMZm>x^o0I50=)4E(;U^5n-u?>4=QI~2&@RD@07ePW9kH>n0CKRhv2CPS{!B>$no3z& z*%+w{tj{Qzt4&Z45o4CAacDm`cs@EwONUfevT9HQ?W&+aQcTQ$@m5Vu4TvTVhqICH z=2~CAOoA^2vL4{blF?+0fJy;L3{YCIcKZ7IRp|5a-JU|=R=|h|F8}WS9`I4H5=*?; zcuF2ff2haQz}rBx%1k#w!zL#uCnC~RQW7nAAmK2@yv>sp^b&wBDJmKo8QF4uf`D-Z z$aO%IiyYxB%FFBiQI?#01DYG~V=%pfHVd>HFa^=l(t>ZijvN^oK}AL$8Xi6b zvujw`P_~Hw!7laa&=9EX;@`jbrV67|Qr^T5K3(m{|Nc$iujUzvKV9D1`V15VKYxF@ z&z~D?^nP6Pn@`h&?y|JB1a8&lfE&<%AcjuuC)o#(CItk*l9FZsZMEI=vF^CrPDx1# zU=STG?N5NLuZ)R)e!0}~U>qpd6~e-bjfg-!*KIw)NC@Hq~c0z zb-O;`I`ab~xa;{wZ%-)B{{&Fk?yfE_>m_v!jYhjo$srUaMF-n5oz{cX)6=~@=>u*7 z0S};i;^E;Db6IA$=qYDw29QQ=Y#5A*6C)r51H`NMrT$NTqf=lA1=Bkq0Nhp!(=JNf z$jD(%!4b{dOjy|1nw18c(C&Z+!EO4H5!Gcs;aZ#gMQfCgC78{ z7=%H-l7OiRJ|Ifi$;rvqmgSGGghVgs1d0z6KAO4Kha0I?$JD}ai-J(QTf$1Nu($98M+DEjbNr||Vgj=nop zc9$(ezOcUGPXhcm{Gp1Szm2FCVeo0Yi1U^=fb0Whbx}G4hfW>{gYm<(kUQhJ`8wZ0 zqpJBM^kl2w)Wm%Tl{`pJ{OHQS#h8cr<$5HjKo zJKtI{4x9vm?|;h`J{5tl@8#7N9jzcOEq$mVCL%J4m;lc}ujy}Gg9rx;3%2j|)s^Nr z5m;f#?EhAYh@%@TEIb@2zcrZ*xVX5HVrDUZxt!VdkwBPLRCF+-my#9%ugPCIB$WSi z7?OhQ1Hc<`akYttu>SwO$*ixdh19pDrRC`8=-|LyP*4y^e}Em{)P?xvT8Nm%Z0zRY z@N|`we6X=O1wte|0s?!==l{tml(g|FiHRyeKDM;9G&9@Z+RD$#nOym)r1+GsNR)rq zxIdwt2kzHg!6W_h^7EBke5gQB@&k9gMNUxxv^nsWd*cbFg(Zq{JFDzbi`o?KFUBF&Dj|i0Z4R< z3kzhK+{}zjW22*1Ges(ZGk88faAISh-T!z@Q4pEjU!TcNN&+qn0TC=@+WhQn9Vl4L z|2-ksJ=>_5PCZMYEP+w!=g*%28Nnsv7*^_8g#Y{3^a&5|?hY#@1rbF|0uG-Md#Qc3 zx0i;E%^o-mz*w>Ak1iKj5J#PG9VU3f@`v1s4E zO-@a1^LzwyZ#^({uyAop9T;>W(GACmXaC zb-s#WsyARZHcHC@cu|X<0zU+z%E?k={QtfwZ-fZ2kA9$?17gT+I+5L^WMk9N=sVg+ z?oGjl4JnY9(4%m>?(%`UJA=BvcR7dt=-$-@U9Q_b|Av^$rxTJ^3IWrdTr$i0^W!aG z88+pIx!HRkrspWqA}PhPi^2^1JB+D0aR2<_aX<_TQm;p!nQ5?xvzXO8R8{|$*F@y! zmpyraZfavw4x}BknB2{&7e-NlqtgoQL%^I}5Y*`};?&jR6}jBZYD>Y!URzTmS}1?~c=abQ&k(fCM=dfq ziQwQ-W8l;6P5*I;g4b;e$RN$li%ml@Gm9YfU1?ok_x&Zieu9pHK~KMS@%`UIZVm3Y zI=x+adIk}B^k_2QPKe0bnf~3qh^*{;dip&;kN{lpu^k^Ff{`Cog@K`A)<<_$ZpzXo zB8Z>AzMhYM_u3Y$oE$Fx#{G}Iy|wz)3Qv9#(l3e-Mn+sb5jnJ=ppYrK% zL@6nd037TchWFtiA)k|3azH&lGbQ-t`iq*g@FZs@Ix2~XUGY1DFC@HP&A-;dF)#%qDytT9O;t7ke`Q$p1f#T`;IU_9bz1=!A1Tf&$ zX6I<|^rZ?ul2XPGIygB23F6}V8jpZLN{6hb=4>72Ee)$NDw$AF%KYnSzTuX%i%Z7@ zCPcM7D3c5lK?KJ~T2zFI<6pR)u0GeO~r{ob`zks^+l5_$QkBk zuLb3a$PRz}{=Fsvw?rp$Fn)bIa4_EP=0ikeXMeCtadw$bbGRQgt$fecAY^R~qM-pE zVWC1!Dcbw@>Y80Mc$JkEReo9IkP;35i~fSm`YkgkHMXIfx`8QX7TolT6sto0A7aL-YF&lur(&pZ}LHzByu) z?@=TqjEt$MVW6R}&dxw%LY7m73QH^>CJw9#O5_Z&2KTib=aGgFky} zAGk?-i}mHDrHlXtqa+`BMExjs#xj5&=l=ZQ2+W;@zY~gtZzyTuQ3won<Q^Oi*GGwRb53wM9jcT6mi^KB6*X*5y~wn;Ii8g2W)^e?8YttDCEG3 zX>z?RsHk88D5U3;|27~{f0Rh8EdmNAJI{aQv-GFgV``=-spvM_0Cp3DGrgro7!(x9 z#AIi+$r>uhyLVKSP@icdA_u*HEc8d)!?J$-xI8)Bk6xBbfBt`2 zfR(?gL~m(4zg%1~Xlb8Q*Vp7iPw#zMtg>Eis<**08EvBe@Zsr#CJ5EHj43Y8yp;li zh1Jt1D!%ooQ0e&o?_U9SjE*v~*y?I7043UK`Zc_8%@3bUzTFX}{bfj79gHZo))~|O z2=27ghJx5Ma4w&*5}!^+M`eiOv`oFC#l`k|9MXpXebdq2?B;vt}}{`sHoBErVR8I zFiC<94OBItQUN3+URC=>92={sWKJy0k7Kn=)#83z791R0US1v%@!4v!P@$r#Yqm5d z=J%!Fs&5c{K;R+C`q_GeBT879;ujG&K8U9II}#Gp)0O2WyYBw}-EbaVKjANvw^cXF*B4q7m+Kf!=gtX@E+0yx!7myY3>+DQaQW_4z(5<)D z2445^3#@OoNtzqm5LO)}30hx&I5APzGU>|;As=p2)5P5COHvB_`Yr-F`N-(`X?sX? zf2%tOKmP~qcVLcU)In3?K(2=;7kpAzqyPh&jge7)Nr{%ax(n!ZV642|p9-F)h!3?| zgir{zpCHoE3=G309u$f!Ok=gV-&*ISEmC7(prN6OOBwbcR;b@yAq@@LI!cIkVUT7- zW3;->@OJ5UD{7+w04bvSNNUOTcPghGgO~Tul9sOSs$3e^$7ZL}n?{$bJ^n``FLXcu z*tjlb$>Cw@tE+z+8nQ`DGr^FZ{*HKoi*JQfZ{W9(8>j&}7fgU7pkr7HScQxzb&)_P$tTT$oVO(FK3=Z)|MT)SPwTlZ@7R z7-p^pdSsnpKRU4FOG-+HlbGX)Ncf$`08C&6$0=z$n}P@3;yM+T^w-XeU+NAFrARom zTDCt9g`An5o^1EAp<(P!v`VQhv97Lj{%AZlx;qmRi^(9x#p$tGNw zo~ok8JZ#MXePIne2jD&=GE0L(EqM}cWz-+k< z3QQ12a4jd~=>kPETJkF{I_ZXC^=b5*>e>*Ze* zgNgxS3s+NJl++=ASAX>R&ge#OxD-2~p^#^h+^0$xR#T1-IuS>f;^M**zrK(4#vh*5 zud;XvKz{$8&}l0{Lvs4jJyqy(1~C~6vHI7MDkNk$$3#T~XUV0c{H-ryOv0Y+vs@$T zI$*XVqoXsuJsj{D1%tzzXZj;)!Ttz#Pdr^+EVdMVk=+m1*;6@xLfvn(3lU^wq-E#o ziVO`p`U^8M$5fS3nmz98SG|CWDf*ozA%Vr2Nis^@<&FS8AqmE1{cu>1W#Ou;nGk4E zK&RNBwVItNzB?>m=wUtX?euqfz-40M@z$wmdhiJkM@bvC=C-$e?*W zz>0}QkYj*hh*UV4|295yG>)mbbJii?GwsmO*#=x}GU3D1J%_e-Pd_y)77@|ir2;J6 zj3jbFevNwgnZ@tlYh$FMy5yim*`8BrX;XecH8c!F!ufh}`9n-}A`d~(3)bh!qvV^K z_sCHpjSx8>Up}=F3t_eKXw%bad%5-UfsP8ChQ`3)`i2CFP}J@?C6%A^X?8h)&JP;U zkknLq1}IlUG&C&ypcu@ao{j|~SP^IYRCe>P5)y$xD0@kKuc+ErZNkF3PFl{)j6l(4 zz^L6+Gs@gnY`Ybbl%@L@s061=zLl)#I~AR^YY*7>g*A(~A8RELnbdxdOg2Ve-ZuBZ%>zW&*5e~T+27iu*5 zT;H?TLxA1p+BO^=9Tpl|x=K+!nO)E4-$YIkFE4231F`fBe@Kg|-*BOZ zg{^H`NU%dnv_co_JIC=jWOnx9Arq)*`%h22si}cRNz0r4cbga<57SMwjwBbCIeFb< zgKt<30&;TJRova(zT)b%1tb%~!co#8KtUZXA^`6r1KA!K6@ih_)WSakfs;f0GipTS z`999bXl#tn%QF^v^ua-5`!mj^Mz{6)l>irlX~5Rn+NxHniTCCWnC5M_ zKP@i%W~H{Y2++~dX)pi6!lKgAsi+6nFO-V-`@2R31cPkiWCf4MLw$E3w&aGZaCu;8 zh>G)fv3sem5GymYk#VlG4FI>{Bz;2|w8*|(0qK+nqN%n6CEI%%HyKw z(~Hf(91R?qja{kNmypQPMQ)+?uue=_g;UkSPA19se4-ndyCVRe1l_&@8-z|?SPUj8 zC?@8PN@-;px2>(zL@b_#CHv2xPz;jf*H!O`kM3t%NVM{>@$>(>@`TV}ef^+=3TUaR z4G*UO02lAqa&z$Z@c9j++YKxj!%zt!Y;Q_JkyJ|`3~qD8><(3rcXhpdoB6F*dJ-5g z2>{&%#Mlaro4Z7_SID*MCIkzF>EJFd1_svT?Y<<$icIX&zdr;+Phnvp@Lb;uw$(Yx zpBq-pTdJweF(_*p7=Cwju-(HX8P6k3lk0cY?a{QYqVCL+`l9ZGLjwaAl_YMwLHlCh6GcbI8 zIpg9ETHW;jzKtM+a(2Etew6ru3CV~8UY3Oe3cCx7+wD&hepUOsvoMP}fR-E_6m-F5 zEWt$$$(UH7(h3Ad)vsE0s1VRx^r4#^{YySTOf3w1Lds9Z#&y%8VZo3jpW&BI!lYeP zZ2Q0=E`f#RJDNuG_ANXrA!bsH;;-^(0%jhSPgT{$&CYb)bhL7*Miv&|?$^Z#%wxHO zcg$^pl7$Ly*cHGC*r}aw*bo6PGC$Gm>_@uKze)J(h66pyHI!-IX>RQ^6#g;0+s#5m z=^jdCVK3G;2o{$ta6;Tji#g>>_c6z&q-^m(a=j-5iXIRIl)sj2IR)6+eb>~4o1gz( zQZlm!w9+P3bb(y6w{&zsk#l!*^8!v9C=CIDCkswsQ~~FB2ndNmGBPtu&9}XE3R#HE z<+PcVy}(S?T~<|*z=Vw-M0I`UO$ll*CEdLka zZAcOlR39_wnP{6Fsm;w1m6f~3$}0J9T5$;oywmx)yC-9nvD@qnLxbRR%H+MiC;Y_b z&@9SanTzVsV|n-f{kNqG^1@oQM|3n$xcz-QCEBtjI&wxPIML+wnT~QBX$sT3>U1WMX@PFKH#I3<3n_Z0J<#lzaR$nC_PQ}C|pT_aWv?~CN-N2HDY-b5o z=l|lJa)7I<63$~)RsyLLR*(^yt;mW0`vJ|^;nSm? z+s)Ru+A!};$#1g5skIhxRn_ew!4HFH7hUmmoTsacbJMWNDd$j%UwcBZYBf&WuA$F9 z{yDS$=!mKNtrt3qEG1|1&psuUZR+k)G*k)-3frv#&iC(u>pjJk+gb23 z9~c}A!U}x6yl7+sEIZ~nQ5z* zVqcvzthDg9xI0tvHMN$Sk;-QPJ}Ui*s-+c4POkpt`JU$z&iSZgqqo%B$5+G|U-o%U z*PDhjIb*cEBmxP?TiN3IaeeiZVi**CS)I9QYc0UgG9xqh>y-%LO(f`K6i2?;AP(a0hRZDMf~As4FGfv*%y zz~8^ahWARn;7pkILWD#@CQUhEJ9jpzo16(AZaVqiT5=T?rw}lugIJ+ui?MREBtR`N zH3D`G<>KO^{_R^9pJUifqIGzER~JYHUB$&kJl@{l-%B)7k1vE0(Z*9Cia_}md^KiE zQ9C-4eE;so^R8kBt@sZ>3&&!d`gfiWdZR=F?)Zr@7202?f9%T3poE*N%@u7A2V#)H zM$)=mo9{0-2Q=`cy7s4r?+qn#qNBTGWB->FYHrc0mcm#bkQNmW=+mp1o>mtNMqX-` zn%H+v9^o%n30-9 zcedsm60aN$0taJbXj{&fv!oVGWo63(0`I(ETXVm0pBBAK3Pd3vN#`{_*2JQwzS$mz zW@3uKp$jM~Hgj+bX>RtWo1pM<3*zM`5b)A6H(v;d8l;V);p5?Xx}MYB+67@nkj42g z0|Y!TXRohHRCo7CXpyIcHI_7~{A8J)Pj_OJIkq-7x!&G>?pN2F{WqLPj||LorW_mN zLb6+1A5>I891h?WE-oSlh95;pkGQCG2;kscC3yYa1Wa$y$&9M!<7wp{f+fT4oM;mg z5cTz`sQmUO{ds-_5%R{xBz~9qbfc^Yf)!A=Wu$i5D>I2Ktbfk0zef^DkbL}vDXy=h z!;s;1Ig)}eAXClJU^$UvTBvlLbR zxwo7KF0AzT?^z@cY0REiw96Y>E-NZ*?6AEnDx}b%{Cu0!f77g88r814O{ z&dC3kZJ@vZVWD8mFDD1k?~wr5JZhT`wqso0~41wA<_hf*cwl3#224QjAFVOSP~l^z-9f8P|l&{_?ln8V9C$ zR}EQ<178?I9!xp~g9{^;6kwt~Ki1cK>UQaM^umF0B^IkT0T*od*=iF@4GmIxpSWNt z?XBa+AEg}1HBh*CSeQP<+~NU&$BZAce+61E>*+zVxyq)eaJssrcEKW7Tu zg8>k_bV^|n`Ynx!WYEo>-Kal;-{lSnJ4?|rmeMs&iw;kIKzkvHAQuv3VX*}vt#JJ1 z#m0C^@zhTMtT=}7i4313+GBQ#B5dBj5v?;aJh6Zsyh5kKiv6w@#>Uz-cj*Dw6 z$QB=`b9p{krB2n<R#b!{L|J3Y!icL)HmLLg{7Spc$eY_E zFd~nn1{SNaI-eAwmv+8_5!(R=hY~(7b#UZ+rKQ~GyI_p+;rmI%(phMVAFz(*eNn$? z=yV@W+jlLwHanmY5vTb?PZCf`VWX&@cC(shUXniptLv40f;@{SwjdYU>t%uE*Nub- zl)irUWQ8>;GBO1%JRKd!zkrJ~pQO2aK+8NmnYl9!i&~{W`TfLST2e1oGaSw6KQ}a1YAQ*OW3f=py9(3qtRIa`b8G)V@hiVh;=t>w?7V=;-mBuJX-E?^e)@-%QITZ`BGHE zPw0*`ZVJSno@xA*1}G#Xk2_3!{5tn#KG`o{)_q}e%5>7Iay?^XeSILPXq0rpf0Qle z3Lc5tpM%!BAMfvh8$RCInZrbSwma@fFx;KStzPpx&}v72iuT`v!8n=6op9T?67@<^ zaDME^2;tkeicuBcS=rgYwR^S3$3Gv<;}sQUbYo$|0=Fg%IX!)C6NiD`lZUvZsDeVYntw+M`yE?d?(x8gxCqogOJH^0o>p4EQBt-@NR$Oh zGedn}nfO#Y`XMYXC~fV9dmjs>+>zeTtz327!9aUy(zV2im5TT1G8 z=6yY(%y_tWg`Yb+d>dRUGu(}&_Z$WWXN)U(y~+6aR(}f_zzTZUrtnO5F1P^@`cU;a zxBOiE=8=spCS^Vse~y|79fhE4m0TfH@9qp7?gC4bA>fML>P}6M$jMo&G0dPD0*8XX zcX;@EvuHCk1nyZhJBP$ti;}u)GAlz^T&iXSO$Q=ow38 z7iWo#jJp<6M`Q^;(BAB3d9O6siD_w(+}xai^aie#pw$f~838=N47PdR6Hz#lzZK<7lPv`w!_A^~-7n3#gNK(a_}uaQsM*__>gUJfbQJCw$`5TZ%VDU)x{oL(wofi(&B{so za;CqtPz$09Qw3lbPh;Q?4M2SET+;bw1d2t)4vmR9<&9|*5?MW5euWN-tEmAtu+r)d z<5Tp`c=P}hrc#I$kYW(3L`82S!;W)2)p7r(jPaNCtE$1CA}&GqI7XhNK8TTkz~5q> zm4(frS3)c`7D+^ha6sTBh*-OvZ?IS##@)G0?C;H>goav~kC1zJtdLb3Q_{f2#!gJi zINRGdImlcN#Gb4=3xiz_d~O<$^9kj5?n6OzXuzlBy)gM6*ds3B8MfXH5(;&PS7xdC zZ>`q5>QFE(Y4U#oGjUrsKR?9i`=2WH+{sCiiwoeF0GG#6LWc|}?!^i>;SYCu`$`q_ zqdb!d3@*22>vF?MbG_=Zg^FKGY@K!g3ukQ)_uD)3*enJuH>cSth0*5a=hyt$%~dPE zv$W!$y*eKH1RU=7D1{231j=+`KH0!F(9^7A7#JI>&sw7jIPEr@>0 zA)~BnYN()+B9oH#^x2y*!$a_kYj?i9r2+SCXZNoOk6Kdi%CsPUsvNjiSuCBOJ|FQ% z&kw$mFOnD{cTUsjS^48INAsU)mIZRSgRPv}=3t3cDEiEl@UPfxQ9^>TX z*h*Jc*zF+!7dX*J8r8^ja;bY8*jY)zc~a+3yiO-i1_OfBFhxZ`)Bp8rG~Upf$>s0y z>kTn9^w|YXnQs4Je6kREJYDxNil5(S5s^Y_DOg6vq*x20AA2jLTd8EYr9QvD>vDa= z*Zb(A_;00dIyM%Hix?oo98+@I=AGTZAS=NKTRxzwaL zQ6Z-YRrLnznWDF(q#tz0(taMyR|jq8cm*sspWm^LW%cLFOicI$z^az$dA_uaOiw4M z`H$xNJ0>~81Gh(6NlE@_<$000ePXrUX7>ZZ2mCtgQVVd>&0tkp~;AhC69 z_H8(~6z$C$0e8vAGhf%+vY^~tkZA|mNEB4m1a>aaB4QFsiqm6#Mf`1d(f1t0#j`^z zk7s7+8P+}9kx<0OGZ8WRg%+ex{EK!MI zZEPZl0?%wer~J)Vj$w)^lt_;CZFY{$j7sCCdqJB=wW6kdt9NH>tIGCw&ID=_4i1Dt4|(+UwUHSZ2;by1sJH!= zKAp^SBFh;V?5r^ZR*R}?GAoR{d`MIq^9K@eO7$sA&i}u$N8eJb-faU!F$-9PxiAqZY-~dQI_nGB>(?ZY%ll7K$n#VqqrKCBiFedm3=H}C zL4W?NXVU-2aqDXT_US24OUr8^ZRrgrUhm~@Oxy)JlG!eaf|(fw;@txXw(02HJ@L)} z=67zW31lDMdHWwcE@#<5N_x6?O5;|Ge+|hJ^zHSF#}SvXyP~&VdFsRR^HcN|vGwcN z9#(I}#-Uw1PyrdL!FUUBAk4mJYU&b%?m_Gb9MKW_ZeS4c044VUzp6@;yTNa?uUM@% zYjcy53Yv>}xtX0X0vz%v)oT1ZGE#y!zS6e0kG0g;2*sE2-#HZ-nZaT#EY2+}?@M@i zcrYyvCy9N*;^Z6{mok5skl1NN#f0wUq&vd1WmGmY>|enm=-szi&tnS_6a@ZIE>)RM z@72ChB7o&%aDc?>!NJaOldDlLtenjV(a7lUN~=Zj=W|_3PCUp;tA8AJQvm#7=j7VK z%oH0NB7|AjU;s0MB(&Njr#Kuahb#EjJR%B#frPwObv7s+5pSerVITwqN2?gFuHY9q zxThC>adDqli!*S@5~$XUPDqT7*-X-j4LrqO4{=A9EGebLTIUa(mX_v1-giD&)DU4U z4`8Q(_X_d27v-@#Gd+$AxekH9_F*hbNSBI^z-~+0OcLZQSS$&RjLznCArtk?28Qd0 z;Vl9IL13<)Fm>#{-QJ#Cm`_-pnw{c%@={>z+o=MB6o_k|s?G*S3ws$Px?+{pr z9{9z~Lo{vrDRr7wjJNBwP*N%Gcl!kh`Ake(YD?|y26u^WZR_`=_w>ZXCzK1hU4e65 zfUY{nB(zzfg2S|@ug`Q#c~ZVV@rTDx!_zrQz*%`HZ*Kt?AG4_glJ!>i-@k>w;yzq= zSDWn3VStHg28Dyj(#r1QZKDo#+Ne&G!#+4V3|LH#e3YP)1LUj9u)V$bH%@;=|E*pB z>bGCq`1&HCeALRzobAvuKOWAMew*K$WKzgvk%}r=%rB2lVy*-u*IrKwJ3X@$i1`8U zM+^o8P&=WjO~fSO1qHztYk$?@-nU&74hgT%h36j+;D(3s^8zwN7GryWtFzk z8bv}71*9Ye1f)Ycr5mJE8YHEq1?leY?v#)cBovSaLAtvol;+&?opbza#_>1!zI*Ry z-?7%U1j#w^E-xEhv6z?|KVXE0!ZlHNOe$C||3+%)-j|w=7|J)Q479ZN&dxBsLIsmZ zbhLTV?(R#cml!{Lga7R&HQHtkh2m<~q3V2@G;_7t51Gx(guV87;qtx?EZeSK&o4iN zTx#v`E??FvTH*IZg1XAp&Ci6Dot>!H6=)cbpm%wI1p2o3^CBNO71F;QEu*5s@LEd# z``>-dcGBEjD45&4rmF94Z#%PMBWUaRW#owis6@TAe2>jKxwZ8g?DHUd*J4NnqKuEv zYdN_AaDRfH6QpBcKueeiq)!-KTYC@|YVbaCZ?AbwF)O<~yv@t|0Oi_q4wfEpl>^ zqJ8db;A>FsJ0Ci=Z&WeWVs*Qxi~F{Pr5aJJ1{D{b4?(&@|{hil}AxW{{YfPxl^bX%X`w+t`3cPOBD^IDF*IKr-~K!6D15 zlCZg#liNb&``{lw;6Xav*C(y7e+SfrJ5y%OH*cz~epf1F@N&GwfbCLCWBPO>Tv52o zzP!Kp`lBENgWalx4M|-w>TE-fJ<)x&s2tX%(zv$M%NbadVG%Us8Ir`vu49+=M_Vqh!_k^#G5 zm+*yBt>r|i(CxXXsz?9NpQ(Ho%|?azD$w{+25)zOwRQWV+UA2L~4y3u`b{yi9!*MDi}S&L5PU4Da1r+fcvokx%RG z4=Yrp5f{HaQG6UU4qucmsm56&hSn>Ps9h#wFqv6lv_$ zePHbC9XZ{0y5hX|t6k`x(;1zGz zZ)O|3V1uSI9#{Oc8reZyEgP-N(@R=ARlSO-NSG<<{oHekW_!Qx?yZ4m6uDEH_qVo` zC@7ecOiW(#x2`NS>i*}t1{bNNjvvOqkm#OOo4Ll(&Q1y%n$5o*eviI^f%5EPSsvrg?ae)(L6A-fe(Z+FxEV)6qPO2KVFGrk@HBl~Y>;O!I;|Z6q4?|< zTaf;8Sxs7B1)$IUJN&cGw)bRC@2wwqR4$T`}1c91%=22Tv!|KPBwbrLo>yJE1MMBroC4n z`$nVZV4m9@2N5M#93A9?-^0k6hScA@)M|Dr36A>BJvxS6NOGs^$LI3ic0Lt7+smW7 z2OaTVL^z9cDGO7`cab-k=^6d|GT9wqGMsPoYMJEFMBLQkplBlU`m+)MxEatUPWHxh zFOU3LeL*Geb%}}P<~q{iV)}NrKJVs={t+QMR*N;t^{Gb8M zuaK9c#vl|62>4Y;8xSy>$jEM?{J;BjVWHbZ`3)wCpj>LInAqlUTqV=nHaQYrOf2Z! zzSW3_F)%VZIy#EGYnujgG`Ea0heSqxaB=xkT|EUHDkxYquFm#lQ&Mp7B#4JHbiTO% zI{*w*i}&3}!7P2*zzMqCi6ywftyo&$vlC!ruN)jOou?;=8yT4x3KKsT7mJQladuIz zH(Xx+RYissQ%29ICx?gkf>C~Yy0ZeVAs3hJjjUh6-lC$i^6AB})?18^KVbf~tLcX^ zigmE?RYzWaaB(q}+!&^*b$7 zB?i_440UtL8Ri>>5h94Cngk83MnmEbQiGYy6gBHNj|lIrT}$B)XW#7a68?*d5$Up(Gy`A0dj1o#*p zVg*Kv5tz`NT8$Sv9lyXD4SMo|Mv|Yjpm2=q?w`8N)S`D>Ii^eZ8!v_n=_pqgPd{pTTign<##L+R$$?3uDLm{*|_ zaL1UN+uQMpRDiPlqW*TU+pQFq5cip@U)3F!r`bVEaY%Ede%7$~pzzbx{8 z*wYLnyzbt7VkRL0@?Hze*b-W`8#$eN%DuUiWVxNiEVF@^ze!0*Dk>{)W&IY#{U!_$ z9sFVA01O8K_tW#}LzPeZESY#)sge5H)+A|g@}g>z%cd)CTtvXcqGe@aFcn^+h@B&`s6eT|w8bd+;f zFtz6Sei^9$F-+5`%uPH550j`Ui~$6Qu(2KPZoOjUY&g>O_fR;t)+frmy(43>rDexK zb@AV`oJJ&{{5p;X-D9Ce5*)!GiXp| zzC`_q$aCJ^%JP26_W3v?p0_idI5dj+OGrPJxcKog1$CT=$j=#XizAwG15tZ_5cdKE z3H<5n4o#;=h2Qk9<5E&nruH))){oB0k? z(=i5&1!+X}mg|78QWMS@89L}uti}<{Vy344QR37Y+(Y^Bp|a`=PMs+uYdIn=WlK6N zrGE!?=2#q75@bTh5#duok7HW-6K-z~=5p{Di}U?oQ1x~B&CN?IMm2vZK*yKT;t^mR z?CdlGuoMMScNS=n7MoeH_TXDKBh3)MK%T%1RL z6}UK$xAMMH-`W5lW{vTl_gz7gBVdqn^R~Mm($VIunKZjZF)&(OeTYq9^f*k&%!C_I zD8=w>A9e97rQ$G9!NB#+q}QrB<$BI?kKJ3)!eTU*irty6uMaCr@%#6D@Bs#nlxyMO zh#|;l$|)$|0J3Q3^t8n8d@$|wm`Yk&>31b4lne7qe{P<{&CNB+ZDi1Eh`D|SlnDqq z%RSRFNntSh*LhL!^XFW(vfyDFH8uA?zH93igM`qsLuIqJB9fCMCPqcYZudNbNK!06 zPn3?X&WX0KZ#0cd6{Wzs4w&{z|LczKg>t~o&>ikc!clG-Pg zgVN^#Gd(OF-)3kxyy!TPm66g(BPNknOR%;!pW~jX{>0Ayl3TNJww&STF#gAllZzsS z3}p?CsNi7CK{srr3Bnf?xqL3g7AmnZN%Z||O*o%Rld$Hz;_ zhVk=njgYgk9r>X4$tB)>eHuB2L}cU<#?uYk=8fkzPL>H2aOkn^fTfw;o?j7C#fhz9__-F zQ5F#wS8Z-&=1*s5H(!&2I}L>VIzNAGp1ASr0qVru%TVpV?=*@mTt9t7ZrtXVy1ygR8+e$IzL}Zx@69y=SP0W%-ZIw@=OxLXo!~ zh_XsZPad^AYWClKX}!#`@&9fFn~Q&kaUl=gJlaXvrQksGKY0c3<;jVOinVn~gXdH< zNmfmsDZC%@y{^nho>Neupct`D`{F*>98%gG5)(s2Nfcjs@=SyQ&%Q}4J|SV^v#Bg- z-Ve3qt|?Vp^D_nVM1xBCxCJtj2R>UYYjc!$jMzQ8V!{9l1$egy(l)E|L?a{Fy?9fS zZ}wDA&igYH{Z_w1o~~{TbZn0| z+9QUBu0PN~437Xrs6slJCui!rz+5&?T|NDhPQ;0wAe_lLzeBOk_6Zl)BSL?0BV6-9 z{XS8)HIDMOC0FuEZ|`euLQsXyup@xyu}!d257sok{A~y$&)LtzW<=KnFJ@ixW*Y$F zX)i3i`Iv+|Hnz@#YkDgBGaC>0NUK|Zm7$a%*y1(S2LYvbG@;aL=!*YBw7sR7%m7 zr(4h&Oq0aMHl=ruBqmpzsCpb3O5r1RNw-xN$U#6DX*l6Y0ms1yN5?c4!{)d+JEJyE zDVba@TPfjB$d9rQ<}WHM^ULM7x6krA*844%UZbIAzn>2d9vg$DU+huH!TiJQR{rJR zfw}+h4pYqntM13!l{POLGt-cI3qOU7>JN-V=^cgg!NIS;yiewTrmT#q+Mucy;Qye! z{AXZUsc(;8$U`tY<|rkm;Q9oi5EC!0z`z{gwc-;jEEYDAG|pshEU<%(i;CPw0OJzC zigMnz=uNe16`nraL)n_Fm<4he$OF!R-2?bEwU5KSMjhV}czCL7?)jjJ_k%sumXx3W zr*?V8DlQIeTv|>06K{RRtj?sAv8Sy0-Q(X|1E!Fn#YQJ7nxj1K9;g!p}kgSF4!9Rv>JC z^b{Zmun-05SJrQYlH!ix;1KXdBx7)8ncb)eMOGJU)qeb9J8NP7{5gW9WoMnwCs79Hx6o0x!o)Xg$8;uYZ8 zoGkvz4uACbFev{8v^JJPg@r6!lJ@pBz=#1}&W^BOLdWVKkY|2{9}ezy4_DVZo7oRQ z*8>L@fJ*c&?S2(2!N3A+l(a8>5^zsXK>~+^yL&}U$dLPy^JcP6?xUcFHt&aJ5hFHw zg^UV4c?30@{>E7Bo0H)$Eno)66P+zm)PkjqZ+67t(wp4uYEjI!r9=G&&NGxHJ8tNw zC&tD~`KLad?VuT|n~t*`E{=co@cq%-D+SHbJw)WSc&4E;+3V}AC?Oe|XXl=`FwO^P zkcwn@uk~cPR5fv%xA)i>HdC0_kxwE6G>;uy@Ul9v_#Nq^!^GrPP%AsZUzz`+LRZVV zD$7<|V$IXh(rLUf@A&vIzrfcbr4oxnwh|Fudc3CYRz6yigL*Bt9*ji3%o0EVLTlzbdj)tl@>+7Dx#y)(h#SvDn6XaZXUf9 z>wbIf26qn$F>#}VLwusdd<*(GPGjRpFc!Ndj<`f@Dj^236r(mKmVmc{7!0rU<@Y}Y z1SBR-=Im5))PK(9aWwztQ|fW^UumOeWp{Vm6B~BB#8HY$`;t0TXaG~g5Uh_DZ z2%Ep0o(i5~iP=|hVt*_Neq3&8t&6-Qjde<-=`#8??$UVgTUyyWJsW?Dz28xR7Jc)L&7jQ}Q3XS|Wn5 zAUBr{V4a5^(bzolY09$=pacNC5T}~je2XXGwxdi;LxPV_q&1Q#D5dqYhBB#0NGxX) zKkUKL4SilC_cB_lcv$aX#7v!=kk_Tr+xZ8k>*d|uw#0S${`BNAM0gTEeu#+yh>-De zW%FrHZ;7^_d}?_r_a92Ew@o52-O#8(5X<7}+_Q%Jih=KBCQ@teh26ORy0959(vX@7n7#Lv?I8%SMGgZg#@S!mO#m*!ntYB7w=9*j9 z?|qXh5uQyqWWC%O@YVh6Q+}wiJ6CdpL~|yMQ<_z_R})y z(5oGCoaH);2hkB25d`FN0?igrHKeykJN)JpGPbVWMoH^{>kW%UXD6p$BO?T0{00gJ zus$;I;LB?0>2Teb{58}eYkDCTydc(#V;afVoQ|=EKvd0;0thOzj`-{LD7~|5^aj@afu| z{0H{-11WyeanH%`ArKO}o?{|lKaEKXQ?G#Sgh~-XVIg*AX8+#)SNBs*0Jl{y0U+ji zc;!*?jGtlZqs`H2-28eN{Sv6<5QOj*N!LdVC%@h{Ubv>7z1 zk>eK-8p;|*gx3uW&8{0mLgc5c1M(yfnY2xuw`1X?Jil=XHhQMwC%Gor6x#v=A@sU> zoAL?(jazJuSTY8cAo;uGm6V*WAl>{WqJ63AN|}86Z_!1ZJ4#Q$GEZvO#co$UplM5k zUW2;MyhB}Sx##FnUyH{(b_PM(EdjRsI=N%aDU`TRoGCjBPtEBGZ z&B^AlfV1<%VogVxZ>?^&k`YF=)6a~5q(k3oVG$cgiR{;=De>oIJ|Z+-CJPmWEhQyQ zZ*^ObOHG|c1JW7jHDYU6!L`Ww-R18dk=sR-Ge5o7FyXZ?y!8N;51Wmni)-}?|9)~A z8M=~BXPa3j?<7M**ES^NQ{&ga&NkNQW*S4I@bvZHzhv5V=ay=8&r*0Yc>mzwpurKM zAN2TFDel|GH_~4M9ZNK_@4ZWumR~31?OwKHy1W1kBsou$QCkA9geW2&p7|nag|=F7 z`KXhNhJwNZeK5;q6wCYc=lxNDwT@nuO)RdnpnPxAO~9AP`jKDnYiIkN(Gaoqf-a}! zPaL^aReO!p)b&i%H1$+MA}FiWc=D*1 z7f&_0If6Q8Sg63*7}py#8_XQNX0^}44~&1XP`xn865K!7NSyu3*V$#Y&Q3%);q1>( z%Dnjs==-G{dw*>#7x>#0$!aXdPaAByT3n#(ekb|TV1S@pUq2_p;@vx4)w*xP%)GqK zdf}y3xw&t2!@>6Z{T_gEJF5-5sOxN*=W~&qobAu(VA)+P zEU=$nfBjxk+c6&wTx02_3)31OM znwW+9=uvrYt+i6j5~8?ReoM>A=3rc!01*ivU{GGrpsUFLVlFMMZm67kN#D=HcIomX z9H^V?4;}KZ=ZFQvu_%{z!?wr${QM*%2%Qh+coI&XG_}#5)-|_i9MgMY$jf7P^p)&| zRO38-3cDP`u8|fl$34w5&=^+f$)~b!pLi($95h7@EH3Sw(=8AUD$->ta&vq^9eNZ_ z#Iab=p&Z;hFHmivvTgPIMU`%e4UzckFuXBk<{~+N&hK?H6uhn zsn*cQ4UM*{tgypmLfF2A-*jUNKd!A>dWJ=QZnwFo1v+HFB6fFIn`7ydEl_Syd7AM-7Cj$M1x>A$O@9ud2O5QRok63mOTvQyK*Wl814 zKtxt`vGo<>xi6`?95T|2%F6nZwqvILjhd;sxvpmY4%|h+mSx!Q?Cm$EqepLd^^kQr ztSl+Hpr8TI^;A6w62ms)iFhV{8_>ql9D>x#{j`|h@1Atu4Cfp6IxCvVx^1aX$UMY* zi&4yle?HPpS?jicbOgNEyPCH5SBsv`Sa)Bzw%?_Zqw7Psp)EYD_09xprwMyjgPfy>Htpx zRNy;)x7>x+CYJ3i{|CGutTChf)JAfVHipU0PAx=4I-!}g-+WxC@cn36O1{Fj-}2Mu zu%W5iH?wvUZo9Ab^|iIHR#xG?h=c@!G`EwHrdO?B%UZrDOD0GAJR$qZBVu7ut{?U7 z^|DTvLWT)IbN~%)Zoc)|wEw}|@2KCWCiVwX;^1Gqy z^Aaw-(h}i&038-`>a|#vc=$B#hbl|QcchIC!TT5s%}9W0NmX0qoS@#H_1>F4>1cK? z(x`CItGSPkPr-s&ud$MArIBB>Iz-ZhLF6kcS_SrA>jPbm zkm8Za5372c>2b{SNX-C1KR$U91tf4s#}i=i5}=zE(y!Xf{OnZ9yRVoz$G}YHc}90P zzL%(}gjL&^3=%aVOXrG?@Q8#ZyXe@l9DUd=2mxh|0}*j;ecAiYujri(u@dGQyQ61EZA{-S5G_QGefw{_DsoBT>K&u!Rw8c@57QuuB~5mD|M|I z*w`?!?;|7L-m1R&21HTJZfo`zjk-)(!_4oddZH?biPxN+#hrse#1B+D00Q5;_eXA{ z{EMye?QILIscvM1=|ZFM&1F5j=&cs@T1;ivZDzqyb6k=yE|Fn*^z`2$AVCzfDCkO$ zIuIXzGx{0NFYq-xQ-DWFDLAxrK5urq#{CqNp3dmQE~gPtGWj!~Vu|XvLmljhi)$=& zNK5q{82OhV`5PL-Rw+UwqHp>|gq%P)S*liMYv%mUv*|;zG8#Jig=brOx-KkPA)yCm z!EmF{??X1m4*kcEF>+=P!`8p8`}SEo*}ojK{wwR|W=FoCNey&hyYT#YrXZF&c>A1b z!GAC^E>4z~wuXgEkatctO~*e)=RHcJUPb!3E>dE)wp`fH=( z;>_5d=`sEf>bo^v!1giHh+?vn5AFr(tBQ05&s>dg-0|8cxn=%To)p%sYNNK z_i8BRbau{gf0RG3l=ZrH1t7k9`E!eH-^Gt7YYuKZI}3Mk=$m_a83;=i$OJAmSa&Wx^xpv6Ym;@w_dP3sdOjb^b*T5t+oo|Xe`Lh~| zLBwK#tzJ=TTl+D*l^+LZX@&!Hd5lW8Exok7)&0zJd2;b1^lz?brHN)f^lWZy8^Zt< zBIS<`3rU%(e5-9=qg{~n^LX86IHSeTEb*@W?$e-zCx70(wkiQng4^408pUKTTVK?U zj-?a(6Y9IkinST7>|=QhULO0fP=cp4iRc~{VvmS}3uOPC(jLsk(7o)vTD()Qvk9xN zzT}j}nQIO}LT531q+LI=P(EG5hB1k9vPsEL+j*bjEoJwkE-~Aun zLjbQwrU1r)){(5T3Y1NrUSTV%<89MT&2a{NE(Zhs{ja#VfS?Zcpe6_~z|F`?O>^0r z!s7doEgh$=n4(Su5_>_?3Z2@$Jz&}slaS2XEX;j8vpm1zTG>fFTm&x^5|Zo1XJ`cj zE-$?^`L#HMo>L(yDi)XIFfGPwYA%gY*>NYnE)589-L^#FPFd*06^9m6$Wpwn7il6WO%fIVUq&Gf2aY$nI{Ch3z<~BD56Q#lwybc0O z8-ejS!kiL`ul)qvAE7?sDqB#VMjq^qA>exK+2$?ta}u!Jml+0oGr03DdCpdvI!~7E zxGU%J;sf9y>fA6m^Xp#p^Y-~8Qm7F(s z+-Zr3(tyb*DJE82TKXTg9CpZRPLaPSe}v*rHK{blR*xE*JV2<>z6ZGhf`HgIus!?- zg1-3p&+%yyk>{=i1h17?&1N|xa&tp|SM{SQ)W+M)?p)eb1|UsYOUbOP%gPg_(W&D= z_SPe}-4<}pfO9mh}zgBNxV!T04NePY$YUN)&fLBgN*rZ1uFALo-mz^e`e7&M-b7p zIF-SE2#3s)^G6eb~8{~kSiCSgVm zw`=8FB1FU|Yy^faE@4N{7b`llf?)=Hc`3oDr+ai+-`eCxnQn5~9e@sLI|h*Q1?=i_ zF+U6fY3Xtuni?0|xXs~~!&w)LtvAxpQF3v)x@H%n+Ad_P6kT#+H97?RIi|9@bi%=> zWC*u0bvD}^TH1M3K3H@-SwXb>H0P^8<=d-PL!h@#qoGL(4ln+0_J#45iZZ+4!lFZ*kK&6$$Y zJN%B{>!*vo@cZ}NVf9AeLt!K@%bAG!_s6&Ei`ui(_pTlqZEqTs>~45DZ43Ea@Ze{U zeHZS@=y5zq&LEY=StkNm}b*kJO!i#(sHKRWa3*%ab& zbFk&$&`gW8>wLhVs~L7xC6Fwqsp+`@_kB9@quy4RLqLxsM92I8z%_!phLHt!7!dQW-7X2AbOlBI`ohSOQ;dp;{O#AT#RWmPz-$EF zRTCJff|6qvq9l9@WMODQPw(n(wEDxHGrS81nkQ4N(8`LVJQlk?ma3;>l%gZmb3KI4kAme|Dy+#-k{Mw8s;{uW#OH2G8k2 z5yVgP4pb<3z84EBMI!~WUOMWej1@b4B0E!~*84N@K*W%YDwK@!cl+YxTvbXq{^Qgg#!=G%niqHa5fmTep=PM#U#EIoO>|x5UB{j-$qP-p1A| z?8x$ks1i;PazZ=kDX6cE4Le(p(c+h?&sOOO8+GL}!}n*Elzn@m07^JFM*$=$tyllM zG7`$zidmgg$;&%v_J8uogzmqdZRk|4!-!j3dx6*gd%#+(t3*bRmPWC2aQ`Z>xGe1I zyfrpauiD@q!qyfT$G~$iNR(fMZYzJVARdNyblROKx%g=KoHLGQb&AzLD9={Ev5A}o z6UItx*eNMU%F11V7<^7!BUMOj^$~^Cqyn8a#^*8oXV zhXiqqiY=fD2h&VF1&623CDhe>sO6*6bZmd%;ET$j!Az!=KsGU+stvqi1_tSMr|@9| znDwOCk9y+AWc(Kqtu7q;V<^2mJwa~XV{V0RD|xVh?e-gNAQEMrqb{CHh;lG3&&|<4 zfE8HfYu0)%;uvD5nv?cnAWw$3fi0%5Rnk z2^XRhBlk!1egtxawl-Jkw@;3Zx$_#{mzIgmAgR$bv6P`vz{HYI6(iz&AH-Jw-*FJ+xOK21c9IpFf|2F**YSMua&hXVpA^Nn-b)!zY$pYMb5jy z!KqwDSO3I4M`E$rI187%q?KY!OnN(nr*0v}1CLRgLF@CHY**=URmo^-UX$C&0;Oc7 zkh`j;zSY0QHZYTdDIt+@YwlT#i}3>gTwBDJ`POch0o!c#^beca$tW9VzywZ%XGepC zC-$AiLmC>)99ewB;LX(@*kLE)O;-3dxvAM_+1qzMv0a3MOt)FJ1}yFdY=GAIcNjn$ zq}{+UI)Nc2&1%A;?WN`U2fseb5ApI8i-`Z+4nlX1clgq;re7teL8W0z2{P=}_{#eLFSvoawO`%-ITfoaE%&cTo9U0-Jaq z6C=Rb1rW>8n9J1q`urZq2vKBRqgXXHy+e2p1Yu(f8Dn~OPO3u#{$*DCnaj*=zC|<( zt*jak=1ESNq+FA|CWeL8Uky>@c-fBKarC2 zM98*K0r!~4KNbUo^o-G_SJ>D~`!}LNQ(v9{R^zap)$l%48QH=j7@&K2KmBJ7;MLAb^zCP#>3 zdaJ%a#rpo=0kM@;a`JO(iD;x2Yu26L#LH=1z?oN4O6EZ4;X!@aG1mlNiJP00Vo!q& z{1da@(l1)T9RTF7fiqd|anLK1UQCJ^m!s#k@9ER-RvdYqMZ_M!UYZDBV{_-Kdt=b` z3eTF8S`p7o+H#Q;6md--Y$RTPyI1o=^J9^OT-t`~TCg0r5kbX1IB36$jEn*Fc z{ejNx=Rti(e{%ApBcHDVdwXCQ+5Nq|{ZJB`nWbJVyCx~=PgTry^{nrSp>QzxW>$;x zm{=2Hkgm_||LE&g>%}DXd=HCGWC{&05Arq@oBB!wAc0}hxmK+P&KD5P0Iw$~yno%= z&IKlpfl3)dQ;VRGz{Vb4SzX>m?_h&x83u~r&Z0=8d;Nf!8MyM4dB=}`SLMm4eI~T0 z_`Sp|dEUitA(D~;$FP&rTe8dlX6D8latH=&SOmR^(RQ!cuYV5@Yq6-^omzDLEL86Y z5zaf1%w$01PW5!7s}g|~^S56(!&&HEbb`ahq}UX4X@`5^Up;cN5lBe5c>sPX8TqXX zk(L(RpC=o_vgk82#5Oj}%*=RU&X7x#nRH+GM0UzUb_aZ7?=CDeljl(7hFT%3XlZfMKGbC*75ecB z(V0-@&%xUOls0(z)0LG)-L=a6@O}iof7o(L;NUqtCZXFz#lRT-!rbgEs*1z=q5EVL z;oIu+rL(Imf=}%$g)E7d4+u+Z{$cokc5tCMmO;aQnp1@0Q&HK*#SXh@mgmoxlJLt@ zwQ8#!-%bCPPpdYQw^3_h=Nxjq)&1Uu=zQ_{c2#m9GvaLvoy0fjKvd-AZNN0_{7wc@ zG#h-tD5SS*lP0FD&UEGFn3xENhz}m19*Wy8JV-)ExV=qgxfe%mxF~4HEv4||bQ^B= zxfT?CeHgX`qdp>iga9itNHn7OZLpfw&UCq3MgQXmR~Ek;s4QUg425(-K>-Z)!7Kw~ z+wJ9LLlYDKi84crhl+~J$q__aV82XQWE$2)>{eAvP*EYL3efq2iRqKU=Y3jm#MSq+ z(;tFKF(+qkx-vWOI7zk86NLuQ2-s1wm4BuE}rVYfe?vyJ6V<@-)Gaao$5(xcc_Hg} zU-#`>pwi92<%AgmBM6_fg{`arN3rlVplY>B7YHnSd(~zbz{0G28yyE`o&0~xagO+U%BDpHa4Se>N`1QS4334%_#_gO|?Z60NlYbzb9yyeKo9y z--h;pFr6a|A`7Z=b2a=>=)EgDEXIFnm3tT(N+J0Q&lWLVZV21N^5Tg4_|NEOv8KBs}yqPQV^?1sVUu zfoqP4=(OV>K?KJGLX|!x&$ESvsn1A=C`KdCb0|X0y8iJ2^}9jfA|of z8zbqdsijp_-p6Zwha7E|U4-H+w(H$J;{z$WOfHaz1IkVK$~Tj4l~z`QgPHWH6%}Kn zv#V~*gB~lHQJb1#+3Bd&JMT`~`+gEK*UWfRMyRUJlp>HOWF*#9VY?8WOwiPf?KNf) zN9`sf6D7l8ZY*kK6rZI}Pss1E*8A-f;^7=QUrXwvy9J+1ud8CMS2GP2x~t3>>M}?e z5@M*cQKVEpP|^uz{XL+1TohYFMb-HP+-;DIS6|u@cz_D2gX0ie2m#RT&!DpC2b!wU}wBY@Q8}*eK;t}|$d$SCYOkUUAHj8?brw1endd#@o-kIIqpqK}%4%;gv8xZqD7k&#&HY;~z zeU9>)us7d8WupxXz#P$_;^JZlBJ8KqI%%Ijw{fyCGutlvB2hj1L5Yvgltk~)Wf?Uy zz68c2dfCxY6EpS7;qYhdj?~**pjq$4qosvVws^}oS}7ov?u(0M{&%9O8v!bZ58(R^oWvx5+_Z-HTo9I)MU&G+F?sOGo-k=pGao|q z803lmm)s|N-$vvo6(`U83F8|37xgUU-uu z{UHo`QrSDwxa=IT#d@(uVY%Y$>5)uC zm|qR+z(90j;K&=)*fLUnR9jmXf~|$OTM9--24*lOMgXhRXiN+PDYLvHGdX)5r<~f@ z$V(%ZpDU9(4Nzb~3m-*>u5++(W9jq=!RO-KUJE=2%RAbfc(3j4r#FH2a0p~Rncw99 z^&#LigsP4Y{1h8Yj?;N zoGX<7FZ(TuOb9^12h+7d1!eS_Y?u0Z${0Vop@xy8hESxx`<W>+p5=5dw?NhYT=Ffd*tfgH`*-d;&b=^;8g%>J2YG4W9-DXTRJ zc(A>$RxX_p8a4@uI|>tCc&9=NE}VLh-3;>` zCJ1HOt!fAT7euog7#ZD1=n4wU_E#}pwIamf76F2@!HL=08p7+>J}mENI)t}S$H%fu zXg$}Eqtob(&8TN{1Fpf`UquBh+jr=K9qKc#{;@Zz+0#hQ@Bz*sJ3`Y@JLJ& zawse;sz2X{`Y1RA-21i*-+n^gUhjZ^Dq(C~P6gxd&+B!$xp+@$Apcsg?u;Lp0$-nn z-Sd#P1o+ z3y%Ep)q{mo0!UbU9Yq(PAb>_ls2z%M3row;Bd5}p@91J;2B%xRyt);Jpan29`wK^; zM%lmaka}wczdW@6ZoTPe2y$`|Gcoc8x-{7&=;aVJwZX7)aUmt^7l{0VDklB`5z(gy zhPG7(HuK;$@1Gel07^+zk8zErj12H8=`~<*6iyPxr~`fBkzHd`j%oklf} zFU&a8xLz`JZ}zqB==n`g2S)_t88`ia)Xu9zefgO&mJ30QNx`#Cpku|PXyrgChm{{P z#^uia=|=9;U7Blat1t*i+I&n*(qB3Fn8faa&DRgYnEvj={O8xN==cXv=yMm7@#5g& zO%})|0YessS0Ow6$#Q1Vxkm5pYeKUpGwRsOD@Gd__1b`D2i27)zp~1oBXV{Qq>EH6 zGGI)YTi!R||2Sa#JMtMJB%|1!(KYI7YUQ{&LN)@09XA4mlU)A&UT0B&0+FvrfBx`z zUDg5OvRGklR`+YDY!V%BC#d+ikD6@S&40lL4kWqrbkxXQfe(o?GO(V7cwJ%QQl;~o z)r_?ARO({!ifCyqKQ%O>sH-nj2}OF;elP)Z^^=Oujncxw#l)2Ej& zzxh7|71jM|amlX#;BVQ+k}v|;gPf9h(@Jpxi=$JEbis()cl{h@W@u!C-b%(h7MAg- zzbnaw?oJrw;5>(~v$@qAIE47Y)lRez!U$zH3H00X1hMYJ1Zs4&(NWUXkIrCC3XnEa z)^*ko85ujQL|#xmd@uQDFD0kpFT7gsBO-2owBeA6U}0tDaXm7ahPMK%8(XHJxGpi1 zE<%uB9XrF@(3`6O67_PQb|DxA=1GQc4qrTe93A~Fjs}KYh14ddF!JZ&8OR75${77j zzrXPOT$9t}7!vI1S^Q2hH266_KA?_+ zdnXffbAw;f)Auhde5}k)d+B=hw*mqPfV1468X6kh@f;4}8Y!7j-M1jAB;Bw5iM%&sWjzHN38Z|wW_n&5|4X$LmecNNv# z4#n>8qdife1&EDZTUP3u8aoO}pfAzka&UTqfnho3--c(a7DY(R8(&^Q|3T+#s!x@+ z4p$%trlqwei9&>g7{ul6O(O!Zr}GCgjHm|u8$M`iLKn8kQ9TNo8hl#6;k67JAt5}GSO4-%W%COu z7%R$=`@-;}69Pb7?)c2jjfEp1m2hRH+A_foIrKYSzoMxP1_y_^IRX%p4`;s|0vpbX z>PshA$!Q1+6%vrhn3%4{uXA&hb;G;GmMxPssz&PR6*6&dw}I^kp-u3Z?Z?qzz!+#_ zP)Z@NhE*cm$H2LNW3c*5P^sng0uHXB1+Cn#OCA}SMhEfp>3(zuyt(-R{fGz<22)a^ zvYXqsAD?c!3}+GDo|mY>bwC{(iXwaB=m?5QW@e}TP_)CBwYATXkUC2+C?JN8M)A4p zZ>3L{69xr}{=OP=JUj_R*I}0A4q4X|Eu)l@&~Q3usb*xlxe_lYhq$TR77NJ zjEapl=c`A_@4IQfU7zAHrf{KGPA<}1s1(7zA!tS@baWqn+q<~PN zHGbr~ynNcn0+^lN@whL2U)|!uBP=%L7P3-?GjGaEo2!IB2HQS|4CY_IoPbRrhy7GX zhu1Ut^wj*q0UH-2^w24_-xY@8KYWgkzB8Bd>z9;5B?VPLAO+5T6UXzY#OA*(&b^lV%xnw#6`YEOK;*uR6AcJG7)Tn*jy zz5VUJr@SAp{eIgTVqlk)#3XBWb?Lr+c%I8ndd*dya3o-o$m1HFUy!ozcG5eak)H7i zyrv@~N2jOx-(HVR!ipKJf@|y2@)6)11b%5_OnQ3n(7~*?Ws@!wKq@MkPX0|+bQ>{h zyje0<|35UHWmHycyMF)0CE-5MLMi7ur2@wzxkWNYI zJoo;_IQ-dr_(NgwuIIU9&THmF0xT5WK*3K;PL6NnHGVfXUG2C7%hcE)lwZ^LBP2>n z-dW0GVuF{?-=B_2TTf4((3KfITGG;j$C1{YHc9N#4X5P>xgC+{*$2q2tnBeu4N9DR>oo2NF_L)i#eUOl<5q z0ArDqw6gFrfj;gdEt2ETOe1NpnhGro%Nn-xhGI?iV*kMP4^l$@LJ*8$}fd7nhHu8=ff?ZJ8dl*#POcI$fpA?r$nfevfRXB{|x z1Mkx04I~Uq*3V8u5W_ia9z2^+0Fa;b-+~$70mtJ@;B^OdjyZwVyzKZmml0}M7{n|& z?S9*t_|(#p32G>`5J@)8H*W-BZHq%L;K?yc;bV4|1oA-0voJFo9334VegVxo1ee3m z?2hp}J_vw4I-2DMtP&Sk1)80Ant}EMgK6#rgYw`hqv;SX*mcs;iMRY2u%6pEFiPi7 z_)#$@;No)H7c(%`5GQkeMhiCPZ~`t9*`2y$4Hdl+7S_U!0JBqT8aUO#H;+%ikBK># zp%Xy4mcTgmCJeQ!YhXH6RTaPjTjq+A^x~p<$`Y%IzAuA!`d+b7PJ)1c#af z@&85O>+!pI3HF+4xmd=)^6``&H)Gg5Jhs0I-!kNz(X*-VHjt+PPG z#!gLtz-Fkb)%3mZ9tK8reSLXZnI~+&t%s7Qqhdm`D5R9_!%9oDvgVraR-9~|6*&U>=O-^i-&&fz~LwI1d|?^7IicRJQA z2sPdY7%dKFiAHNRDl#%1gP1OPR@T``I%a1l)IEiAKzQ}@1Bh^uyk!dbFPST3FFPJ{zvuBbpr8PssE--^6@^17uSES}8Ng#B zPsSflN-oD~G9h!N*OkO{_x{%#KW-Hlsp#02=T2MV;`n$X7Z=?>^yTFZ#P9m-N?>!H z83;|#T3V6JR#Dp=ZOFc8JyQB;U7@QjxL=wtzTB6PM}y?Jjzd7m0r*>;M`?p?UgQwN zC>0%9QD*tH>kV%C7b#+r@L3&5%aw&sNPmCv1H6IKGF5I~DS4dFI+@S4c;zby^=K(Q z0uhC>kcs^CDWs$-DFOfM?VoH0ITB+NXZJCxeIqOqNe5qOYw&f6Q-x9!C^ljr#rXbg$`ZA*Bcs8ES|XT%nePA zE00Y&;SnZZZL_U~)^Mn*wzngcl;AUzCvkQl1$oJdXPFi!1XAPc z*&Y`?dHU2a-mtMlIGVC=sRz>Yd=Wf0y~Rq3Dokw5%p1Q{t_KO!i{$r@ty-i^P0@4K zz6|i1d;^co#;=En$VgbxGpcy+g0ryET7h16;kWLVxouB4fmXI|V%@Q6ESf?9DR0)~ zPoifW$`xf~8>>C<9GC6mQqYi*-@S)Tghs_n5u}O=5WU;{slmhyJlXm8t8Q~Fi7B|% zz1#}sYNmuzXKUE@4oaGk!_(rK#%=W`D?Yxdi9dsA{h8yF@o^HDz~0{b50`z0%?Pm^ z);Zk5gK_)fXvZdXPdDPk-n=1r8xaEP;7Z*uJWrnVzg3$A&DSGNli9C6*<3JQ$*~2ItETD zpcKntzkW^CIb9tZ>YMgRN7ukAYTx$nuYj{N?~@aox;l5L0brKNq*38{SO}SQ0z#(u zMa42se%*`$iqBo(@E;^HOT| z6ZrfE8IggFg>@ILYs^+bU43tQ8dGS#Kr#T@NYDfvb4?SM%LNoEU@>c}cmBxvFb6sr zpbuz`W<%yJKb0`0vNCwDeRt;|Yfwi=-#lEcGz7I#9zK?fET8#=lKb`6g%f0HJz)})!v^->njBYpp|mvk8lngX&(+sP-`AvQ zY16V`2L+`HYWx{04ex3KBEVSK!*f?AZ0sl)cT{LMj&yYy{i-pB@e%asrAgJ*&Hnyl z9RV=F030I3Z6YBdF%w#VyBYEfVASBrwNT24gZUI2W3$;b4&Y?adO^MwE&Pm1%6C|a z#33E;h5NIoSBq%(LFbQ*CaMgUIt1{K0Ts<_bCdVc$Ym!TaN8h1;V6i|yu?2T|x*6!3dxo$n7bG~{y%AGkN| zsHtUeV5q8&`P_%q)I8i_y+ubS_}{@rl=;}~Y-VFiDYwPg5Yx|5HnaJb3OF$5nlUyu zUdl%^`X+tAW+nRK0%THqd&F2JCCoGG%pjmGjq|fRfhA987kDBB1-pCSxVh<)3g6Un zL9h&^NXM7m-93r08!5933hGMEtPF6LlL&Buu%p_ch}ovSr}GW~;#_RLrK8}*^(xqe zyC@-;2~~vdgAaOTrOE)=;-5)F#cuNXKiYIEpYr(l@%YCw(1io$cl}!$?Z-mG4~a)W z+=AF91g&J`XUMnl^t=L@+qsf7U{ zJ^>skBOmPk5(5um(GM227hH67@aQR?x1SyCAJu)IxCdW2z?$@QwUe{B!|< zR>mwNA#u*20QAl8cVe#J((w>ZP6E%uTgcL~zca6WR!1)S^fv}#Y@+*MnesWvySbda za^*jOonIzJU!N-f(*U3cjW|sem6Q(VzPOa@1jJCRhKFjF=`>a3y!36<3_kTqh=XZ0 zF&8?UUi(0p+222un3z?y$OtSf5Ir&Hut>&wRP=_C+=#og?Vtw8)?f zIuLsKd}OqZfrOI5K}zqlj+q$&TH22%XM?ZflL~6zhe?Zw_%ShPu&@c|=zjUzE$(g; ze*2YIY1DjpF1p=1^T z0rv+Fbnx&ljy1L>Bk1TthYEInzk2B#j9Y|+Y`USiw!okut)3kEgdxQ2SK9}~OkEg& zm)a44Fa(O3Tt;Xp=qgCQQz?bubjy$y!4;I-u{lQlR$E(;n|u5EIc52J>AbIci{{!d zPRFgg{QTCUqDV@$>N01TT-@YxvM}h}+}fHMFXVc`X#(kZrx{RJdO=KuFfML#Fe)Hh z_Nnvoatcv-NXN$!`bGf`>(31D*5>GG5MhT?{F~B+sKo!#T_MrZ@NR>ZSf!r-_wQ(f zgT23g|Niys@y~DE7niiclxb)lA}Xy43EMTvz_;l>*GhX?LDuX9?|8 z7WZ>-b?1r!)PH71znY2(i<~?)wY?9GmG#?!fB;ZwUhX`9VAJceq1fHK^oz63Cg$ck zttJTQt}t>U7H~Ax#cuNm;kAiP4Tbfozkhrgv$IZSWW-Q65J_GB=Fnf?e}nw?FZzFL zXW;#^@huKKgp_0!mf?yLj+%y>{&vUGmnsjvy)QrOgvG|Ha&q3iTURF{2YZ~(F48)P zD?Nf44=7EQS)cgE;YCK~7vGudLQRN|N9eR-Qd840&@wPcy_r$fdX%0{EPNB= ze>%rOy~bp(@NfRFmYPO;6|Z zdIMDFkFa7aFXQV9S?&%?Zum3+W%u>{HMLUpIUrj?{|ZxhX1yK2zTG25m6DJ+1X7h8c^7u zKT~mX!hxgu-$dvcyMctnrkeUwy2o>;N8;vBEiK0yJlATuHI+J6UMjp2F`&M8uSBa% z76YRqQPoJs@Xf>YbeQGSN?~eiK8L}L)%hU@A}EN(O8p1;$zJ-`le9R#>X=O8wj@qV z&2e}S*lAbecr@JJ^M4y-NY|G>mgKoL9Io77LCW<-5KIKGKm!7));(CD@pfazk%OsSTRUEIVj?pf z=y11ZKUe1DP5Fh1;TJ5a>fG?GQqO7lB2hh}kRBkwe;--T<2$(ELNpQ~GXepZqH}$n z-4#9UM`r?_Dq!P4R|dIBD!aYdWqMJ+8_mw`WwWDScs%pqao)X)U}1rMrWo?mr`e%< ziAh$|c^{EwWWaW5W+pC~r`^a8p2^~3d}bZ#q$GGJA3f62(n2*fgpY3+M%D{hHRwq7 z$p~L5CZ&d2&!yIh-}ZU7pys4xzZM`M0NK-PalyAp0rJF>S$;gX&$sMCjT7?X<9rYM68L`e@_OIA zN#()L;K`N3O|GtPhZxk(PUXKl2Yr-R9%obCM1cy-Z`)?!oU68`PR7mARB^ubVR3+)^11*fz>h+&VL3O45Tjl=^guD& zqztzPi_tQK-K#x*>}+D9uAUqndw*gw_Y(#yQDGs?3lDh~CMM70*WR1Ta5DY5n*PI^ zUD?s{oPNpRCo8jNtgfD(wfR#@^11Glg8*RL+ESB|FK&b$+WSqYK4!0;O~gl0`9ZJO zJoEQH^^4XiJn*L-0lnAT+gnr=b7W+?mFW7&#%!7mZ+&$~o&@-7KdFq3gNz4} zczpEWE{a2bz5qP~);nWk49qPH3pk{9euHg#Wfh~RmzCoAw1$r7m5)FIdAWh)fza?EL|7hW7mNBmE=dj*xXea2{Pk4VH6UQ0g9GDodRMjwK zUfXwfr*Aam9UQ2=ehuO^GWP1HYHEm1M#dx#4rT*`IIvBxtv%@Icw=Zd$-&Y2>J=SL zC&5Fel9G59<}!5+qLFVavRSi++0#Y(_l&CB7oRyj9vb?2a~R?Lkx{!XlWlxqFlq1J zJ&LvU2v%w9ptJGD=UV<3duK#1|ACW>A=Z;cn|j$rAIs@z=@8 z@tZdPOX%rS4)EWFmtM+ z<080R_lx?a%I1JjsTAUcH``YQayGUWOr$+_ogz&{j#)!iZm-4#s zF%@eHg6A@V2<;Ogp(Fzx@xxb-9#ON!oSj*tB7j{aPWNOwk{})lQI?3G-17V>6C?BA z247Hpe*AKIc0YwlSqaa^{I%tYhL2(PORYz~dU|@ng(etm7q7G)y)@Lxlru9c@%P7$ zQ2SK!hV^lQvW^ZbwG#bfP2|>1^{?5wruXV`eQrla;Xs9i2C^b~DYN#D&+_PW=2w(Neie^s_cu~28gdp_w zyF&IGV`Dg$2^(#)gKW;ah2)(ZqARQ=-{l9_*eBQ6@0@Z931#)v417ymv{gMi=A5=% zy4EKm3}0P+BqNQkrjBaM=M@>HwX~E8(x>KN0)pJKznqwaKJt;U8pfr2{J8voU!e2& zPZ?8QPRepBAr3XJ+f;5Bj>-?B0+&V`fC{RtJgqR>J1>W- zP3KC6ySS2azWQTEn>QC5M`Y;dS%sg~*2--crO+>NS!&k!zKkz=ADxK5y8f`TO;Pq9 z(#rO4!(cCzPoL^hUhK{0dS6RR1a%pzMUfD^65sj#qxOCMZ6W=*z8-~|dVKMdxz9?K zFNB5Ps&Zuxk7#|pF`YY^)*PRr$G~tu+b^ivUpDGf)^;N^uw$PTmxjb#tp`_SDO51l zfjHvB2AjF&)x|}-g?6Mk+*N<1ECPZ}bq#G9>1Rx+Nc}_qazkYza!M_1H5wrqznST-q@fM?SnLWzY#A&p6$69+N&Yc0&w3lTN8c@W zqJol!V{&VYX?%Q%UZG*d$(@Tk%?lIL^k;=k3M)o$uYUrA(c!zl^K)d9-sDI~{R4hq zg|mcuwtrr|9y}}{VP^A@$k)=bG&Sz2tJ0*D{WCGBq!IGS72lbMs9-H4{Uuj^acz^z=1lO@DM0_1uJ zzBPGyOPf6jNlE0b1`7)Sf!o_}%zaTA%>sV+8ptFB`0M8x0hJe*)YB~;63n4hAUyKk zsktCOzwEYP&FYAj{N!I#Q`fYmy100G0;E2Y@_3H4z9DaJ{_OL1sgF`ZT%xtKwAzic z*$H5Z|EbpNH;cYv-9b(xra?S<)adVTeYE}F{^$t+{>ZV7j5M_ybKVkJ{v46jovSOX zlfb^XXnB`1)9TKsq4wC#ZSuFa+N2JuH;KBt089dC19pBNtY^FaL-kB2x>d#|#Mk*$ zmKoifjN|Q6XAzP~R;KeyURAX&uhV5&Qd(O7H;)P4!RabGCkKS8SQZsf^PLsu8N$%M ztXn+4Q1lJSgKYN5KBC!KMTQ}Yu3xpvcz9oNDfQUCm*!B_)wMHax*z5jM9V{iUO!YZ z{sWJAdS%L6C^xrECS_qgq*SBYmA$i5XuFJ!!fS0+C0?*ucQx9;Kcj z>xHh7zArMGzF}T*@!93-(AU?mdIkscjHF!M{CX}%+ygN%;5XY2Q>ysv7a4W$!ctR- z6B9v;(*6=+8Po`}tGT{@f;bIiG@fxGPri#26yHajfsHorElkO@t7-W7h!I&YO1(O) zQL2EvUnCE@wp3#8OP1ItJUq#JF6Xk?&0ma0$lCt2peSlciQipW&4p0Rztffob#;sv z?hCX0^xK1{cR~VMp7;Kbx84)+O|7)Bq&ReQgNhdU`}eUQ7G@8Hef^N`-AlDHGQx0k z+cX|JIpiX~Ki1rgyfO}@h_AY_x&(^JuH;m5--+jN+o zo@oPvOTkJXB?nFlOR(K(*mlwBTdXG%=;_Cbrb*`AayeJ|tFem@+ z+dos=pgJi}!7lJ{@hd4w5DRH;b#vgOdRfujyvlr;;;;@$9tX=1CSoy&kB;@R1a_Nj z@$rE|3>{7hkLRYwFJg|+w_#382AD!G5W19Lwz^NYVKp`7(r3$WL+Lqzul-8eHAOI>k+%X0b%#T1H2?(qn{l59~cTR8`mOP7HZ;>3gRJYN!b8ir!T_X{W`+)u8 z#k+UyeNu@-*T4Ivi%rbZlL<$%rEYInjMo^TXi6C=m%_!wFng)0JyuP=)K<{J;i z@5X?}RQOwy+k^n7q9FXj`~0xzgW#kPWD+Xp-hAx=`L>r^he4}5`-{$!rwS1v_$KscWyc?U#TZI4-4AKKO+J+2 z;r)Z6dKB(Q5Ystb8^Ucv0R~(ckByDlZu)$7RNQ_ERQ9X$e zU}aS!I=VOh@e`&lU!X!@!Pt>w zbp|hpGZFWx+4hWj*xNo_U*>)alZvsu;={+^-@tQpg4b0>Bju8S#FCWc`gJolMGI(! ze^@#PWsq{7e8*IKLKhf{zOs^N^@}DkdCFo*JfPah!stz#OMby`Tr$(m701cB7u@W4 ztE->ANL32kf0N?j@p&ZkGe1Uo$l$%oa&uMdTz?r&4zjE5pNJ|SVW1(K&`ZYj24e6z z-(zS0tNX=TRim%Fn@q^_vqAQkDEb_jKZ4naG)4R9#7d|#^0ftNVpt?>Gbx@U@OmRZ zHG4J<&d=u|SDNhlpvcG!bp!~CONPs(tNvZ-?%p963_jV}b{Zp9&A9NSp;giwv8>by zOMkNDaS9^C&dw@VcI)}T8jkMng}qUT%eunEZs6~%d=Jfy4TC)M3n$F=5m*~NehjeT zz4`h&-P;EQFqO93qquj^M7JfCmG;NK?bniZ)-$+|4vi#&{3}?^ER1HjT-_EY7|XPf zU0l{eS+s3W{%WwYwz%Ro-j;VKr-XC_u)oI%1v6bf9VDI3k$-U(QM?b-@9sV}_hYya zWy%JWlN-PLf;(tyiyoWQ`3Zd?$xAb{2$oFq#87lTfzDCf4}#0X8OxKCkbJ+-Z{cIn z4lx*#g^=5E8AZwjso(lw7anVS;e8p!51wW4L5!B}jm2u!nq%3cp@4PAM35bD5uuS~ zELvrs!i@R`4UH5$gHV5yE%F|eez_d?z8*0%&$D@(m<%KzLT89WsQ(=o2YJRA7&a&< zVqKl@mX>Z*u(m9SdFA<@n0BlTL_|gLXYd+LG2`RIiXO5Z%kDKb@i}3B5Ln#a>YI?u z0HC5ogrZsylLib7&ss=_jj=LWWX4tbbcP*$&aFwcWVS zs%waIwobXS>Sdgx;x3@qqTk?P4=J;?&luS8Iy$6fO0moFh(-rS2!$O?PBcubhVi@~ zTJl`(MG)N*5*$ZFikmTphsP%TFq{H`u0qUt4?|}LZ%byd#>YHXozGM!-a-YpsG_3J zxUVnAa-}iC_`SWkTv%skL6df}17ZhXgyU|cLD#|_E+U2k>E%abJ&WGA=0K22)7nP= zcbJm{(P!XedHVD|{#`Atd9HT=&RVFq@ZobAf#AG>tlFsFM_i$g9~<8%wP2)C9*Ib@ z>L7^h>3PPpW?YT{A15rQAElWKfBm3QdBaFQ6@UIT9S0d1PA|~!LudchOHhz4#`~JU z-5p>Ql7Q?FDg>BX4wr49Q6I!oYgACN;T9B({V-C$6BrzfiuU%$_|u)qZHvzK8M4Jj z8hU#0A=l>=7yk{si%-<}j_XHP$o&VMok8H9fl5&4`JeV2|DG*&qhNyw<`PRuK-I!? zx&Ponjs2}Ry^PNK2>35Sz&ArO*Sxr?LdVcGPvPx7HfhC|ONxJ2O^vJnPC^=#MRfFe z#pnoo2WmE4G&Bf=lm8I=VVH@EfQX0}u=t=>X=^#+wc=vCb7#6GO-;S9XSMB>bpKOk z%K;ruBv6BNj(o7S?@VI4PZScb+!i~A3g+2|50O1QOz!UqzbZ%7sJPp12&2Bm#n3RA z%+f1VI0a5l62BlJlW+ae7u7ZQ1-nv9C$i+}T{KR#^%WSFgDn(?BCuINR<=DNY2D0r z;t8B5U+vZNhVc%O+}zyQC37yz0t0JUTMLFLaN@u1*3fVUKjpKXhjsj-H|@!ZD}_Y?LssfiXZzGs z<)!2p%?@bDXiNQguxtNWS(%trP*gM&9F(h4w8r^KLP=2(_L(D~oPsA6O7Q~DWe^&# zkHjV{voHn}(l0F=n1_!kCMFqNI6nU`0)~#kXiGIP5Yb*B<9dW1fC>|Fh%oF$9nE5& z6QQ`i?3yJ@PcMj%2PF3gNKFQ}toHt=-}=>6##ry(y{@e-9UP2}`|jCD?;oSElO00| z$Mw}eT(AST2@MY76crW02%!G_p1IkUd6ggS%40)JjE;k4#J-IhJ3?9^#9wqL?{BtG zZx9w-alFbbSs^PL7W7)m1EnJl-I|1`pg4!fuBvl|>5hv)VR| zO`#%;j9?);kN}Pa(5Yw=t4MFpaCi5LD&Qt3qhpBt$0)PACo0Ab4qFYVkHqchw7 z0fWwURn=i6 zo}LaUR6M*V%&-@^xq7Ik1{hs)b6dy27+ib%)B;IE!>THv#dr7okxQQlU?Z_~2)q)J zR#y+@g~f(LU<;+4hDI-hn0Jibx8#8U)rqY6c{KT~iLy^tm$!lG=`+A)0-ixzPE{;$ zon=eo@UE^wknvasq6ERt;DN@??dnENj~X0YRrOLDeZDOyl^7B&bEs%&QkBMhecfM( zQs*wj#`@^BS^g5kyDBBY52#K&Ol4+ zyZ@ak&H5Let3wtE_YULI31YAaA-Vu8Q39es;a5{rGlE~sW>NNqm++?8d2~(9Aq)UJ zjSMq+Y*?3AoY*-;)d*@QntSo0$-*+pX4|llkvBG}1xX?Pv>p0HSypv5wT%tmE)i*I zxtM)8oRCrPDPCNkjtDx}O&~Ws1)<;SO5neL5-4}m2k_R`I;V+|Q5R1CfL9a&&J?{i zSa;k}R98PaZY?ZpnI9buD-w~BIlF{QA00FAt#E4ULX2>`;bKR?426L!UtS(4C>$O4 zmtzpA{s_klxmGF{MQkWV2!e5uuUaeCW7yEuKP`W)wb6A5MWjvrgq2%Vq zCcZQGl9YsRy}c81st5>xrO`8b=^Y|1Bje%WF`6y>RlCs|`eH729@HC_^^fIIH5|{~ z11VlWGVAl_RTf~2INI>LzGV00gFV>4Q7}lg_^npxx;A=z5O#6*4oc;8g@l; z0ngzC9v=@xzrHm3FLShO0E0=Ra{vREqJ2DG>*@iXU-1)g#&4?^7Xxd1-|&vdX)joM zYsDU#?F(+>^>%k(oh`?_dGiMNp_`MXKaaP6MgYBOc^Nh#t~MW`toye%EE5{Tw)xv7 zy8x22G&Z*nA9+$6hKGwnSMl8-ShBQaf0vx|-w<0U_;UJ(#KiArJ@;#c1{h*X2NLX# zo>WS?!sr_88vjKa6rA0mqNA(xxxE2XG2~b1VqgWt-cQiZ?CH!A0bPu{J2Cs6)m7P% zUAyJ|HSBx$AUF2gFx0sJx`48^`-csWkODaSkTePI!rScDh4<#qgoN5aw*`_{GaksP z4OLSO-Q1*R2+_iN?!wBdv#`#>M^>f{uLmMD$`}agPe3B)=O-IeB^TiIskEcJ+rpCP z9(G4WgOmLoJoU=np%j3bf$QWQ6;lLgPu|^?lS9YqYWKAZ)cr!kLr6o@BUd1@#0yh# z$Sh?1!90EUfi{fip++1`u< zBI=Qtzkgzi6doQ(YY7R(#r^yeKV0WNeAETguz>`HSvU;L|74kbgUle1&Ch(zHj4?T zfgQ{wwve+dm<}K}mQ6twHizo!y(uyWDV5Lu4rlOw5OAI~H#>)f%fihow>ulh7EhUI zA3b_4_n2mI2!!f~$5yri>mA5{CW+5fM;nhHi|IgIRSU?0FYt6ft}#egfOY16oR9dNDDOHUG7QP$2K?B(t}5 zp*+@fYHH2)kKy4)9l~oEO>Pw#DL-Kz+us%NSqId^2u$?-9!`Ffld=lF&` zq4qUn7zG)@RaoC8RRLsLUnXZzY(*hcr13J zkduE1d&p3D=>0c6IM!huJx8lnT0VMWqJJ`pj7(Z5b8u*&!w-k@W-RPmWmj+1%3oP= zP@l8tOrPa`y_OtG22eSdJJ%zU@eJPjFV4Fwn3!9opWHk={%wcd$k42OsJB~|l#u8F zZOJ@SW zUnZmwMNuj+C~)j(RK#YIIsMiAUI79|Z10sacap1=m3QDoIC5MY?G|6Mw-{YAtAf!e z4b7vk*U7W^!4P0UM#93{oByiCbqLh=i(Mg=f#4&e$KKf)2UZKp$~D#1ZtdFDzwb&P2<(GyP!aT5@|nItC`U*4DWYRzV~l?d z4H^~{P_sl~9C%-y1;jX?vR)iR7<87flrzsvW92UuE+a`wqh-j2#3A7djln&BD=IB* z3c65gYM}WT)6>&)60w~K`eb!s36=^;p@Duk zeZ9Oau!tc(9>$dJCxNNNOG~lwoe_x$MP1z&5bMY(_@$xXDqCDmZfEc7Ed(eD+AVdD zT1?T&r;UGKUBs z2vQzcUM%-5UpVmze$*ArFA6}v-5Q>szk&26;4%ZO0}Ky<^+czXOIBAwZYLmm|ECEV z0+a#f)IYS`M@h{(FCDYrj?_PBxGV`gzQccMneNrq=oo&V`SLz0CA9teNn|mle`Lz6 z-AgAAyOw12;UtsMtYMQ{h@tN3>pQpkn4f<%#P;>-aEJ|*rcimn0s`zQ=jZ35qM`t> zUt3#KDU=0?S456Jxzp9#HN4}aBT(JmbewXXt!JMt<3ijQEY)1tysz-0qrsFd76J^o zXFfu~*j-&AwoVeKyJyEgXC7v#29%VHBj_GCA+)8?)<;3uVB4hGO2WYrbp&>0h+i@` zzKd2H9zLCxwqOh7o>XGss>qaCDJLqVt?*D4hafnNFf;<&CS>YvR#*<)~XgTxii_o-cjgK%Y}9oR&2TTFoh z9-oNl-#@L;4Pjp4@Av8`y3RPHK6_v587v+-tml!|ef5$V9PHMvyiX=eLUPoF3sKOF zPvaYSAe~pd&g|hUX~jQn`Nh)Q2_kak5Y>#>ZLm77i;ah1Jh+Po2eD(`evX};4Gs0a zN#k@fudnA$OC8&tqkHvBpjzb5|bI&FssyMf|H#UZfh^e^MP z+Q%OHo+dX<-MOfg!(O5!r0K!RC)Qe7vBdl$Ms>-w|m`9~?|>$iZ$~Tw81KaQPG$ zH|~!T935?IU&3BE&t%??H;TS#brij@B;tAsEoi_QFC5`Y!NVMDxFKT~gXSf%sXSKuQsv%r3S>+I-Q*Vs6UjomYx;aQzY z`?UFVWdLHw-OG#Q4G!M{?r&9QWo>CadvVb(9MayYS+LX6?&H(h*@cDzUJa__Ndf>B zv?IarAcgIb&o9jn1F-u8naj_nlDehH{1{qt&QC*6Hx@&XwlI<4i&XLfcLbn#9r z{nvQ3(>y$~%Ne{7NEeC+?NEID#;<=4l~YZe$*d^8Vj+Mhc=NSwJ{ChE0Ai(Jc9F6y zwFseJuLuYZP)PvHjBs?qBMO=OVz+=uW)^YcURr`jnMszI2-W)Ira4bLx*XJ%$#Y&yC=R}9;0z_rb{ris$#=7RZGLINF&78!Yb%9`)Y%s6Pt@VP7K zAi-ug{l#v%7jo5wJkJ!1xK+<(75Y-y(Q(0UW@z|kCY`4(4BTdV&5i?oeGEc+71s9c z)MD`Bvl97SA@Me{K?EZ!On;Jst}j8IPsnC+P$(Fhy23`v1KCEl#Lr!AUky)h^Flt5 z@U6~#G3poRo;1$TP|#wHeeXzOdcp!?RyG=cu(N7CLL429eMAFJaP50g)y+0V(pplD zO%-&+C@Xy*C-lUv3#7e=+xIOEduIOcpHYGb0^HV_@$nDfzQo^!*rn=@1O{8%mx}it z9T!%QQ6`UrabWkme;{(Y3xYygN&P{5e8Q#PsC1tZ z2VN&_ZEZopFDvOBeu$I3zJKef|AjZhB#46I85e9;c4w(oRK~xXZS-g{!@MXQ({ZaC z{}lq}O_?ZIgy2y>IauzSY1tBGk#^&Uf>aVUA#G-wSV<|H&-mIsF@-n6&dQUWK|T|B zo7q4vhs-BM#a8AfNl8VejykjZ_uFHs-`dI%V!@hWNdhFs&+f0TGDEb?X9PC(xAdUF z*I>GM`^U=NeGUyf{d9-qxeHEm@?R)W9q6CGfFP#8pv9FyIQz{9`9xvqIAuac4Iu!I zoBr%Z_sOHmn7ezY1Ulh~Dk#0dR8v#cXsjbI&q^jHi3$_B&Y1z?ODUivK5)wfYe-WI ze{G1Zjlu@-iSc6r$MzJEh;NIj6aHK8nj=SC9}`)8r_t2@n0JSO02I|V9PtU%EOXq# zKBMh^SiqzyoTi6N4vHEw2R zhEJc4-rihx45dJc17YOQ>tbV#-8bk$<>Ozx<>qMRc7T5#4*mZ=+q$~sFBKKLQYNo2 zzn7Cfe{oRoVDkrB1QF1+fFZl5S5s{;oEZkPaclBu3gf&3R-I{9#x%J4%b+Rnia@=M z;x}xq6mfFm;|CNX0g5Ex??S>RC-OZ)_|~v$uE-@O7#ei6CBz zicW4#{_?tXXJBARNlL2LEF-}-d1tz|PRq0{w!Jf>ZyH8npiZc)oEnEm#mDEmmdHq$ zl;m$QMfL3d?yUO%?9-IUa4`>LU8tl_@tpKo|kPlv3$JcW=`uG%XDCqXa^o@KN z`|cNbH@^VP@W3B)baJwpZ}~-nuL+Eu8Y^uz$D?|&knu1OpqCsU*AEQ=>kbs~IFv&F zIn}^10ys2)oN=r}@UWZEj48J*-~Mq=0s}P^n*afr>5r4Vxk20~o2{~jR3_K+2lDc7 zJtHPd!3Z;)0ofOw9RYkUI0+0Na}ZK75F|w=96hZGP(xJInsn8G_ap6-|DCqqYZ)A! za!bMmUGxn^1O$qI)2_6Yuo6Av{@}iwnOA9pNEu2>NGL7s z$Q9GL<9hN}<=5Sr1rNHuBBRuss|18z`trntDr9SE|87jEX2*-mrIwIX-kU#K5ZO6U z$O28$-LVF%KZeAO)_1-HVPQ}qBP%QC$)prZ;a245S5)kN65yBr`eAxn6NGlKQ|8Xf zbv?1Pw>=Z5UuyLj7_EhSyo|H*eB!<@P6cGxP zjhgCD{EEo`oIw%Cjk@HnwHJN@I7Rs-Q61 z74k`i0b=ip6kh4J>a|IED`^CP+1nSfx(0cN7fjb@MrO5U&!~LoTXOYULx&49GY5HX zo@NQ#Tw!WA#O6}h1F-bdCw>8eECHv%;qo$iGbi28I=d?aX^4TLFV9FUBiX)@U$S?- z$=rJy9ozUu0O-OkvjYQWQ?LbgbaJadN`27d1SZpFm-p&{hjx0++Pr{E%p?P_!;19T zc{M2FV#u{yTM>8Y!jg2yLGm&zc28le`s%iiWcICf#Jqf%054@`T73!1=#cw=)Df^Z=^shqNSBZ zkdPY(C~3afF1r6S9h)LtTLW21n^1nfzNxfsGnY3Ck{>V!+6jNcE>p7#QT(w3V2V0T zOCLY+v$M*p%Ht?x0ovKUs7kZ!$nmj+gykRa@o$zR0Nv2l(E;v=$1S8!fA;y>MDcO5 z(8T!wBxRQBcu`-14_!O-uw&k7hW1IxjeM1ol7F%YqK3pXo5Ul5DC9Fqm!pO~fALDh4zC3y2Lj7UrzEx$QB?V_#@=~jo&%4 zyE~OeT!+=ojXTMJ(uD!C*@IDA-BhFkt_uB7amk+wdS6|R={H*QTk^c`ja>fpNlhV} z18v{LRg)PLyWqCkB@0PON0-<;1ZA_;h0$LbpIH-uf+B$zDx#?R7msvGGf&c}$J#I= zTNi`m3q*|PY3Ais>!;95h`7IXKJ^rKE(m+AH9dKDHS?j#VJ~gYZT;J_UqTU~VL&I#2%NEeXVMmK-A^m)W?sg#~W#B00bE*{E=0hRi*&=xA|qG+gCX zF0ETe?C?&!1`Cau%0JE!vHI5Mv6#ktqt<6;-ANllj_-@TC9^z?fDq1qbKr}s_pwE^Mf)n`# z#*a4ZoXcN+jEnPcRVf+|#AsO?Wcvj5U{WHbWQ(7a%`$lVj zsmg(Ykuk1`-^?^N7?s;bes@>Lmy7#nX|b)#-~X;HMM!)GvPY{2Q;EHkQ+;FO-p|TE zeP094bhakX(#fcQwo@5got;)xyfc<)ZU%0NnHk1za8S@h1^Lb|TF26j2%3A?1-^)z zK9G$#q;oT=tI!&+hQAx=4DMQN@jM54_2IWPPGB;+?k|W42`iMLGcxDnrr>1^j|>l! z3%rwtP>WxGd>+O~VPdXq%OF}^ML0NAl||#?-dSiD1dD})_T-(p0`{Fa*!>91rgy*G zxnp{29iL3kQeM2+g&|GM9S)?NVUnc-7_F;UFjua{7n*plkJzZHj?2kDVf|F&B|)@wG#(xTF42eo{#jXCg4g)lGrGTev8R zEMdr-y#q<0b#<5sd#7Prr-J#`fu10Q2)?}#4-XGS!fh`s5I%TtSZ!cv|4C!H)GiR# zf0m4&T%=+ibj5xkFMlJUr^A*?*Lj*Iv7Rke!G1_$VKa^T`sn zZzNWhfDn28DbMV}@l8wWE&J)n2c)@Xmc8k?pPv#I{+P|BCnmxtfslp9!GR_({=vn1 z_EUmGSAwU{eX?L3Ldc5m>13BXlrqpC8W{=IOMEO}e%ZH#Sa`EwCF5Ht&r-Seq2+m_ z%U+E{gmP=kQYrnPvlH!7^~j$6%rDck9TwUAj;#% z^Cvq|7D=JpXBg_`d0`J_X6NQum`9K%+Pr!y=Dt9v^530L7C*P7?3z^P?FQFJ$nTi; z;dK10;ed!`8d?l06qKw$aVX`31_ttrq`WT2b3_Qx%q=Vg1ye>oWPB_ta)CUyL8tK1 z0==k8lc|lr3;MwZbr;9TApw`Ci#xEaud+4xII46>17@jJnfdFxTH$N*Yf{G>T z&^6JMxRB;S*%!fk*f3rIq~Je#U{RMwNX0y}BB{`UD>S9h#4nHLbWv=!1;aNx8sJ{E zVsTvt@*m=_jx`>?{geNrs5Ef%T)r!n%M4PO`${zmcK;CNo8d7*H_G<4{l~+_#dH*u z7s1#v0&X=OO4)6qyK_uf*u$L9o{jxMnutDm>bnkf?}^kdTm= z_{_?psv&wGEM?He!k@rL6sq%qOTK$zEKoss*dEYC+>Y-55Z2bDV#iyGozi+kGBx$t z0Zk!$30VKTW&cOhSw>~qbzK{zC2k4nkOl!k32CIeQ&OZ$LXZ>`5DDq-Zlpt68VTtZ z5ReAxl=v3UH(vfY91eu*jJ?-hYtDIOW>VYOy%*w&IWyk%LE$w2(EspLY&*mAI=Q@} zPKnN*_4W0|U*9TvCu)j=f+SY2a?H)4-55cAzJzA`OQ-lUG}LjI6xzyTd7{ey!AV!m z*AMBNJ}*@sv^5KOvTX9yDx?rRzA3j zjWA9IyYKd_nyu{)&@$@47wJXbE~)^=SA0fDe{*-gatYm{;NOUgVKr!|maEvYEit@y z%$QpYlkybv&$R{u^{?frA7%8vS|J`4^%yni1{L&KZu>AkZ(%+2an zIse=?L?ptQxe&$bYvpW^0CO(=ew9;dh(~^Fv71s$AF9Ll)4E9vvP&VI4m^ zFcuT14-SS#GIOEFBs&{;AglwES5}bJ)tOkbB{4VQnQHYo2{vB97kx=W^yK?&5*g{G z?VcfkScg@dcX-vs#ZCVHg2=NitAGS`J)!B@Sr0ciVluKit1YMs0HoMy7$+nVQ8EV|m;np0(5c#Wdz; zr3O@=L1N+LR8;2hhWKRUH(IGaG;3^IP^&7PyN(RXrHBJAme9IdZdx)XhMQ0n=TfWFu8Kt_r9W=Q=Z2{o`9zX>4#x6vYu}B_tk!LGqY?YB=vp@==NXp zcnq*Kny>oc7EYIR27e8Zk^waQCXTN`|Ekk;KT_~dz&p!9i_1^RzP+c;Y$Jshs3 z4#g$Ks4FXuf5{PS=YxTcJ6F9a;C1fc822jlTVoX~ThD(K{9Gq<8v%uVjjq1OW-Hys z^LL$O=btH%0Qg^J`HO$28;h-uCgWv>*xvk-fFrQ6v9aHi@VRXd!Z$WiXQih{xwD&J zaq8=rn}ys@wu?x;wv&2d7P!$57HG)t2ilLkoSd4b<~;P>>g(M@yMR*ytsPcW6^3O* z{eVcCd*4xmiKQqbXlNppLklsnRG&PeW-ffhKD1xu85{FLE6#dGh^d>Sz8>MOPuW-? zlQf8`(#J6>(aC{@`=R?^Rnf%I?R^Z4eYaRLv%qOATFFiX!GMoZcpV%H#?*a%GNOo4 zucP%F9xKRV@TT;;?$uuKnmNBOj7CL7sFWDRQkSB`;CR8@L4ePUl$D;UuNiMo`tdmma8AdAL;fhm*g2=6MRBBO*q+Y6TfcL)Oq-TJ~LN z9;u*(?3Fu_%$BPSGYiYgf!ip}L7^aJbqzIh5X79LVDf^$^2fYEurZze;*+UvoIzGNMy>atUq}Llz;aypwQvrKMcU3x7xfqTAxu;YShL&=g7F$9E@nEr;pkLuoL(=*@X-i7SgIrq<!`f0RuY6=^tRQV5F4 zV638}mn3@*`2d@mMoLp$0o?xC(f}=j5L5Avxqqj*l{#kp{E*Q{!TSQ-p|5F@2iLI3 zWl{y6r^*sN8P?21XZ}AeK%;9#cXtOJoj1VHA2&L?{1^-kl(QI^F3qbo>A``XMC%P6 zYtH53ZGr1vUeyu4hEWF$A&ZJa$F=OZbW~m(9txV6^!uTOum5=vFK=yK{f-R|rctU! z8PxHY-yEyoP?(vTLLfq_pu5wB6a0TS*OK-+NbZ+0y0tl{yFWT}R78ynQw>JW4>Ymx ze>gS&{{4zDL{rhv*qDG)Ng^gTw&%53sjf@LnxCXxb{TCGa6&=Gg$SE_*~_XtaF?bZ zRE*j}jsnHSlu>S6+?RU3^JWrIey&JuY>P|f#f1iAUS7&5X~`>@*VqaC9)NL=*x6s$ zQWzM{cc0&dp<)xU2haBLS2{D_d<^5|CEWdZpR~<{_o9 z2UUJkvVI7Vt!uTZV`QW(B0^`4`t34mH ze`mD(qyU8*!Chr$Zw1W2_wA|S$$*cd#&UgrNND`ZX{`SegV+?iA@cKX)~)CV0_Zt1 z1P#rH%}pD1i)o$R-En(nRmsy*)arWD5Q}eTWmTAylarkt4V@rT(#yp5wVenuZ~S_$ zHLuI)qYtqxW&J<8AcLaGDmg>fr?iu}r2@T_g z=8n#wtlF}_kiV;^=kNc*AoXbZ(|V=Z?dj$UzZb8dkfa?6#I3qtnP6)H4ATrFXvWa+ zEgTdPZ5OV({GDDar!G)|TBTLT910RNTRR_Z4Fx472A)Parp3|GhL(!^A*d(bA)5F7ypl&|@NXVA8HYlrHrYoa{OI+(fUDw3O z#~gHgQmDxi9QyDLOU?N24~R&nrZld9y^P#Ft*t|ST<}M}%g?v_^4K$wka(ld@xkC? z)xmO>tFIRv;YFnPN@TH%sdi^a{4qK?#x4<4cj2ta&FieE*u+ecdI7yd--;9vQ>@F|UQ zeRItAiED5D+t&vKx;Ad=dHejXZ#Gx(iHKaQa*(O1i8&DR@&ZHfzZxs3MRg7)|7PEl zSCBYb8yPfQo8lRbHCSC4c_J5fT=D)rBVZ)xqZi zyUQ0+0WY931}}tes1jEn@*ke0q`1=3P}M3+4h|rBE-w!kJwyP79_W0W-A{KGfje)4 zgoC!W#=$Kq=39V$jcm&UjC0Dc=k_WZ{*A7V+gfsSwNd0sHWn67Q!Yf(*$mD7c#v{#8dD^z_UI2C6meUV=gZ zsr9}dE{c8O$7w!r$9qAJ*wBJ3nwc1*r^#yFBV&0GSsKj{G|PYher7nY02i_oV`D38RAr6Pia@$xaCKQPDx*ah zq8V5FR~@?`rk=-c_Rscqa#wi6Yjae5{LYYV{;?PWVp89pj!f~5ag1=PBc)VQ_iaLi z`m$sDsE7|aITaNL?Eg+(ggm(T=p{KELHDh4w)#ShmN}@(gL|Q=tveJZK|&savdTU$ zg{`NnWn`R-2yw1$dS*!8u4^gqF-^TPH_vMl^f)EhRUamL)NbShr~zDJIDFa8`V+DR zL&BWTZR&H=z@mb$#Ujlfo0P&k&z$}s5VBnKJ@gOAGQ@TGgn^4gDItMuYgb{6#P7@- z8L__{BF!C4tMQnrAh7=g`}==*S|=^b>+4exyo89)5K-||x0b*L@Do_#;>Ua8n#IGl zY~1$V`nt1rm(Jxnn*61$V$k@w>*;TA>zP}k%gUDPe0zuOx)=PNfM#uwEUljJ^l#U4 z7xZ7WG`@K4zYrG}NA5-_GkjU!7?QKv4X`WuIE|V1DR4$3@sWom2(*9Wm63bhPY9#x zP7E+I?7td{VOH-Bx6jX}wO%2Wsz)_5lW%bCS?ZvvT|c$MKtX{j-)b!5>-&q|$c!fj zEms92OkpYkgWXd%XOq5W{c*B#azFP^Axu2!IniS2$RAT;;#b3uz+)iapUS|%I9Gk) zKFMln^?o<(!FR|DS5Q>UPZtSCLIcm2z5N#oy^6*XETSjq^*=;zzW0cpb3S{-i01BI zZH@B0PEB3?76ab{4YjB!c+Fje`NyvzWjeO!%=fT=Ccr98Ln|rlcpeQ>14c$!B3-_h)Xx;ViFXq4Y{-~(sReqt0tPV}@Sq2z}(tEz@!NADBn#+L~tZWG~RAO@k1L-0(?Dl}B zTANVo;HF+%3!fO5m~b0wn|dW7(K%BEnR8vPEnwULjvr)*E0U4(I~SA;-2VCTazLA4 z?QhjS_c>rwEQYjl^MN*(!b?pGhYp90h|b~6-l3th)6+Cg3ndWy*t~s}{jFFK1tn4u z&r(-ILqjQrccjKf`$)*Mfq_0q7~!=QGa#+jzB~#Pb>O&nFCqm?T^*t9-QMZ;{67%P zfu#T;BmWE=kRf0#SXx>F^+s)V^)a6}xs%gx2juYAX#a^xqRiC+RWh@Nh=_4xAGCy7 zG&#A{)E_6mUW7&Tui~T#&kqmU0Z0y99fyZvHg!*qciagcB$B<6>*Jm-ik*sPO!}%9 zGMkYEx|#<)zd_81&!A8+{JT!99<{l7-p_Xj7!<{O$qBU5bhEYeLPBZb${(_`S2}ge zIP78?-z|Lp{_Pfpm6i48=AZqoaR=}H`>P};65Th~-`;&)o_F3eJU{=v^OBetrlV(6 z+}6D5|w7h??PW)YH{ZCP`jpdaUvr;3$&mh83q4}ryn45qH<;jJOoHDwkJ6_@s%1EFSxw07wW6dW^2x}YEcmK z6p=)DMbe+!gC63Efr`HV&fcDpq~GELFKkNw@$KVHA3kzA1|F;JD|Euvo5xQ*dGdo% zZF*d#nE)iM568xb>M9YMd=t)N9V^DWx|Y`WOWSsAIk3VgCDrh-uz{EZoo3(jgO}&d z8y|F!(|o{L2CDqiT@f%Z6$S)kxNcBCZ=vqi-rB^+`$hdC2S+5U9wP znmuKdq+ZjIkivD_gE2hp3~@!SloNa7m_$VJ#vK4msZV9t`aA*+&^HFL1b$^bD#$PhTU*$Fsw;+x_b!e_`WA>qz*8V}Jfa~O> zxL@cfx5v*PKkA=uJv4ze)E?kY_FLnThK4ozhpb*Vmzcr94$ctR2b#~eUi6*d$g zc7W;FuCIM}XliP)lI{Zr-BGm%nRau*-`=!dqk4KuNSh3$HDeN9z5EZGr;m*KpU4I8 zFJ|89yl>|qRL`+kwi4`C#bT=Tp=htAt#KKts5q{^Iv-&tl!WIvCRfFQ@#tj6r- zYG=n*(3`c_`Y{V8KE9wQgO0PJ|K?aEC@gJx^!4`>eb`tqWo1F`RAm8vQ%6Twul$iq zjXu|K@9aX&9~1NI^MBe`*Jq$}!8&(WY90Hdqw`3_D7q_(FcCTfK!BVfVK;nrVhvUH zUh6@}e{LsRBQS5d6(Bu6Qb(Z_@=D0Q%Wxe?2{LE|YZ3=niE_M^Ggo^DoWH;70ltM+ z8nk5ssxE@<{qL0RN9%P^WGd=&V_i#QYljCpYh5U-lvq56F-w z`qm&Oisb^ zEx|zqXM7MN2??4(6CDR$Ry$R6x@mRpG)1?=l@pPkObX*6Nrh) zXlb(6iY|}azBxL)3&^I$!mcpIaB>1%2Kb78Bk1dMyj>%a?|0+Tlhdj_sUy(Z-|p8R~`LhvhZzg`ju1(i1-ANjM5Cn!}L0|@y!2*($Pd>0wZz%{%Y%sovvEniDm>zX6x;ZXS6Pj)A5Ppt+#-ztQ7{v z6!<~M#t@;Go|w45|2+sFe%yRRrZziBWj)V0yafRZdUHLoz2tN-Bm&AiVPRjkZ0Qw< zpKNIFMK3MgKN0de-|vm2t(mJeOHAO}HN zJf@J4clS_9XXpAYAND=0juLQ9g5v~o`5st4h=}bvKlpu1EJ!IR!u}r-t@R0t3j!-lDqeSu*i1E~@;YXzBgO4{yZX1&DNEFphQF z)c80^5dHZR_Exljw(lRAm}i`~#z9(P+R~uVi`@yjT%6y_lJ%?o5D}l6l498G@oDla zHLV|%MTP2tfiL2pz^Z<61pe&!C;#(MFaJz^d;&^TAtBqjfN;<1xF?c2(|L-?c?yY6 ze}D1iYJENLs93~h5yiZL0^`D&mh-L)tA-EGEV+|ZmV7&r^!0G9!BGr6R@AnrstMWNHA7svL z?#tf=P^}L^DF=h6B~@IFqX`ybQZX$;1UkBM4;S6VmfL{O%JY@EkfABYBMzekRFS6X z7-mcaAt511>;VZ{BZPaJn2-ww*4V(=NL(CHmhazB&xspSg4_An%6UUYb!d0)T;jKN zSa2VVPS_0^0F1$nkB?7G9B94N#QR8#w7OQw{ZfMnA^bCoHmo27WIb%%cS7mSP2bJ# zy~S)NotddJ$2~*T9M@==J>rVp38PxG10kk(ZT)>-6L2&lWhI zWl4qrj2&c>RCst%14jRT(K#q8PAs$nChS#(|CLm)k0av#6(1aDcIN_vaJc|>Z!t7n zY34pNn(=6nTKw-&^3-+fgExorSI1+@;L(8K@#6m|XlTCGFAb2C>!_&1X6bey_PYa? zjLk94u%@^9!A4gvKo|xgyUQyp!0Dq_fiUWp`7YyhF+uL>QiC^QzRU>h>~J~(Jxp=t z_SC_RP?`vl*ZbR+zF)lV7o+Y+s2o_==h^NiFZWMWGTSDKgJcx3MXo-u=?xd+|N0dX zhswx!b;;uE2b%;CuGi7LC*x{t4lZ4=!^%;yc^+i0qZ`6W8jc43hIV}L$iSM=2+gYK z=&@S6xrLVZdL|Vhg71%K4+nirkZ-%HKqFKwJfe78EOT|Ov9Y-zit7%Ttu7p-t{DuY zAe1^h>|6n24Dzr)2J-Na=$J&=;9xEboWYcrhVNjVZE0x{q%2!t6kATEXrv6F2eSfr z3&3G1n=WTMWFDPFI^V>6?s3EbG?JB`3Awv{Sz6ix2%`{=$P~bhx||34^%_w>RPIpJ za0&rN=9kAiB!$K5wyajxqyNr~cylO8w&dlle(^>{0muMZZ?Y^O1OM^;eeUT(d{EQm z2N#nuFlcLVla{staVNv`tSJ6vrGIrz;Y&`?Y%M#;s7D*Nlo;kcxZF1 z5rMG##62+pAzwWJOGo91G*K9pqd*MgCQ3q*lPzxXQ)2-X;Wqa6_8^x7moUZ@N9I^T zSUDx>K!3kp#cRni%YE=i78R++#eoYEccj`1x>o0moX;#b)smiOUpCh$g+=sagD6Wr zL_v}HQAYa({PLKD=)yizzw?=LnS zXt_8tc6NY6aCv?X{uv2LN!4`W<3sxSR%LqnKP%!>rSJbbJb(VW!in7=307tRn}GVs z-%3w24V+00FFAqiflVf(3kWe8algxBYMQOtSbo==^N87ChiQ&`O#De6r*wLH_n01i zxID@Jgej{Ti_qYm8u&9^q^!7@jEZV;|Lw)8MDO~=(K-YuaC39d*V^e}pC}|rgb!)k7q{JFsX>WI?1Gx8!KRukd4JK11l+>UHvnT@9s*^SOB)fBDW4^ONJ;74WOD>SuKB( zw@r0VW=spT``)`(y0`E(KmR!#Vn;{SK;|SX3lKFRBOO~kic=?Uryn*6#Tqa&yN~)X79UQiu7;x2r$DyYObR>(R-tQj>2rSPX z4v%yCp z-d@Xl9sXh_yzQ{MYFO?=jKF9l?eT$$FcoF^6c?$6wsu(){quMY4Y1k9!~nqwSaTE< zMZXHQ7^T1Yh+JH#z9fOC!|^F_sASM*W+KbjcNdl68hQ#B!Zq|b3)9zUqM`X}#l>_Q zwm-vp@6yr|kiwLzs>pyo$|+R}A;j$%j$tOi1C}*hE=)pDxl#y71qC@DGf7HC`Q8J) zy1U!HKn#qwL2LypczQ|-D;KQ@`2QJTd7rBd9UUt)k*=)EN5Qnba?`E-Vrsf^wrDlU znj{d9ip3<7(||rzmM{E%qYX*7xj}BCp@GYZZZJ{&*)!(@nhG6IG>P2EAb=mOI}{vv zU^0aTvYkKPUeDhP*6nyUy|s-ECU*A4N;CQY{`(KG)K#XYak@H|R#w3NKt@I;7j!F+ z8w?s^XKsk}D6(Nm5cyp)4AXsrS?? zgA1LzOk-GRfByWbSSVWY&fk{DQ*&g$Jpt>v#iqb9=1P?9ZB%=c!7W;qg8-{C#^09-W&TE^7@*&DF37 zWp&Gaq>BqMLH|3&Xerf~g|Jvlrc_}z-X3=Tc5a(MV+i#pedhmex2UrCTY^+5%?I6D z@^b^fle|jQ|EPo^R%9Y?JmZ`nD0uCF)-9>2W6W5_W61KpF3@J*nvMhlf^mT)=I9tL zJ^ix7<33YUKn4BigU9ow9zL#>mE*-2iqFL-FR#E2pa+AON4r$t>RVwf@K4+UGajq> zALWA=l#~zkX6y1LLpEkONqHj#%&{!mk=0Zl-HbOPBFPx08c1z#uC0FHy{`H( z@I^y2h@C-O8Q?c*A= zjqz7kOuPw6&l%Csg2PG;*M>x95WuCRjXtR@=2co??d2H|w8?+x>wv3cX=$nOcaiFa zq}BxZ*tQ7+u-dNwmDi!+3JUI@vhD1)z1Acz%S5!dS4jI(`D~vya&C_ED&aVsa%qAE z0Ulf+9PFQ+fo#0w0UP8*`E-X@YK6rW#NPmCfxU)yu6QSvUDHMLk)w7gu1b@G0u#+>e_N7*~bmJ5vmZC z^diFc-B0o_#2-NswuZ$^4#+NMW^e&Nw;%pWh5)XG1Y%ZwbVbGE?axmP9F~ER0D=4n zzYkQj7%a0kxpW@BeCZ#seC2Lxriq*j(yGrm6DsErOhn?xqRrv{jDP?pBCM=M1c1;K zaC5l-VKDhqDVcPCS#ql9a-?Bq8C&j>0AM>{&ze06$m9`1 zNhM+8Yez;xqM5eB2$?d|wp+uZ!vdVHPwc-Vz#W}VFg5G%>4Pw!+^=8X=WR(`1UPJs zGuzqiZgKVtxD*Mm^{fD8V>}nr%5wk97uZ?H$C8Ke3``<=|P3S6oV{}R!x6!ODE8i0>K&wsZYxVU$|Da-k= ze8ze8K0Sk)<5PI=L~b3>ut1&K;E48jZ6enT<6KQiYlVY+o%<5@UrMVCngb!_W{?P$MHBnk_GLyyw3g6n%ezjHbO)l+%X9XqkIPU?L6G*SnpJ5Tbqn=}4YvX%6lm6sFHmy)l6CmY+-MOwKXmqLT*;2NCckbo^<-PUB$MxKdX{kTh8YkxT+c& z0Ck)M=jW$kEZhlQKS#$uOKs{Jbjr#tB-P$Rnub10Yf|e!Cmb@qS*j4+tvw@T)VK$Y zuTOPe%2rz<;-E=D_AU=k?@!bZ$%RCS?G#(uU;j3zX0#9*O1HbnrhTZJ< z0W9^r3?HBUXg^a6S2mV8Gn@Vv=S_N%b_2i7`NlJ_3?LyP0pRTVA__F)2R-DhY{pg? zw6w%z9RpZ{$+Xmn%*+YG6q+ouva%qXOHNFjxr@Y@SgUA?{N}D6fq2k``Gr{3Oxs&{ zX9w9t^yp^Kcr&E#k;4i&8qWZwI3xjmn<-cj*cD?(v1FxGfNQ+ zsxXO63xk}Fzta^RJw5qB+?KC>@fmqXMs~2t5I|~xjON!NYMz(zLSH}j;JxrNY8xHE~{uY{F`HZsar>#GX$$~JuS_4PIM&mjnC#(|bh0*t>VqMfNi z$qy-8BxE;linVvC1gD>{?e?1QDJtP?j!A>QpNcPK?ffr#E6zEfIbp$5q!3(by4 z3-se5H3()M_})NWv#pTCh>jp zb0ZBE8D(WgdwWpI^g`Lb3;X+H)|}7(0kxChp;dpJ^1F|dzQK>i|DzgR>Tteod1VH9 z3h<0l2+G{QFYj}a3zPc0cj`?pDFDeprwggD*BT}3kJan=$RDTYdvAksGx`$>K#L4iQ7IE0(E*`pz#b(tO*;44b>d zsao|7Qs+u$>=^TvKbaG@7}JP>H6a}p9$Gtd^SHD$?<-y~KUf#-V;4Vt;3bL}N+#Xi zos%o+b0vyN$oe1`H7F2*3@aAJU%dEGS?L4~3c@G))ecK1 zAw*OV>vsuPt&d&u(Mq%T}><6H@X4f7J=>i`CWD5U_P|5c)gXCP7Xf3`M4NI0Co*f-|Er4Uh?orQ`V{JGcsKYAnT`3`8~yE;3OQBX9e zUab%_h_#4;Y)8@DTq4Hl(pfm<#QDnYUV)2ETT=qJ4ODvF;fyqoS?NH=Z}xJg zG-j*dmEn841{GO}L1SD8?hV1N@!^oU1+cYG-B=VikSz!a`LKes_;i`_{N$>( z#5h}%J>OUuj7qkjLMGQh+^s<7{TC9D|H!sv z39q2P?GAgN4+p-?r+~KY4(vO3FVa`5doxmLCgBYIta>>)TMCLdJz-p?=q{Ty=jDyr!lC5iDG7C5DbVjI+p_4QpP0dxi)y8M@Rb51}vo=FTN&wT%H1HZx< zdMO~`KjrJ_#5j0bq7+u1k&&U8%)@EEGd7XCJ;g%vkO#G<{$im)(x3sf3)0g0Q(#E{ zWbJe0J^NkWzTpMd^aZyo+l4Liuqy(w7zbZd{D13h@F+GDDB8l)R0Qye{ z$`BoP?{Q_0hliS$77})`sDDqGrnA?Bk>gDu$s?gfeQZmetAmZg>E8+MiwG4J8Q90~ zY@yIffQAD2c&7me23e!fSxg4_aBS=e1PwwRcJx{HUQDcsqQdg>vj4QlZlROxS0iPt zs;;@YfdSS=ZT9;Z)CLBJ`x!>wg@Kv;Zy68?@Wn4Lp+J`4@)rE6CmkFd6D?j;6cZ_G zY^T&LWT7I4kgTogjO+1SvM1yj@Q)zJ_mHa=r#Px-8X7-jhLSKmKC z01y_H5{njBtwD{GzZVYqBNvyjq@@06MrHpuQoGy*;Hh=l(x@1I1n#FaE~_Zm<#Xj- z*9S5qX{~y2o;{=CNv^E2nkWh;=v?Kaau)bzdahsf^YjQY@4GIaF`{uX;(vrDqt8C~?K&QW`2)fBzfBy=@J{v;B4rQV0 zipB8_K`eV=771tY-~c5F39xS>T7;XuWGgF8?G$gX#8>}|ohnnGIDTI3&RJtEd3q`# zVbC!A2@`lNf#oZ^2IUq*Uys%yQ4$#1LOVavAa8>~A>oy&=`s95q}cc@|GSRufHZ^F zk`Pa=KNUfBMWMRuua8JMnX02r^%hEYamAA%x>hRA8ZB81tv-8jlUG;4#m#Asb+XNv zV0`Qtb*2ox?ZScxKRBgFHVfG;DnXT@rFsFBTF&%DzjL@)z2wGy;UZ4CIh91LkJQ!q z->$82uf!y?=y$ZRwqO4X>dNxH2isR1Yv#_*vzIfj*-{66oXXGdx%7RSjEON)gG^50 zlH6EMXQsqNRekc!O70$VP8iAVD$2<(RHuIuY-z^aJ4SSUfEwPKaLbauQXI=W=lvmH#EM8 zaXogSh@Y(skBPb8_%4;LGl-MwNb@dF(Fv^9FsRvi3BuF$`GZY$Ae{#XLkiyLSa!yv z%Gxzj5;H!5bVxj^sNfdFI^gE@x$y#hfW3}i)=L#=Ze9K9duTXU`xpQdXE;KhAnV@x z6cdv)%PKBDJqrQtX=#uIqpHd(-Sb+!V;vV)(JpBE0U6mGgni&JF!cTXDJBz6UtOb2-JUqb3Xca-w(Oc=ob>0i3^6}4Sa6)_d-xe5(CDW$s3$;kx85#Ax&bsKHAZB>a9~$c&OsR2}(SR^}nPfXz)MT zncNMGkB>|tcXojU0`R!}#X?|Uh=}}{wY(mtt=iUl+un(cP*SpgBQ#sxwlf17Jb1uD zWaQ*{_7)6;7%f2MHBrh!GpnLgprRYhX;I?zHXJc>EMsmclqnW?F92?^gp31zS4SL5|o(C4Np zE-tRVz8RSjKWs~{fVRd!o zR4F}Wc-)iRG$C0x^@6TqJqE67uZ2F)WjH%KtEHy?==p4Gx7mgS-GBhxfmgaMDc}=O z;q-ZGDS?a&f+tNa#h93gFA5^|_C`jFm6gvt_CJVBrV~-57MHM|7tYoBRJs(y5f27S zD9u#$^<4IpcC&OT_(Z6o^G0;~*dFdDW8*pJZcB3)BwOd_*JYyb)1YXr-k^2vZ~vk5pT`M=tnFtNl5J%;=`k(a|tK zsLi6Wxb?2Aq|wwgW-EB)h@Tk`Im#oSFm2`gYaTyF6Bh?!>TEUaP;#=k14XNPp1%=h zW+pPtDZ`zeg)bUONGj4r&W?}CpFxqZ)%jn38n=fto{uUsE(~3EXDQP7s$i>!`_$#` z4lPP0B`6X6ergwRoz9EukdkvTX~}N>C~GC;K6AS^N*;l zY|=V&rK)6PWFh}uFu}nGls;SglZk0zoE9(cAihvu+;uoKRdL`>U?33&zaYJ{{zv*5U>M2ZvmP0VFMTvM6Ow3zDH9U`mzYaG zTZb6%*YOSJo;_tPG5c#3mprEYQ zH?-Wcn;y$SP$9(5!o6N>I%swMuhBId&zF^T9|>vDVn`|k z;sa4|AvM6l%#0hjLQ-{kR>pw^r9F_eC;=Ji>QCn(q8H+OL6+BcTa=OU3X;lr?E1Dw z&3-nz!WnmOrYc{t8-T&N6I{QBMC^Td8J7{3H3fsKztbC+aHSo8I?xJ}2_%SA&?y_;_vio0N{# z$2oZnIxo3zSHefB#hn^mwX3UH*}FY1t0CtbH8;P^W`0&f6!Gt0=v{>nit07e^aO4I zzYYejx=(x|pyRQ(H(ib4_)9-RLP*O5nE*9)E(Gfcd6ZXHk!Viv+Za_l)c^XbN5akh zbGD{09Vf%UqEp5X;R7_it;X`+@`~TT&;O9HQY!SdjnzR?i3??TJgmrBcVB9t>Wq%g z&dWQ!st0H8;PFYwdoR4$*eb13eLhf>9bzhY71W__@1Wm8DDYhg*yOIBefXtKu0*$H zt8URd`sP8ufuZ3-RR5}}X$+o_wptWj)RGfo0ue!s*QZT+@I~G0h)9IZ6*Q`SeR!^W zhq`rAtJ5bgB@aGy=8wv7lXP_{ysMS)@}dU+R0oHX?YkgM0wUwggF`S7Lb|qxMR|jKNfBDb zgSv`hGHMDe`d1H zmk9eFf}7w1yn>jR@GfG@%0`~N+jkQrA+Z7`Nu1V=SzljHGIxJWq$~^T0ND2-tC=YF z6StZl>PI%c+8EbduPA<(9LP4Cn4adnsiNKSJqXI7yW~haSm?D3j>J_qN?&NEWdZyk zwUE$kL(N}``V(oL4g`obnkmj!ueBw?h3#y8LmKgBk;4YcU;%DleK*Ubnh@a(uvU(iX~<33(jy-kD1J zwx4f&KZ-(P?)3p032}s{dxBU*7Ekp6c+Ba-o^!Y;Evcwshhb zEbvwnvcVz*CSPTdi59B^S2`a0?3l-o|8P+&n&}XuY|tEKxXGdDrLy z?$@WblL|u%!c0u)9iM3*-#=P2o+|CGDfb??A>QL0H}s2rS^nr`wnjm5(9qlaS(OFm z6b&xN`%41Ge2RP}GxGDbNy48=HH`cXGNQ&)9}p*^AMree*Ac`hLJ;}PjcsiMvT6zG zw@z>8R{xL#^t_>fmEcK@i~su1R5EVsnDlfbQ`0-3CN1QWKN%RV|ARPp%FECzkm1d9Rf505!BS%%xQ%UBSH;Q zFz&bS&P_ZgByd<+>Ctb#w2+W+H$tmB#QnUX+AzS zG&BHUY;`FpCi){Y(3;F1uEM&Ke0zzRmj~KX1+1UxM63%$RQ~*hMM|WsjL)CD9<81K ze#OA5;L#UTrtSWa1FOn)FWt!rzdMXgRu;F0yWM1|y|Gx^b8RhPZB@3^kj>iWLz<9h zKtRA`hUoWBf2EXHXsAi4ycNeiRQ3#v&zoJu@@i>+vJ%>i7pQ`R6h>-SY+wuhr_pUO z_Q&*FgWC3_PZKMw^!dY4SCnAx3i3!eim84a+FWCu00N_>m3?P0)XgFxH zvRSo%<@FoDdGPzUio4$7=Gb2Suj|h^B&4Kq_J0%;+u2x55Q+IJnaRI=wd=AF7uRnz z-`KI8Zg4qy&A<>CZZSG$_9YaihC6@$+=G;L?WE(t^gnkKgSy(-I;ZX=t#9 z=)Azy2tKB17Qe^0_gNzNA;$xU>)Z413JhR41Q@go$)0L9d?qLT9gx`~QB!N@*${v@vW+nd`j8sPe?l?->@^YE=I5fE8kNf3?|8JPH!?y~tR>MC^7*(Ybz`w@Tbf6T3V_dk7w!QO9Ie;;^xQgy0_f^Nvf&=Ch#j)?m2nhw3r5d2Y+OrD-PxqFe&NI z&Q263O9RVtgy_(v0J;JYFvHAEcEx9B@LW6_vJH5pv zo9h|0iwpWu(J9eFyL0y;^A+0W8{2CS-*$GlPZ9#)?D6vM`F2@rgOp^@#f9;?!%~u# zUm|CP6Xf~aCnHs>;p>NyaZG%?XLskTK~e%DzmAV}&&kOV9`O=iT=f31BFMJEBMS*c z2biV0I{H^&6y}}nHSYXMbloAY@^sBi7$)ACUMehV*cnK?`u@T=S&bcNM$8xXYHHg` zsS3a5KiMh1pD8y+icXx#>N=b%gAi;zJyTQkxjg>SM`8QNgUK+_a&&f7ad6jcN)2{)ejg`TTLb6_FmzmTZm#Q| z`cY5T6qmCVBbmNZna2$d41^A=`CKR&Jg^xBfjhP^vMFHd>{?p%p=Ox0TtuPeig|f~ zKyW8j4-CPyDJZDsa=E#>8OxvJ=flXomVyYR(Vlgtk)}d*%w&ULfI$m-=}?kv;!!?v z`Ae?;f%zUONgAqhn&8FnHhN{{FQh>Bxe5T2d#ywDho~s z=J;}~=1S^Ozrf;KTg*5#XpTEp8|G!R6KM3S6;LecYGLx_{0c zZ_=i9bo4Nb1<=1wpLb@N$JQ4vz)yzF`U(B&$7H>ha=St{`^BshEJo!uEsbCNj_v)! zDveepYh@y_cf6K~ByM1Df5rjC&%%NjXAt_oGn0eY;|vxGeqL9Qvx2o?c~)+G{?Go# z(8T2G(ng$%5n1ZXhv576xyo?vuhOedV4ziJqDI8VPT~JlYnN;p&cQ>-ru)6!my8r% zsSWrPIxRloZ|42&wB|E@ME8r-N5Z6~4&=7`&7-A#vSF(%ndH$#af__Z*+ZL zqPYIk_{t4V16T{eYB(@jCgx(&(-&l5$TLp9xrc=2L^9~uU1)f`GxK(L_Ixa#6C7#= zXEBkXq4|unwOuKEzjEcHL0tqVkoa;oJS;(M9Fk{rEG#y?56&-^d~Q1i5~)zuxhV|| zVd|`1wsv{xEf7$VDDoK{^W{rAM(wq_@vvaL%?X=d-yC6Naqk|7x0kx3|9_O@y|Sqh zpuyGAp)+jcp%!}YE_Ux{dXGOwdsUfmL>SJ&a)iyZH@|qTC{m}OJ6mn}QPi*e6=G9! zW?A_Ae;hW1?ZSoT+FGZH^sy(j&+uw%f3^9MG`T>JYk1Pz!n%Q-A#c;P{Ho$*wIzf+ z3j9YAyjYnl>nZkx2-47*&;bc6C%c-?$0;*Sh!F+(vU~ypu+^munj@80`sOo26i%rD zuTzee5GUgD>Zh5i70ze2y4B~W_)E&tI!4xO3%|e*JSOk{@9p<+}&MXg|EP*XiA4eRm$t|VUhMrsM+=gZ>dgZl|^`(1HS)NJg=KWRsBV9 zjSXh;;-O+_Pq@44y7uZSMY<5@!-v-+-XDbo1;MgrK9JBhN6vl!GY&N`apODgE!wlO z{N90*>2D*B+mqbp=KPC-H`4z|{XZonOhfOf%%HLMY~OhQ&@ny+eTIRi$tQezx=1K7 z5rdvSdTkH@LuP=rQ%pwI6weO&uA&2Bd+M56G=)AkNT#NOGrc{>p5-=S4>aC1rMbXx$#uKiPok49{`Qg{X#@K zR1UY6jY{1xj8-}#Ib?eZRAFh!$#WM+b2ZgT4*1rq3IC@BplG;kFE+b{L$Mt8>DDIz za1r>Im!qaX`{U$z)6{F^1L321_;XxueogCIm(QR+<`#;Hi77Q|U4YxBs5nU7&>$o8 zq6SY)?9p=~GqZw}?AKMQYR^Uocf&<)BG7TV3sl>yzkYmGfxs%{HvDds&cI+EEHGIv zHg4{1zsPB5dV9Ygt^am{;V`EKhdEXlg}4X*z(7m!NUuyn;(@hML>wUne+*om{RnEq zVr|UjC~q}1_!WG88IqGN8XL^1c!#B?*EF8KLI6V9$+p{h1i{1kyF=yAQ~}Jnf&eio zskN<%V$i&M!4Zs(zT&+ApeQs5#KbFHSgNa$7pof^Wn|E2>llAmH($?96o-!=hKhLl z`*scw@869h@)TJ{CnRM8Bfc)3xIFgsCn34G%S)aGRV43QR1s61=E`RY3YvOzkhk&w zXgbTVthz2*KS+quAl)JOA|;JUK*!b+#q=|{sI$9{!ddy4TA3}wNfGM_P z?v#;TKXdX)t6{L)Us5mgadmr5EpoLIp>FjOs5$!0QnIm+Vkk3mR=B&Lsj5O}0jL1^ zvJ*2WJWmE)9NKNrY{H6)%#+bXCu*3msbx$VxVb0Fb;>u?nZ~k1a;SS|8=`xhW@bg* zp%1xWbMS%w0S5@>Y+y!PkVWafZ(YFnn7LHKr7S5M`^l4b`jOE#rz6w*VJ>I=H-Q=& zp%rWl4BB(2!A!M;toYZJ|&<&2lpc1*#)_MLM zuH-@;I##)Y>;b>PJ9RDo^O1KsknLpJ8BmXn-SMH2P$7MK4v8#h^TO@VFDxRAy|11Y z=3|##JZFL9mblyB$Yo={=lH{W==u`%i?S>C%^5QA9VY2AMGZa~^-w1yBtZNT)XM%( zCA$8_AOLT9XD3E2d1vb3)s3LDv$FQk3YYKGi&I&(2OmFz82~%X#GDA?V`7t&B?yW) zmIFvgS0($Vp|XNN1V7jwy!L!7_?XgYrM=NJNz__z2Yud_g#0)x!C?h06~n^9&y5wq z=dgC|ePfi|@evd{=gvU}PHX6uX(lw=S*1(6U&|LEk`p3nJz=m4FMu*lTDm)efr|r6s^q24p6R+=bS|^dJ3MS<5ce7^9;0SQZha?*3yww!K*ar=|L9up1L@} zfEOLCH5J9hTAG6YE_;vhr|O!TCziMs`gR9>;I}6XY4^p$4QLe#4xwei1pUq!c3>dD zGb-3%M~)6+B~SuXRxbVlLV2U(YBx|@e;+ein~wxku<>Wcc?UBo!q#)8;c02xe|BJggiugG!0vQs2i~fN zH0I+nmXGw?KYwchXJrZz_{E}#!3W0P0VTSM3b@~ey&wm~$mp3OAle?5mgZ+>&e{Hj z-seLG2IkeIh{RYtIlYv2RnImnEmsXXB^%J;;B zjDp|M5JFiTIH)`qk+lCU1UUG@7(W2YFqV?B@1Rdmnrv_XO4jDIy=Z!(K zzcz!PI50rN2pKjUPsBBdMn;`}l0ZcD?`42Ckn@konU+R9G&zH?D**O$^4LZ!C!a^RPl*1Nv zM&=OZDpv(ju0v0^W)oKNik^=c?0VAo8`2pZHqn>FZH z%;ezamXbzgV7SSEa|#Wen>cEvG>+WGgVh@XCgy`Fqp}iO9zu(8Iu=X;fq}6fvtuam zjLm61AY7fK2e#V;ZZgkPOw5Bd=}&pa7T%W-o8*5He3`Q*Plgiz?%ny{{YAm<85#&} zz@rDJXAIk|?a6#F51F6!D2>nFk(BHKE6)o!5S!VG z4@x-|H?|CP-PHLi8ZuHSk&zw|neaMhWWc$85%Cm@V^bnwOR zGZ?29%QV@Mk%ORl3n(6+tD|xq20EZT;j4iD%h2$9u}Z$0y87(LSE|a&6BG4t)4m6@ zqm)!C+vIz3H4PbEHoVEjhCesHF_JOSjlLJqB=$ShB_(w|Kbj@W;0*cu`$IVT9hej2 zYE1u?IM;kLl5Zp1OW_Xl_c#q5i${F&Z;Ad_eX2AfTGWNg1`$gVD-p z6|nqhm?NiWc4}Ul)XW=vF)SDGO$YvGaroc;eDJuivDvS*U&D#m_3bWlk@XD@;L&;w za%)D#OiNo^mPc5;qOxi4-U&FZNkOCcSnuP|f`UdF83TgV zlf8n%-qZY?LRlPOuSZ5bSBO43-ub0xT+^frn#q6IZfgosJaIF#x{gTdm%&1GbaX%W z_W=(5Z@#sTs;U|p{c%A}y%5w##i03oZDVO^`iL0>Iwzuv|LS2Kpp}H0XSvNnnc(k@$c#{Qp>B*FX>MYYgbTzqb0gLngP?h-)^h*79 zydOu+?0w3pq;zu|MV!Azj^tu}LJHB~po)*sZ6l?i<(gFDTb9xB+qI^#Oxghb*5Xe! z7kuR(WFfT^ueVqImrjd&Iix>2IUSzr_TsQe(1E0&KaQG@gTv9)wH4HTo}L1DzDovG zwFNz4p0^MyWj|s)h?FuTRdgX6@kl~{rWbnfT>;80=`8v7)#TcaP*c%!;-ro4$u(73@ zkLK|?golGKWR8O_54x@@xxpx)b^GtXn*?xWd{9jOb}%&s*2W*CBqTz9S84Y#cJ_6e z-DAKN{IVs$QgtEiX?OVU?79$rMn>DO~TH%$3wNS+B0DV$U8PjzU}< zD|y{!-<(4(-fZf|#`Z5gy1bvZiEj(i`6i&q{c~~x*{L13%zlP=8ri$BB*0r6)S!<4 zH`okD(^2s7SN_;vrgYv<|L|c8WDJB49su6t7(UU_ihv!N-M0nDP+z8)4_(d5JLo&~ zSiA@xZmpO%cOoO{goT?uYx=rQT!J?@H&(@&nL#kk`s(FLz=dj%+tV3M?zHUe8}NdR z+bF*e<-w6ngVfbB%}P*L&Uipz6$8Xf)6q>$K`>)!@p}j;uu!@I_0s1(ThMJ)R};=q z%2@AamFvt*Pg9MgiDP5en%wo}j6V_{7#!T(+=S@A1t}crm-r7=}bZZ{`(ehx;Z-d;6bg{dhu4Go}#SbSlmqZ1WPOfFQ(w{ErBluH*# zdYe4h6NG>pzuAqREw!NVzkfM5r8r6LKIbp>^sZqjbEhfz_ANT9#Fr-@@wiE-6bYCT z^XT9q&frrO13~Ib1J zh4X+osoHtQ^w~b8ku)kOi{0Jfa$R43IoYG8K2QznE?f@fIT_)E4HHy&Spc7hpDzv2 ze6Oe3LR|w1KpoL0Ykn=OO93I~521htPtLDzlH=J|eDJ~*&dT}pUQbZwgj-~A@R=en zA775434K=9^^YM!zezfzTu@MxwvBEf72K*69z?TnC z>?uTNaq(8tu6$~3?>RZ0T}tXw++GDOw{;o9YrDN2GL;J$e*b~t%=N{|@t;4gj*hs~ z>Q@^~XU~G@=$e{9LLVE;!6oU+eRciG5|4s%vXl^dlvWXe$e&#QyK@JZ3R^`*OWSzw zEBg-tEmx3g$y*_77Zqr$34OK4vxA@)x)EL zD%mei%A7ituy_s9Yw3N?kIZ0gh8$)7Fm!2YNH$sThm7`~FzEBXdk34V!$Xf-Dr;*% z9E4#9jzXU2)oEFYQ6Hv4W_SuK1n{M@mnmjtj>x}%c=MN4QbvZI4I9D7lYGmZ5i|8N zQ&7`k7z+yvGJFk8Qe&_@Y-V-!y39>ZthIEIX&ygjWTzY{*Gc1vN~I^y&c5=3Fu(ZJ zuw=qFZzdYp*Venfq2&$Ac zGDz)w$G4m|+Pnwt85LYX5Y+sne$4O`E(xezZR)E(M8OeSLjU z2$wa~_(pM>O7@spn8;h9=K1F`=HMevTAnNLmT^DMisqam?h zU)9#twY9dke;H#Z)mYR4TU}yOSx-qS`v+~50N)5|rQkcVG-TYIoB%Hq#S`{BBD%=m6B5Z`O_peOe`)%fG9Y9k?XnN6u*(z-gIV=-UJVV-`p{^$Zw^1_;AIA6~F@^CXiE5py0Mth9-R~_WIwQphEd`)eLv{ zH12!m=9csLDk@h35@u!!Y0B%ueSMoRU&azJ!F|}=)Z`nNa0ghQsHn-bcR^tUvRNo4 zu`n>?6%~u(=xFX^e6mti4@uTOx)H9fMlt=R)Q+SS1j|!JMTKmv;kNS6#juC+G{x1s zU%vv!_4GHrCO|81Ai}lbv5%K{%-=Ccz z0;Y+QFT_fI(E0?SIqyBJuN&lKSA$I4tg-{Ej=GsyahqF8Wc;`YI(k6CN5@R&A|oIS z{=2yA&K)~Dgpcf8{$2Z}Vs$;hzX0%rnE2UqaUJr7g@Liqa#qO1ZQ!fK4Fuyzv{8@P zpTA#O5sx07jXh3GPHqEVcN7t;t(_fxdwf8~-cMci&-M^)C^XP9CntM0d8qqq0nQRc zA~kur0pxqd%BUPvx?hTX4`)70A#Oe>HZ?cbThGX;sCp{b--!7#~@v$7XvHl(D>FFIEx6mN3oNaOTd;w5pIVtJf%5iqFBSP3RLeCh~ z%y)aABm(Ak%XMMHg5}QSsfz6x|kSgTNd!b;ssia8=4>^BSQmp zj-*@%83@t{zmvQWj8CuGJ7mw?7HW}#ke)no{T2Pw*3w2&JeTtTe|HzibOCf3STtu# z0tDIWbppqlc!Y%C01*LpJMTZ+pP>B@K0+Bgs`8i^Jj&}5dIdSTbRkd9upWWyt0qQv z%sRaA@b9UIm%%U@$XjgCxwCcptIpZ!o#5*Vc-V_AXMEMQw9YmLlL7(|(64|!kV#)3 zFJfv+EV#~w_HopL&>Pwrm?hMoBj{F zFG$ERQP$N%dM_PC1R|yX8{<_~TYGh*v0Ku`u3XafZ&Q_x)&a*j1hp}An@z2(1YEZ# z9IPFGEj1A^DSp&P-(l)bqi10&O8>7XBD_f9KVssB>S|`4#`u3J-rzSUih>o439rpF zskE{$Ii-kz>FhQ~`0`M#XX|@W0VLPpO|JNV`5XcM$dg}sCr3SDrsgu6n-E2dWR;SF zVv2_1bNR;R1u*2H8V3mxB_W}D6R6WXudfEW0;QywE1UE3jG>-~Y8yJux90lozd!U@ zUe0}*uHTovyRo^+s$Co2Yh1Xu?O0g2vn-sQeD%49kg(SK^~pNyqsd>Nq7Wu`6R~#7 zM1Pl&B@i1MtE(mFp8X?KOj)OHrrj!a{pcQcmKI| zx^^Ai_t}4n&X=E7GvJ8=WmRc$@ko|ns%F!VC^`jsdMhh^-217+;4y=3y%~H~l*Hx| z-s#3dTe}kT`|Gf0+}qw(c*hA{m=HB}(6%(YMudlNEyq%VwBMM+W5yC9+9RWYxd86# zP^`zV+Lv^6yxlT*Hz}XuMxC5nURXQwQvmM6?;1!gyEA+J1i76hIrM){PiFx|bMj*5 zYf+mwd3QynfCL@zMTm*3Yd1tI@h3~w%OH|HxTwn--5@AOSubdH751BuACyn;=@Fkp z4I2(~M)3Z&yoO2ue19@B5CdeltZ@1(0bVU|T3W zr!6tQ_@?$7x3swjFW-Lz~l%76QC6As(tv8 z-o}gF#laV&rRDbE*q@h_0&~;rxvKt-D||jrXPDVuRhT~1X@K#My971cmJK?FnaKyl{YtE)Z4MoOc$@(*Dkn<*E=v_Vcp~jv!(9Ax!v7mc9gd+ z6VHPchcUOy`hXkyTNE%aCYH^YNho3j6OsYzeTb5EJ!XVptSrH#H+P_MQ}3RgIMpWN zyUeB|a~E4#>ND|5i^ric0JMfGD|eQ5sZ|_$f}h9^$eR;U;}BuU#t|uI?LuzrBVyvo zcwC6jaCL>T;(d(VygRI{LLLX_NsW!@%T?HvXJ$i!?w_NGLc%9T->1RX2b-k{Hm zgG8pxcXX`s@(vc(&t*M$qiu~S0AQ#`uQ~kU?0o?W?gH1C z!QbB>2PdvjK9zSs{T?~3fCR!}1vmszMAu$hW1Nt5U!j+f7XICkgyg`)s6D&Agw~K_ zqD}DX`rL`Mxq0pI5Mg=z<86aO-QWGozik@CS}Z9oEtel()j)p>6pchwR5vh(2hb#} zhEOh%lV=d=R)8l03IIaG{1aMUqR>!W;&A~txnDb9R&K7ojE-V8Hv{u|y&se~S%Q-P zqFJEytJH`19Z-C0lfm%vo1m1G;S95fXRe;0pScJc$<;yuQuaVkX=<2=V<11=7g>j@Op5Tg53X)ne!?kgcHJ=s>Y0TF(_CnKi8x?8;N$EDGIc+M$puhb zU=Is8z}XU2Ji?H>IGs9YDw?LI6U{u@4Ji~)B({L-YU{ohh-^nk--}Hhnnn5N+u^y*=#+wN!oa!fqg*R?A~>UGxhT6fBy-xDcXJ)i+GVi^6uT$hr%2mKG+TW9_C4lce(oeqti*Ka@1Nu z*)j0}XKD&kP!79-?!qlXiI1N*7DY(RZ7^-9x&}8AsFU}=+A}&r(c%`=B=Bpca-`Y7 zA1VUv275|!^2@7p7YvLj|C@xXVp=kOYp@B#%c)WgbxWLl``sJHD2VHo7_oG0Q z@8kRK^)IytM0YxgUoK!|iwBin2K52NaPKRUm_F4@)r5HEPGhsk@Mq3Vn3|f6jbdsK z^!2xwDIxxMp6ky}&u#VFx4_wRbvxfu(cBX3uD3%{i)kDjlF+EPwu2ACRsPZMa=!t* zhaC~oQW`|i)~Y+vuZCzKdiu~-A;{696U|x7zsp7Q-bo~aIvad?ULL_48@7K=>?HK# z!|Hi|ed`Ij>*yxE(vA$YMoy6XM6xG;I-3-L55Lsp0{6%5fBy-%?*=E(JN-;Uv>HB? zk&yv`I&@M1kO%YHO=1dxH?Mz#Ck^J^ol-+&}18m{n#ND|oxR zbbQ3SyWr;G<7C#*SQhaYiHv+-9@E+?Q!T4lkw8|es7(gIoA6)DF*9Wb%Z&;2tmRgA zSirb9h?9+T+PO$`AF9v+}o`ubX084cj7QO{1zpt4)s z3Babr#XkZ}L^<>gr7HDd+C)N{`#wN47~AsGyaFi00c^{mHeXz*) zWq5%SXoZW2Pfvep{F&%`K?C2Hg^SB^CXg+lpuqNTz29VKDj7_kP!18-t4MSX58Hsu z51LUWB`MdJCR<}@?SqoN}IGI6Hg4D&xq*%?;j6@aM>tnx(!?C`l6*{Es7kbu$DWY`^Q9yEs&t zAPdfo#zh0)02vt>aAE-NTh`MwJglPj`F3SI&cF~y%-+7V*7Z|LikyT*%y)+6?T&U4 z5=>YnD9P~oBO~Kew?4S8HdzE%nbw*gZ3M)SBhj!Zc=YiI?d*UcFF33wC}@6i@|#Zm z13vEHI-XGM>ouK`5zu?U96TCRi{)l)i2aYMhp#>ODhA+5CR+M-my0CP%L`r@n<**i z=!p1)1S2&SBm#nepiBZhyeA~w&zNZgDM`YEQEo_~BkWlt#@6F9u8dZ z>vWG*0YqZb;f=3vW$U~$oGFOpu%{9gaaxyYa#}}u`>Z7};qB)_`S2(Z5oM*YyyCQ; zE*{F+p-$`U6ay2--t09t1;^o$gfgyZuc_oePkDLy^;$2es*nRl&7&eBkZ=imo86$J z{svV>QE?gU{Es$5UU2)9sHJ}1fXSSM1RWz|-*&zkBlMZaMFDA00rSWBL^?=8PWkyHFNzm(eb@Cho-yJ`% zukoj+<3D*)Xl~BHhAjsA*^ZA26;<)3X1z7lX}b1cE`WrJ)waj~KxSPZb*}InVoJjY z_^eI&xak@kk}@e8B<~^sKdDPdXs=E7xmSA57ERgOUeWFLo_W#-yAUb@QN5EhW;OFugM-HB=S?y)&iC&9{94|NPk`j;>L$)WMBM*~jp#pi_8ejI zwKcj1`zLw%!yl9^-X_Cn1ruxUl-7qS=b9O|I;iBvnoL+nyfBV?%;o-LYbz|c6&uF^ zgcW9{pYh%strW1~UkTar(u4CvmPv$uJrR0@P|Av7+R%|*L99eHbOB3CtdigIo0^rR zrKdc9=1BepfJvi<9Ge@a0u+jX96DJl5D=idcMq1^@#yG8G|cUlG!5S@FPkdy6eVyc zgHE8Nu<$vur<@!MQPeAqKANKz_ZJcd29(bjn3LZI2X@K2#mcFvchnqB64TPX|NG88 z%FUHwXlR-=dM@&Q_H%rNB5`~BkYdZoygYajmb`fbZ{5Q+S|r3szU<&&1Q>r!H3{%& zlX}GM*;0EYUXdnk1Jdj(c>^GoR1vS0k!|E;D=!N@ogdA}zu z&6bg?qX0$hO>l5@sdX7dl}brNu7byS0qmb?@Dmd702MqwIC%d)CnvY*+vF$kakNpaj`*6y< zuD#?nw_iwR=E%>VEQExxeSN!&p$SiY^+PlBdjC_!+mk&K!4_--f#)VK{jt9OhlAz7 zzqYrtQ#vIWL-9OI@c6XeCY6?{pOrW_u6ZthZE0)l(MUkiWK z_r)dijf7K+I{+;!AN`fHya0G0* z3Nw1z+6#5^sU%N6iRrU7;Ha6aFz+s$WQ9Kq3_-1PP(naQ`*TD=#WIj13Y?Az{Z75ubG65j7_WR{e|ChxxNOh1R#%9a#-?UW5E#3drtIYbf7bg=67{*F@n)W z=JeOVc-Ti1^!>nwaCPnFRm^*}_{qE!8K@oR@cHw}1VDHzm9+x)-nhcG}3G4GrDLz#xt# zbCZ*loE^o=;G-96o#*d%crv+i>p(zo;G+kx?7|Zo5SeLj>gPWCzxTqQ81I znDrEumyWazaY(mmrga55x z!@}Fw_DAqAdyZ$z>Q?+7%ZkRM-{oUx_h>H?M|8%JOOA}(>`oYcO#-GzUyRAyfRZ5k zpI|bhR2nXF3mMq_sH zIYj5@N%7i$PGWi{w?=)iaW7lQioxXXFTy7O4!B23g(0iO@qMu9sfvg~#`U!u*)w(p*Q*&IW_6&F&kp zDZo9mSo_Mvp@WuRt2*}Z&5Ji^8D+y`p_vq6gS8$c~NglW5kBoa_VA3i+$C8ULg5eAY~BYVGvnL1q+CkX#Vyf2s@>8t3E z?F~c@t*mv-t?eoF4Dh`|c8ED06%fB%`9(ulNojSh@% zK7GoWBeLnx?iG@Ve|Cm$V|cz$_hf7A6KV9A#W>rv&3gvI7sx6qpy92qh5}W5UuW0PS+GYhV&e{{XJKc*^*%ICDJiK9MO$va z?xLjaBoRtOItvTcmzRT`=(gp+5N|KlYA9BC^v3P)tUhTC{tNWY37nKIDR z*YwXeJ^50#BY&;PECOhZq$WWO~n{Zd#q__qFN^O8EXyw?$&0^$RJ38;Fb+L?m0#8GF_YJTF;ei z!=~_1Q%Uf>;MQ-G*cy9LCd=U+)HE0(e9b^zNkVRNVA#c{ zCKx_2JS?wOjsYe;r}OGZlZS!Ge2nU73Oq(~@-Q5CI60{Uq)@qef^k6#)EL=dt2|sY z>W`Cc^9*YDO-PuW<25xiT9blo%_w3cm`@{M&RPG0kYA)wR8F_T^oSXv>G!07to z>=0Tx{|Qmh%kt97l8{FgFnD<7xmbYHS~>~_I;w>Q8kKq&h~usGyJTW}%WapfFEW}l z1yf(Cp{T3h_}G~VSxBL{|0cT9Ov;eIe_xl2OSdHyRtP(+?|>_CN`A;mmI@&R*PTe5 z2Hne4TVu~35a;}yv2h|`k5<;cFF$Na=XJBB_Uzn}JRW*gz;}20Ifo=0Yr3$|-G>$! z7&CiuvIiL`Q6W_v;gMhEg5V-KEX*5?Qz1YK)aaoe*nEo^yF6vGv8kM%W|{qBgD;uS zW!^bUeEO@a`_ANKRXs%Z#X%z3=)lDGLUN9!#{e$+e=2UsPt1nit^#!eZu0zMbh>A9 zbV3vTu$diM*BYf-~0!qS$=_Xhc`HM z^YhzZW3Dgi;7cN#n?;W-NtJ?t>FMTJ{J(q_lY#h9Ikn{UNVh#mF=KozZ)CK+P-jnO z`#r%*py~E=qvgMu>{zxiIX?c&uW5n#Is0`U9)`!}kRn7SJW)x_YtQo9kp$>Pl^xfN zFfb|a8_QsAMbu*kAYAt&bs7-gS0w@4I)?4!6dnyRoK>FyW2Nrkeepm;13G4iSPJ;_ zz;I9lUwD-RHJdIX0E?W%6kVfyt&%h*wy(ybwKvt&5TUaO;5J}$E2MJ|&dk((V!vcU z1msG-V^Vx}c{%>~kI%(^K6%21sq4NRDJgLZTg+?6VwddqKTwr|z)=Aj4M6iAGiuk0 z^~bJ|7?lv%@+xLajb~eaBa4V=bop>KE;_uqsiKL+TSdQdf`04$OkQ5+)hj}IdA_Ob zM;V|2Dflou_dK|Yga0XP5&PqMIuR8W@YF<0kH=ad& zH+=A*bAgPQeeJ{sAYre67_6w!WKxnjc~I5e-G4VWmPF+0xz7~@-QSWA3=EuIT%g^(3v$JraCm-iZ^8&4 zf8UL~=;iv>82Ibk6H|2P$sf?#F9js2s!Oa~SXBjfL|5oNanSGKom4aWr1g%IGd$+{ zYWVl^JYxeD+5BzP~HAm@;ItZPLg9u ziR}qm7JW=)RUegC)W6B`+&%Ji65GsI((LvVE#R*HhlLE zhM_k%V7CfHdO+yn>D_cL|9J3|6frkP!{3O#<#|ih6AITBa@W#GK5C=V=ab!? z)(N^z{*c%w3y9~eRw2>WHC6Zh?)T!49+&wex84sI0@8Rv@V4bg?T|L_$#!99m&0Fr zW(kWxFo!`etS!8!nAazgV^fKM8?kh)l@~)~^aKVX85`r0-RI)k-UFeNlhY&C-s3H0 z)pe%mP2bkT!}w(BtubZQpgNw+Odx>w`8+e+--e|2$vo8P=*Zq)puNIa+Rv-2COlhP+w6=a8rLZgR z%sDcmOp2HKF5=g>^XuPCN)ROFeTqx0IZqD~yY#xclRrCO_U3h6WM95C{`OQK67S+9DC}r!e7L%+K9Y@vjJ(tq)hTAX zbaq~C4v#=XO-)$?SWde`-}D-XAb}t_2kZOTKmAu;{+{RGU=*mYtCvCL&dm*=p^Z%= z+h`C}pW1IuY=hkf{B5Vxi#s=up!Jq5_3#=U4o)ta61({LO_*8i>a^DC+`zwT(ejE&qKT1VU<%g8)MenwjQ z;6FAxR+>B5ciaoN??+Lrp(VtyF_RHG&AKGM&d|0wR_^6KQr82@p`(aF&-@88Q2TsiYvxrK!@OG^s&HS?XD z63_3k7~I5$6`9U1V%)_Jh{1x^YS3L=(g@PGXD`sAqL2c5-?Vvy>JI(>nUp{U#3+9{#x41r1TE9SECeG%gaD<1?`x!GT^~r zZVrZ{a&QAL|F#-QN=;n>>l(yWy+OqQMl>k_0X?V(cF;*NJ&vR}g`tOI`|W;qwzBep zAc1>BLqk8~L#L*tC|!sgX)}Dw@+kHuj)JVv-r8EiobjUp4i!~=`oihKRJ^5KNYLF? z(OV?Q7kiGRsfj?0yst&#DlS69!-F>wVqyjr3#-#GAcaUF`zpl(qL?6QXVbZ9wnEQ4 z2Xl>zR*#{Flgk`tO$?0P)n--xqAWUSOiFhU+L?zhJdBY5%pj0@85!|)6n=14i#LEaH&LL33hhe2#D!J zxid&*Bnn|7@1B^TiQ|IP?C-jl^_x#oWMqX3=_p~?;;!5t9%9-H%Iz9pR7}l&TV_+MheWEXjGS%uEx}Pl) zl1>I0mzflEpCqdl!8x-MTUEXvvy~v?hk0`YM)l^9eq^Q(eD1+8G0IqU+8oM@A;10G z&~bithI!~semOEa3OX{dl0ZbI3kx4{bIZe|kp#-sk$3Nl(CX_E6aMekK-2*;G*C^9 z!sJTGc_Vz+L)+5JCxMDAx!zA0xG=UXAN8;GkHtlO@29eL5gQ=FkQEi-Vn|CvHV4$3 zo?<#WI$~l7b4Rf$(xoaRNj<%+pSSJ@(z4Q(zj(nSLickUQoxbpjGO}*5^x{D)M|NC1|t57`E&5uLFNxDa@$xA=K;N1zQ zpw#@eyuY*4lpUK))CYkS=V@s$u%oK8u|n$Hfu&7Mp<;Nzu(Rkz=PCkGCp$Mk?+Lkp zkcO6_m^{YMpWh+5DkEdX&kI#t%u|3u`2OCk zd{N24F%+Ev<6-4Gf&D=a?MSL$X5)w>q+lkU*0myTrmUhexx6ewN4Eys3c7^t7jYlh zgFK?+*&-t&VUD#pq5Pi!shYaDG%6xs6b%iTN(ANM!!%CR=9b(R@&|-QUl@VW`1Zls zl}mW!9mK#0;3{DD1a(n0KCf+n>IWJ&MSLDAoSQ3)XU_tb^?{qTf(KAPl}8W$4dZ)m z`}&E%-Iw-Rir+@QqOYnznhWP)U3!AZ!bWp&<|;OEza-;Vr8Sm z^{Ix2pz;>E#AMSCj=T?pN>tRd(+=7vc!=+t@_-PMlsr3>Jva;;OcK}0@CpHm6I&`U z>q)OG>%^~jc94>qe6GD3{jLXIujo~lv$C^yfb9+hZ4zkfuT+yD1sn9D;EHy7;5tGp zD|`1R`ty_&$L|5#$KxTy?96^AkZyh_155RToJPEjedv+1vPS54!+`;h^;c2XMre2C zVRQzfa$es0ii+6b&6lJoAictJadFY+3OB%yf%_erIJ7~u!aW%Lf;}^3iGK1*IQngg zN=jidXr<{%_7HAMs=efu_z ze+>F-1x3Ynx4o37q-K9Kj*dXGkd^^*3NHoofse0fX=xK%Mn*NIWaR!%PLfDv^IJ0u zn+o8vvKsfG%~c@yi`k3#%L>dGe)uR-Sf=qG76-mjRD$! zy0%W&=MBDpD;Jc6SGK(S+&4dbPf`=Ir7E=O^s;I@ZX*=ZRxWk@;*%v+Yex zxLO@tucl^m(uO}olbfRX7h2)9`f&uAJotq-WeIX`I6NCpu8vhl{ofiSB;a71!5cDY zeU$w~(r=1kuuWXt(E5H`Tl~9w2o5{4OabKShny~3-8)~vn)Oi^{?d&Z7iDe^(Fx9I z(TnZ;+FEWVrVp#$Ve89<@|~u!u6Wzu5=cQ!IzBdL{zspSUlL7YmRh0f@o2;~(N?kVB0b z7>J;GN8Z!-!#DEo>U_p`i28ANf8PLb>V~9v5d(GY_OM0pE+-oE++r9QM5q zSJ&X)C~<>Zx2VuiQ(+-QV7j)?vuAy)J$w$!K6{={=r2rtx%j0}?sP$LB1Fl-H6g=} z!A^poV*q=>9vsoDEz#TmQhXnh@HOzgh!|Ku^zrr0nVtblsNo$vud>%8-!l?OeE=_P z?)b4M*73~4+k2(Sh3WC*;gyx!-b+>`|J80(fNh0f5QC9^wN4Iw5S=R=Etqn(ij$ig z-i}$K{_SODHWCsN`?a+qc!I_VO@(?6FBTK@U!V?!T`kBB zUukJcLA0i+X)R8zvpb-Dpvd#}^##AnpFe-HK{Wz#;m@bt!q9VHzaf=+AY|jp(A3iM zp`c*;>(?6)NnL|8?e?r+w0hpw#KZ*j3BbpJs|vI@#v}nyl!BxWu*7K*sdcp61sp-> zaM)Nd)2;`iDU335m9@Yp`9(<-(gHZ%DS#Op7Bk_@H4NHxBQz%dpXjo9XhBAHb}#x- zJJ4xg8KN;2ML0(v%o_MpPBZ-JF`p*-y08!#f;CjkYWtR?PV_`YXRi2KI;Nu=Z4xj0 zsoN05lE93>;Pzrxuytwxy2=yqe}$*iF~5V;H)2D(C4c1gif?LsJjcJk19Y_afEk(W zJ0Si;U_r*$)K1JPBrblfb@rfY>=@7?xqv4F@Dkvv>+0$P1$$4cBb@{Rg*h&5`am;8 z9p2u+J`c?8@Vvo^+h6I(`C5%D;cJM7mlyGo(#X@ZDJlx1X@7TDTSG%e=Q(;V(*OR6 zLL9eRD0b952M&35mKXuo?_+tnx0e@MYXP^Qpf@C+PJiKirvMlw+K*@7T;1LAQGmG1 zITi9}W@hFgegrTDWSir`U)e=gRRz9ELBSSUPrnhG7kyvZt+`2bLIxAXU&Y~BTUsi+ zuz{bcq`0`%$~Xl4)v$?Drd3l@`&{NY5ez;PZZ)M4QmJjq0r(Gs5-u*sLql@TE!EXi znY!fHSday8=A#`P9}SmsQtGQoFyJ|wm8sLjgDvT7WJ&Px zyH_0*6cjKqF~MqWVr*>5ia|Sl_kSnMs~Xd4nu=c9@=Yfu9rp&>EFN7juEhGtS*B}C zeLXK1S5oso$~%nzodvnLxC8}t3=Bk>nIn6Ru_T`ue`>6*K7y{!{{Fs-iptd9D}xsI zeJCtJ-VDnRz~yPl&wXy73F;|C71r|#NVwlZ2*GesS6BY3Mn+$sQ!yKoCqUWatRpRL zHdCs;;jW{z2w!i|?z6MMPf0@Z%)kgzj)9O75)vYjI{^YV7=sLQE?1tSdVbgTU%R!L?>0B`t~iT!d~KBe#yBh zC@PX6`g?u40=^U-ZS9IzHKFa@GPEP_e})*LnaQf6^=}m{!t|_fl9E!O7zbuAd_!mcOo(BYm6e4(Rp~W!yg^W9Zf*{_8a3vlbh86QQN18R z1Z_Qd;=^NNu76}WY(M@9{b&e7h7b4jsWt~q1~7yN;#5a$IPfLO<~*hw8;@--9+Kpl-3oCC{0wflu(Xl*fBfR zzO(z+&R^zverA62{e3^@_x-#tEFO-?)6)}`IY{7)M!QuoGc?o2Ly{dT(u~8|y|>E; ze=3zqr`y=u+mp%s$o}45!@cdT2_nR)(2p_0PiN5L6X;{wG;+AIi zB7D~}zgGPnRVp~KC62diYkko(njX4Aq%N!^0Y3t2q(OgyDOdZ)-zdG~Et+;*?TvY- zxr70MK>Ro$ICDbxyR{cP%d4uEg~BxiJS3D1QmHhwl&dp$X&9=q494sEdG8m9;U?$1 z`}_Y|TnwdXAsu}Mombj^dpk#7=6lS@sjK6cm$mv8uf?$Sq;O?2)$Am0+q&WT(2#4c zRt(5w-~uv7ADJ+iOcsnEB{Tf;yEz!1Bb$$4eA-b158TD+)H^;kI-NXQF;H=H}yKVj=+e>g#K)uWvaeG$uTH z@}wMm7G`GI7atA{l|#h0Oc9g!2%m6De`^Q<7^BN?1p)^Qvoo`^XPWG=DPv=oFx4v- zC+O+v#VmL>Q-EJYp%E$;VK)Kt)EGUs=S4+z^^J%DI71ih>9&yDcZQ)+hTbim2l-Vd zlew@Wg`ViBKyc~Xz|DSwH*D=B_^3cd-8LnDfA%3vxZ&0H4q%se&zfvpTv7*%JO<^B zh^tp+cW*3M9g4RHYnkR7vQyRk+9_H})2?!>*&*WontZ;~+mVKzzP>qtud(6p2gCN~ zA6zyA;RpuscQ@kVh&REe8d-7~?x9GI0U1gCFdN+c6H>yiF83I8rNup#t~7Y+{J?H!6tN^v#Qvg6Pa>Qcl_12IrmN* zqk>rg1K6K)6C^|*lBW>?1-LdH%|DLCu{Mljqq8)WbDy1^;?Y%U)$wtr$ve(FC z>qkd#v$lTF)1%v%CDAL*bBK>Rc+fDg5_3_BiT3}tA^@7Uu&^LfuR5I`?(5^vwMjOX zqG*L@os4sJ<>2H6g9D^A#7^h)?GaH?#-u-yL86?Qw2H77;kJoHqP%?el$=i-bn@Vp zqt2wKceJ;!Cq8`o6sR_coWiobye^>snVjt8#Z%z5LFxJK-Mh{vTYOr#!A)YjdONRh zBaySbj%gxNp^5R0hesL8rIP=AE`?KfeT!_*A~zB)FRxQki9dea%Fd2#X=ySFYR8hw z%1xmBA0Jo6_mB0v2kqPUOMSh~se2co4N+Zf`7~vA*aF#0T^F1reMLz{1r5Y~pqSwE z_XGv$B=cfVp4{%>@ad&Ws{UHx;-Uem5Gw?L0g$Pv-Vv+<8zMB9w(N3q6O4>x@rp}I z1_K00#a4xYX{7H{=af((En#Wqa&hr1_*Dp4Li)>pYa}LIFmtPyEXu^g9{cnWcIXf@ zNg`kbl+J5tY*ZssQ!oVflEGl0qXex!BfV5`o7Ks*?m%RV?~wT*xv*n3tOw)btAXkL zQ=f0xfVGG1wY0Q=V$3&wF~O1ib2;>^F%dep#vh@E|X=f z@`zL-&1D#XR5av0Xo1@_a>?WK*Tt|65Q3%;cR;Pf-_Otb=!k82c(_Cnv^@Fb8N(gh zw^Ot-0;&%n04=U0!B1mUbb9PDjJ&%%qwLFA6H;%!IfcX7g-{y4`>ZOB)XkFSnRD>R zhjnjB>uDq}mOz$pTp6g@>_#%MEeMre#iHHks~T_zxape=XruxKWd|B^5_O$8F3Esv eZ2SLz{3y?U-4G^vYjuQxm&dL>ZdJ69w0{5)B(L-U literal 90089 zcmbTeWmr|+7d?7tq#J1uNP~nl3ew%(-7VcHhma0w5RjJc5Tucm4(XEaZti-2_x_*z zJon?>eh`JT_u6yK7-P)2_@b;Rg^5Or27y2@Wu(PbArN?N2m~$;6(0Q0qt=&E@E5YF zoRm1^`M*CoZAFO?$Sa79xQMz}=0TQ~K7kf-U-nYL^|Bx;bvT2u6iW~$Iunoh=RQMa zGhUCV>euPT<3WV9JO^#xze^_-e*S#XaDj!cw~SqTT=OP8M?LKsCEy@S@U4~Q_QBih zW!KRHXFl?{|6Ohx#fJ`%7yn%{zM^O*rT8Qy{GLaPaw%`>|B~>NE1H_Fmugjh|NgzE zre@B*;X_C;3ih8Y!4$=!#xxns_1)cOzuU8``cL^oHD0Id8l{@`BhBDPiCDBxMunfb z3OLu=MMOl5&Q{u=?(B{hoB8?q%Z+W`o?Kk$H`wdk&ySfpOW*K0uR>h(lG%(5153lh zQ6WT;(`9CcKRqxzerS~H_V@J}bEe&2AJ2}Btv*K(5)#rYq<>9K?JwoAonnAc3Hezg zB$A348X77pR`@%-vcY`1*}z`jkjhow{P)k@-JOD*JmB$iwyCMi<>U-_BT}^*G@YyL#wS>UliQfk*6wHx29%;zk@X+OjpZNko9*A#reer z7d!jSlNcj2Gd6|5RDb`@J@%yr5u4$`;UOy>-PYEYrLC=OfvT|o9l^_&UYC2*5|KnC zq@;M$K9_qM1_rE9=r}T6yqgXeH@AXw zwY9bT)^DoJ2ND9G9~(uU4XTXcj(K~!y1-7Ts;bubmp|rOJJB9#7@xU}@#iItI2MqXZBLt}bkVx2HKB?Sc;xv;R1^CgCa zMDMrvzPj4l$_xZN85ATWjIUp-Kew_FF*7m!=u|*tGx~+Ny1HuY==i3}X0_wf0~J0# zzMQP=@W_aSgoJkpIo5V>B(aK$3NCA_Vi|gXz;wE4K z_FGQQZY)P+GvhcGZhVa7omW+Kw8DoE9RrE<#4Oq!MxT03+X5cJ4bwY~U%q_F$H#~2 zciFRHWnlsCdA{0-uzu?5<~B7mQxVwG)z$Soma3?zNKRV%;&5Sha8Nc!)ZF}av}A2n z)oPM6UuIQR)y>V#;-Wqh5)uVP)+Yp%87FQ@35k%<(B$M~TU%T3ptIKC?5U|K6l_X$ zO-+yE<)!82UyRq=|Atb?v3`TEtwz7WXCPy|?07yceG;@DdxegU-W3RZKI!Y%aDn6H zw$h3Ux`&jePn?{bn0IW!onDW3+@pcuev4m^IIzObw?;Cqk5?vl-GC1{I2%pq zQDA?UX!5zVrJ|yO;M2*kuIRQ)XlrWnSPT+8-7`{C*SPO%@??yZss%=!Tpcc;p`pPW z^$e%I{Zc+NGXvRc+;d!RePMjIIbg*3t?KWv=@E%in1iDlgo0t#)Ra0LZ~WJRjI69jjinOCG9FIlh@OHL3rlKiYg=1c{dSsD5`L^R`;7&mSIk`1 zpjqVM;hE{_fjuLi%|cm9j@yBe@vVE%>rg?kJ2*HXIp&0iORK1iYgHC6K|@a7dWrU% zbADNi24QvDfQAaq7@-vOUaA>@C@#ldmf6@o5aJ32HJ*_aZ9LqtqG)ZdTugilPI zlAeBd_HU@o_u6r;>Qk}vdd~|kg7UYHi+m7lDxrsjQxg-D9-8}Eqd*O?dmq!_Mf)vl zK{kX$Q3&#IadEM-9)bv-pP%o^@%M*L&CYsyc>MA_Hq_Rhi=hyN!C>MN5|a}XUeg{& zi@RG}9w43d_xA&TF=}!9;x(}J%U`ga1YY!JQb`!j+1(uz6cIVO$e5U4&TCz;7x>c9 z12?WWFc}#c2m^s^K!A`69x*XJD=RA#Q;W++ABgt3xw-BzZ16ha5fPG-l4l;TVai5E zffM;M;33%P=nKF6e}X!dnyT&NBTzZt?79u<9~!#9x$%3rIlbJU1v>~~VP!2XE%ly8 zggN&`k-!3Q-rx`tUakZ_gHm$}15WorNhww|cQ{M%8sv=A)6;-}09gC|{r!2&#{NF~ z2Lpr0i2^wr8ygV+VqsXc`Xw&VsPOPt57(=m!O{1XK{z#k58`R0@Tg^91|H6HQ&3Q> z=U;~Wx6bvRFR*7&)YO0{sH=0)(uQa`%vKoGT8^}Q{D(Fg_{HOVrd;oK1P7;!-*pR; z%I|9F?9AT&oFF=PyZQne)(xe5H#a|j1~z>yPbwB-ZEFis=J}qul$2VDI><`j646oD zHh#y#u^6;m$nk(2z{J4NKQN%7u6}|xIXP*=mHz3I$Og?<@JMRI90Pd&f!mz-}-TnO}77JZB)A6UpYWPCD=&95#@83=X$aQp^DOB zmpnZ)15y_Js*?i90eA*^LPA2VqHs`kH8oI1R*#2pJ0>UbJNlx@ZqYY3HYCKwqoSh1 zDbnQW#+BqQT=BrG;e{AQle)XQ+C@C0p_+X70D+j9nFT!ipKoEVwF86aXxW^u_d>9! zgcie1K)M2ytX)9JEHi z+mBCmnH8gOupqEf;m+yIbr9Xa(`__Pz;v{^{#0Y-r$NXLkm-1l0t*ZWuO|qj{xXqa&Pli(5%m6?^5_;NXt{ zDU{B1Zo3;{ymr%pfr02uQ5l*4O4{x1t+*X1FaQ35M*>Ji%8xY=3x~_8tEvkBik^NO zJoN7FuA-vi!M!hr0yy>k&FRMcyzbLkA5}XDgW+L$knTiTQ9)#ew}C=@Mwell^Fy* zkKEkc^cx+s^7735k-%-=2Q9bxqJP!X(OGJ7kDSw`0?TA(F74<5!LAf#S4W(L3)1o{$)Oq$?rN-VX#o7lnw9>PApZs9jNcy+uK7!L&x*= za>i2YQ=rK7_4W1q-4CnP(bWyuZG}I1;ALP4KUvAo&$k%*FHHVJP@M*(rz^m#rYlzn zp5Oakl~q1Rm^D8h<_;ZhEW0JF&?(kY~K*<2qjMG~)thTniD)XkxxVF6HTbR2Y<9kcrdN)5RliK`wP#ZZ+Xd zGpg~vJ^KeDG!S5Kki)(>S^<>fe}AQrB~brGOJRbs|IeR_;$p~$ccZ<%y^x8?$+ot( zeJzjyt=L~a&_)Xfz_jp$`js{eUl@bR10E8FMd5P-vN8%bWM_Bx@pe1=&!0cs0mrnp zvB7=v1XflN$H zK=$aFXkEHG?ufu%Z#l;1qS|LttLU{My-d@0f^mqD((-oN02W@RH zfOV|Jo)u(e1wL+u$H%Mq`8@#i>-|((R`xLMZ}le=keT$XEdRBxkpI?VWi^`05sWIb zvl=IQLuhYrPp6of8W-n$wkh*T!P3$a60Xe_5WX{Vmw1bqqgvADbE#Wzt0689D=7E} zlIP8Ddhmhbk`iwar~q7nGy+JT^IVn5ipL88^n2u1Qu>I$1mtgzW}g$+XqO@1OSGeL zPFM*p-5(zw02=+h=1fX53*B`iASQmkT5y8Ad-pCJ?>h=7 z3rku2jN~Nr;mx~u`Z<{=gLi5ddwCTVLatlG=)`Xh=IbLzEb((8EiEko(E`*GZFTcH z0H2zM25E4m)q65C@+QjTbmc!Na3|XV5St%`f{2EO`+S`ZfE0kA9oHo}GOk zw+2~~pg%xv_|-eV8}@N3Q5+Hy@8jk7;I>cIJ^?q(_+!>w-?w4y=+e^C)&N6*5CCs|y1n_rAXm(p+VPV(+?=mu$fbX{Y?E^oGiHUI&$V%Bw$-YyP z*Z}xzXKxSqc`~X1ZE<-yEgf4+QxjJcF@PpMcDHMR55?+x2Y+k%$+2*`?`Ubt%gTWB z0BUn%QS$x!`p$TsQT;nEuDVWXj;=sJIlwnb7hV2?Vb5oR2cVvjy|A}I>9NRljeL(#HpxjV0YX+}V zLv=Oq>X^__Noncu_I6#n;e*R|gZO6qXm%XVH0<_+hl|VoVK(&sRDzve- z29%(Ce0&@fJaO^YOiU5s-(LMj6=Vd(sE1eEz`#IR`NJj#JiGI12S7{bN?yVrH>KMH z9sxMK1}pi3PY;407cN4pLLVe?>hIJUsL_%O?Sao=`>jUOL7tZw&ReOqQc_p{8XY|X zm=@V$Xy11qTBK@8BS-ssXX{PNJKo56oParLTu-=@8BBLW& zrsJ7;IXXH%gn+1AJN}En4zl+0lp*|+H;kK``%;Sf-{vNwY6U=hpx|lbM5>C4n*Pb; zf0)LieAl1-Fg!T82kv?^|E?=84#(H`{_Y8ADQ7@5JDIh2zWf5H$m#v@NCxj08$4n* zL-5coTr_!k3@j{UBTHtiFxTfNf4JxO9tSVukJo{Rx7xy=qauA)dGSnG)!Hq(7RNkw zt^$N2W#w1Q%zDCs#+H_J<9(Icu54g&0APUt`tjojkWk=vCqZciS_xRG_c%2WWPt7f zQU)MSDk{|g+ZxGI?QL$l0r(#j6qG9##&e1XAZOn9??6+Ch>Qe@3;2|yg#|5+eR5Kg zhKfpVQPFSVQ&dRC$e)1$Tp}X67AZRURA)eg$HtV&$jH8n0x;^}Q2y(eQ2W)}mr(%M z{>RP7n%39XXDf}03JSnKF{y;~4Go2Oc^g|>^~J=*Kkw+Kw&H_EQ~H!K(u9MW-4yC=i_+j5%NkdU%xKz zX+#{FTUY?)(SEW}q1*)L#ft$gsDB(RAIYWxr!YU?ZGYxJF;h?PXOcZN6l#Mwfg&TV zn`~*7%f=L_|8H$#_M@#PmiFJ&uKBZj8P8Q-`m3vS9fGZpzT8 z*jUexAA$Ig3_MgUj7naBr4DGzB330@l57@0ngC1K+1mPCA5jdJN&?U0LiA(jOKtf`3%S?}@jO=6jmY4I(t@vy zoni~*#w)2>+v4NlmH2)P_#4#{_p305cL8o7@(q~8NA0p)dEBc68FupF%74S zm@O_b`1-gxM6Ypu`TeJj{=q>?;Q&8?7r`g~<92$filS#?&QA{p0aWtRkYG4pU-_&E znM53N42aS<;~Qs0WKmsGtqS84V{-n_Q5bIf$O05cM@<0~78YFi_+6sd>(g9CB`0yn@i zff7-@=UxEf5w*&ryfGu=Fp2rvOUUb`Jxv~f3eW`v@(Y0OehsY5 z=srG8&Tx@LYkimmgd$qR5fL}L^c6UgQf3pcdwM^00xi<8t*b~WXA(SjUiap9?eALv z7J=czBO{ek*>i!IcgdCn%TMe)?*y=(U%+&d4iTA}1|fxw<_#8&q;o0m^4~_bsVQUQ zp!4nVHbKwCQf70D+;U7>+A8h-5eXZ{9k=41&9 zJzzB!=H`gJR+e2|@Rdg0b1x|=QL)2X-(4Mc52rCOiTb_k>Kbboj*7;`4{m+e^P7gB zq`CRzq9<1@JW5;=8De6x=DPi7cYhzy>~9!m`#GTL*N7y{$H>^^Ui#_dH|*tR*XwEK zH3XE^-7mRfr+b83Bi+F$0LIL`mOONKKi$D)VG$Ax|4Pu>#^J`GuKtQOdedB523W_7 z?>Y%|H`hwk9;K=55%|c(r5YP?v*JAPMTsK0fvO6WTA=7feEE`Fh4bxO_DI*r;O9`} z7SG>rMT-QFm6IhT#AQTUjdmEn;w3IA;R_)5_J-lW z1I_}3WzbOsdXt8RhJ(w%>k-p+@ppmC%aRZM?*g%$oH|88R4EeS69dl6=L~7{S)1dy zIJ{3=9q9j{is$3Q&WlpNJlZ!^GBy_UgDDh4#FTpTU+#~HGL}|f6dtk+p0zbGwB2Bb zjxg-121#*o--YqNz`N+sq<({Sch^7M6NW7<1NR|UIfnB6 zkJ3^>Ahv-%%uM^1BKBn$5_B2jU?;}4lfh7-_rWOSnw@Cb-!{aKj16X~;WSG&WU zomU;Xd4Hd8uSOG`-TX^wIT}OOX~GeHj;iD89}tm10^v}FL;U8|Tl|s|fCP|ST;k$8 zCkhT7q^$DFVO3=qeq#SJcpM_4quV?V(^FGlLI{Yvf1`|MZ*0o27=kVl1bnnrrQ30- z!+7ciRG5@B{L82B)Z*gCCZ87d&CNUJNjLhSGzh*|#+SAbRO}*Tq%1xcQE~B}?(X33 zwYoEIPag)SWo6P`bCcTUw|pBL9DX;~-^yC`Us>VE45_MiWd(|#Trd_YFhl*~WC?wr z$U&5DN*`&yee2AJiMn=m=>EO{lhcLz?g}XqiJ!mt2XKEnI_+jWyO~$qgehzr7dE83 z!7JDt332HWm-{N3np*I$geYCNUeO_MTHDuJmsY3*%`$+F-VUI0M|XF!S?>nQamdis z)aK@1v0zM0@VUUp$A4xOg`lBflIx2hjE^g;1?NJMF@U!et3N#QCbOYLhtexK-}8L@ z$RHJ~+S(QZgS`P6H#xZ>;PFoL7uYk}w}}baY|7fIs%Ho5y>^jAS(!Ynv%~h&KQwq7 zoWKr|R9COK*PMNPP3u34D@`hqBjL5DE-ms2s7~0!!}(i(LfYPcdtd6C&A}V?9lY&h zGCm^{d{8F&)bw~Qz0XC^H_Cupq>_>**Rb_{IjDctmsYQho0{%YxEj_tOVS9 zF1OkV3Dv*%F@JtIM{>VRpRKHg_}v6izBjg)zpCPjZ6N9bXx-P_d#TM=3(ADH(2!e( zAtV$YyM5JMTx>i_+0?Rr_HR@dCMgN|HAfv48y11)bJ39_Qd|+5OoWUPlnbq^17S(> z*7@wUVQWrLA3P2|{!d^8fE-D`ZD*vSYRzgkA!XqRL0LdU#qXx7yu2JpPIGMS7%eW{ zIp0MKs;YRCn9}0mcznC#pmcO}!2M+9$7zqaBX=>2W zK&b(&ml9US()hWKtET3I+YA?&1L*JnposO;!(>gA#V96`9?Fc4i~G*|a~#gsl)w=b z83=^eX?;68BqE|oxBtA;`#k3D%c)u`2RT{!*~&_QLVx;smwkC*w%Jb&DC73%?%iD! z<@>#a7_Rv3(dPC^gT#hCQbJ-WLqmD_VUU9>jGA(c)L~WZ1cYl-jNp;Q#iPhn`ueNe zVN+8AP%d^z^pym(tURQKQ!%USVpmxmmQ3WCm`vnz*>(2sW}l6Km<9@0Uk@Q5AUIlX z`w4V#pnsxKvIESw?$#8PF&*JZmD*R8jSk5;JBOytI@Cb0PXv9n|_pE@E zw0j)xdS1~z6q}oWkjIdU8AJ4QK3TO0e592vx|UWt7P5?5jGcx=c@pWMU#mIp@3TZ0?T&Bs;r{ zBTNJY3<|XO?+pV#efrc1nh=YNi|a@}IKVlIg2~&AYvZ#<3MWTKM&Me3oq@;&1o^tL z0y*tE)V{tZSCsarh)7~ws@UwnzC?QeyNkb#&bh*2wG8~;)5R)4D)+`5NwWdP0rf?0 zVWC`md;@1sxq@_mHoHkzu9%dnTCe3FSg|z%!l#wk1U#Vfpu4-9*aANG=W?Hc>2vMd znF@`C#^Wm`VT-1piTHzC0z87GM;Phheix#t>l~>?! zAT>1u5vis1a9>$cR#p`pTwhQS-X0jx=m-T}Fcd7VT{k48@Gmw?%zOQHH8|h+g9(|H zRl7L2E*>{xf#L?FK0*L|hQy>%7Z>AFQSIzDx6woMynReZzm3ZJ`Ktt0Kp`X~(lR0v zA@?d01&VA-i>qsJke{Ar19%q)1J4=@^Yg$neL+*Z_aT@*EzOu+D3W<6p+`8-5Xv-Y zQY{J(k44Vcq3}3p3V@P)IwCXk)KtebVOLjpMAxWraBo-O^V){g#Xfzj->sOH6)i0- z=(YlJ0j?t$B|59DHIo+FIWtX57E%s(Y(Nn7^FAW&?e^SU69Z%CzzeyQ0NR^>3pWWk zy1J%Me)>N{tIgI9qJ*D1?k+V62BR9CO8EIV1>;_ol*qG|ZVREYM~C)-1gi(8=D^#H=j}U|H1Z;~3Te(w9lA@X?~tPIQl*%_axuh$I?4SjwLV^llYBRpC{h!35ZA);6GYly7o zSpL49WCaCvadAJ=E7Iq`Ps7-m z(VbS-C+YJGKg!AtsjFw+UFIn>KmfalCUbcfvUjL|MjS!p02F%@9Fve zIF%!B&9~P7;*yX^%ZJdQ+n4*9c~Z}y zF*s>xxW3dPqC*n+7;<~wOmap|!(j}8L{Uat3_&`UvhGK7L>8lJBqhhD#7Dn*-Hi41 z(Sf!QKQlVH;?e%>qHCEB&C6H1hK9^cx(7#wZJtgDPCs6+NZB%}s)-c6{rYuqdOAx? z440_SU)Y{Dh9WpJ(%7UuU~y$9iP`0pdUomXVD%uX+RWnYOuoT!X+DC-oe~TTZ2igd z-5CQwCcU75Gx5v1X{%4j>4u3Nx{^}o_#$$y>e>;O6=;8|ySggc+VVnhalIk7w#w?S z`Os9<5ji*{9m?m{d)pfZHQc>)6;K}^sw~g}Qclv4%PaXij}{i@ngRdf#m+K?fPk`c z$KG^YV)xO~ihBhD${roU{>}&4A8WRc_Zu5h`YkXTDKJuK?{K=EU8j=w=J_fE^q?0c zBH3N2Ip3O?em*!jt|@XoJ*7E2ha(^);`|&;7#U%Be_vWuAfiV$IEaeTQ>buqy*
    0=O_P&UMuzjhe+SA1U}g^khYMM`V!7Yf zxAyma0gH~qIqDCX%?HA%)o5*JCq9q^_I8xvcJ=|=s;=HyAWo$3?nB=A&3kFx=DTs{ z&L^PS(~}7q&TfAThWAiEfq|UQ@Y2%iS4XU1Fl-s9Bzjlh1(3?=U^X_WnE(9l)LH2y z;}h{I1c@vy=UPd)xfku{S*5|)BY|*$xH!8P`<(s7QFOVUihfiWcC~BK`orz4Vy5!- z`G(&etVdj1$Gx0r?e3D#vto5HiNgQRIX@ppuaNMP1HRG8Y@C{bIj;~I!1O6~0-~80 zCc)Zzd1X<|utd7GD~HX0P&&ZgmDTi&oj{+cziNLLZuNZk3pWyyJO>A09U-}5MwxuL z5@mG~XG^fq^>Lclv>dgyB|&i&70NCgUz1LE)qbmzN=fAxp|k2;&5f|mb?0q0u6!u+ z?6q;0OIE))@Xl1s9x#pq18y$VQzAxGDQrMamX=;E%0AgqIgjBtfxo!Gp}-`?%#$3U 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�ncSKCK!d=ULLaah=^-dv^K)R)MQc9`NTl))Ot6z(iMN|13M5$7R9^&)ha0@ z{{R7zo;F{fU2Mn5(BeyfbrqXOXTM01m75#?UkGQJuLmYn*K|P51(ftQ5DY-I?;~t& ztr|_?dTLi2X7}bhq;$t3V}^~7KT}c977MWIC-A{h$h}r0d7MHGshE{@bk5pXB)<0cpQRQvYOw}0U$8J4fNr3y}8KVGaHi=K+c?5b~{LtEx1Fw37Hf$Hk#$CbIsSVIP}V+kBeA6Uk#wrL7J9D~}_cU!F4k{QwVT zWiz&y$;nQ0_4#=8R(C$PZ*rLB>L8$y-3cf+h zb(}u7W?zd`{NCEg)3LEE&ttc_+1W{%!*)vT02s8ulM1vClgb$sEEqw6yA&6fTLf$u zd$0{DHw+hfA=5#(2eJ9=4cCTU$ z9Z(QPMn>?02lmV4^mKiFy}PsX_Ec#qET6$mT3Glef|wJIv5y@0SQHLfx>gUhO7%|U zr1PwnUg$NaG&NiQ76Q+!qEcwc?L{yGq~B;3%Sr{xJ9q5Oh~d#emUOeX0=@F17guMo zIW%wghXBqN8$YO~+Be+yb;)FVEZ3|D;=h3Xw7aXjvcijj*?LRiBZB)djfs0}Uzvnt z2aleDyP|FKd-2)MQ(<9er(_|Y>vJ!TRhfxQFyMf(G&{Sm&EL*m!I#+~1Czf<-w27$4Jl(gD-9;mfMKdELy!Ys^?AE2P1z+4Rp zN!a_6E8h<1YlUg04n+Gvg}iHTFQ*oBx|{t~!g^a{t|}0M6exs4LcZKzSV(_mQMf~S zGsR*v7pGT8LlJF!eRKI1G8}ex|E$WyBn)xci|k}B_XjBYI;z1lg{B*fomO1 zFr{TL#l&*U5nc~4Br*o|=ZXasoy;`KgR@JwI_yqA;4r=M-OnOTa4S-74CRL6^$kR{ zcOaQ4g7rhd&HET85TH)RCSuEc0>w2K7$G@0vyGaeYF#-j_~!7!1+sJ36{XGkY&|H){=6ehnRnE_K@P#w`2zATUsMwuEXhb-c=AI$7~_xkCsE3H|K} z)Zy{mJDYf4e_TW%Q;O0-2i`1r2~Q5D9sZ_JF*bw~9-$|NFT&|=fosn|N zTEGeCJbn-QA>f>;Kb`*D=zh&h@$jJ_6?H6R2yk(8`+8yW{3{yeoUikCbNW2rfR9cH zD=b~zCrpN{dJ!S0FEc*AU{Ym#CSlmzE%RrqK*X0KH!G&aoprhoO-m~z1jmnE6brPT zjq`QQB#&JMnB=#&RIO}b*i%^v5)dyh6E;|{AtWRu2@#VEfH=FmJGX~38OpC*T7-gP z3B{6M#$UBrW#u`N6*+DH-g9!Qs_y|0$ZRa71KgosL>Qg)rTYJSPXg-u?N1FOz zwJJM78ZE%z`wEsgc|~4U69uY56v{IM+zefiPh7Jz_ZH4zs^7m44lj%zeb%FA|j3Rb(HPZDHW~6Xss=~Ir82jkPvIRTIF+cZB;ZH9~c_q zEFW2Tcvh~jsnyo_kjv<(s4T6ln3|3zI@y6^WG-AjrElU z+d6YYi?zbzmRcNqjift$I` zX3_?{iOOF@ZeE&4)^Po53T4q}vv}CvflHL+dv!|bd%e87Tly&#T}jDDkeE1v(ztTW z!u-eBqj18Gp{Pm|e>k8}q@?!BaRYu@R>Q2jq`0`zdz`Mx2NU?D74@5<-*`Cjt|=9a zT6BUB)zrRF3cavlqM;@3>w83om82*u2mb1vd3tO6^j|PY>_A!DM4$1a3?{LzV3v|1 z;=>^qIJi8G{I7(?))3bcLnLISVs!)ztYbhxK%o6g36&Bta`O8GwpZ)@5smJBznXpv zvP><35mMCm*1#<2JdwDdQP5!#Ih=cPxO}|Q9H2cZlu0BQ7yy@n&8xb)dcEB&2XuG) zHDq3^$iJHdA~4L%K_XISxGEjJH&Xi-0IC(1N`=&RH4IES2I-W)E-S>LNGeuH+|exN z*juo5ctvxut@$-A&DH5>T{Rma#L9}HV)l!Hp>85;ad>EGcbDmgB2Z|bBA%X}n8uix zRJU1X%i)QomtT@F`=gq71Lj;kUphRLv0!>7{=3TPWLKd&AiZlL4^}1BBkbzDgbDLyl;($Vgm*ZX$u2{f}s@7?|cP zETkvs8+t!7ZIoRf0nHc)Y~ZbfmlKc%I~<$pVf?h)9f*#OaF59N7D?s78=?rhu7yed zw)gito-pCy$H&Ct)jfS1)Zt%X)ps`B+aFNCASeH!je(i@6(PZgwoeaeLJ?FtZj*^5 zkuZY(C6XTf{Y@+xNJSN6W`@C&y0%8dOz_RXX5g5VNAT7DZ!LgXZoi+L&I}HgIlK$a zL6k$l=*GU54G2Lz=QaBaeA5?}t6k|%g@Az^Ku_O;gX_~A zv<+7>wkmY;K;xlwSS}c(go>Og5ueXH=A;1Qj|fm6iLfMib0TF$c$Z z*l1#=rl;wG+`E-~75rpWF$KGSEej1B@7=%u1sfu>O^6gvO z>@4NPMBH;1*QP61`y)zl2OX8upcZmG%g08yhSmKr@%eQX zPN-N)W77p_5mb#It;VnR;gyBTC4}_$`QFje#jdT%N(V71Aksc&y6Dy_E6GQl*tR<8 z#T}d4u(5ULgK%f>85MQV-n;OvZS}?^F5Y(7R&YRWW?|7B48%-^$e7UT9&3I34MjC% zs_^<`pDVk$)fE-x7unRYQK=SZ{$54hhq9z8j{)wSo}PU0voD@i!XkX+>P%|BR()%t z(Dm<3<;YZ-WppI^vuB}%tWoDzjg5^xU0weDUFU}kOzmZcCY2xU4U|A_FMjWLi}mj2+82-PUV%A|Ip&|{qhH9P$FSf)unRMkA%d;smanD|J+>A?vBaJ z$MV?!+?m03b7Nx{)6fVY)wBP}+)*sZJ!T^Q;kHEA>i7GNPfvG|vB(%+aDEIdU;s!~ z;%DN&8*UH)_;O|gH3m3uUnP2;Jri|xjniv2I%kcVDmPvP$qC5na3@=)(w!9oog#=sBAD&#oM}aT9)rwx>G(Abjme56Fu887 z+RWY#{tN^AOma$ClTc26wxjXPELsnbg2Jx`S_r{XOgMtVU!TE6#Bpp$A7tk1{darR2~yhZUUoQm;-@jWslA>|7pz z;04yV5^L*@t~&)4PT3WuhzM}g0?57l`!_2?3(x}C&*co8UGNDUJ;Ea$``^`%baYUI z%@bC~Kym>sx4P#vVVJV@W@Vg^Glkhvga-q+!)UW4xF4MaT`k4R}K95hWv@A-n1^JA; zyEA3jz_kxg?F#03LOo(d9YDs%C`C%Xh%89V)S)6!!4&OmU|@lVXATm?ihf>SN^{6|ln)A7_B^%LIzA^*_ z)WqX|_<*pquHX~!%OEEwlRZD+XRqJ?)N#=$D8W1Egla?)z|8P(dl60m%U2e?OeIo{ z+V-N~ho?YXi{DRS52*KG_k#g^Pj`2Q=T#lo&z1@t$KPCWq47@|?2>23a=*PrpRZpX zBDb6SsQl%@?Yx!}W>BF04H`hUz$HJLAKiVp8U=zboH~}bUH!K9vLTJ}@fZI0&;6%N z392C?(CKjS^71S#{c}96oo!27mehH7OqKIQzx!hKYh|GKUh-A5Ik`&e5b2cAAtI{9 z(qD;s{AhN=RJ1IljtE7>ZIR63d472!@rs6n!^A4&7l=iKdk5l%f7<-6r1lMruVjxR zmk1|l=Xs0(bnPN4O>i3k5TSBqfcP|9=30r6)of?RtA1CXhCbYGzB?pZ#)hfAWBG5m zAHw@f4YKUngX=VsYj`)TFfj?g9zcz@;<6301sG0Sv6gjmiW>$h&IPX8jYf`604{C- z1|}W~mR&?RE%3uC%>i}ZVA0Gcz96qHaJ|+0Gt1LO$n%4FkH+S(dxnrM7kz&3Xyw0A zD@6=HX#wgccWmVhkd1F|t7r~RPQKOu{>aZ&E-$Gsmfe*>Iszvvl3NM{;8zFBX(c7m zU9%15W-!1nA3Xy6&440=i#qNHahlzDVNgch zNAUoeJlWSkBn*rhNjof=W&u$dUp1G3!Ahs>S5AjM%EPK;STYkE6HwUfF1?X{>ChWV zdPJq0$s*}>y2EduvVV0}Hk@&&Rra`+`|fiBGB5A>xg;eYTeHAuoR2_z3TW@KC;=3X zVDjq06HTMr(i*On6@;b9XGy8Na3wuafDuGPL%<;oPa|V^_9Z?>o(mGpYzg%0N|d6C zq=Q--8=K?eqNA}NJ%SALE_8z?hI6D5w$9F_J;SZ7g9bOqr&`+8Kfkn$Bqh|<=>>(L zy1Ff&f)AT?v~;-<$>CwF`~x22BOyV1q+Je#a~8b=nUAa-oca0rtk@6D*oXi;Vb~BdCjQmLR`BEC5bX9l zI)W?eVP68yk^M#Vpg)o)B1$CWk%o;G&a`W5KTMuH{hA4@j$o|5*;zU6QNwDbVEcKZ zm6hgb@>S58$V}8}B=*JbFE-5rBuW>;U8`mP6|)h6sl=V0=GV^uqvZn>{1$&M|Ml|ouUn>1U1@)0&wbvZo|QUGE{ACA3q}C<5Rv^=kxKt-kt<^2JNAmt*cw>FKsrw zM_7!E8=Irz+$2eo@keKfCe@wR4CEu=W~fNHsj7{zo-K-+P2#D z7Nod*|E?+AR*ohHst>R3<+y0%sw&Z{?^OJxv$L=00$K!j|BRLrKPK_bTz){9#6c$L zyfrO%pK6j54aw7!lAaD}Z(&|sgS&O;@$4*@H_6WQ>aK?4Zisj^gl6!20OoT0{m%`1 zEc{@aY&TLa-!Vl%>Lw=2iBHhCIkeeHM#Y=WvcX!~7LXPPGS}+EbYpVwb;bGyD z(x{6&vys$F6%Ow+g#0h*b)YMt331Kg_{?5Bett{45pYe(VUU_vtmQwG6B_!8LG0bT zKz}kpzxLJ?PSAL_+<}v zu+3s`EKKV544h;jH|p?g@bdf|4Q5-zfv5lo^uOnR78Hs8lpn;yj!p&^;lUU!^O}xq zGnO4)!kYDmAtUpo9;Zu##MNf^SXqBH1j7LxqE81h1Y4%dTco_%4}Z#SqsYoa;NQ{j zCfCLdFz!96;l|~%`){?&E>Y$i>-+d#_LKQ1lfLDx^jh`SKNXquA+WQ2@$XZCfKqy8 z6=sjqq{-s&AnuEh}%11YEA<%lbnDC7XyQs zj0{27{UxWJDGhb?*Gg4eopwds0Nzxrs{Bu0-x3YMY8Lz_t#j`z!h0k@yJTgx_M3u> zAmjJy+QCTnLk1mTOFGC1UP5kfgH()yS2?*t;tv5N)%mEWN4w6pwY&Qz7ngcx`@O~W zH3y|1y(mW;&$-o z1_Hac_Z9l~Hg&P8#-VE##{&f0U4lHh;F^;X-KJ`9HgxC))Ix&;74H}seQ>Vw0X7vf zHsBTqI3 zx(ys0pVk=Ak+YpFddjix zWzXH*2D&QR1zsVK=Nqo|ywT9OyA2^SV&bq_fFW(L-D*7?(v#A_mX*2w!sD92Y7PYQ zXL}S>V#q|W90rC~R@#38Ima)EC_#e&5<&yv{~+xw2t84NbU5RPbQug4a5{)06J&Vt zV)C^K+fzr!3ilI`X#AR=hdFL)etERZ-j`y?=*Y=8ymo~|u4uBa7WiZ15HQ1O)3>AB z7-HPNzl3;vVqk@S?;h~_>bNMW+GYp_Q{HGM?;-zd!g*aDLuX+&oW|dff`S#B9K$&; zFONz8N9)n=uTI6U2J37QV_zCx9QJr!dEW`KBQp`8H6wYP*zX^CY;A@_kp^NK!<4VC zPJdm>az3odBQU#_ir}b`T$_QDii!$CHQCuAh+YCzkMJUjhU39GTcxZc zywAMCPceowAb*LAOTYC$ghbYdP_^?A?Jd3$e<(vGBjd`$Gw$it-qr@uiU#NH;@I@# zONZ-en$@mTUk#OogrNB#t1~}UUw?Rqo=%JmE-sfn-GHDhhxevt20wg}{-h00789^P zYH(@E;2OQjN4g-|9qarjgE8(ed;6Blz4|o#l*0zjjdjlGd3hvyi-c`s`bwl&_FSpp z9)b*+g2F;KcX!xNVIF~pkN+DGufRVCdgR&jO-s9&5YyV^0TYxM zh4p_hbD(E?dOd#`Ov>9lI#pv)Xa4{JxRHnJpNF4-eljlZ2l&FlIcWUo$rIbXr?A_N zj{L(hgK4bgli_8z0jPfN;nS}m?10!$E}`rE(yuoli~RT)P*M!KB4*UOEkQ*zM#f-( zN#{q@UwREL#|oy+ZNJX{id5PrjKNdV)wa_y~KC4bMZXfhvw$pikbq@?B{ z#@JFTbnNpc335BI4O4Pl$w2xybR=d!)ER$1yQ3j{ot=uvB)exzwN1Yd$YgVK*GzR$0Y~a~I z01bhWQJ>(pTDgQmOir$(TEgK`p$4nHL-wK%eu(Wj6_H@Gu-0HoYzZCsUo56DUqg~P z)?lKLqGDW}$lN!j?kFJXp_9FJb_NKbMpMh(Z3FDU7Z(>!jq!Uj0U{kHRY0K3%*(5_ zp0EG(>C++h@1dBe$6#mp%8dS0rn&jEh5dI*`m~+(^}l~%H0=$#n`I&@$88mVC<8~P zr}w7I7hy!&;FR5;u$7<(;=i?ZvmXeR70>wj-H(Dm*$@4)+MIZLcvismBUV;+M3vA7XK@!bUSbRw^% zDXBhHu{!O&#UP`aj73U`pcv@sfrEfvTqTQ~l++ULdBsmqTN!pC>%L8w5s$*eLMM1_ zG4(Nv{0=s+Q`ksrYHI$?U97bT8Fd>?e^$P*`)*_=Ib9C!q1?PjLsq{e47)y-(nmg( z6@j;KY|O}l7Be#%LqjWp6X3SgG>Ur*I8THj^B{+^R9)!zkV1bvn1&O(a6gv8 zRzKSJ+3~nwX=*C_A?QP^9jR|liDgqIrlxYT+E`hnl$C$Ix4C;;SL+3DZw4lj6cLeL z!}8QT)}d>)CpWvz+u@A6iKTDU2qqwd2mqYGb6xN6AMWh<7;s-h14Y+)N36LyE?!JZDlS3%(WAJ}q9S}x zqx;uE^VJz8Y!?GK?;f*wX; zS=m#FH2M4C9=d*_JZ3!-NOqC@*Ve8-$4OaQxz*Q$7Y*(-X#RF(GBZU)id9ka{#^WO zk_Od5%dhXTkk?{ttSG-EA%z!Bbkc%~FU4W?BrEd2KK65z{I@ZARH9<4I=N9%`!^m$ zTpxG;P}Bd(N3uZB^QWOPnVOnjTa#*VTpmafZ*T_IFvRR!Tz(3CU}kQAc^v9!PgGJ? z)(j_1$ewp+DM8_CgV8oP=kyw!BM*-xRpUVxa(mM+N5(JZb@i#FWQkC#KYnfLHLdDM z0E&nR2M5@sZhj+!fG_>)fv%R;L#??u#vA0qdzKtpGBPEe8?y`P5fP?Sbh9lPmR4Iw z50MxcQkVYCg~z7AUDI56ZIMUFYI@}i=CWVEfF(pEkeVlpor;e9%*}1ZR=|pyo_=s- z1l$V#ZT0bcS^=IQqXU8M*3#0)ZhbTsCR-<``RTktWEU5pqCljRtgI~TMTXr`zy%u3 zS1LTQQ76T!M+(Nkh>4{&U^4yt>(Jk3VdVX=X>;q$*NN06gHmczODXPgpk>X09m#}LriQUuMz6B)ivL> z1srO&2eozuwfM!zLFYe1!0TTGIbdp^>khd@19kkL5p6J~8-iiw?)k69#rgU9dCTMh zB??$3L-}*`-pY!KGc7l@Y~)!`J`DVsyRcJvFhRbv|LKLY_CU{&$>|nrP%oX^X#_Cs z##XzL9%4KiTBJ=B(gJ@3 z8HSx52_G^mE8I>Y#N6B^al$3uwh&}7YleC!2qJ+xeI#>`p6+opDKKFH{-6MXg3psn zOG;AH(&#ali&Q}SAu6N_6BxLiCG!oVl`nR8_m@8WSmt;0BV>hcb|S$mTD76QK7G&R z%Y2v`fuuK$$4T?Y;@N3zGR4M*$>YRt*7W9Yi13q=0=v52+1ooD9T|I^iOsj@@$mTR z`5PGY48@ahmaRn#&RBA&mil4tx#F^&qug9(YOuPxzgrbUBh~Eh3bp-9qFVA=0n2%J z>9^r+q0sYZ&!59hcwS^%66r{00HY+vmg_8t0(wG9uZ73?aSxdgjf)F;EH|A$Jb@9S z*-)^dNtDiqWkf*0qx_8P-aX2ftAoTMqR;uXF)=l?Nl@{)#6&@rJTX3g1dRpZYH&E^ z^6{FcaOfTRAs88d*ZLMluZxC_4T*ZiYKUK|amsaDf03A*>woZ}TLbT$B6P=%<|p3UDkjqh49XB8J4DeM6R{6#v%q zPn^b8Kj9Mra5N+r43Ir5?T{mi2nlHm#m;46efgN+%PZ<$0=~L1x0`xH3sfzw5?y+a zl>o?3;!L2&ep{tCt-mt`{C8I_?~4bMaw`xecX`^m*J8N92PlkI{|9c`-sbyPUq-#` zJE^Gww+ogdD8=9B0g=M9aY;Lg!qK6fI+*qB}` zetPB$IYuR=54zFO6%_rB9X&j*;6y^du&~GLBKD3PSI{l*!wzvQU0t!MMTWvSP{=GDCn8v zeJvUon{NH9REwYM$KC!ZFokR#<3N*Bc$qDD#Sr!7ceG1mj?$w{H|NQy! zcnGGZ;4>`IK~++ckVd6B+eHBdYnWw0d2|kCqfa!04uk^+B4_-W1@O3t*sNYdt@T(A z20Y2&02tiY>jgr)4B*QUPEj_&);!MG@{IC6sQ>*u5dBcbhI?REJNK=;uI@Y(`y~)9 zw=M12VGJc9@y1d4MfB6>&!OAflDBE{<&x|Z6Zak1uwMfC#{vhZ zf>GO*E-oG}nVA_dB-9)6k zGyX6p2F8pG4C`Xvr^j6E?318co0;K)qwO*d0bWq9bl~_z{#lCor!<}CLLGA3!DoBD zJ)46UN3Gw#cm4efS2e<39cpt1<3UWbC&PI12Edd6Mj-FN-Clbj=(S|KqC0k^UN>(u>+&_;h_HKZi3N&7T z9rz!B02L1+gfB1s4%5>UIZFK~?nA3dAmhu(bZ|A>?U~@aD%yd=<3Fe_E}qxO+}vU^v&jA4dw7?v_vD9H83y`*4S^>^H8n*1Z5PVn_B}b z>u+^+)1<_inHfj8y@yY6rKPo-BZvamhKKOhcy1+|Vq!iB`Ty0>AcSyM88j9a^y!*_ z``{7WeC4&bP}CW2*7H#YlD-)*iv=bpzN9}LOlsGvmME#lu~}GZe+YY(R>L)-^b3)^ zR>q@Hr0mrdO0HCKIy`BhxX;YgnWIDBD$-blpwj&F@K9R2u@RF6o-1En9dtkn3pW=? zNgjibpoEUYil)VbhSu<4q$|`V#-4mkBG^?6$9pbBcs4KwXC&LQkB;~IHP4}a(4b0gH`pFdTY|cLqQ=% zeikGQFDUgbBWkTii&Q3crmSJCO3!Owm@3Ycj{D`$W9Vn z_x_%EhkZL;D5@L|4^d7<{+XntP;#KwH#mhSvjl4EP_xBFLEr}Xya?M-enu+BTGFWSd;4#KMZ93wKW*CdYtN`L?HbH{s1`s$dGT^wO=NTFH3BttOg!Gt zIftuL`ncFt2}uRrr&tP-D5aVzYQ!Oc*!b1#9nJ8#oWTmRes$qL$-{(fmaJ;7(seEZkI#B_foTb#|Fa(&|o7B`o? zI>FYqqCLy!_)m!hcWH3WmYA5*eMu{gU~_e9P8gFa<2l;bA6rDz**$*tN;p%A0=?No zoZkbF=G9t${%_9)$N7RN8^fxteS`F5&D*8c?!Y;Z*zu)=W`)n}5{}ngk`f=YDYkZE zOX+JY#AT>1E>slkpw$ge6fOc#0^h$MA5$N=;*iR+hcQpPHgA76EsCmu*lkFo07w7Y zraInkV#q7{NE}=^2US)D8qeU1ayh<2gdP;)+Kx2B`^h2_+|T`UwIGaxvnHMDU^A5- zT!DoDYynZd0&qPcPGHb|@)fpL3A2uw?PN%p4wS zCMN?hke-e%r;)GTBf%TEf?$DNTkGi!Jv@ZSn#=PT64I?%cB!{izFAp77JgR+Ay>4t z{W0+ib6KM18oE)8*o!q5$G(Wr^jcYg-!d?8^#9*EcaN(1`SI-RmK(c?v~7&TzYFxA zKlK61vDy~hRFi1UCp%p*U+Y^R26zR`;?4F2yP|R^lVKE72~j~Qntfy|%2DFoR%{5d!{_!qnf>>hyICMVBA#~&sN0h3OVOK(%eDl3nF zXZTICu#~3@45}!)50Fu9{05FrPPv@5HK2+iB-Q?fhK9o40%SvCjTR_WzmI+Z#!6bmaT7D&uv=P8EdIlX^&_Kb zGDrh9Gdswa4hez4Fud@Emi$_)t=XDKZ>uBn<+!n5{#8{Q)~&A|8I3{EtS&GohNd|v zJpeid?OyDcGz3(QsJKM3V^~Ocm$ZnT7*9uv)pE)i9i?dwM6s+FWMEM`-nuXUa~Gme zfZc;F4_-n<=&@RIIQ^j!@qk-(eRBizNOLQzQkWsYe+|J-Mn=Fj9){te-go=JK|F8E z+wFEz?oYpW;P>uWHGc5|=7hj4i<@g{c{aaVX$%2O09FZm1THZINP&Bez?|eqhAtgH z(iRBcA0nG|>NB&fAS7sz5_5b^_&3Y~@f3#_JGNY95K?sKc79ZW0Let*&vHF7>!@D+_YZ5{qKuN>ryy4-o0Cdhd2(Bu6p5RBM%*EB!Ms4{$x; z9qsMG>FZr*)KWDvRTr2z+W+#Hv_Pf!P*a;BjbB;>+E71dl1@zbes`H9mRvac>NLd1zi6=F(>sx3;}>^@@bQ{Qj{shn%oWqt7O-Pj zv=&Z|h5{xT(+m4|U;B>wWRgYbwVq&R=ZSs#1WcRU9OZ+wBG$IPD0&hOt1PgZ-5p+@ ztfuivmTKmvb1lC!Jy#G9?p}qK8k+;v`frFMXmSE z>seV6IBYB(n^C?@u)(x+1*}uEm%K_~nAF8zRCM%?ZvRe}-aeYzs`hYvzq)|MGxFR1 z1O>d$G%tg3aHaYA+Pb1M_-wyKWIp$A^^FA54MdItT`?2|rhxT4kg8Rn0OF%W0{1gK zWlk31cjSsn1_mE;DF214etH7#(C4h!8esfIa=E_t6c)a4-w$udBxP-FKjI*U8ogM}ZWjbKwl_RRM)K?LXNqvG7XlLSpYr`k zWIo?Vv{`(&A_AeLa&q7U(9)8SloS<{`d**6zW(|6k91d8omYb}MN-n<`(X}L^tAk3 z6)v-}IRP&qQQUi|u5vsbSNMTq&Hg)h64%L&Bu)Bf>&%d zx(OUR0d-t39xu{-J_q5D2-P;jD+dd;W=fcZp%G{Z>A19;h=Avx=q3j&hl!(p}o_ycDC?ZT;F{45fqE?O(R`sfoM$_erxcN7#lM~ zAhh+o{mBWdwl*f7s%~1yLeoy?a)<+$t&5tiy;P%*;7;2E5z)!T-0+}np0@r3M(BZ_ z0p8L?a7&{@9t8c)QWEVq(nibEP`mEBR~e$#@>hlR82IP?SMLM?5{^j|rTsGqw5T zT8@rRyBi)J=lcl6#FUgEnM)>GXb!Aqdn(Xzc>*oL+4XhincXq3tGa7WLInB!Z54wm z6B)?OEnosNI~|>Fqni?s6Ade0s@nxiTl>ylnrSMsv_GT;)kM-zD_pGO585Q)vDemu zkW@$rR2iRFSBul=v#7B#eNX=!{Lc6odqseMHqh6ne$%4=%-K1SHQ%K4=M2nZ`x7W= zQF)!0I#BrBmAM1xVtXM9*l8@M1do1!&-FDi$5QLPxH$c}T5^=o$OacyKnbUE|8r`= zyj5Kb{{>;nNu5u?O4VIQpPE0V_kt3n`20sJ|ClgyouJnK6=ePuD5Remx zQ*H4OvOIRx1=wkxBSIvT`^xegS2rOgY$POcUdN9#3|o8_%hO%-e0 z=M;8}e-IT$hPR`m1Ne;IKSC^OM)g$&l5tvV>&A57tjAE@evgjtuY-H{?orDQ4Abh)5%BJFIP^jt`AWW)V0)NhJ$*IAdc~y zxeCG4Te}PU^DDzm`TO@JEa#Jd<)KGJf}W=tNv}DAgXxQOLgKYD^5VlurvTU;sP53) zNJ&Y@i(`9s)+AH8KIk;`J?`l4UW9gZbY-Qs5Tdru0|ho&Ss_Yyadnh8Z;rPgSXjVP zg!E>ht?lnBq$Obo1iV(lUS4*+(VU=qzI)U=0>-;O=g{p4WI52hnu|v~0rh zai_}@Qdx4T>ssaZ_f6wd`8wPEPrUB#*Slaq=lmO^+u>U1hYv!eP0t`+sH5WxkJ1u= zwbaVvb8}Y?4+DjS>OAmUTLVkA)CexkEG+tAw6|$=cUc@zZbK?-Au>U=c?uI7&}+0P zLeKdjARecH(Xq1Z1=f2TVRn@siZ>n2cgUKGTBAq`LVdm_w-R(8@zeecK zDlQLI`6vk~&E&Q9q~v5y$WoV(>G*Ij)a7r1(fjbD{yUgxdw})*bNXXERQ5r8m0?>h zlBdyX)c7Bon!Kup+v29v%*{XEwE#FPG!!Le5RzCIDxRaA|2Z^1UGEp>Eb?|c3QEdg z?A7lWO1)^Co0AEl4_Eiku)XDT{^M6lKbW3I18L8UjD8P^UgOZiJ&=2+c`ue~J0Wr25f_H{?b{2Ty zt@`@`7K;9@>tWcrwKnApFBHuhF*$9EaN2xIn=iaL;xsk=m`d_z zL3UvQ2uf+ZO8Q^E{1+`goH1=XEgo68qx$@|Yri`h#kQ)}gi%Y39nD-@FKF@sM+$I% z&KAw~bb%Ta0;3=g2r=pC1Z2~6t<@y2{kwNCJU0I|?f>xp$U(VSG@nPjwvMDW-^Ow~ zXtz4)ra)va$k>_2duDufN`geuLU*mT`o-WBYf8rd?yJQ#gO`^cGxPRb!nT9-!Zc=| z8virj*=jeCH1j?$%8S_r22h5!wkgDFKm*+P>!L`F&fd?e_rM!~p8*Ti4z^z*vhVN&VbsEgR``$0N)xZDeP0} z_R+1rg=Qy%nCK=Z2>S1YgE7Jh3I6~sw_G=LHjgJZ`O)Kt-@ijkm6WGMuSI}`WsI8% zv$eIS=X@njyjZnB^gkkFV}!*-F$GmI;s1<`wSLZe^Erq`wf3ypG!-D*9GmL++$q`} z+(nXV8L}pGu}?iiSn7>^39zMaH9ECs*h8s>?=nTO+q#gxf2X3M`8UF9_@^=kk?#~; zVlom`7SI+-e6bxU1I|3KZXlzh-;BNKgRkdov(;<=%jT83xSozUloXwi68rcm-}&}r zF?26}0l6f&{X)@TJ_2pu72@2~RGk55A6xINLPO(M$5o~cghWTj{R6}A6qZk_EuqYm zkY)wh)!%s!Dyj|Wn`YG(4pCD5x3pK~6&LdrbQvE%Vw!nClKtwG1% zQNkM4{(0er)B^*ydkaH9UXKGsG-Q@!dH<6A*DogT>+IN z^NiNxyIxDe-R;~*=Sfu9&FJtf{-v%wcz|)|f3<#d@1|T^NDL|NbNBgqPmPVu<7f2f zr>B_MKx!QsMZBFWn1s#)<7eZ7B5R%I>n<{% zoam?YT*sSOCIbcXn}4)IoQ<`dYcapMO-T5AhM2-!DLy_HgJfS(@joA2+t{E^VbfRd z3<+g6I;fRk+}E1dWz%BN^YQHNdb|M;28epoUm$<=_3OFB#7#Jo5{(sIeyJ}OgMe~i zA4Z$w#owJ{sg;{lr~^eV`)qgFM!I`*^c6LnXdE4%y_l@SBcA*?mB!mLJw0r?sLRQ% zQ8pGRlaA)&10e;y96D&+UlEiw9$CQvz}%cB5K-W3g}N@U_{c zr1Y8O2TxY|`rIoki)U+bd0m;x)fg{AkgF|2t>!9>B;D)}9%5i(`nKGa6(6vZQ=@Ec z`7!g2%*J8zC8jt9#n~=4c2o{&U`Q1a34k4@ zfWGL3S{Vf0FE1aji0(me*r{k+AiMYBg-(4f)dr`lZD6(tY<&$b6n>&`d3kDpVMZSM3m6o)Nv7_gk~`t z!q_!k@FB$dkj3%yMnrZ7WAqG`7O%5II?K)!%595#jZj0Ggsba0z}{5LA4i4gmuWrZ z9`YYu^8>gKA>~ZaStUDF5v3<(2$v*b&%l9vfKlVZyFSl%8I6Z~(1rM#04N zsFjtjzi_5_?JW=%W_z^ZjPxe2u8uI6LVbYTJ}$0Eki6s1oIZ;&q%LpRO2vKxDJdv& zFOEPHDwhG!`u%&gH~4I2AGkd5zzy?bdFj%r)!!HCrJ&&AoQDx)691a7fkRb9ghWY! zI7CnO#&S8Byme%&@pypW$`m43f>#vTX>os8PtYqz)E|5~Zp;B2L?k*ax1TEWaK%t3s53X`tE zl;G~J%RdXHKbBwXKFzS2#zyb!nUZX@C}YcC=c%nf<{Q-OFhfIo2LEa4 zZ@sj?|A+fI$T1*7t$hD)nm#VTl9|{_%JlF#^52T~^xkMG=YS5?3h#o$J0fCf)!+MO zY3q9pTnI!pdf$;kz~`IbX-?}1ewV-HVk!4>c#bz)E2@>j`%T95Y+)L|un;m+GRU|{ z*gi8^LShj*8k&g@jexYYsoCciBc|k;Pos=rz8o0OhokP{>FHZ3DZglpGM#&|KS8o! zMm<#~YR~eRjA3-*`1EuE8xw($P+`8L__fA&Bnn}e8fxBmI5LTSY0*%Rhd6q1A+H+r zmHBNNEZn*+V#Dd^glN$~G3MiY9k6S;I~OeEPgJra1wxIX_V)cR!+`hLvfkpfIw7c z2ddfH8@6nj)m&W?14vb-2@nMasm z+YL5fq6-Nb#~1VP;gylvaFZWhIyvq=rhp0{I`(C|tc-4`Y0K6`VTx**CEe=v zWqU8mbb0$w*&GZQAmT|)e&l{UN{KQs@CA|gP#*K!xt8Sdrf z)#T`enkWM_i8l|~f^f2i(@~neq!S(~KFZ)iL_q;d0~Q4rovL${2`U~P0)l9#*cx(o zWU;m514BbkqIab(HtXLV`1$xCG`oYH11Z@5yTkHc^u}PzGO~j`aIK#Tmc{<`3`yj) zfyGix?0hvEL#N?!5|4^97F~)pW(`qhZeX)lW_h%LmnWF*|3OKj6Q)crb{HWl31VAx zu7Uw?^xA(B6||3M`}=i1Er3VOb=c59vxYZFQc}Am>TFL`fB4sTn}_JzALFTR20xKM zE}vdYVtEh~!)5m_EU;73>QD687_{saB9I%LMP<+sc7KJo+(O#~#`s~l2t(TS$Lcbc zBLhi(n0{elk*4O=Q?T}jV&7a}U=51QCS(nQsit!;o%6?XR4tW^0~U zOlfZ}=A_IGtv)lc>H&psu7W!7yLQO4OAfS?tD44&}N z4{(v$l5g=XI&fd%NzmgX9Y%(CSp}l&^;3z;tyF+j-0L(auzcC_&U*w7b>1IJY8dj4Qv(rNbOzUv9WBH#nCvg={a z@<5$aagG+}_8cdmn;$CYU;pzdm6YsXbC>DaOchVhR#ZTG)6(boFseE5Ymr~j6f!Ea6mxFY(Za%W?*MHv+c9s^46&9kEn|jl@RwZ zlnQqPL(jjj4;20U?q6ETzs@)IIyf`@{l)!^tImhL_}Vd`?X^Zy#>vl-5hhS$r1i@- z`?O?Qy`u3;z*kh%*Y|yh@$6+VBt)Omv#~*jj?Vxmh~Y>{)1Wb@Rw^C=t|Fg#}3DTBR34clTlj$N|t7x@{8eggCi5T z&a1QcDw(Z&QGG=BQ&TaYE@0|l#{`S}6>goP;^!#?PMndOZ-=`O4&^}V8L(gkf0}64Su|T+)<>msJp2nkHCPBhzQ*c zM2K?1=Td%(!KkO$9}lOf(8x%Bw?iYtp2N#GU^KZpv)jgD(0&cS;h)`IA~^y@ayoV2 zB-Ykt7z|%n;u2jyE&L+%MT_%S{R8QK_r*ar{U4*(o?lZqEo$HX$)~^(Aj83_tGQxN z{^S=Cp?TWZLUHsyfI&~JSaoDl)RoJpAELE~VQr0u()!u2)F+XNAfYD}^!5bF7~}a? zAU!>z{tQzDDUgN00TYP2yyCYr4Qn8U_((DSyLa;1*PVDrha=7W8w0H+8eDErFM^A* zT#w=vvbVRqqUO?X7ib^C+b8yke@Xm}G-|du_)N^q;1dA06JCwzfAHiRTx^}a58BNk zmF7-Gt-HYm{)@7*le(0)!9R}bi91QGG=s^LGXEadey@rOZm|wqY%0kF&&0{jv_6a7 z1xqqJ*r&ktW(?ft%*+E=KVVJ+g7z9K~hOfA+L*lZf>jG((f%4e*W{T z_DS5AZ-4y!?y0G+30%Wfz+me!sGp_8s~Tj^rE&v-;Pj7v)xkM4xawNG!Oq(qWpJ>P zKsN=S(wjGLa9h&Nw_lz}ws^xv`%CuPToH^*|Gr#ysCycGHXW-%M zHM%MkQvX)Icnk{Eohj4l$7W`=kp?1(Nudy;b4a-{NPI_Ou@7Yg5J*?c^|$Bn@Ax@! z{v&x@r_JZtGd>>9?`A(Dc*kUAWq~cd)!-1&AOFFp|0?ydI8xKx@a;`w z2nkhG3cp5xg13-R#g5M+Y3aEoyb)r>P*&%W<+EE45%=0&2 zvfn&@d=VCwz{0W?gkEgyc(M2Vz7ov0;p`08aRID)_UZD6i!EdoUJZb%1EWh?nhuDO zVE0F;xV8uB{-t*srk;K|{Owe^<7ct+j^Bv37YV{l}mqf`sw zV`@a^o3C~hsj2!VNcZk}3y1zoEQTYm=H=X1+-5^d;OH+jZb2Um8@tMGRSe};sXY*t zHleD*H}{3}-;N(2LLx=g2_Qx5(|@88bwH+*~~FJ%Cn-~~1| zIIw}6pt`08_F!&m8mST?#c|0R)8|@>errZKxhf0UO-3l1-?|d~^w!oU^v#b4i7V7W z5h#WvB^{HBMnTchDI^=2;r(iTRr~?fxXXoo``$BVw=`xpwnk8E^u$m=tNq@+do8Yd zQDOi2h9H}o`}KCrd`%Q2J3REuAT^F4a=KZU9*!a%{$^z{mWS@W#GaL5AulHv?K6I- z?Z2?FV2)mC=Cm-q~4|6cBn7R(^G(7UQ<(3Tbs_+z(|A+@4!`s&Ha|| zc#pZy zdlf=mBxPj*lVYXKa5jf~cqkzrJX=FS6+2b3Oa}Z`B6f3SaPxu)0va%V10@XxZK83Y z3u8eqDlELY_?>~CE#%?R4T;D5(7C-*CRC9Z@^=dA&c>yc&`2Vu2!~`M)pA{(ojjsp z&Y~y6qf3>>h}sO_asvLze1NGw_pNv2Bf_Wnyrrc+TraQQsdyv|s-her1A?hzlI5$j zJ@H7QT)?*hI)NiaXZhE7{{4|eX2%`8&Q34)pzhU!we|1s-XYc3=ez9X&CFa@F>!F5 z7G#l|St#Az=H#n+XH~~hQWmI{%b}`aW@eEy6DT{UNJwSrG~B;4wTOjwa5*PmD)eQ4 zAOcHDGPXdC5xB?;EqBN7AY^jm&mWzH;&TSko|jZqU9GLH3k$apS-r@R_DT4~i)t_4 z&Muh$KsQE3Ny%Zh+6)?J!kjYdY!yJ?qvlJUD$VYVg*!vU5&(HUIt`nh;g4!u`4(W< z31^S8;$jc56kf7MhrBa11nD&^i-croGH1SVf3vE3T@--4AQ~6~p7N1ey42WuRux{u z%s8fs75KedTSn$mIt`x+sY$toZ5AfNky2*fC4rO#Sf=271foq8A*Msck5rWb&3m&oLqOU~}AH+N+ zubp|v_|+hk`D?CjIV?1=`amxVUj4r1CkhXr48>)TW-bTO(k7uIwity1Uo% zv!Ti*{byP*>)BA#@1mk8GCp-F@rS7RD<>A}T88`j0EL<=#ll0<(}N#Rwu?l|WIz}X zuyd$D^t>;Op|T=B(SQ3EsImhCP&skfSZC!x)x7eHTf5HJ{~;lUcbJ^($IiBIiz^on zn_J7jxCw|>Qf%}s!hif|tFDgx`#0-A|K7dJZmiMyS1E&V8)`#CB_WGW#VmmV6jN8H zD7x0OB382>Gsqy^r^#JmIKA2w>yC6Gl6dX!TLA&EJALywv((W6YF0=Ha^?OQ)y1$5cOEett z(1Le4quHS$Na$JZ!J&|^K;;Wlf=QZs?=*yZ``p7#=(xaqmh|1wdTm(gurnqZnvuQ@9=SdiZ-*Ur@@MQ3L(BKf%ZR zch@)M{(iGDO0a6alp}x`#v)CA0%B=Pj@|^Y&KJ7}RS43;U~AP&2_X&b3aTS^xoBbXHo4DHI&45$>Np*GMh@zkX$2fCyn0Mb?^$dzCw(qce+9iHQNa)f?)w2@|a0MCMg!wt&?~ zSg<@E24=^gQ*3K*2Wz#ZmDO-6H>*((COthpUU=ubuTVjF1F99|jgi0(0J5Tz zYaOE#bA(L!2L@Wrf)&bQ8mK{uDQ`sR*%IPeT__X(hPk%yAXTX-6!D0}G3nD{<%VTV7`{4NiP#b#ot!Bxdsw06S|F|GzW~n*~g) zGy&Mg#v0uwN{P9-v0kf{Kf&Vn9uPEDR*s8`8iHd+p#3Ag_W1%^Gl4ddwboYuZ|a(g zi_OQo8gFQN2Xa)3UH{C+1U@L$V|2w?zbGwOZHqrw{Xe+W@_p`pMO z-`!uBeC?sA{Mkx+^SkTa)Ea)-Z&NXPQW4~T?>lLU41`>!FmZMi+C zSo%6sFydk7+x}gm$gr@(gM*&}27U^bAdUe~mG?O!g%~o+>-Yr!ZvP}gN=nF1eSo^( zjv=pvJy{X6dx-N;%iyS=9@ERK$jKp9U5Qy(Vgk5#p~ zp3i-V2%wz=?>BxU=d5GY@Kb!FZdf@si0mIp82 zvNaz5((dSN?Lq$V0RXv+-uawEfy9%Y-A^>B_NLf`qfxZIU0($>>#Uz4_#T`c%ec|r}Y(w>xR!QC*{%wLFfX%qr^F4l>H z6>XqJ?4t1_np}Lc-5Nv0%g=;@vcJFd+AQuWo^&zG;W2!;O-=B+i;Gv9zF$~N|KeVj z9Rz+}e}t{E&=Bklh*J731XA-SlsY3FZHb>qh|wXPUBEyu2_fuVdYUg}3Rw(MlM8<8 z??+btk)sIQM?fYzIv1@TprVdf6&laXH95+8aWOZzMkXh-8?COcqL7n~CqxdDK?4vL zR9?%`Y~7HvOPPVErx!cO!@uiY@^4@>gfoZu%@4=L(H8lzF2W8-numS=8?Wbnkbh$I zYxd3Qk9M;bm?oLIun>fyRaHJBBa4xd!ICE$=|Z9-cx?t*Ybz@qmQy8D;BBKXV(|S1 zmR=Pb&MLcsiprHuXzh}H%~3mgQIeOQ%@`K>^=F0U!c#}L-1gA??~93nXiiSRQBc!@ zyKZ@4Cgc=?OOpd)_g{S9Di~~Sb(+V|CJ!rv)Az#e zesC~2CB7tTZVPzwfsMbZsY>0%R?+7iz1r)D9&#$pxR^OPAh4F5m6o2J4SX(gol(Uq zn!cw40yvXKfe>B-6&Co69)b~nlFACT4Tl2k?x!B1PkO+u2WM5~R1r4Ld>TyaZl>6T z=e)e{F)+BbN*HOm_+n}tnSemi+Z&UjSW+_aZ~>p-9=WC>5^+Ay$e4E!|7f6x$C;-m z3j_t&9ZJw7V#jL;UUl6oo2xbvp4q*=&7hcf3KjxDx7qE zom6d`WjXd-{B3`~#b512p(?Y-mbkZX6E=?JzG>^Q;}bY4fq*+5#_MG~yx+VRo_?z$ zHhWaO=9E8`9*iAlLQ0aOqdVtw-S9#JQA7lv5}Sh~ub^!f+N>M%%~o1IK0p)Ho$}Pw zERn0o%tdoLh^AJ4h8h)xj)mmEU>rfo7N0suE|NeHS(+%z;3lG)Q)kPpS z6HL%BNQN%U^%-7XUb?l`ZoJGXx(KyB;8sA|53{^kDE=slw#Uj|zG9*lEm$6eClZcH zzyqROTYS5}|A3l$kwO6RG~e&$0?bK{4y@xN9&h#;|IOwn9`>+sVDGhNXYwX+5X>&^AU}q|mF;EPgV|M}5f&M6qd}zrTXFXG|=*p_~hgjEsa@84Jq` za+sh~p`f6kI?|rz`(4yxn1Utu+xE<>A52ws42KD`3H2i_)S};PZQL_5OwDDI1c1a5 zNx|Z-tn_}DHe@a!Jv5}>b)0#2|(^!D_aU206EATIzwsH#! z*5&2pbz%UHXLfeBJ#?OpmFOPX@Dk*lmJq8 za*~xpGFK^}hTAYGNpE5fP=)uey~7Wa{+Xh5AxLql6{>Kr$^Yo`2FC}2Qf zKZIKE=Ndg_xL_)e-kTTfb(4Kyqe=ha!;8k*C^u=>^%%&>BX?g_*s@ z*s~ukPpe+!(#+JLsoW(nv9$C!-8G??&?G^~k)Bqd4XD3xY7ya7&{5qBWO7KvfAuOT zR33suPWC)5{uz8PD=5xFi;RGlI>_Ij>YO#!Bu)pWEu1+;&_olm)PDO`N)57IDO_A! zS65e9jp1i1I?>|!6cYnU##E0Kb`~X3T#nL6xsNS>dj_-wVk0CDVIJM)n$@`4($K&6 zy+W40Bwl8p!rz(1xjQjVPKJ;tif?6=`HwU&66cXUxPH2O+iKqoj|K!FK8x5${;(UF zLiO(PP@1FxmAH6b`3l2Ln!69Ajp5?q?ZA!z3?TFVgpaykuD6}=N1%>{fhfqboFQ`+ z*dCBeI(f2j#LNswt_pHXv4+lmA0O&nJig#dE9;=zHe>PKb;+J%TlQJ)L0 zqfNqy+0BpMU@!4$fD$7wGAaY{4C=TOXIB0EGcL-#Y}|X0UqG z`a`Y|J%A|@bj$qJHQv8#Un~OX+q*D1otbK=3^6d$$Y?5o8v=t7jcaeNQoUyzd@X@k zq-Nw~D-FI^1oas2&j$%OxxNmjI29E$Y<+VzZ9JtH(f&jHWAQ^NxB1~lgx}4TKq&!X zBR#!)d&p{EH<7U5SDT;vU;NCt<^q@Sg20sv2Rpckbdz@E8$OORDH&I36xrv)siH1o zDk%!u_uRO+db;0f7hx3?pfJd&nK6UWY?amfC=3A;BmZJVj8RzF3mzeO&Y`ak8BB(? z4vWw+i>4I(1|1-cLQNE8e1kp1$iqpSfXyxY2>Z%U7gt$YA*+%v3-is*+Dx zD?Wp zJ9Of6!khGzR!oeUDu4CN*}0#E`SnD~%F5Ebuh-9dx41-d$hM}@Fgk9Aeyhx?qMRjJ&Lde6#vBf+!DCsZB4Cv%<^Ud zp=+|bSmoRd2YZE-i`TG@ce~?#UcW+W3Kc!Q)z9KpFO_M!I$yUe=y(4c{VJ~`i*a`5 zWA&p=n(3)J{)X|Yi|fU7ZoKJh|;aeS$bLUmwU-AjG0ACLrrw3IgN&x1e~t2 z@{lhDKHYHAF@QPM%$p6RrsUb})8N<-2=i0GT-x&W5 zMO}8G-tNUtX|2SLcTps2uCmuLr;H+(--Rn(w)go5vp=omTI1hcv{qLzB_yRseXgL* z3Fk;EVa<|aMZYVJgWn`O;%}Dcg7h+3;$I->5kza@0LYI@`K(KXSFL;flEl5-6o|s;aV;=GB7Xy0Ae6l5+A` zXY0`n3_w`vaaM4al9~!<>S|XFrqNN284&!b5}=|!_M;ZN^v_lP7>fctP_dHhE}Cbr zUpM}qoff-^DAuz^@9FLy9vyXbak=f`!z$h1Iag(8W_ZiHM?Csc=+%k4-XHor}L_u zjxlWrwuk*=V;nrl4|^{WNS5CoVV2ZTQxQSmpI1U%7=}E^Xk>Bk~$CP*G=azgKzee#|^T1)Y~^wKpYlML-{1x z_BE53O~P5KD9lIq_shOP{cwGXl=ZCf1i~dPteZ(Mt$qyQ8GNVZz5Da$@Hn!+W-((* zO3l$G0|9B5pd&H@Jv}gO{2+#q6MAh3V%Mix!62+SJ7AhO(m+61S}L_{ z=WEQD9t=#if=vrs&ZJ+QKZt(fV4yt512gO5O|-uy`}{%|`^ zR+)v1YjjHNyWQ_MIFVs3PoZuL!TnmSCw9=9oh>v$Lo97O^QlI_pq`l(1Do;1*h`r% z5uC`PFArtK-%b|MWrCImg2;P^h>3_+dizMp$tQ~(E{=bZ{;`md`fW7+6wf#4Gm9WO zxilX2`1Z-&yOH`jKotbQe8=&&lXX$i%=5&2w43@&*PS`YlY>mNb~Aw=;$x$u|K=L? z)YRIB1Z&K2h>6Az!L?+2b6$2+d5?C#MAg9H_vPg!v_z-4`>BOPq{FR9o_NKXn2d;V z$Xia`Kimq|Dn%X$Fhg&a&dbMmT3{fIb>D5YykijHd{f zzeE`y?|uEcrdWFf^mmr<;ZK8%O(Es{%Me`ACcdVo`vu9zk5KQa@S38}HN~DBt(NF% z`JUV#8UpksQg?s<%6!MK%huKcgU zyw)jqw>5B*oSc=7;P3H}*e6jh$H)j0Y;yG`7mgeSf*2M?TK+1t(ZD!qB+=75($c#p z++QAXtHXDa72lbp7C8mBN2#efeEBXGXuT%Y_% zSfK3z0N2uja2wm8D=64N;}=uwB(pT{7ykQq*8YAnJ%fBv5o6+MIaDuyEWO@;y8Gqy zRP7oW;i(Y62JgcP3EB77FX_2iLOY~VtN4HZlC%5Wd$7Osb4K7PX>-N%2px8-7WVsb zvrSY_gNr!Be}p}FR4uEplJI4O<-i|{O6g7c?4PMmLPB+zn3neQiG-p85Bpwdx_a+r z#(w%FWjM$GsJ#P1MK$*S0yC z=TA;EayaKJ&3isD+n_F2AY1w!Rj2G2q~WZh2Cn^NYFeZcpUT$O#Gicm@p`A*Xd z)sK@?q>|&Md3na=j4?4pKW$vq?!GqbwXl3mM$siJ=XfeCB_jjESj@i<> zFfQ(UVZJ33i+o&6*<;G=?B_&8yEklVfxajiEz5iEB8HLAk`B#7ao>l?;UTKPb!cg! zwX8Y@2Hf=!aeB3^|ENBHW=IO*IjgOTwDih~X|m9S>tvB;q&=em8r~%IO?H7k@8}5A zU45pn0nCq#nCj|u1Ok6!>3F^Lo2fsbvlP9S+v)=`W z9q=aqynpH8A-HvvJ~tS(vck#-FRWPM$*BqaL%C^P!Punvb zMs;mf)gi$s5fMPHciSm@6{?L4I>aHoI-mNTfu#M3br0V<{A%q~qK&ZT_w*dG1au>*}lJp9@pC=?G*~5Gg=D3h( zxt#}v~F4kzFdH~skyJ$3av+w>)eN2rCLjL>vVtSm9PS^|3uVg&_ z0ybnZv49ardVs@uIe!z=6|HrAsD5-%xN0CRZDFEgn(=2~Q@hR0d38px4Rqtz5G_KsL33AEVMm98h!6SA zk!?637gsUp_Tb0XjI*#_9%uVkX*v7vceyFX`Qg2B7~<_TT|_mlNT+O#G(UOO327jW z4vP}keM8O-hRsnv7wN?YcBV0dFLjVntL^8hDu#D0qpjT&gwcDjCJN`r zYP~S-FJNN&l0bQUa^i8=Ej6nf)biz_IZzXIiY~;(IrV1Nc+r2QSL-c~WYvMeT{$fZ zmkOV()^k%WI+jE0zIIvq<|+o-qU(s->H&tB7-Dyi<+%SHESU)WbJeZzchpGPH~Uz3 z9*Bz{Zr3;;S{x7@-vgB9PhQW{4+vXR(J)J%8AC>YkdcAC)%0&P(@>n!sR7RrQUU+K}(fl}4bo1@jR4 ztCue;t8o5qW07!^#PFqY6rfH7141JwXFON=eRcI1w6c<-%RK46QE!+JEo^>KQQN0y z+l)7;mvSL`lO^iso1e2*JMYImF+tqVc1gcbgU&z?;Vjfo7!?O{nV3Ax%#Nw4mozn% zO-<8_Z7nR^VOUSF+zDrX7!84RepuxV2ND8kHS$;=P>V643=X3F`lUCNO2z%`9{pDX z;c#M(QQs?#&9ejU(+3&=hJ<#nuybu@Y3bpg(k0CoGyvJFFn4f`15D)AT9Q^YO*3Il zW(e)4r>uI0Q2_zDJ{SMo57vO7&70YW&hEOhvcmgN^jXBT$2PeS+uO2iWF{tXn6!t2 zbE2oGR9>z(GNLjRm$>Fz$ny5KC~%wJerAdH@@Q>C%+J?w+U@K6m>4Gexr6r4vF$s1 zgPlq~=WSgz)$+yT?Gdh@fh~W3&KcA{dE*wn?$9)@F%B%_yj+3xZM_*JwBd$>w5fn( zN)j#!?*`{wC8~Pok9rj$?H8kJS>Y=jQ$2$v7GpWz5hb%{bPG&zl$L=42~ zuD3MGegZ8Vk0wlSgr#Q?)jydM7!q1qFU!?DL?H9!fpuJMEPoix5)u;DA`gGi|a(q5GHd|k{74-RaWWBpkWo<|qB?suDA6(gV zHq&L0Y@XlU{f0#u)9?KRv!otHjlJ;c*;TdcHiwZ>cJ@0x6(4+A+VS4*+T<8M^Fc}) z8XDE{`PmOKG08QyNq_6zeojuF9%(`0T&VSfYioHI$;9ry+6$WX71J_pDsLaXFJCZt zdwj~vv~T-MP;waqgtV**MT}r+b8KT2#S!53)?3$V^djD@B|R*;N|8N-Phh0@$>=@W zYg5KjgE1V8J?*NkfZD3@=v!&w*?LrFW@FN$@?TYiHHn?AFUzB-^h%0F)m0xfIGN8j zu-S>bJY#%Yb~=*9`)XOo$Q>)oFwc3zxMS6<*~7_i`I$m0(C<2m^B$3KwY7(K_Xfm~ zI6AU2z3#s}`$j?%7W<{N*#WE(0fB)K8kkDU!GRvs+N%8xS*x^dN-O9s&%=tiwY5Sm z74@J5v+eSqxmQ=EJ{ph)pnkR*KPnxrurq5pXTUqr-Q7+0$R<0(WMiRKtv%$uUL=o- ziV8aJ6PKIo7M%)e9Ga*|iXU8gcJCPR$>Zbk62y#%_yvqiO|?-`R|%Q1Dfw9YevxNn z>>h{kkYM7IzkiR8-LcT>es-6H#QmfsGd+F2_6>V=_3#Km&EpJ!FMHnVg_M(7aq-|G zd9Fy@KmEq3eIP0C!9;!$HZyZ~PyUHX9H;mZopF-DtDoNrK>3`&j|C~F1H~rhBkto9 zH@KMRTX(TI4Q&?w7H#d&q$DSE+Hs`;(k2oks`nBBfreRDN?e^%aI|G19q8m?#7mkC zBB#{)6**I_fu&#sahuQ3_ZGy1WZ$vx<@6Xq+qzYss;h{l2L=*bT8^!!1`{4+&4&?# zC6|uQ{a9f(v7p?JDn~&)R|y0!Yip3l8T;{UyJnupEW+I!6O#%L5AWu6A0`9+<3LoC zLCV%?BpI2!e3M^%2*wo;>?q%Xs}BUW{hu2OwIHuF2w7dZlIGsooPm=(9zwm&a2Rs_6`m~)$$te!x`E7(4W5ULpL|0`AgDgr&lNQFVs9& z)?9@hkq6jD^6__fcfr;pmZPvI=Jlw)2>W-vBL-gui+X*C3%R;5vAO)xswf{1J?sAD z_wAvDm|*|gP@U*oF_n^$rxanW^LPlZh!9j9g!%@1Yl@#SVXkm< zO-W*1l(V+Zjr0+@&6|mdZ;xGm;5{6MZkGNw7`z|^66053q;Sz#dI&~Qwg0Z?;qgzR zc;}iXjK*K38Ebu~TB?)!$)(rLHA83As-}{$idw*Tq0upj#b9LG+h-~V}VB$QqSciY-}{>YgSBG*5#9hS%BdPIRllJ(5<|_zLt-_&(F_KysE=HE)jnp zmYpBn-H=bBV3#UD4?PZsXP1Mk)Q>&Y+eX!9t)x1kbOfOzNQ2>=?zV4QTf6Y@H?xql z9HzHVUCUA|N8{F#I9!>+9#`-fC9G((E?eW<+1UZz-38z{B%qwl7Gh@y`NrM5_yl*X zt*;TgDLD!e+1R?MMRhl~0-AXov4X|kRYE_9mNtE>IU|E^X$k)>qMskQD+~gfS>*WJ4!_Vx|#A9vO!p}!9faLu9N?%|mJ z6pqCOV~@Se1K5#&6n|x=#5G@Nv7{XQ5=o)wbB2ZQ9kxZC{3PZ29196G9b>dGJEv{z zbC;R@>7Gomkf#dc+ua{s@z_^#AL8S+{*32O)LY4t>>m)&%xBY^4N6(ChG4e_V>!63 z$8+gdvMLxg5B>cK3Yn?yYi3DZ-E&ZQfcRVN>hLoy2|3xqnj&;Pev#i?BFW2ZYp0jt zW07V~+EpGpm;HP$4>pQaF&R&x!Q|GxWw`r+NYrAe{tY5!+8dLRQ&k)_THMF}cSO-} z!6$h=e{(&RZQiGXLxKfE^SBu72FI^I2b9u8FKS4+CkIlCc|9v@zrIV|qCPyyovA7J zZsiNYa&t^6d@a5jWx!{ikK#o3SLttcq zuJ^0XU9*8+ibwqytMbCa^|#KrvpU{}&^Qv$fg9Q7h z{St|Z6+018dOo~;;9vRfrVPYE$gBnD%2{|UtmY(jPufFaSgK#=$Rr}-4eDT1V}Gv` zFK4`=+Z8D z?5w+BaV_M~*AF_Q`G_tqzVTa6Lfj-HZ9e?m^8-duri7y6cFH$ieSL?^#}Gb9$AE-_ zl6GV2>x;B*piYxbP7&UlyDRD$<4_lfilh78IX^2aE4@q-EwA9w3ab$>rre z8UEqI|I>=3|6Tp){IAYs&4NBxgHL!Al{K5+0V)ZJ2FCT$l8Wu)U)i#sVHU#&#=?+f z+3=^bvY>R3-y9u9z;t%DLY2_cnyo{kkBQH!B(k1_Fe*G6I0ED1B0vtAMtmAIs)%3*zgY1{H}YXTGs-zl_+gkZ zOX{E1e=M}rilnaYKk%$8s_F@IjEEB|%pZ<~IIwn}G{yAH)M$+S1NHPzhUvL-BoS%} ziKjtLK5s5uSN+aFUftQzVKY;$NS1qq!ob0C(KncaaG9&@cezCjg~{tjR!B&!91P5; zuC7pA1t31M>u3)JqjoGY5%IiyQ-#evR6JCFTq5c{=YW49t-4t<R9*gy|`6DI?n?FLT2L;`k>H2Fy)$@I|l^;4F>k} z_RzDpx30qgC=;h`9i&|3WKo$v!*k4?CGaE?qn=eDW{AX6iYh(blw8D0A2Whn+Lr&Nud z;K+zQJ$)rV|2;g=HNJ%J3Cfz>=4L-*V_-c0{vQ0ZVsA_toLd}PzE%n*(kRzwXfJY} z8qt7%`iT!dvBu%CZA*bhIK}4w-Tzt89v4W+pb-$LsJ^WckdT1A5fQ0yr^oZ`ZmD5L znaZw$m@vh?dkc+i^`3Dai9NTWLL&a{So}s#nKow3Q;IK=J zhzR^K`926Mf*>?XA?NOF>7kTTv~SJd|1#%%~tH#Ue58B?5E1 zJXZ5Hk1inK}r zZ8nkx9`F=l7>wN~-Q28oT5l|p!lPN**4wSXASI$@MxC4_6DFxJqkBT#*$GpnxVY(Z zr1Ekyfs*0jvb4fKHvq|ow2K^(J#NH@4=bR(!lhU3?(U8a;z^Jno*Npna?5~%f}N1o z-9uwY;smI@kQ3AFd1M809|-fb*ImRuO79Kyk0HXPl9(!SZ~|qF;+sPdn$~bf56m@L z#b!qj<>fqHA^j0b?d&$?=GIkh3+QUA0^@T#AW?*aAyqtZ_-nXvV<)&sl#-Yg@OZf- zR3YsrE-6V~s;sOf5DlJ&Y{uDHW2>;~>4K}#(dUp&XZP6Y8BYK_4xA)&jgsz<)zknD z6UU7Pp5GQTEM6%sR0%;rvU`hbij{Uy5NMUqa$v2k&E7W%!J+xLwIvjpW|p{!1g>G& zhOR-ou34;G1)@t3TW-$H&FUURbL*kXbV1q>fM-t6&vBuj1`}Oi|0@vLtf_n8Bf!V6 zn8f33k}tFMUFS!;Cusf}h0qlCsY09ViyzOy>6?QwIOz2~Ji2=& z{!D`5Q#mc5t38%OyBb^UDku~$BcCndWB@PdRTrXvFpAx*e@aUFGk$&qD6R-Y+cCVG z@!}RG`S|&7)5Q;l!~pSAGgV=3FXZCr8z?7t`H4=_;eeT0vF#&6rjUh)Ajy3x2cCuo&6Tw|Z0yT65==YK0xt&; zB|@60r6(TmTa}<)FSD5b0ablYi%~tDI|$LCMVv&$8QDR^gpy`vr`KM9IRPWT6x^1m zD46iBt+8@<4J5I0w3okvha7T?-SG#K*(EdcZi*{c=rw3M?M%q}nA;0@6O z7FLM zcj4_ue&q}d9*v$Dy(uYB#hIEKzeJ>0NJK_L%FbC@Pb+_o1*f=tHby2ByQuXc6ARYU zm|zqHUs`NjT*ETsR&Wsms3h@F{T^8&(?nOF`b)d0?U@mP^~TyP*SX=PrcPI&x&3=8 z`+jdB9*q!P`Z*|tz#N(uA0PV2cFvlh+CDm08JvVHEEX2(v2K4tZvBjqQ&V9ku8il+ zEhzNzuQnt{juYwXs%SwIL4&R0Y(VPOGVGX&UwBvHEwnu|$ic=o64jvgPP>D|V~*R< zNYSKgV@M6hzr#(y{!50wJhTW3WuSYzw?K+9#?LN6avyTUzx;$Iw{T8QaRHi$j0~kv z(2D7}cBz~^R$Lrx^?`xuQ=P;3VPP6)jY7^XMLOMmfY@wkLs zwY~j3a&BkKuC&S~3@b|u8k_H4DvLo_@9*!6Eq64hN?Zye+gpqEPS>jJxh=hHF< z24oOGJb%6bxFI;}nv0w=wN;`^_W|e!n9Cx|%VQ!U1#)MbW)Ts{PBn$gYsZEZBP|GP zYk3O(nFY{h%P5KvurJUJQd5%wE;i4bC6KQ{YedTJK711Nh}}rD6ZBD0C9s{rOx>PHH&>pXR&PAqZ8<;UKT*|0jn=Ab@-{YJfcFV#*=e9m#4-{^ zYL6d+zaN521uq-9o)0EB0{lf0&yM?C!Lh_~++AopS?LHA0zfI#(E%g36mlHr+i1L% z)xu*Fk<+j3&XJE$#BMGtnwpwIL%SeY-23b^Iu+HPuS}%>_0>qT--J9dvAgHwY^WHK zqEXs_8Td;%U|r_qEIO}!jEWjUKEBj?Gd$cfS)3e%45sJB_0RxBZN2su1WpoOUN|dV zUOH^5O(^`{;-R*=$Md%AJ(;j;5j+yGSpm_u8loTH-+MT`fbp!i7lHR{HtN|a9Asu2 zz2fhE9cbCrvGUx#(zs)53$I7Djks$yZJj6rKfm+8%ei+uTR{JSOxxr=V=Vtoa$6x_ zJ2KGIm+05Q`Taz|%F1G@Y?9gaFVqjf8vcjxeMW)H={r zU~?i#HsXh&!NjHBd2_TP0!xW^{I;N=cFCihY|QJ?f74y{=Bw_cGxg`PfTi#0+<65Gy)3?0#gBxxF4pR0Wf} z5gd#1@;2H<2?+_^{!T9f19fdJCoAh<=|^}E$dr==lJt3zB*QZwP$vu6ryhnnrI9sh zC$#b|b^QE!2Ay$;4-thfM{g_#=x~ZaDrst(osj`6UR+8F6$J$c1H)}A9E`dUvI6`} z^d~*aa|10c!;i`TiHDFN6QchBJj){R=>X2&x9DKlRP0FZ|;NYzxZj(#hyz(aj0bf%k1u(rDDlMvJ-IBXNVy1xFfZA-d> zcv8WlI^GlhZBv>T$5KT77LMUpN=iy8LN32*-@HPKVl;%|%cNgIVbMLXtNNAdR6Lty zw=w~7Dfm3^)`aO!gC{kNn4_aOlLQoQC+lf`VTbq;Xwr9ph@D&=B6c(6JWyx!}5D|5+o!^95Os! zo_FuQqk?+E0^-Q7UEx#6%FL8v1}td?$$x$qorGZGwV0336$EDh{}us4C2GEXV}~lv zMQ#%$1s8{#FLa8*`VZ1ad}4u!PoM76t3m8f&4)w?r-Xt8xUp}r@-Y~Sn#S4x!jk)F zVrs$)87`tD-bI=pt%=jbWzX0k4H#N^>TCL}oSf<^DyP~nQNV3*t9eW;gGaTWlQN`~ z1dtOZ8b91Wyv?{X{v*%@CkSGQ;FNf|4N6t0CYAsG{rAtX%jzB(*%tc$F5WyS>sjPE zjP|fFF+m7@%eu50XZ_gw(%3lf&j0?*)5ieUQC1!Tp(V)3Hn+AwfMSsSjf@OxVfbd^ zQsXXV*lA`L5ixHUIo|HkA_WfT8_}8?-~O^NsqD|5frk)iB#x`{0C9k?a!>=B3-6;X z4G`z}`@_3k#f%S#%%!CzfVZows}teltN4ii0Zy7xt%JCpo)YwklzWbT-czbyw+|$W>*|1jHt_PF&4A?eR`IB$Smf2!ox!#OcY{U91WsI6&ON0~{x6id;)HutjoJk&+pPpJ*&&*MWCMQU*c2OBBw#`PRby`iU#6K69LvherEn_{ zV5x^BA!(K(54d9{ZKtrB7xB<}mc2%m@bK_}j54rkKwb80dK$#tcb+RM!t)aoAHTi> zb^pP?-@Z`7--H-F zFk$_ww(Z;LyBl7%hP2$;*#Zw)ThK;poS=3m+{3=U@a9I-o=@OEfR{sFSNHol62_w> zE(Qh$=C>fSgVzjPvwrg0Y!FFWaGr$-IFv&MPWCiW$eHWt>|BGT2A+BgPZQ9MNrqs* zady7EzSucqg8eSm;D!=6l=~@X8j09uw)-NC zpffNMDnavLjHy7b3TbUB5PX9=?G6Ova&vPJ4Gylw=VoVbY;L}nC%zeutzn6M3HvMi z#YgasL)Yu@=;#NNnxSD6c%*>f!XFeH8~fVaJX~EHPFV1r;D6y@Z1B@Z-9S=K4%5iL zsmb@X$&up-#sw@p;GinRDpUdm7kg<<4$)*X*e8v_^3JYsN=-Dvptz@Y^>z!^q@A6e zp?OzF$6rl8!US-^_sGcs@5=Wj8;@q(%gYP4;*iqG+1X3ju%r%w7LS7y3Ed)kA@9>N zFhb=8Pq?cLtvbSoel`Q*G7u={DyK2u_8$R%y1KH0KLREZSl;^lo^jo7JP;Kr;IQ!Y zy4GJVj#Fo}+0XC#7}g3BPVJ{suq;8P3)jSy+0h{d9wC5}5@0MlJO+Z{_I$Hnq&Q~m z6h+bisM}K?n&URBNJ=vB@x{C|Z1&}1VSyu&Fad^j2rM_k|F;MuExsdQfYK4@AFHsl zo0<|)Q4Mf6`(Awy3F!oJUkLxex2Dg@whg^f7Q< zN7G>U{8nCm59(W(j{+YJUX}kSqcULj?QH^)gHli{6~b`=PQfPaA%IYb1g*)w9{EGF zh^i`nBW(wVvW=i^=mI?j*FEKRR(iVsyV0?+fq{WrOCh|GFJ6qvRoDUpL`KFOcpjad zozVRvNhxcFY0y(BLOE{hDMEr9Qc8ZSnBZV(=mS-J`*wN(D`g6Ie@BPuNT&4vb|F%@ z&!hw%W#A|U4?``m{Gkkl&}zL_(f0QCc6R0qZ7(k`&rjyj zGk{9WKv6+KiiHziH#W9>Pg(dm&*qiiym{dFmJTx9wk$huoq$j*$;->5p`ndn^!4`_ zC6E8;8XN=~C%dTV?Ya+ZEC^j;0h=f-Oh_QR=3MUOcWJ&0*M-sr2T(^t zbrw~5*~$y=4g5-j^8P>nVZ^WS-@4?qzyy&FFh5A`S~!I0P!N%kHCZJ*?QVfzyBh7t z65ydi4JjpO#^(jyIgj@Q&wsz{VqwVt|E12va0V1&KOf_P#T)@aR$57_M8Y`W{{io^ Bp_>2z diff --git a/paper/examples.jl b/paper/examples.jl index e3b29eb..2720432 100644 --- a/paper/examples.jl +++ b/paper/examples.jl @@ -24,7 +24,7 @@ p2 = wiggle(y) |> p -> plot!(p, yticks=1:9, title="Stationary WT") # Combine and save plot p = plot(p1, p2, layout=(1,2)) -savefig(p, "transforms.png") +savefig(p, "tpaper/ransforms.png") # 2. Best Basis Algorithms ----------------------------------------------------------------- # Compared to Wavelets.jl, WaveletsExt.jl has an extended ability of catering toward @@ -39,12 +39,12 @@ xw = wpdall(x, wt, 6) # ----- Joint Best Basis (JBB) tree = bestbasistree(xw, JBB()) -p1 = plot_tfbdry(tree, 6, nd_col=:green, ln_col=:black, bg_col=:white) |> +p1 = plot_tfbdry(tree, 6, node_color=:green, line_color=:black, background_color=:white) |> p -> plot!(p, title="JBB") # ----- Least Statistically Dependent Basis (LSDB) tree = bestbasistree(xw, LSDB()) -p2 = plot_tfbdry(tree, 6, nd_col=:green, ln_col=:black, bg_col=:white) |> +p2 = plot_tfbdry(tree, 6, node_color=:green, line_color=:black, background_color=:white) |> p -> plot!(p, title="LSDB") # Combine and save plot @@ -118,7 +118,7 @@ ldb = LocalDiscriminantBasis(wt=wt, X̂ = fit_transform(ldb, X, y) # Plot the best basis for feature extraction -p2 = plot_tfbdry(ldb.tree, 6, nd_col=:green, ln_col=:black, bg_col=:white) +p2 = plot_tfbdry(ldb.tree, 6, node_color=:green, line_color=:black, background_color=:white) plot!(p2, title="Basis Selection using LDB") p = plot(p1, p2, size=(600,300)) diff --git a/paper/ldb.png b/paper/ldb.png index 70d18f88c79092fa81098f9db9367504397cc653..baaa3e09865b0459af04118333e568f086e790b1 100644 GIT binary patch literal 55486 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 Kw>oX<7V$s*;G8%B literal 55619 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 rJK}|Z`Q!St9*WtNt=e?qc9{>mvRaS}ZSe diff --git a/paper/paper.md b/paper/paper.md index da6a6c5..3e9bb68 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -71,12 +71,12 @@ xw = wpdall(x, wt, 6) # ----- Joint Best Basis (JBB) tree = bestbasistree(xw, JBB()) -p1 = plot_tfbdry(tree, nd_col=:black, ln_col=:black, bg_col=:white) |> +p1 = plot_tfbdry(tree, node_color=:green, line_color=:black, background_color=:white) |> p -> plot!(p, title="JBB") # ----- Least Statistically Dependent Basis (LSDB) tree = bestbasistree(xw, LSDB()) -p2 = plot_tfbdry(tree, nd_col=:black, ln_col=:black, bg_col=:white) |> +p2 = plot_tfbdry(tree, node_color=:green, line_color=:black, background_color=:white) |> p -> plot!(p, title="LSDB") # Combine and save plot @@ -159,7 +159,7 @@ ldb = LocalDiscriminantBasis( X̂ = fit_transform(ldb, X, y) # Plot the best basis for feature extraction -p2 = plot_tfbdry(ldb.tree, nd_col=:black, ln_col=:black, bg_col=:white) +p2 = plot_tfbdry(ldb.tree, node_color=:green, line_color=:black, background_color=:white) plot!(p2, title="Basis Selection using LDB") # Combine and save plot From b795b64fc36d15743228d328a073ac8431551f85 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 21 Jan 2022 11:41:14 -0800 Subject: [PATCH 02/17] Update to VERSION v0.1.15 No changes in functionalities in current patch update. Only fixes and additions are made to follow JOSS guidelines. --- Project.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 92ec7a9..774aa77 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "WaveletsExt" uuid = "8f464e1e-25db-479f-b0a5-b7680379e03f" authors = ["Zeng Fung Liew ", "Shozen Dan "] -version = "0.1.14" +version = "0.1.15" [deps] AverageShiftedHistograms = "77b51b56-6f8f-5c3a-9cb4-d71f9594ea6e" @@ -9,10 +9,12 @@ Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" ImageQualityIndexes = "2996bd0c-7a13-11e9-2da2-2f5ce47296a9" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +OhMyREPL = "5fb14364-9ced-5910-84b2-373655c76a03" Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" +Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" Wavelets = "29a6e085-ba6d-5f35-a997-948ac2efa89a" From 01fbeb07a1b25226624f5bb5ed47953080daf60c Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 21 Jan 2022 11:55:06 -0800 Subject: [PATCH 03/17] Remove OhMyREPL and Revise from Project.toml --- Project.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Project.toml b/Project.toml index 774aa77..65a78dc 100644 --- a/Project.toml +++ b/Project.toml @@ -9,12 +9,10 @@ Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" ImageQualityIndexes = "2996bd0c-7a13-11e9-2da2-2f5ce47296a9" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -OhMyREPL = "5fb14364-9ced-5910-84b2-373655c76a03" Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" -Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" Wavelets = "29a6e085-ba6d-5f35-a997-948ac2efa89a" From 478690c14c8a1f1ce582ff23744366ac2a1045c6 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Sat, 22 Jan 2022 18:43:06 -0800 Subject: [PATCH 04/17] Split code into multiple lines to fit into letter size paper --- paper/paper.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 3e9bb68..cd0a391 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -71,12 +71,18 @@ xw = wpdall(x, wt, 6) # ----- Joint Best Basis (JBB) tree = bestbasistree(xw, JBB()) -p1 = plot_tfbdry(tree, node_color=:green, line_color=:black, background_color=:white) |> +p1 = plot_tfbdry(tree, + node_color=:green, + line_color=:black, + background_color=:white) |> p -> plot!(p, title="JBB") # ----- Least Statistically Dependent Basis (LSDB) tree = bestbasistree(xw, LSDB()) -p2 = plot_tfbdry(tree, node_color=:green, line_color=:black, background_color=:white) |> +p2 = plot_tfbdry(tree, + node_color=:green, + line_color=:black, + background_color=:white) |> p -> plot!(p, title="LSDB") # Combine and save plot @@ -159,7 +165,10 @@ ldb = LocalDiscriminantBasis( X̂ = fit_transform(ldb, X, y) # Plot the best basis for feature extraction -p2 = plot_tfbdry(ldb.tree, node_color=:green, line_color=:black, background_color=:white) +p2 = plot_tfbdry(ldb.tree, + node_color=:green, + line_color=:black, + background_color=:white) plot!(p2, title="Basis Selection using LDB") # Combine and save plot From 04ae5e62837f64f6cdb6e3924a7c8b33233c5801 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Sat, 22 Jan 2022 18:51:04 -0800 Subject: [PATCH 05/17] Update to VERSION v0.1.17 Fixes to JOSS code snippets. --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 889d474..dfa6fc0 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "WaveletsExt" uuid = "8f464e1e-25db-479f-b0a5-b7680379e03f" authors = ["Zeng Fung Liew ", "Shozen Dan "] -version = "0.1.16" +version = "0.1.17" [deps] AverageShiftedHistograms = "77b51b56-6f8f-5c3a-9cb4-d71f9594ea6e" From 77d4ffa9df13b423c984b9901078f3c0b4849ce8 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Mon, 31 Jan 2022 13:03:27 -0800 Subject: [PATCH 06/17] Reorganize source files Organize source code of the same purpose into a subdirectory. Eg: ``` src/ACWT.jl src/ACWT.jl src/acwt_all.jl -> src/acwt/acwt_all.jl src/acwt_one_level.jl src/acwt/acwt_one_level.jl src/acwt_utils.jl src/acwt/acwt_utils.jl ``` --- src/mod/ACWT.jl | 6 +++--- src/mod/BestBasis.jl | 4 ++-- src/mod/DWT.jl | 4 ++-- src/mod/LDB.jl | 4 ++-- src/mod/SWT.jl | 4 ++-- src/mod/Utils.jl | 6 +++--- src/mod/{ => acwt}/acwt_all.jl | 0 src/mod/{ => acwt}/acwt_one_level.jl | 0 src/mod/{ => acwt}/acwt_utils.jl | 0 src/mod/{ => bestbasis}/bestbasis_costs.jl | 0 src/mod/{ => bestbasis}/bestbasis_tree.jl | 0 src/mod/{ => dwt}/dwt_all.jl | 0 src/mod/{ => dwt}/dwt_one_level.jl | 0 src/mod/{ => ldb}/ldb_energymap.jl | 0 src/mod/{ => ldb}/ldb_measures.jl | 0 src/mod/{ => swt}/swt_all.jl | 0 src/mod/{ => swt}/swt_one_level.jl | 0 src/mod/{ => utils}/utils_dataset.jl | 0 src/mod/{ => utils}/utils_metrics.jl | 0 src/mod/{ => utils}/utils_tree.jl | 0 20 files changed, 14 insertions(+), 14 deletions(-) rename src/mod/{ => acwt}/acwt_all.jl (100%) rename src/mod/{ => acwt}/acwt_one_level.jl (100%) rename src/mod/{ => acwt}/acwt_utils.jl (100%) rename src/mod/{ => bestbasis}/bestbasis_costs.jl (100%) rename src/mod/{ => bestbasis}/bestbasis_tree.jl (100%) rename src/mod/{ => dwt}/dwt_all.jl (100%) rename src/mod/{ => dwt}/dwt_one_level.jl (100%) rename src/mod/{ => ldb}/ldb_energymap.jl (100%) rename src/mod/{ => ldb}/ldb_measures.jl (100%) rename src/mod/{ => swt}/swt_all.jl (100%) rename src/mod/{ => swt}/swt_one_level.jl (100%) rename src/mod/{ => utils}/utils_dataset.jl (100%) rename src/mod/{ => utils}/utils_metrics.jl (100%) rename src/mod/{ => utils}/utils_tree.jl (100%) diff --git a/src/mod/ACWT.jl b/src/mod/ACWT.jl index 9c9ff71..a14d196 100644 --- a/src/mod/ACWT.jl +++ b/src/mod/ACWT.jl @@ -1006,8 +1006,8 @@ end # return (v₀ + v₁) / √2 # end -include("acwt_utils.jl") -include("acwt_one_level.jl") -include("acwt_all.jl") +include("acwt/acwt_utils.jl") +include("acwt/acwt_one_level.jl") +include("acwt/acwt_all.jl") end # end module \ No newline at end of file diff --git a/src/mod/BestBasis.jl b/src/mod/BestBasis.jl index efa9af7..d0fc3f2 100644 --- a/src/mod/BestBasis.jl +++ b/src/mod/BestBasis.jl @@ -33,8 +33,8 @@ using ..DWT, ..SIWPD -include("bestbasis_costs.jl") -include("bestbasis_tree.jl") +include("bestbasis/bestbasis_costs.jl") +include("bestbasis/bestbasis_tree.jl") ## ----- BEST TREE SELECTION ----- # Tree selection for 1D signals diff --git a/src/mod/DWT.jl b/src/mod/DWT.jl index 246016c..97a1abf 100644 --- a/src/mod/DWT.jl +++ b/src/mod/DWT.jl @@ -709,7 +709,7 @@ function Wavelets.Transforms.iwpt!(x̂::AbstractArray{T,2}, return x̂ end -include("dwt_one_level.jl") -include("dwt_all.jl") +include("dwt/dwt_one_level.jl") +include("dwt/dwt_all.jl") end # end module \ No newline at end of file diff --git a/src/mod/LDB.jl b/src/mod/LDB.jl index ad5825a..1e6c308 100644 --- a/src/mod/LDB.jl +++ b/src/mod/LDB.jl @@ -41,8 +41,8 @@ using ..Utils, ..DWT import ..BestBasis: bestbasis_treeselection -include("ldb_energymap.jl") -include("ldb_measures.jl") +include("ldb/ldb_energymap.jl") +include("ldb/ldb_measures.jl") ## LOCAL DISCRIMINANT BASIS """ diff --git a/src/mod/SWT.jl b/src/mod/SWT.jl index 2b39fad..ca0e67d 100644 --- a/src/mod/SWT.jl +++ b/src/mod/SWT.jl @@ -1198,7 +1198,7 @@ function iswpd!(x::AbstractMatrix{T}, return x end -include("swt_one_level.jl") -include("swt_all.jl") +include("swt/swt_one_level.jl") +include("swt/swt_all.jl") end # end module \ No newline at end of file diff --git a/src/mod/Utils.jl b/src/mod/Utils.jl index 52f9161..5f319a4 100644 --- a/src/mod/Utils.jl +++ b/src/mod/Utils.jl @@ -541,8 +541,8 @@ function getcolrange(n::Integer, idx::T) where T<:Integer end end -include("utils_tree.jl") -include("utils_metrics.jl") -include("utils_dataset.jl") +include("utils/utils_tree.jl") +include("utils/utils_metrics.jl") +include("utils/utils_dataset.jl") end # end module \ No newline at end of file diff --git a/src/mod/acwt_all.jl b/src/mod/acwt/acwt_all.jl similarity index 100% rename from src/mod/acwt_all.jl rename to src/mod/acwt/acwt_all.jl diff --git a/src/mod/acwt_one_level.jl b/src/mod/acwt/acwt_one_level.jl similarity index 100% rename from src/mod/acwt_one_level.jl rename to src/mod/acwt/acwt_one_level.jl diff --git a/src/mod/acwt_utils.jl b/src/mod/acwt/acwt_utils.jl similarity index 100% rename from src/mod/acwt_utils.jl rename to src/mod/acwt/acwt_utils.jl diff --git a/src/mod/bestbasis_costs.jl b/src/mod/bestbasis/bestbasis_costs.jl similarity index 100% rename from src/mod/bestbasis_costs.jl rename to src/mod/bestbasis/bestbasis_costs.jl diff --git a/src/mod/bestbasis_tree.jl b/src/mod/bestbasis/bestbasis_tree.jl similarity index 100% rename from src/mod/bestbasis_tree.jl rename to src/mod/bestbasis/bestbasis_tree.jl diff --git a/src/mod/dwt_all.jl b/src/mod/dwt/dwt_all.jl similarity index 100% rename from src/mod/dwt_all.jl rename to src/mod/dwt/dwt_all.jl diff --git a/src/mod/dwt_one_level.jl b/src/mod/dwt/dwt_one_level.jl similarity index 100% rename from src/mod/dwt_one_level.jl rename to src/mod/dwt/dwt_one_level.jl diff --git a/src/mod/ldb_energymap.jl b/src/mod/ldb/ldb_energymap.jl similarity index 100% rename from src/mod/ldb_energymap.jl rename to src/mod/ldb/ldb_energymap.jl diff --git a/src/mod/ldb_measures.jl b/src/mod/ldb/ldb_measures.jl similarity index 100% rename from src/mod/ldb_measures.jl rename to src/mod/ldb/ldb_measures.jl diff --git a/src/mod/swt_all.jl b/src/mod/swt/swt_all.jl similarity index 100% rename from src/mod/swt_all.jl rename to src/mod/swt/swt_all.jl diff --git a/src/mod/swt_one_level.jl b/src/mod/swt/swt_one_level.jl similarity index 100% rename from src/mod/swt_one_level.jl rename to src/mod/swt/swt_one_level.jl diff --git a/src/mod/utils_dataset.jl b/src/mod/utils/utils_dataset.jl similarity index 100% rename from src/mod/utils_dataset.jl rename to src/mod/utils/utils_dataset.jl diff --git a/src/mod/utils_metrics.jl b/src/mod/utils/utils_metrics.jl similarity index 100% rename from src/mod/utils_metrics.jl rename to src/mod/utils/utils_metrics.jl diff --git a/src/mod/utils_tree.jl b/src/mod/utils/utils_tree.jl similarity index 100% rename from src/mod/utils_tree.jl rename to src/mod/utils/utils_tree.jl From 98b26ab78cbc2118505f965a7a49765dbebb1d07 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Wed, 2 Feb 2022 00:10:41 -0800 Subject: [PATCH 07/17] Add nonstandard transform functionalities. --- Project.toml | 1 + src/WaveletsExt.jl | 4 +- src/mod/WaveMult.jl | 15 ++++++ src/mod/wavemult/mat2sparse.jl | 36 +++++++++++++++ src/mod/wavemult/transforms.jl | 42 +++++++++++++++++ src/mod/wavemult/utils.jl | 84 ++++++++++++++++++++++++++++++++++ src/mod/wavemult/wavemult.jl | 31 +++++++++++++ 7 files changed, 212 insertions(+), 1 deletion(-) create mode 100644 src/mod/WaveMult.jl create mode 100644 src/mod/wavemult/mat2sparse.jl create mode 100644 src/mod/wavemult/transforms.jl create mode 100644 src/mod/wavemult/utils.jl create mode 100644 src/mod/wavemult/wavemult.jl diff --git a/Project.toml b/Project.toml index 889d474..8639a73 100644 --- a/Project.toml +++ b/Project.toml @@ -13,6 +13,7 @@ Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" Wavelets = "29a6e085-ba6d-5f35-a997-948ac2efa89a" diff --git a/src/WaveletsExt.jl b/src/WaveletsExt.jl index 38d7f4b..429e5dc 100644 --- a/src/WaveletsExt.jl +++ b/src/WaveletsExt.jl @@ -11,6 +11,7 @@ include("mod/SWT.jl") include("mod/Denoising.jl") include("mod/LDB.jl") include("mod/Visualizations.jl") +include("mod/WaveMult.jl") using Reexport @reexport using .DWT, @@ -21,6 +22,7 @@ using Reexport .SWT, .SIWPD, .ACWT, - .Visualizations + .Visualizations, + .WaveMult end \ No newline at end of file diff --git a/src/mod/WaveMult.jl b/src/mod/WaveMult.jl new file mode 100644 index 0000000..91a3ccb --- /dev/null +++ b/src/mod/WaveMult.jl @@ -0,0 +1,15 @@ +module WaveMult +export mat2sparse_nsform, + ns_dwt + +using Wavelets, + LinearAlgebra, + SparseArrays + +import ..DWT: dwt_step!, idwt_step! + +include("wavemult/utils.jl") +include("wavemult/mat2sparse.jl") +include("wavemult/wavemult.jl") +include("wavemult/transforms.jl") +end # module \ No newline at end of file diff --git a/src/mod/wavemult/mat2sparse.jl b/src/mod/wavemult/mat2sparse.jl new file mode 100644 index 0000000..e4a82b7 --- /dev/null +++ b/src/mod/wavemult/mat2sparse.jl @@ -0,0 +1,36 @@ +""" + mat2sparse_nsform(M, wt, [L], [ϵ]) + +Transform the matrix `M` into the wavelet basis. Then, it is stretched into its nonstandard +form. Elements exceeding `ϵ * maximum column norm` are set to zero. The resulting output +sparse matrix, and can be used as input to `nonstd_wavemult`. + +# Arguments +- `M::AbstractMatrix{T} where T<:AbstractFloat`: `n` by `n` matrix (`n` dyadic) to be put in + Sparse Nonstandard form. +- `wt::OrthoFilter`: Wavelet filter. +- `L::Integer`: (Default: `maxtransformlevels(M)`) Number of decomposition levels. +- `ϵ::T where T<:AbstractFloat`: (Default: `1e-4`) Truncation Criterion. + +# Returns +- `NM::SparseMatrixCSC{T, Integer}`: Sparse nonstandard form of matrix of size 2n x 2n. +""" +function mat2sparse_nsform(M::AbstractMatrix{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(M), + ϵ::T = 1e-4) where T<:AbstractFloat + @assert isequal(size(M)...) + @assert ndims(M) == 2 + n = size(M, 1) + Mw = dwt(M, wt, L) # 2D wavelet transform + # Find maximum column norm of Mw + maxrownorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) + nilMw = Mw .* (abs.(Mw) .> ϵ * maxrownorm) # "Remove" values close to zero + nz_vals = nilMw[nilMw .≠ 0] # Extract all nonzero values + nz_indx = findall(!iszero, nilMw) # Extract indices of nonzero values + i = getindex.(nz_indx, 1) + j = getindex.(nz_indx, 2) + ie, je = stretchmatrix(i, j, n, L) # Stretch matrix Mw + NM = sparse(ie, je, nz_vals, 2*n, 2*n) # Convert to sparse matrix + return NM +end \ No newline at end of file diff --git a/src/mod/wavemult/transforms.jl b/src/mod/wavemult/transforms.jl new file mode 100644 index 0000000..8848c1a --- /dev/null +++ b/src/mod/wavemult/transforms.jl @@ -0,0 +1,42 @@ +function ns_dwt(x::AbstractVector{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(x)) where T<:AbstractFloat + Lmax = maxtransformlevels(x) + @assert L ≤ Lmax + n = length(x) + nxw = zeros(T, 2*n) + g, h = WT.makereverseqmfpair(wt, true) + for l in 1:L + w₁ = @view nxw[ndyad(l, Lmax, false)] + w₂ = @view nxw[ndyad(l, Lmax, true)] + v = l == 1 ? x : @view nxw[ndyad(l-1, Lmax, false)] + dwt_step!(w₁, w₂, v, h, g) + end + return nxw +end + +""" + ns_idwt(nxw, wt, [L]) + +Inverse nonstandard wavelet transform on 1D signals. + +# Arguments + +""" +function ns_idwt(nxw::AbstractVector{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(nxw)-1) where T<:AbstractFloat + Lmax = maxtransformlevels(nxw) - 1 + @assert L ≤ Lmax + n = length(nxw) ÷ 2 + x = zeros(T, n) + x[1:1<<(Lmax-L)] = nxw[1:1<<(Lmax-L)] + g, h = WT.makereverseqmfpair(wt, true) + for l in L:-1:1 + w₁ = nxw[ndyad(l, Lmax, false)] + x[1:1<<(Lmax-l)] + w₂ = @view nxw[ndyad(l, Lmax, true)] + v = @view x[1:1<<(Lmax-l+1)] + idwt_step!(v, w₁, w₂, h, g) + end + return x +end \ No newline at end of file diff --git a/src/mod/wavemult/utils.jl b/src/mod/wavemult/utils.jl new file mode 100644 index 0000000..0cb09e6 --- /dev/null +++ b/src/mod/wavemult/utils.jl @@ -0,0 +1,84 @@ +""" + dyadlength(x) + dyadlength(n) + +Find dyadic length of array. + +# Arguments +- `x::AbstractArray`: Array of length `n`. Preferred array length is ``2^J`` where ``J`` is + an integer. +- `n::Integer`: Length of array. + +# Returns +- `J::Integer`: Least power of two greater than `n`. +""" +function dyadlength(n::T) where T<:Integer + J = ceil(T, log2(n)) + if 1< 1< 1< Date: Wed, 2 Feb 2022 23:30:26 -0800 Subject: [PATCH 08/17] Update function documentation for nonstandard transforms - Update function documentations - Add `ns_idwt`, `nonstd_wavemult` to be exported from module. --- src/mod/WaveMult.jl | 4 +++- src/mod/wavemult/transforms.jl | 27 +++++++++++++++++++++++++-- src/mod/wavemult/wavemult.jl | 13 +++++++++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/mod/WaveMult.jl b/src/mod/WaveMult.jl index 91a3ccb..160bd22 100644 --- a/src/mod/WaveMult.jl +++ b/src/mod/WaveMult.jl @@ -1,6 +1,8 @@ module WaveMult export mat2sparse_nsform, - ns_dwt + ns_dwt, + ns_idwt, + nonstd_wavemult using Wavelets, LinearAlgebra, diff --git a/src/mod/wavemult/transforms.jl b/src/mod/wavemult/transforms.jl index 8848c1a..8971f02 100644 --- a/src/mod/wavemult/transforms.jl +++ b/src/mod/wavemult/transforms.jl @@ -1,9 +1,24 @@ +""" + ns_dwt(x, wt, [L]) + +Nonstandard wavelet transform on 1D signals. + +# Arguments +- `x::AbstractVector{T} where T<:AbstractFloat`: 1D signal of length ``2^J``. +- `wt::OrthoFilter`: Type of wavelet filter. +- `L::Integer`: (Default: `maxtransformlevels(x)`) Number of decomposition levels. + +# Returns +- `nxw::Vector{T}`: Nonstandard wavelet transform of `x` of length ``2^{J+1}``. +""" function ns_dwt(x::AbstractVector{T}, wt::OrthoFilter, L::Integer = maxtransformlevels(x)) where T<:AbstractFloat Lmax = maxtransformlevels(x) - @assert L ≤ Lmax n = length(x) + @assert 1 ≤ L ≤ Lmax + @assert ispow2(n) + nxw = zeros(T, 2*n) g, h = WT.makereverseqmfpair(wt, true) for l in 1:L @@ -21,14 +36,22 @@ end Inverse nonstandard wavelet transform on 1D signals. # Arguments +- `nxw::AbstractVector{T} where T<:AbstractFloat`: Nonstandard wavelet transformed 1D + signal of length ``2^{J+1}``. +- `wt::OrthoFilter`: Type of wavelet filter. +- `L::Integer`: (Default: `maxtransformlevels(nxw) - 1`) Number of decomposition levels. +# Returns +- `x::Vector{T}`: 1D signal of length ``2^J``. """ function ns_idwt(nxw::AbstractVector{T}, wt::OrthoFilter, L::Integer = maxtransformlevels(nxw)-1) where T<:AbstractFloat Lmax = maxtransformlevels(nxw) - 1 - @assert L ≤ Lmax n = length(nxw) ÷ 2 + @assert 1 ≤ L ≤ Lmax + @assert ispow2(n) + x = zeros(T, n) x[1:1<<(Lmax-L)] = nxw[1:1<<(Lmax-L)] g, h = WT.makereverseqmfpair(wt, true) diff --git a/src/mod/wavemult/wavemult.jl b/src/mod/wavemult/wavemult.jl index e7b6795..504ad65 100644 --- a/src/mod/wavemult/wavemult.jl +++ b/src/mod/wavemult/wavemult.jl @@ -9,6 +9,19 @@ standard matrix multiplication to compute the product. This algorithm works in o The second is to transform both the matrix and vector to their nonstandard forms and multiply the nonstandard forms. If the matrix is sparse in nonstandard form, this can be an order ``O(n)`` algorithm. + +# Arguments +- `M::AbstractVector{T} where T<:AbstractFloat`: ``n \times n`` matrix. +- `NM::SparseMatrixCSC{T,S} where {T<:AbstractFloat, S<:Integer}`: Nonstandard transformed + sparse matrix of `M`. +- `x::AbstractVector{T} where T<:AbstractFloat`: Vector of length ``n`` in natural basis. +- `wt::OrthoFilter`: Type of wavelet filter. +- `L::Integer`: (Default: `maxtransformlevels(x)`) Number of decomposition levels. +- `ϵ::T where T<:AbstractFloat`: (Default: `1e-4`) Truncation criterion for nonstandard + transform of `M`. + +# Returns +- `y::Vector{T}`: Nonstandard approximation of ``Mx``. """ function nonstd_wavemult(M::AbstractMatrix{T}, x::AbstractVector{T}, From 3e749ef335c5d08e26a4f33577ba91db67590470 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Thu, 3 Feb 2022 12:21:10 -0800 Subject: [PATCH 09/17] Added standard form wavelet multiplication Updates: - Standard form wavelet multiplication. - Documentation for `WaveMult` module. TODO: - Add examples in `WaveMult` documentations. --- src/mod/WaveMult.jl | 4 +- src/mod/wavemult/mat2sparse.jl | 50 ++++++++++++++++++---- src/mod/wavemult/transforms.jl | 76 +++++++++++++++++++++++++++++++++- src/mod/wavemult/utils.jl | 2 - src/mod/wavemult/wavemult.jl | 65 ++++++++++++++++++++++++++--- 5 files changed, 178 insertions(+), 19 deletions(-) diff --git a/src/mod/WaveMult.jl b/src/mod/WaveMult.jl index 160bd22..6f21192 100644 --- a/src/mod/WaveMult.jl +++ b/src/mod/WaveMult.jl @@ -1,7 +1,9 @@ module WaveMult -export mat2sparse_nsform, +export mat2sparseform_std, + mat2sparseform_nonstd, ns_dwt, ns_idwt, + std_wavemult, nonstd_wavemult using Wavelets, diff --git a/src/mod/wavemult/mat2sparse.jl b/src/mod/wavemult/mat2sparse.jl index e4a82b7..b4f9189 100644 --- a/src/mod/wavemult/mat2sparse.jl +++ b/src/mod/wavemult/mat2sparse.jl @@ -1,5 +1,5 @@ """ - mat2sparse_nsform(M, wt, [L], [ϵ]) + mat2sparseform_nonstd(M, wt, [L], [ϵ]) Transform the matrix `M` into the wavelet basis. Then, it is stretched into its nonstandard form. Elements exceeding `ϵ * maximum column norm` are set to zero. The resulting output @@ -14,18 +14,19 @@ sparse matrix, and can be used as input to `nonstd_wavemult`. # Returns - `NM::SparseMatrixCSC{T, Integer}`: Sparse nonstandard form of matrix of size 2n x 2n. + +**See also:** [`mat2sparseform_std`](@ref), [`stretchmatrix`](@ref) """ -function mat2sparse_nsform(M::AbstractMatrix{T}, - wt::OrthoFilter, - L::Integer = maxtransformlevels(M), - ϵ::T = 1e-4) where T<:AbstractFloat - @assert isequal(size(M)...) - @assert ndims(M) == 2 +function mat2sparseform_nonstd(M::AbstractMatrix{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(M), + ϵ::T = 1e-4) where T<:AbstractFloat + @assert size(M,1) == size(M,2) n = size(M, 1) Mw = dwt(M, wt, L) # 2D wavelet transform # Find maximum column norm of Mw - maxrownorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) - nilMw = Mw .* (abs.(Mw) .> ϵ * maxrownorm) # "Remove" values close to zero + maxcolnorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) + nilMw = Mw .* (abs.(Mw) .> ϵ * maxcolnorm) # "Remove" values close to zero nz_vals = nilMw[nilMw .≠ 0] # Extract all nonzero values nz_indx = findall(!iszero, nilMw) # Extract indices of nonzero values i = getindex.(nz_indx, 1) @@ -33,4 +34,35 @@ function mat2sparse_nsform(M::AbstractMatrix{T}, ie, je = stretchmatrix(i, j, n, L) # Stretch matrix Mw NM = sparse(ie, je, nz_vals, 2*n, 2*n) # Convert to sparse matrix return NM +end + +""" + mat2sparseform_std(M, wt, [L], [ϵ]) + +Transform the matrix `M` into the standard form. Then, elements exceeding `ϵ * maximum +column norm` are set to zero. The resulting output sparse matrix, and can be used as input +to `std_wavemult`. + +# Arguments +- `M::AbstractMatrix{T} where T<:AbstractFloat`: Matrix to be put in Sparse Standard form. +- `wt::OrthoFilter`: Wavelet filter. +- `L::Integer`: (Default: `maxtransformlevels(M)`) Number of decomposition levels. +- `ϵ::T where T<:AbstractFloat`: (Default: `1e-4`) Truncation Criterion. + +# Returns +- `SM::SparseMatrixCSC{T, Integer}`: Sparse standard form of matrix of size ``n \times n``. + +**See also:** [`mat2sparseform_nonstd`](@ref), [`sft`](@ref) +""" +function mat2sparseform_std(M::AbstractMatrix{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(M), + ϵ::T = 1e-4) where T<:AbstractFloat + @assert size(M,1) == size(M,2) + Mw = sft(M, wt, L) # Transform to standard form + # Find maximum column norm of Mw + maxcolnorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) + nilMw = Mw .* (abs.(Mw) .> ϵ * maxcolnorm) # Remove values close to zero + SM = sparse(nilMw) # Convert to sparse matrix + return SM end \ No newline at end of file diff --git a/src/mod/wavemult/transforms.jl b/src/mod/wavemult/transforms.jl index 8971f02..dbd1b04 100644 --- a/src/mod/wavemult/transforms.jl +++ b/src/mod/wavemult/transforms.jl @@ -10,6 +10,9 @@ Nonstandard wavelet transform on 1D signals. # Returns - `nxw::Vector{T}`: Nonstandard wavelet transform of `x` of length ``2^{J+1}``. + +**See also:** [`nonstd_wavemult`](@ref), [`mat2sparseform_nonstd`](@ref), [`ns_idwt`](@ref), +[`ndyad`](@ref) """ function ns_dwt(x::AbstractVector{T}, wt::OrthoFilter, @@ -36,13 +39,16 @@ end Inverse nonstandard wavelet transform on 1D signals. # Arguments -- `nxw::AbstractVector{T} where T<:AbstractFloat`: Nonstandard wavelet transformed 1D - signal of length ``2^{J+1}``. +- `nxw::AbstractVector{T} where T<:AbstractFloat`: Nonstandard wavelet transformed 1D signal + of length ``2^{J+1}``. - `wt::OrthoFilter`: Type of wavelet filter. - `L::Integer`: (Default: `maxtransformlevels(nxw) - 1`) Number of decomposition levels. # Returns - `x::Vector{T}`: 1D signal of length ``2^J``. + +**See also:** [`nonstd_wavemult`](@ref), [`mat2sparseform_nonstd`](@ref), [`ns_dwt`](@ref), +[`ndyad`](@ref) """ function ns_idwt(nxw::AbstractVector{T}, wt::OrthoFilter, @@ -62,4 +68,70 @@ function ns_idwt(nxw::AbstractVector{T}, idwt_step!(v, w₁, w₂, h, g) end return x +end + +""" + sft(M, wt, [L]) + +Transforms a matrix `M` to be then represented in the sparse standard form. This is achieved +by first computing ``L`` levels of wavelet transform on each column of `M`, and then +computing ``L`` levels of wavelet transform on each row of `M`. + +# Arguments +- `M::AbstractMatrix{T} where T<:AbstractFloat`: Matrix to be put in standard form. +- `wt::OrthoFilter`: Type of wavelet filter. +- `L::Integer`: Number of decomposition levels. + +# Returns +- `Mw::Matrix{T}`: Matrix in the standard form. + +**See also:** [`mat2sparseform_std`](@ref), [`isft`](@ref) +""" +function sft(M::AbstractMatrix{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(M)) where T<:AbstractFloat + @assert 1 ≤ L ≤ maxtransformlevels(M) + n, m = size(M) + + Mw = similar(M) + for j in 1:m # Transform each column + Mw[:,j] = dwt(M[:,j], wt, L) + end + for i in 1:n # Transform each row + Mw[i,:] = dwt(Mw[i,:], wt, L) + end + return Mw +end + +""" + isft(Mw, wt, [L]) + +Reconstructs the matrix `M` from the sparse standard form `Mw`. This is achieved by first +computing ``L`` levels of inverse wavelet transform on each row of `Mw`, and then computing +``L`` levels of inverse wavelet transform on each column of `Mw`. + +# Arguments +- `Mw::AbstractMatrix{T} where T<:AbstractFloat`: Matrix in standard form. +- `wt::OrthoFilter`: Type of wavelet filter. +- `L::Integer`: Number of decomposition levels. + +# Returns +- `M::Matrix{T}`: Reconstructed matrix. + +**See also:** [`sft`](@ref) +""" +function isft(Mw::AbstractMatrix{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(M)) where T<:AbstractFloat + @assert 1 ≤ L ≤ maxtransformlevels(Mw) + n, m = size(Mw) + + M = similar(Mw) + for i in 1:n # Transform each row + M[i,:] = idwt(Mw[i,:], wt, L) + end + for j in 1:m # Transform each column + M[:,j] = idwt(M[:,j], wt, L) + end + return M end \ No newline at end of file diff --git a/src/mod/wavemult/utils.jl b/src/mod/wavemult/utils.jl index 0cb09e6..ff20bbf 100644 --- a/src/mod/wavemult/utils.jl +++ b/src/mod/wavemult/utils.jl @@ -35,8 +35,6 @@ Stretch matrix into BCR nonstandard form. # Returns - `ie::Vector{T}`: Row indices of elements in nonstandard form of matrix. - `je::Vector{T}`: Column indices of elements in nonstandard form of matrix. - -# Examples """ function stretchmatrix(i::AbstractVector{T}, j::AbstractVector{T}, n::T, L::T) where T<:Integer diff --git a/src/mod/wavemult/wavemult.jl b/src/mod/wavemult/wavemult.jl index 504ad65..6321f81 100644 --- a/src/mod/wavemult/wavemult.jl +++ b/src/mod/wavemult/wavemult.jl @@ -2,14 +2,19 @@ nonstd_wavemult(M, x, wt, [L], [ϵ]) nonstd_wavemult(NM, x, wt, [L]) -If `M` is an ``n \times n`` matrix, there are two ways to compute ``y = Mx``. The first is to use the -standard matrix multiplication to compute the product. This algorithm works in order of -``O(n^2)``, where ``n`` is the length of `x``. +If `M` is an ``n \times n`` matrix, there are two ways to compute ``y = Mx``. The first is +to use the standard matrix multiplication to compute the product. This algorithm works in +order of ``O(n^2)``, where ``n`` is the length of `x``. The second is to transform both the matrix and vector to their nonstandard forms and multiply the nonstandard forms. If the matrix is sparse in nonstandard form, this can be an order ``O(n)`` algorithm. +!!! tip + One may choose to use the original matrix `M` as input by doing `nonstd_wavemult(M, x, + wt, [L], [ϵ])`. However, if the nonstandard form sparse matrix `NM` is already computed + prior, one can skip the redundant step by doing `nonstd_wavemult(NM, x, wt, [L])`. + # Arguments - `M::AbstractVector{T} where T<:AbstractFloat`: ``n \times n`` matrix. - `NM::SparseMatrixCSC{T,S} where {T<:AbstractFloat, S<:Integer}`: Nonstandard transformed @@ -21,14 +26,14 @@ order ``O(n)`` algorithm. transform of `M`. # Returns -- `y::Vector{T}`: Nonstandard approximation of ``Mx``. +- `y::Vector{T}`: Standard approximation of ``Mx``. """ function nonstd_wavemult(M::AbstractMatrix{T}, x::AbstractVector{T}, wt::OrthoFilter, L::Integer = maxtransformlevels(x), ϵ::T = 1e-4) where T<:AbstractFloat - NM = mat2sparse_nsform(M, wt, L, ϵ) + NM = mat2sparseform_nonstd(M, wt, L, ϵ) return nonstd_wavemult(NM, x, wt, L) end @@ -41,4 +46,54 @@ function nonstd_wavemult(NM::SparseMatrixCSC{T,S}, ny = NM * nx y = ns_idwt(ny, wt, L) return y +end + +""" + std_wavemult(M, x, wt, [L], [ϵ]) + std_wavemult(SM, x, wt, [L]) + +If `M` is an ``n \times n`` matrix, there are two ways to compute ``y = Mx``. The first is +to use the standard matrix multiplication to compute the product. This algorithm works in +order of ``O(n^2)``, where ``n`` is the length of `x``. + +The second is to transform both the matrix and vector to their standard forms and multiply +the standard forms. If the matrix is sparse in standard form, this can be an order ``O(n)`` +algorithm. + +!!! tip + One may choose to use the original matrix `M` as input by doing `std_wavemult(M, x, + wt, [L], [ϵ])`. However, if the standard form sparse matrix `SM` is already computed + prior, one can skip the redundant step by doing `std_wavemult(SM, x, wt, [L])`. + +# Arguments +- `M::AbstractVector{T} where T<:AbstractFloat`: ``n \times n`` matrix. +- `NM::SparseMatrixCSC{T,S} where {T<:AbstractFloat, S<:Integer}`: Standard transformed + sparse matrix of `M`. +- `x::AbstractVector{T} where T<:AbstractFloat`: Vector of length ``n`` in natural basis. +- `wt::OrthoFilter`: Type of wavelet filter. +- `L::Integer`: (Default: `maxtransformlevels(x)`) Number of decomposition levels. +- `ϵ::T where T<:AbstractFloat`: (Default: `1e-4`) Truncation criterion for standard + transform of `M`. + +# Returns +- `y::Vector{T}`: Standard form approximation of ``Mx``. +""" +function std_wavemult(M::AbstractMatrix{T}, + x::AbstractVector{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(x), + ϵ::T = 1e-4) where T<:AbstractFloat + SM = mat2sparseform_std(M, wt, L, ϵ) + return std_wavemult(SM, x, wt, L) +end + +function std_wavemult(SM::SparseMatrixCSC{T,S}, + x::AbstractVector{T}, + wt::OrthoFilter, + L::Integer = maxtransformlevels(x)) where + {T<:AbstractFloat, S<:Integer} + nx = dwt(x, wt, L) + ny = SM * nx + y = idwt(ny, wt, L) + return y end \ No newline at end of file From b01ad9ca481e944c72e8e0abdd0106e5094b89d4 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Thu, 3 Feb 2022 18:14:48 -0800 Subject: [PATCH 10/17] Add API documentation page into docs/make.jl --- docs/make.jl | 1 + docs/src/api/wavemult.md | 30 ++++++++++++ src/mod/wavemult/mat2sparse.jl | 32 ++++++++++++ src/mod/wavemult/transforms.jl | 90 ++++++++++++++++++++++++++++++++++ src/mod/wavemult/utils.jl | 81 ++++++++++++++++++++++++++++-- src/mod/wavemult/wavemult.jl | 65 +++++++++++++++++++++--- 6 files changed, 289 insertions(+), 10 deletions(-) create mode 100644 docs/src/api/wavemult.md diff --git a/docs/make.jl b/docs/make.jl index b7e4abd..bc72bd9 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -20,6 +20,7 @@ makedocs( "ACWT" => "api/acwt.md", "SWT" => "api/swt.md", "SIWPD" => "api/siwpd.md", + "WaveMult" => "api/wavemult.md", "Best Basis" => "api/bestbasis.md", "Denoising" => "api/denoising.md", "LDB" => "api/ldb.md", diff --git a/docs/src/api/wavemult.md b/docs/src/api/wavemult.md new file mode 100644 index 0000000..3152cf9 --- /dev/null +++ b/docs/src/api/wavemult.md @@ -0,0 +1,30 @@ +```@index +Modules = [WaveMult] +``` + +## Wavelet Multiplication +```@docs +WaveMult.nonstd_wavemult +WaveMult.std_wavemult +``` + +## Matrix to Sparse Format +```@docs +WaveMult.mat2sparseform_nonstd +WaveMult.mat2sparseform_std +``` + +## Fast Transform Algorithms +```@docs +WaveMult.ns_dwt +WaveMult.ns_idwt +WaveMult.sft +WaveMult.isft +``` + +## Miscellaneous +```@docs +WaveMult.dyadlength +WaveMult.ndyad +WaveMult.stretchmatrix +``` \ No newline at end of file diff --git a/src/mod/wavemult/mat2sparse.jl b/src/mod/wavemult/mat2sparse.jl index b4f9189..419a996 100644 --- a/src/mod/wavemult/mat2sparse.jl +++ b/src/mod/wavemult/mat2sparse.jl @@ -15,6 +15,24 @@ sparse matrix, and can be used as input to `nonstd_wavemult`. # Returns - `NM::SparseMatrixCSC{T, Integer}`: Sparse nonstandard form of matrix of size 2n x 2n. +# Examples +```jldoctest +julia> using Wavelets, WaveletsExt; import Random: seed! + +julia> seed!(1234); M = randn(4,4); wt = wavelet(WT.haar); + +julia> mat2sparseform_nonstd(M, wt) +8×8 SparseArrays.SparseMatrixCSC{Float64, Int64} with 16 stored entries: + 1.88685 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ + ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ + ⋅ ⋅ ⋅ 0.363656 ⋅ ⋅ ⋅ ⋅ + ⋅ ⋅ 2.49634 -1.08139 ⋅ ⋅ ⋅ ⋅ + ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ -1.0187 0.539411 + ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 1.68141 0.0351839 + ⋅ ⋅ ⋅ ⋅ -1.39713 -1.21352 0.552745 0.427717 + ⋅ ⋅ ⋅ ⋅ -1.05882 0.16666 -0.124156 -0.218902 +``` + **See also:** [`mat2sparseform_std`](@ref), [`stretchmatrix`](@ref) """ function mat2sparseform_nonstd(M::AbstractMatrix{T}, @@ -52,6 +70,20 @@ to `std_wavemult`. # Returns - `SM::SparseMatrixCSC{T, Integer}`: Sparse standard form of matrix of size ``n \times n``. +# Examples +```jldoctest +julia> using Wavelets, WaveletsExt; import Random: seed! + +julia> seed!(1234); M = randn(4,4); wt = wavelet(WT.haar); + +julia> mat2sparseform_std(M, wt) +4×4 SparseArrays.SparseMatrixCSC{Float64, Int64} with 16 stored entries: + 1.88685 0.363656 0.468602 0.4063 + 2.49634 -1.08139 1.90927 -0.356542 + -1.84601 0.129829 0.552745 0.427717 + -0.630852 0.866545 -0.124156 -0.218902 +``` + **See also:** [`mat2sparseform_nonstd`](@ref), [`sft`](@ref) """ function mat2sparseform_std(M::AbstractMatrix{T}, diff --git a/src/mod/wavemult/transforms.jl b/src/mod/wavemult/transforms.jl index dbd1b04..f8f3ed6 100644 --- a/src/mod/wavemult/transforms.jl +++ b/src/mod/wavemult/transforms.jl @@ -11,6 +11,41 @@ Nonstandard wavelet transform on 1D signals. # Returns - `nxw::Vector{T}`: Nonstandard wavelet transform of `x` of length ``2^{J+1}``. +# Examples +```jldoctest +julia> using Wavelets, WaveletsExt; import Random: seed! + +julia> seed!(1234); x = randn(4) +4-element Vector{Float64}: + -0.3597289068234817 + 1.0872084924285859 + -0.4195896169388487 + 0.7189099374659392 + +julia> wt = wavelet(WT.haar); + +julia> nxw = ns_dwt(x, wt) # Nonstandard transform +8-element Vector{Float64}: + 0.0 + 0.0 + 0.5133999530660974 + -0.2140796325390069 + 0.5144057481561487 + 0.21165142839163664 + 1.0231392469635638 + 0.8050407552974883 + +julia> x̂ = ns_idwt(nxw, wt) # Nonstandard inverse transform +4-element Vector{Float64}: + 0.004010885979070622 + 1.4509482852311382 + -0.2699294566753035 + 0.8685700977294846 + +julia> x ≈ x̂ # Unlike standard dwt, x ≠ x̂ +false +``` + **See also:** [`nonstd_wavemult`](@ref), [`mat2sparseform_nonstd`](@ref), [`ns_idwt`](@ref), [`ndyad`](@ref) """ @@ -47,6 +82,41 @@ Inverse nonstandard wavelet transform on 1D signals. # Returns - `x::Vector{T}`: 1D signal of length ``2^J``. +# Examples +```jldoctest +julia> using Wavelets, WaveletsExt; import Random: seed! + +julia> seed!(1234); x = randn(4) +4-element Vector{Float64}: + -0.3597289068234817 + 1.0872084924285859 + -0.4195896169388487 + 0.7189099374659392 + +julia> wt = wavelet(WT.haar); + +julia> nxw = ns_dwt(x, wt) # Nonstandard transform +8-element Vector{Float64}: + 0.0 + 0.0 + 0.5133999530660974 + -0.2140796325390069 + 0.5144057481561487 + 0.21165142839163664 + 1.0231392469635638 + 0.8050407552974883 + +julia> x̂ = ns_idwt(nxw, wt) # Nonstandard inverse transform +4-element Vector{Float64}: + 0.004010885979070622 + 1.4509482852311382 + -0.2699294566753035 + 0.8685700977294846 + +julia> x ≈ x̂ # Unlike standard dwt, x ≠ x̂ +false +``` + **See also:** [`nonstd_wavemult`](@ref), [`mat2sparseform_nonstd`](@ref), [`ns_dwt`](@ref), [`ndyad`](@ref) """ @@ -85,6 +155,16 @@ computing ``L`` levels of wavelet transform on each row of `M`. # Returns - `Mw::Matrix{T}`: Matrix in the standard form. +# Examples +```julia +import WaveletsExt.WaveMult: sft +using Wavelets + +M = randn(4,4); wt = wavelet(WT.haar) +Mw = sft(M, wt) +M̂ = isft(Mw, wt) +``` + **See also:** [`mat2sparseform_std`](@ref), [`isft`](@ref) """ function sft(M::AbstractMatrix{T}, @@ -118,6 +198,16 @@ computing ``L`` levels of inverse wavelet transform on each row of `Mw`, and the # Returns - `M::Matrix{T}`: Reconstructed matrix. +# Examples +```julia +import WaveletsExt.WaveMult: sft +using Wavelets + +M = randn(4,4); wt = wavelet(WT.haar) +Mw = sft(M, wt) +M̂ = isft(Mw, wt) +``` + **See also:** [`sft`](@ref) """ function isft(Mw::AbstractMatrix{T}, diff --git a/src/mod/wavemult/utils.jl b/src/mod/wavemult/utils.jl index ff20bbf..5086cd6 100644 --- a/src/mod/wavemult/utils.jl +++ b/src/mod/wavemult/utils.jl @@ -11,6 +11,35 @@ Find dyadic length of array. # Returns - `J::Integer`: Least power of two greater than `n`. + +!!! note + The function `dyadlength` is very similar to the function `maxtransformlevels` from + Wavelets.jl. The only difference here is the way it handles `n` when `n` is not a power + of 2. The example below provides a demonstration of the differences in the 2 functions. + +# Examples +```jldoctest +julia> import WaveletsExt.WaveMult: dyadlength + +julia> import Wavelets: maxtransformlevels + +julia> x = randn(16); dyadlength(x) +4 + +julia> dyadlength(16) # Same as previous +4 + +julia> maxtransformlevels(16) # Equivalent to dyadlength when n is power of 2 +4 + +julia> dyadlength(15) # Produces warning when n is not power of 2 +┌ Warning: Dyadlength n != 2^J +└ @ WaveletsExt.WaveMult +4 + +julia> maxtransformlevels(15) # Not equivalent to dyadlength when n is not power of 2 +0 +``` """ function dyadlength(n::T) where T<:Integer J = ceil(T, log2(n)) @@ -27,14 +56,44 @@ dyadlength(x::AbstractArray) = dyadlength(size(x,1)) Stretch matrix into BCR nonstandard form. # Arguments -- `i::AbstractVector{T} where T<:Integer`: row indices of nonzero elements of matrix. -- `j::AbstractVector{T} where T<:Integer`: column indices of nonzero elements of matrix. +- `i::AbstractVector{T} where T<:Integer`: Row indices of nonzero elements of matrix. +- `j::AbstractVector{T} where T<:Integer`: Column indices of nonzero elements of matrix. - `n::T where T<:Integer`: Size of square matrix. - `L::T where T<:Integer`: Number of resolution levels. # Returns - `ie::Vector{T}`: Row indices of elements in nonstandard form of matrix. - `je::Vector{T}`: Column indices of elements in nonstandard form of matrix. + +# Examples +```jldoctest +julia> M = [1 0 0 0; + 0 2 0 0; + 0 0 3 0; + 0 0 0 4]; + +julia> idx = findall(!iszero, M) +2-element Vector{CartesianIndex{2}}: + CartesianIndex(1, 1) + CartesianIndex(2, 2) + +julia> i = getindex.(idx, 1) +4-element Vector{Int64}: + 1 + 2 + 3 + 4 + +julia> j = getindex.(idx, 2) +4-element Vector{Int64}: + 1 + 2 + 3 + 4 + +julia> stretchmatrix(i, j, 4, 2) +([1, 4, 7, 8], [1, 4, 7, 8]) +``` """ function stretchmatrix(i::AbstractVector{T}, j::AbstractVector{T}, n::T, L::T) where T<:Integer @@ -63,12 +122,26 @@ Index dyad of nonstandard wavelet transform. - `L::T where T<:Integer`: Current level of node. - `Lmax::T where T<:Integer`: Max level of a signal being analyzed. - `gender::Bool`: "Gender" of node. - - `true` = Female: Node is detail coefficients of the decomposition of its parent) - - `false` = Male: Node is approximate coefficients of the decomposition of its parent) + - `true` = Female: Node is detail coefficients of the decomposition of its parent. + - `false` = Male: Node is approximate coefficients of the decomposition of its parent. + +!!! note + Current level of node `L` cannot be 0 or larger than its max possible level `Lmax`. # Returns - `::UnitRange{T}`: Range of all coefficients at the `L`-th level attached to wavelets of indicated gender. + +# Examples +```jldoctest +julia> import WaveletsExt.WaveMult: ndyad + +julia> ndyad(1, 4, false) +17:24 + +julia> ndyad(1, 4, true) +25:32 +``` """ function ndyad(L::T, Lmax::T, gender::Bool) where T<:Integer @assert L ≤ Lmax # Current level cannot be larger than max level diff --git a/src/mod/wavemult/wavemult.jl b/src/mod/wavemult/wavemult.jl index 6321f81..8be7e1c 100644 --- a/src/mod/wavemult/wavemult.jl +++ b/src/mod/wavemult/wavemult.jl @@ -2,9 +2,9 @@ nonstd_wavemult(M, x, wt, [L], [ϵ]) nonstd_wavemult(NM, x, wt, [L]) -If `M` is an ``n \times n`` matrix, there are two ways to compute ``y = Mx``. The first is +If `M` is an ``n`` by ``n`` matrix, there are two ways to compute ``y = Mx``. The first is to use the standard matrix multiplication to compute the product. This algorithm works in -order of ``O(n^2)``, where ``n`` is the length of `x``. +order of ``O(n^2)``, where ``n`` is the length of `x`. The second is to transform both the matrix and vector to their nonstandard forms and multiply the nonstandard forms. If the matrix is sparse in nonstandard form, this can be an @@ -16,7 +16,7 @@ order ``O(n)`` algorithm. prior, one can skip the redundant step by doing `nonstd_wavemult(NM, x, wt, [L])`. # Arguments -- `M::AbstractVector{T} where T<:AbstractFloat`: ``n \times n`` matrix. +- `M::AbstractVector{T} where T<:AbstractFloat`: ``n`` by ``n`` matrix. - `NM::SparseMatrixCSC{T,S} where {T<:AbstractFloat, S<:Integer}`: Nonstandard transformed sparse matrix of `M`. - `x::AbstractVector{T} where T<:AbstractFloat`: Vector of length ``n`` in natural basis. @@ -27,6 +27,33 @@ order ``O(n)`` algorithm. # Returns - `y::Vector{T}`: Standard approximation of ``Mx``. + +# Examples +```jldoctest +julia> using Wavelets, WaveletsExt + +julia> M = randn(4,4); x = randn(4); wt = wavelet(WT.haar); + +julia> NM = mat2sparseform_nonstd(M, wt); y₀ = nonstd_wavemult(NM, x, wt) +4-element Vector{Float64}: + -1.2590015844047044 + -1.3234024176418535 + 2.1158027198405627 + 1.5364835417087566 + +julia> y₁ = nonstd_wavemult(M, x, wt) +4-element Vector{Float64}: + -1.2590015844047044 + -1.3234024176418535 + 2.1158027198405627 + 1.5364835417087566 + +julia> y₀ == y₁ # Both methods are equivalent +true +``` + +**See also:* [`std_wavemult`](@ref), [`mat2sparseform_nonstd`](@ref), [`ns_dwt`](@ref), +[`ns_idwt`](@ref) """ function nonstd_wavemult(M::AbstractMatrix{T}, x::AbstractVector{T}, @@ -52,9 +79,9 @@ end std_wavemult(M, x, wt, [L], [ϵ]) std_wavemult(SM, x, wt, [L]) -If `M` is an ``n \times n`` matrix, there are two ways to compute ``y = Mx``. The first is +If `M` is an ``n`` by ``n`` matrix, there are two ways to compute ``y = Mx``. The first is to use the standard matrix multiplication to compute the product. This algorithm works in -order of ``O(n^2)``, where ``n`` is the length of `x``. +order of ``O(n^2)``, where ``n`` is the length of `x`. The second is to transform both the matrix and vector to their standard forms and multiply the standard forms. If the matrix is sparse in standard form, this can be an order ``O(n)`` @@ -66,7 +93,7 @@ algorithm. prior, one can skip the redundant step by doing `std_wavemult(SM, x, wt, [L])`. # Arguments -- `M::AbstractVector{T} where T<:AbstractFloat`: ``n \times n`` matrix. +- `M::AbstractVector{T} where T<:AbstractFloat`: ``n`` by ``n`` matrix. - `NM::SparseMatrixCSC{T,S} where {T<:AbstractFloat, S<:Integer}`: Standard transformed sparse matrix of `M`. - `x::AbstractVector{T} where T<:AbstractFloat`: Vector of length ``n`` in natural basis. @@ -77,6 +104,32 @@ algorithm. # Returns - `y::Vector{T}`: Standard form approximation of ``Mx``. + +# Examples +```jldoctest +julia> using Wavelets, WaveletsExt + +julia> M = randn(4,4); x = randn(4); wt = wavelet(WT.haar); + +julia> SM = mat2sparseform_std(M, wt); y₀ = std_wavemult(SM, x, wt) +4-element Vector{Float64}: + 2.2303830532617344 + -0.12704611958926648 + 2.656411941014368 + -4.811388406857621 + +julia> y₁ = std_wavemult(M, x, wt) +4-element Vector{Float64}: + 2.2303830532617344 + -0.12704611958926648 + 2.656411941014368 + -4.811388406857621 + +julia> y₀ == y₁ +true +``` + +**See also:** [`nonstd_wavemult`](@ref), [`mat2sparseform_std`](@ref) """ function std_wavemult(M::AbstractMatrix{T}, x::AbstractVector{T}, From 696e9d80223bcaf2667357fc3c6388e0cf045650 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Thu, 3 Feb 2022 20:10:08 -0800 Subject: [PATCH 11/17] Fix broadcasting of logical operators in v1.6 --- src/mod/wavemult/utils.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/wavemult/utils.jl b/src/mod/wavemult/utils.jl index 5086cd6..bae9101 100644 --- a/src/mod/wavemult/utils.jl +++ b/src/mod/wavemult/utils.jl @@ -103,7 +103,7 @@ function stretchmatrix(i::AbstractVector{T}, j::AbstractVector{T}, n::T, L::T) w je = copy(j) for l in 0:(L-1) k = Lmax - l - 1 - cond = (ie .> 1< 1< 1< 1< Date: Fri, 4 Feb 2022 18:19:23 -0800 Subject: [PATCH 12/17] Bug fixes in WaveMult module - Added parentheses to condition evaluation in `stretchmatrix` function. This improves the condition evaluation process that was previously buggy and produces the wrong logical expressions. - Added a line in `mat2sparseform_nonstd` function. Previous implementation did not produce the right answer. --- src/mod/wavemult/transforms.jl | 3 ++- src/mod/wavemult/utils.jl | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mod/wavemult/transforms.jl b/src/mod/wavemult/transforms.jl index f8f3ed6..13e56f9 100644 --- a/src/mod/wavemult/transforms.jl +++ b/src/mod/wavemult/transforms.jl @@ -65,6 +65,7 @@ function ns_dwt(x::AbstractVector{T}, v = l == 1 ? x : @view nxw[ndyad(l-1, Lmax, false)] dwt_step!(w₁, w₂, v, h, g) end + nxw[1:1<<(Lmax-L)] = nxw[ndyad(L, Lmax, false)] return nxw end @@ -132,7 +133,7 @@ function ns_idwt(nxw::AbstractVector{T}, x[1:1<<(Lmax-L)] = nxw[1:1<<(Lmax-L)] g, h = WT.makereverseqmfpair(wt, true) for l in L:-1:1 - w₁ = nxw[ndyad(l, Lmax, false)] + x[1:1<<(Lmax-l)] + w₁ = nxw[ndyad(l, Lmax, false)] + x[1:1<<(Lmax-l)] w₂ = @view nxw[ndyad(l, Lmax, true)] v = @view x[1:1<<(Lmax-l+1)] idwt_step!(v, w₁, w₂, h, g) diff --git a/src/mod/wavemult/utils.jl b/src/mod/wavemult/utils.jl index bae9101..cb3907c 100644 --- a/src/mod/wavemult/utils.jl +++ b/src/mod/wavemult/utils.jl @@ -103,7 +103,7 @@ function stretchmatrix(i::AbstractVector{T}, j::AbstractVector{T}, n::T, L::T) w je = copy(j) for l in 0:(L-1) k = Lmax - l - 1 - cond = (ie .> 1< 1< 1< 1< Date: Fri, 4 Feb 2022 18:23:46 -0800 Subject: [PATCH 13/17] Added documentation to demonstrate the usage of WaveMult module. --- docs/Project.toml | 4 ++ docs/make.jl | 3 +- docs/src/manual/wavemult.md | 84 +++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 docs/src/manual/wavemult.md diff --git a/docs/Project.toml b/docs/Project.toml index 18276ce..929ea6a 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -1,12 +1,16 @@ [deps] +BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" TestImages = "5e47fb64-e119-507b-a336-dd2b206d9990" Wavelets = "29a6e085-ba6d-5f35-a997-948ac2efa89a" WaveletsExt = "8f464e1e-25db-479f-b0a5-b7680379e03f" [compat] +BenchmarkTools = "1.2" Documenter = "0.27.6" Images = "0.24, 0.25" Plots = "1.21.3" diff --git a/docs/make.jl b/docs/make.jl index bc72bd9..ad850fd 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -13,7 +13,8 @@ makedocs( "Transforms" => "manual/transforms.md", "Best Basis" => "manual/bestbasis.md", "Denoising" => "manual/denoising.md", - "Local Discriminant Basis" => "manual/localdiscriminantbasis.md" + "Local Discriminant Basis" => "manual/localdiscriminantbasis.md", + "Wavelets and Fast Numerical Algorithms" => "manual/wavemult.md" ], "API" => Any[ "DWT" => "api/dwt.md", diff --git a/docs/src/manual/wavemult.md b/docs/src/manual/wavemult.md new file mode 100644 index 0000000..0812b64 --- /dev/null +++ b/docs/src/manual/wavemult.md @@ -0,0 +1,84 @@ +# [Fast Numerical Algorithms using Wavelet Transforms](@id wavemult_manual) +This demonstration is based on the paper *[Fast wavelet transforms and numerical algorithms](https://onlinelibrary.wiley.com/doi/abs/10.1002/cpa.3160440202)* by G. Beylkin, R. Coifman, and V. Rokhlin and the lecture notes *[Wavelets and Fast Numerical ALgorithms](https://arxiv.org/abs/comp-gas/9304004)* by G. Beylkin. + +Assume we have a matrix ``M \in \mathbb{R}^{n \times n}``, and a vector ``x \in \mathbb{R}^n``, there are two ways to compute ``y = Mx``: + +1) Use the regular matrix multiplication, which takes ``O(n^2)`` time. +2) Transform both ``M`` and ``x`` to their standard/nonstandard forms ``\tilde M`` and ``\tilde x`` respectively. Compute the multiplication of ``\tilde y = \tilde M \tilde x``, then find the inverse of ``\tilde y``.If the matrix ``\tilde M`` is sparse, this can take ``O(n)`` time. + +## Examples and Comparisons +In our following examples, we compare the methods described in the previous section. We focus on two important metrics: time taken and accuracy of the algorithm. + +We start off by setting up the matrix `M`, the vector `x`, and the wavelet `wt`. As this algorithm is more efficient when ``n`` is large, we set ``n=2048``. +```@example wavemult +using Wavelets, WaveletsExt, Random, LinearAlgebra, BenchmarkTools + +# Construct matrix M, vector x, and wavelet wt +function data_setup(n::Integer, random_state = 1234) + M = zeros(n,n) + for i in axes(M,1) + for j in axes(M,2) + M[i,j] = i==j ? 0 : 1/abs(i-j) + end + end + + Random.seed!(random_state) + x = randn(n) + + return M, x +end + +M, x = data_setup(2048) +wt = wavelet(WT.haar) +nothing # hide +``` + +The following code block computes the regular matrix multiplication. +```@example wavemult +y₀ = M * x +nothing # hide +``` + +The following code block computes the nonstandard wavelet multiplication. Note that we will only be running 4 levels of wavelet transform, as running too many levels result in large computation time, without much improvement in accuracy. +```@example wavemult +L = 4 +NM = mat2sparseform_nonstd(M, wt, L) +y₁ = nonstd_wavemult(NM, x, wt, L) +nothing # hide +``` + +The following code block computes the standard wavelet multiplication. Once again, we will only be running 4 levels of wavelet transform here. +```@example wavemult +SM = mat2sparseform_std(M, wt, L) +y₂ = std_wavemult(SM, x, wt, L) +nothing # hide +``` + +!!! tip "Performance Tip" + Running more levels of transform (i.e. setting large values of `L`) does not necessarily result in more accurate approximations. Setting `L` to be a reasonably large value (e.g. 3 or 4) not only reduces computational time, but could also produce better results. + +We assume that the regular matrix multiplication produces the true results (bar some negligible machine errors), and we compare our results from the nonstandard and standard wavelet multiplications based on their relative errors (``\frac{||\hat y - y_0||_2}{||y_0||_2}``). +```@repl wavemult +relativenorm(y₁, y₀) # Comparing nonstandard wavelet multiplication with true value +relativenorm(y₂, y₀) # Comparing standard wavelet multiplication with true value +``` + +Lastly, we compare the computation time for each algorithm. +```@repl wavemult +@benchmark $M * $x # Benchmark regular matrix multiplication +@benchmark nonstd_wavemult($NM, $x, $wt, L) # Benchmark nonstandard wavelet multiplication +@benchmark std_wavemult($SM, $x, $wt, L) # Benchmark standard wavelet multiplication +``` + +As we can see above, the nonstandard and standard wavelet multiplication methods are significantly faster than the regular method and provides reasonable approximations to the true values. + +!!! tip "Performance Tips" + This method should only be used when the dimensions of ``M`` and ``x`` are large. Additionally, this would be more useful when one aims to compute ``Mx_0, Mx_1, \ldots, Mx_k`` where ``M`` remains constant throughout the ``k`` computations. In this case, it is more efficient to use + ```julia + NM = mat2sparseform_nonstd(M, wt) + y = nonstd_wavemult(NM, x, wt) + ``` + instead of + ```julia + y = nonstd_wavemult(M, x, wt) + ``` \ No newline at end of file From b211e76513d60c6fa8898af21b394fe518c48ade Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 4 Feb 2022 19:06:26 -0800 Subject: [PATCH 14/17] Add additional assert for stretchmatrix. --- src/mod/wavemult/utils.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/wavemult/utils.jl b/src/mod/wavemult/utils.jl index cb3907c..5ebb450 100644 --- a/src/mod/wavemult/utils.jl +++ b/src/mod/wavemult/utils.jl @@ -98,7 +98,7 @@ julia> stretchmatrix(i, j, 4, 2) function stretchmatrix(i::AbstractVector{T}, j::AbstractVector{T}, n::T, L::T) where T<:Integer Lmax = maxtransformlevels(n) - @assert L ≤ Lmax + @assert 1 ≤ L ≤ Lmax ie = copy(i) je = copy(j) for l in 0:(L-1) From eab2afd454fd479c9eeb1b5ba99f25a9e479de43 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 4 Feb 2022 19:44:59 -0800 Subject: [PATCH 15/17] Add unit tests and fix bugs that arose from it. --- src/mod/wavemult/transforms.jl | 2 +- test/Project.toml | 1 + test/runtests.jl | 8 +-- test/wavemult.jl | 89 ++++++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 test/wavemult.jl diff --git a/src/mod/wavemult/transforms.jl b/src/mod/wavemult/transforms.jl index 13e56f9..e7e16d5 100644 --- a/src/mod/wavemult/transforms.jl +++ b/src/mod/wavemult/transforms.jl @@ -213,7 +213,7 @@ M̂ = isft(Mw, wt) """ function isft(Mw::AbstractMatrix{T}, wt::OrthoFilter, - L::Integer = maxtransformlevels(M)) where T<:AbstractFloat + L::Integer = maxtransformlevels(Mw)) where T<:AbstractFloat @assert 1 ≤ L ≤ maxtransformlevels(Mw) n, m = size(Mw) diff --git a/test/Project.toml b/test/Project.toml index c65d7d1..6a416b7 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -3,6 +3,7 @@ Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" ImageQualityIndexes = "2996bd0c-7a13-11e9-2da2-2f5ce47296a9" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Wavelets = "29a6e085-ba6d-5f35-a997-948ac2efa89a" diff --git a/test/runtests.jl b/test/runtests.jl index 2ab16d6..8395460 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -9,11 +9,13 @@ using Plots, Statistics, Wavelets, - WaveletsExt + WaveletsExt, + SparseArrays @testset "Utils" begin include("utils.jl") end -@testset "Visualizations" begin include("visualizations.jl") end @testset "Transforms" begin include("transforms.jl") end +@testset "Wavelet Multiplication" begin include("wavemult.jl") end @testset "Best Basis" begin include("bestbasis.jl") end @testset "Denoising" begin include("denoising.jl") end -@testset "LDB" begin include("ldb.jl") end \ No newline at end of file +@testset "LDB" begin include("ldb.jl") end +@testset "Visualizations" begin include("visualizations.jl") end \ No newline at end of file diff --git a/test/wavemult.jl b/test/wavemult.jl new file mode 100644 index 0000000..9d636c5 --- /dev/null +++ b/test/wavemult.jl @@ -0,0 +1,89 @@ +import WaveletsExt.WaveMult: dyadlength, stretchmatrix, ndyad, sft, isft + +@testset "Utilities" begin + # dyadlength + @test dyadlength(zeros(16)) == dyadlength(16) == 4 + @test_warn "Dyadlength n != 2^J" dyadlength(15) + + # stretchmatrix + i = [1,2,3,4]; j = copy(i) + @test stretchmatrix(i,j,4,2) == ([1, 4, 7, 8], [1, 4, 7, 8]) + @test_throws AssertionError stretchmatrix(i,j,4,3) + @test_throws AssertionError stretchmatrix(i,j,4,0) + @test_throws AssertionError stretchmatrix(i,j,4,-1) + + # ndyad + @test ndyad(1,4,false) == 17:24 + @test ndyad(1,4,true) == 25:32 + @test_throws AssertionError ndyad(5,4,true) + @test_throws AssertionError ndyad(5,4,false) + @test_throws AssertionError ndyad(0,4,false) + @test_throws AssertionError ndyad(0,4,false) +end + +@testset "Wavelet Transforms" begin + # 1D Nonstandard transform + x = [1,2,-3,4.0] + wt = wavelet(WT.haar) + y = [2, 0, 2, -1, 2.1213, 0.7071, 0.7071, 4.9497] + z = [3.5, 4.5, -1.5, 5.5] + @test round.(ns_dwt(x, wt), digits = 4) == y + @test round.(ns_idwt(y, wt), digits = 4) == z + @test_throws AssertionError ns_dwt(x, wt, 3) + @test_throws AssertionError ns_dwt(x, wt, 0) + @test_throws AssertionError ns_idwt(y, wt, 3) + @test_throws AssertionError ns_idwt(y, wt, 0) + + # Standard form transform + x = [1 2 -3 4; 2 3 -4 1; 3 4 -1 2; 3 1 -2 3.0] + y = [4.75 -4.75 0.3536 7.0711; + 1.75 0.25 -1.0607 -1.4142; + -0.7071 -2.1213 0 -1; + -1.0607 1.0607 -1.5 1] + @test round.(sft(x, wt), digits = 4) == y + @test round.(isft(y, wt), digits = 4) == x + @test_throws AssertionError sft(x, wt, 3) + @test_throws AssertionError sft(x, wt, 0) + @test_throws AssertionError isft(y, wt, 3) + @test_throws AssertionError isft(y, wt, 0) + + # Build sparse matrices + x = [1 0 -3 0; 0 3 0 1; 3 0 -1 0; 0 1 0 3.0] + y = [2 0 0 0 0 0 0 0; + 0 0 0 0 0 0 0 0; + 0 0 0 -2 0 0 0 0; + 0 0 1 1 0 0 0 0; + 0 0 0 0 0 0 1 2; + 0 0 0 0 0 0 -1 2; + 0 0 0 0 1 2 2 -1; + 0 0 0 0 -1 2 2 1.0] + z = [2 -2 0 2.8284; + 1 1 -1.4142 0; + 2.1213 0.7071 2 -1; + 0.7071 2.1213 2 1] + y_sparse = sparse(y) + z_sparse = sparse(z) + @test round.(mat2sparseform_nonstd(x, wt), digits = 4) == y_sparse + @test round.(mat2sparseform_std(x, wt), digits = 4) == z_sparse + @test_throws AssertionError mat2sparseform_nonstd(randn(4,5), wt) + @test_throws AssertionError mat2sparseform_std(randn(4,5), wt) +end + +@testset "Wavelet Multiplication" begin + M = zeros(4,4) + for i in axes(M,1) + for j in axes(M,2) + M[i,j] = i==j ? 0 : 1/abs(i-j) + end + end + x = [0.5, 1, 1.5, 2] + wt = wavelet(WT.haar) + + # Test on Nonstandard Wavelet Multiplication + y = [2.4167, 3, 3.25, 2.1667] + @test round.(nonstd_wavemult(M, x, wt), digits = 4) == y + + # Test on Standard Wavelet Multiplication + y = [2.4167, 3, 3.25, 2.1667] + @test round.(std_wavemult(M, x, wt), digits = 4) == y +end \ No newline at end of file From a24a6ba008f549fcc236be1ece9f690239c571d5 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 4 Feb 2022 19:58:17 -0800 Subject: [PATCH 16/17] Syntax change to deal with v1.6 bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In both `mat2sparse_nonstd` and `mat2sparse_std` functions, the line ``` maxcolnorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) ``` is changed to ``` maxcolnorm = mapslices(norm, Mw, dims = 1) |> maximum ``` --- src/mod/wavemult/mat2sparse.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/wavemult/mat2sparse.jl b/src/mod/wavemult/mat2sparse.jl index 419a996..f54587f 100644 --- a/src/mod/wavemult/mat2sparse.jl +++ b/src/mod/wavemult/mat2sparse.jl @@ -43,7 +43,7 @@ function mat2sparseform_nonstd(M::AbstractMatrix{T}, n = size(M, 1) Mw = dwt(M, wt, L) # 2D wavelet transform # Find maximum column norm of Mw - maxcolnorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) + maxcolnorm = mapslices(norm, Mw, dims = 1) |> maximum nilMw = Mw .* (abs.(Mw) .> ϵ * maxcolnorm) # "Remove" values close to zero nz_vals = nilMw[nilMw .≠ 0] # Extract all nonzero values nz_indx = findall(!iszero, nilMw) # Extract indices of nonzero values @@ -93,7 +93,7 @@ function mat2sparseform_std(M::AbstractMatrix{T}, @assert size(M,1) == size(M,2) Mw = sft(M, wt, L) # Transform to standard form # Find maximum column norm of Mw - maxcolnorm = (maximum ∘ mapslices)(norm, Mw, dims = 1) + maxcolnorm = mapslices(norm, Mw, dims = 1) |> maximum nilMw = Mw .* (abs.(Mw) .> ϵ * maxcolnorm) # Remove values close to zero SM = sparse(nilMw) # Convert to sparse matrix return SM From 19b4b2b5487d0eb1cd5c9ab4336ebb32d1ca77f6 Mon Sep 17 00:00:00 2001 From: Zeng Fung Liew Date: Fri, 4 Feb 2022 20:11:57 -0800 Subject: [PATCH 17/17] Change @test_warn to @test_logs for unit tests in v1.6 --- test/wavemult.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/wavemult.jl b/test/wavemult.jl index 9d636c5..70a1b23 100644 --- a/test/wavemult.jl +++ b/test/wavemult.jl @@ -3,7 +3,7 @@ import WaveletsExt.WaveMult: dyadlength, stretchmatrix, ndyad, sft, isft @testset "Utilities" begin # dyadlength @test dyadlength(zeros(16)) == dyadlength(16) == 4 - @test_warn "Dyadlength n != 2^J" dyadlength(15) + @test_logs (:warn, "Dyadlength n != 2^J") dyadlength(15) # stretchmatrix i = [1,2,3,4]; j = copy(i)