From 42c25f44ad7748a9be00f1a2ce310ce4ae3b4ff5 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Mon, 10 Feb 2014 00:12:57 +0100 Subject: [PATCH] videostream: add downscaler core + test --- misoclib/videostream/downscaler.py | 147 +++++++++++++++++++++++++--- misoclib/videostream/testpic_in.jpg | Bin 0 -> 50391 bytes 2 files changed, 132 insertions(+), 15 deletions(-) create mode 100644 misoclib/videostream/testpic_in.jpg diff --git a/misoclib/videostream/downscaler.py b/misoclib/videostream/downscaler.py index 27d42b57..7744f2d6 100644 --- a/misoclib/videostream/downscaler.py +++ b/misoclib/videostream/downscaler.py @@ -8,7 +8,7 @@ class Chopper(Module): def __init__(self, frac_bits): self.p = Signal(frac_bits) self.q = Signal(frac_bits) - self.chopper = Signal() + self.chopper = Signal(reset=1) ### @@ -27,7 +27,6 @@ class _ChopperTB(Module): self.comb += self.dut.p.eq(320), self.dut.q.eq(681) def gen_simulation(self, selfp): - yield ones = 0 niter = 681 for i in range(niter): @@ -216,8 +215,15 @@ class Packer(Module): ) class _CompacterPackerTB(Module): - def __init__(self, input_it): - self.input_it = input_it + def __init__(self): + self.test_seq = [ + (42, 0), (32, 1), ( 4, 1), (21, 0), + (43, 1), (11, 1), ( 5, 1), (18, 0), + (71, 0), (70, 1), (30, 1), (12, 1), + ( 3, 1), (12, 1), (21, 1), (10, 0), + ( 1, 1), (87, 0), (72, 0), (12, 0) + ] + self.input_it = iter(self.test_seq) self.output = [] self.end_cycle = -1 @@ -227,6 +233,8 @@ class _CompacterPackerTB(Module): def do_simulation(self, selfp): if selfp.simulator.cycle_counter == self.end_cycle: + print("got: " + str(self.output)) + print("expected: " + str([value for value, keep in self.test_seq if keep])) raise StopSimulation # push values @@ -247,6 +255,122 @@ class _CompacterPackerTB(Module): for i in range(4): self.output.append(getattr(selfp.packer.o, "w"+str(i))) +class DownscalerCore(Module): + def __init__(self, base_layout, N, res_bits): + self.init = Signal() + self.ready = Signal() + self.ce = Signal() + + self.hres_in = Signal(res_bits) + self.vres_in = Signal(res_bits) + self.i = Record([("w"+str(i), base_layout) for i in range(N)]) + + self.hres_out = Signal(res_bits) + self.vres_out = Signal(res_bits) + self.o = Record([("w"+str(i), base_layout) for i in range(N)]) + self.stb = Signal() + + ### + + packbits = log2_int(N) + hcounter = Signal(res_bits-packbits) + self.sync += If(self.init, + hcounter.eq(self.hres_in[packbits:] - 1) + ).Elif(self.ce, + If(hcounter == 0, + hcounter.eq(self.hres_in[packbits:] - 1) + ).Else( + hcounter.eq(hcounter - 1) + ) + ) + self.submodules.vselector = InsertReset(InsertCE(Chopper(res_bits))) + self.comb += [ + self.vselector.reset.eq(self.init), + self.vselector.ce.eq(self.ce & (hcounter == 0)), + self.vselector.p.eq(self.vres_out), + self.vselector.q.eq(self.vres_in) + ] + + self.submodules.hselector = MultiChopper(N, res_bits) + self.comb += [ + self.hselector.init.eq(self.init), + self.ready.eq(self.hselector.ready), + self.hselector.next.eq(self.ce), + self.hselector.p.eq(self.hres_out), + self.hselector.q.eq(self.hres_in) + ] + + self.submodules.compacter = InsertReset(InsertCE(Compacter(base_layout, N))) + self.submodules.packer = InsertReset(InsertCE(Packer(base_layout, N))) + self.comb += [ + self.compacter.reset.eq(self.init), + self.packer.reset.eq(self.init), + self.compacter.ce.eq(self.ce), + self.packer.ce.eq(self.ce), + + self.compacter.i.eq(self.i), + self.compacter.sel.eq(self.hselector.chopper & Replicate(self.vselector.chopper, N)), + self.packer.i.eq(self.compacter.o), + self.packer.count.eq(self.compacter.count), + self.o.eq(self.packer.o), + self.stb.eq(self.packer.stb) + ] + +def _img_iter(img): + for y in range(img.size[1]): + for x in range(img.size[0]): + newpix = yield img.getpixel((x, y)) + if newpix is not None: + img.putpixel((x, y), newpix) + +class _DownscalerCoreTB(Module): + def __init__(self): + layout = [("r", 8), ("g", 8), ("b", 8)] + self.submodules.dut = DownscalerCore(layout, 4, 11) + + def gen_simulation(self, selfp): + from PIL import Image + import subprocess + dut = selfp.dut + im_in = Image.open("testpic_in.jpg") + im_out = Image.new("RGB", (320, 240)) + + print("initializing downscaler...") + dut.init = 1 + dut.hres_in, dut.vres_in = im_in.size + dut.hres_out, dut.vres_out = im_out.size + yield + dut.init = 0 + yield + while not dut.ready: + yield + print("done") + + dut.ce = 1 + it_in, it_out = _img_iter(im_in), _img_iter(im_out) + it_out.send(None) + while True: + try: + for i in range(4): + w = getattr(dut.i, "w"+str(i)) + w.r, w.g, w.b = next(it_in) + except StopIteration: + pass + if dut.stb: + try: + for i in range(4): + w = getattr(dut.o, "w"+str(i)) + it_out.send((w.r, w.g, w.b)) + except StopIteration: + break + yield + + im_out.save("testpic_out.png") + try: + subprocess.call(["tycat", "testpic_out.png"]) + except OSError: + print("Image saved as testpic_out.png, but could not be displayed.") + pass if __name__ == "__main__": print("*** Testing chopper ***") @@ -256,14 +380,7 @@ if __name__ == "__main__": run_simulation(_MultiChopperTB()) print("*** Testing compacter and packer ***") - test_seq = [ - (42, 0), (32, 1), ( 4, 1), (21, 0), - (43, 1), (11, 1), ( 5, 1), (18, 0), - (71, 0), (70, 1), (30, 1), (12, 1), - ( 3, 1), (12, 1), (21, 1), (10, 0), - ( 1, 1), (87, 0), (72, 0), (12, 0) - ] - tb = _CompacterPackerTB(iter(test_seq)) - run_simulation(tb) - print("got: " + str(tb.output)) - print("expected: " + str([value for value, keep in test_seq if keep])) + run_simulation(_CompacterPackerTB()) + + print("*** Testing downscaler core ***") + run_simulation(_DownscalerCoreTB()) diff --git a/misoclib/videostream/testpic_in.jpg b/misoclib/videostream/testpic_in.jpg new file mode 100644 index 0000000000000000000000000000000000000000..49e65a8c093d358917ffa42ed6883c963c53675d GIT binary patch literal 50391 zcmb4qbwE@>*Y{FVB8`;f(%s#;G)uR1BPk)FNG`o}NG#p5GzbXNDJ%_&q=YDvl75Rm z^?u*;{_)Mdcg~qJbAD%L?#$fTnc3fqzrO$o)RaNW02CAyfF1Gz{JsMaD|p*m``X*l z`8)eM(W!tmb$+h^6ac8mG$<(dKI*+gN4xhi(9zM*A7DIq@aMtA#(IE>jrrgK7A_Vx z&b>o&4{>oG-UseM{;Hy4prK*lU_QY7ljQ%)``rg1#6sCaeTRlZ2tXx7K_f)@-4A#I zKmnj&Aae%zmqS5CL&tc4iG_`frnt{I()}wE0QeLAdl~Q$4F!NofJT6nT>ttTkD5yG zQKdiS!ZH)`&_~OMB~xXf-Noh5UAypLZOTPh_FpLB|7QQnFrd9Z%PbEq3&3Do%2d;U ztza=)>v{T3z8$};5cCi#%YI}9|1S=UPfJ-^Uixzl44O(XPd+q45nz4AXmn5@nIXw} z!n)_Wmvg0Yi2c8412CYeCo4Sdr=P=dm9fKZRCcyrM23VIWN2EC(ooQld8u?2=+jIX zy!>DE3*o`lnO2tDCQKMiug!G=@`4}JmXR*c^{FejP1Cs2isg&Z6kA#5|1^^Q?+668 zG(NNe!My@KsB8OLN7ke4hJG>Y4oCFi?9jzdoWZ?6jwd z$QW}#f!G)1k^48FJLJBmt7rpZV5AbjZ7B6N1CA=LW3Hmrw`Knu2qy_`?ow!^vq`?8 zjw$arBi*lR9;u}6=btG``(Q|rVuBX1%Tzl2()fC`8(O_R^WRX&a2Ka_AFyXS-FUS_Ym5(IcF7fLohp4t6Gq-W{rM&C-mx z`E5xCN~g;pRdg?vh?n*CNGLzpfWc{X*v4!UXs1cA!v6s%&66ZqL3ctvofFez%(wT| zwbWjA!{$?F$=Kbe%!P{%yhDzWjhtolH4%Gwj!DO z1FsCQ+!bzlVAkcZi$9 z;axM0ZGxWsl^x}hA`R3x5(87lNDYRg%0+Tx-W-NHog&89+!h!RmE*r74K2>39OPfXG^C&Puq z+gG=Di6}8cinCQ;xn_C}gNc_-L>Yv^vLYUWSNI>u=rqr0AM2B;VFQz`^X%LX%K0G) zL_Tn9L;6nm%rZZLNyfICsd19T*BW_NSyf#^c)cYA2M5<4NJ5g93-uO3j!SsQaw7of@Wu~f&3vh47H=pweJ2gGuLo9_PiovZmX!U5PC8<(>0PR@*kUrU zr1-@}Tg@J4#!@_FmQ@#oV(&)`qrex#39=eN6YIT~ib%Z^GTo5uq31nIs%T5Tm8 zQ^9EFgV<0+_AMt2<5cbKc^T5;x%qB%tI=8Ny!&YN-v&`m#7=bRj#B~cs%DI9w=W52eHqKGn=WJKZ&DNFcmpS%)MI&R!{O4KX<7rfr2K=aHe!H%mj^auRewCE2R^UF^s^-sj_EZV2ElO`p6HbP`%xN4j`&0m;r z&unL3&L8CevQm-upQ;W%1Ja~e5IPO<9ni3{NxEt)kCnznDiXl(5t>u-h5s~*@-ozu zT#4zezCMWV>m&VfVTUhE6olKR6Mk|;zQMPoXH#B@Z#>%eTOr@}+Yhon2OMfWo8J7| z;WhB)Tj2HbWF1wgg*XpSh+wzt3K=(vM8LO=X}3nhQU1DjlhGyiI&_=_A=-}1692RZ zz{f~RWQT^UL1KYWkl1l=o&$xlVBqIQ&5U`?`rKlZ73E*$RBOiv%f4TSo>5DBj#Qh! z`!poII2Y&hazZFfeAe%4^a8Kk3=KrbtP0mlQEq%8*ZFV}1)bonFUx)sDEXh3Q1Qd3 zxVh3%VKA5+Fo%4&dPgo`x}3C9L)YNVvx&1Ukn+OWn{V?fRGoWyb?<^RGcDD8hsK0m zt$}3C?m%U(ysx3+Ybv5ea4A#PDjbHalCqkiaNifv!hwKrEZr;Y%I{bIG=-KbBRYx$ zVrK_JVIZM)Pp@4nbMDMXCSn$9DCu!~Ry>~?*Ep-@_P_g0*(3609<4qPa?w+N^F<&h zeP@wR$eF*Uori0Uda7{(oiu+S83tpGVPlhg<}oTkT^LSA@V0x;aaZfhKdng{C1tQ{ z1S}bZ<3M5wizF8~i)UNfEI34?d<~G+2hLI>i5B5CwGE z~@b%!mhM+sjle5!@r^^$*<5QLrA#Zsb zuI(k)z!Tc?jc_)axF_g3av(xYMW-po-3xA)VLAf& zq^2|J+JAO>%yim6$acu}P#;WxT5B0Kz#1BI$305&+9r=&8 zIo$0dnG!gzW;Od#=3E}Kwedk2`YD7uigK7DrtCkC!vSD@#|n ziH8jwAd~|sXEI9eaRfO~_j$4D@)?+at!k`-!LXyHjK3n-+F2nuRWLb&w%!~)mA%c^ zD=4J-oyjqfaI6@*mvVqeAjWDz^(W?kd~7hkPH(-3z9yKV)FWsyV*^%nQHg)fwPoF~ z+y2&$t0>0~EUB{a@BlXJvx8cc7}RW330=X<04e3h7`pIeMJzgGR#|C7T|x-|Q6pQM zC*qZWk|807iat)VVc=wYnx6K197(i|)TN<5UxOFlCpaKY?34c~7 zhmKY9QkD)Co%MyumB2q5i?mKsY6S?LOhW+hfp6?-%`ksFLU5Q{CEHcFrql@{$EMMg zY&}++Db0_om`Z4zVgpMB7-v z>5z~Z5g6BudIyJp@KCl{z7_&rg2AR-X(Zt=IDFkiw=y;IGrc`9Di#FfqP#YHF9 zPsNEPn<+R3LZpvMQer^|P(=@SMg^h23=y;P-M!ZXV9Chv9}&@E zkrI-OvSN{<0$!;C=ygB<#aUuPIUE!eRsDXQS2*FafMgAJ5c+S3FOcf3FS~!Ay{C59uoi{A3>~3BpVg;QkIznss2hZk^zJc)dVp} zZQY_T@0l>k0st6HOc=1<_)tIlZAFq~IdtTUk%ys1VByFo1CjygsH&(85#az*UI2<7 zvc#!+#9$50kkJsP(&In+C?KTyx3=WvV-&#c~NPrb78>xr^A|QE563GBS?<>SX znn8bwK`)2uq=8)t%*x5?4$a@2pVtj;GX&`XNRrLCGBmt1jTYIlUSi$%{SpEkIb?f9 z0feIlDmwYQfg(9tpF${4d}!gy`!H0ky+=K~2`2Z@Dz zPpHURq9gdLjfGBtMTd%o4ge#GoUV!QgouikU)0UwI6+Vq<0H${5ALQNvXh zgIJSC@jWdpDGA3>r9)~W8zli209me=SoaN-01G`F1gz<>62N=)mVX?&=h8TuA&|CZ(eJg8m5g-Q=tL-V1gZe28Uzv-+4s}8!<;+)F>a*2 zlD%w2NeNP;BpeD2N4_H*RW>$czR{808madZ8y$cR0H`9H3;>D^M7|MST~8<+>5#Jv zxLPdmPiDh$)Kuxhage1)z6#`u6f(caHv<45?_@bTq&5@;L|TqT&J!w-69pi$PLNd| z4nWpAI&zik{sths1Aqvb7-{WZ5lDoMoF)OGa=>so04m`ARU_r7_mO~?_a6F70PrOW zUAXLh;lgEssG$2wdI>-}WLfVC5;GYK_?P<&n~XyDk01aLE{lF|4*V|xk^#~E4bdXk z*Z2tlC}@8iIx5=Vb+$k2YlIJohzUr@FiGjL=wumq`E(vL^2gL`3;sAPmF{76e^sa39CnCb%33#s%tHj zI`tMa#_Bxg1ATjD>naO9-dsgZKlc6<(EMrrH{iqYG=60WaG&xwK)u<<6t1@7?h#Sj?0Ws=V%lB8n+QUeqdIct0ZM0WN!6KiIlhFLQ|=_DHG9MlrvpP|6J$&4parIIuJ{f-yP(+lS5^szsGS1 zuY&xPV`>peU$%jk3gH)<2JKpf;CGvSvQVjT<9F`S^?UFp6%?YW)sF}*+QT!Rx}o~0 zojNDZa^-(O+EORp;qV(kzPrU7Z}_FID7+(gR`ZGQ>p3g!j!lR|GqqRYm9k_-GvA)~ zOqyTHzLmV2!C1&?qwyX*|A!QCS!5s0XzzRv-$Kx`(ohO2@*4p7u`W|k^#aYY;p$0< z*+Tg=cTmN7k_Rcixi5pu1dD6Cfmv0PVQKlCX%-}ITEsR#ib ztAn&Z2z^DARe$@g)5H3Pm%|&RmB>`e(#p5}8=$iMEZJqPe80`G1-Ch>S|O;tO3*il zc>b29M$wz+V(QLiFWXFIH$fu<-;my%<1q}PmaTMW90J;V<~w~(HM<;o;!+3c$Pgl~ zD%@d!%1V=fgUH%ugXBjl+5E~2{a?tAj#O@+UMzf)E5qZd{$|>}lJ^@BNH40~RnHs@NO(=@C928bH1lUOD)^9y+gO*o%F)9=px zet@x&BbT@vhma!i@s8&%xg&*4eH)?E&Y8M1cXBHxtqc7!F$ zeXw{np;GekP|E+bmutq1+b>OsChx$-BCs@Potoh{z}aV(Or7mcX&UWTep)Roxk(RC zMY%OemqY5=JFR^y(>mRbk^T9M_JS=u%D}sX$5u|qn*Jpu7SBqCn_JS1LX<5JA78nP z?;s9jM5l-MLjsElqAi_T@#e*KwRvZT1EbOrPGa z7Ot2u7CICD(B;9Kn_Nx$m3rw`;gs#;HnrsY{Gi09Ek6V9boksX!b?-h zM3W?O^sT&hrYYBBj`7C5>t;zUsI;=;0@G*Z?)uUP&{=;q+^D>+<-(CvrW}tKIs)1BS6QI;L;*&M1XP1|6PHwX{!_MrU>k=2|Y;;@P8pL|7MQ`?>1 z_+OA>->BY}q-yGN>S-dsiR_JHVabfoo zgmST?2b0g1Anf^;)~GL3F;QHYo0doP0Eb7^uv*lFP6(_W>`A7xB*PR4iy$3-4JSI)RD zZy6A-Dov63p*!o~d&h6r^x1G`q`CHCk3)K<{YT487ZoG3`3^g&-mh(vKR)|UO3Z;{ z?GJ-)C0y*<_nz%`>33h#B#|zXDOq*Yt*KZpcj9~;Q__AL{cA5Qm1I=E2d~(X^OCyD zU{E>HD&2GLvQ2x{U~43mStEPTF*kg-i^MW(xFU+6k6d9Bc6#cn_iM8AE^dD8+JiFI zBI43&v36xefo3{({^rbdNVFo82^h><9WB9*V0<%8G6IE%eom5+;&-gmh)+#8e7?h4 zro=6xqGP~+D0}|m4a#?Y%(jpD>xxW%3<>E#UFsbP#I0&hqiUF(Pks2DN4q&YcPr*i z`8Su`69%YEnpSI0#r&aQPZ`;Xc8a;33uN7#VQZ?dGF3;rCHKdanc(VtkrJu;#*cdc z58ifDszzti5dPG+$((Z`p;|S-W(}Z+PV+xUTh34>6w9)$L8TsMVIPQSQryK zkJ*h!^}F-Acwe7S&V;SGFm{Eo<^8$X>3IcuYGQo`(>k^K=2iM<4@bq>5}*#3V@x(m z^h5MR?A3*D%0}>@I13`*W>URPXLXf07D9qyb?BaPi04F~eu5B6E-cO#1|$trkH22k zR#1h_2eOQQ5CTgko|$O{nkT3nSiEj-Rv$TInlEC0vE}pe*@;bV#yrH%NGMhio5OiM z--JTryo72#kejHXQBQAFcz}4*z0Nqov;tbzy;I^Zk*3n6#eYZzes-ZzOZ`nVk3E*{kKR_xY5c zo@naQZJziX6cxq_OWG@8o}k3Cw5(}1XeVT)JKS5iM8F4IJFfj;mCa;|@%DHrZ=V}t z_-TgE!&Tgyy1q9p+qsxrWa3JZkbsC7=M#tfu9FpD7viirk3rf!e;iu$C&k z9nCRecw^TV#}ugNUHR&?*{@My%#$v$3}(D=n!R`WqjG+#<~KlM;a0XwVCF}AE6@w7 zE0Y0{d@&&ytF281r>}A}K6HP^dC6})C-KWg#-Oj$RjN}(4`IP}TEpgB*s7dyAk|U^ z%}11OxWm>;s$A<&J8VDaI!zOTQ2- zFP2Vo%Td*B)wd>-=*n%eru}}B0*tU1q=%2U#o1uZqQslPoop%vFxI&NsjWE@b52^U<}8#;OBf%SNuWOm9l zZb1n=Q`um@44%^)03Xz4LQ6BBuvR;@Eiu%ntx!S6@^ja8rGOgw8eN?U!?xQ!Kb2fn zG@y)?Ii(5|ls)U02Tqw83n~2(@x!~3G1bLtIW9&W`BepO4GphD*Hnchn(Df4rY!v) zx9!_XJvr7?Y{W-Q57*5!R0^k7vLBM3+VCpl#gvtUGb9OON_+RXJ{s_wZuk`0^N(>s zN8Hs$IfT=F7PN+_Hj2t38#>hnZ|5-_;2En8O2j0ls&B6>1}l zvfNzlIk&Em=zjQU2>D0o?3?yJ z9h>^DrtITN=h|!4G%vXeUEeX8V|`0fGE$y%Mz58J*5*E&?OOFITN2;H4kcA0(bef4 zjOr*}5{6Xu7la|0D-Y{>(htsy&JX!grUVvbJk%p4USue}N{N>%9reI<31+BFWe{5t zA(K$EWT&4|yP^`JZWhiwRvz}XaM#qxF*S>Hqa<7RsdzUdjWGG7Pp@_9;Qx$LXj+6H zG5-3EPA_|vDN|nqxRL#?!_*>^iNrE)!4O=lnbB*oY~Fp#R>3aVQc_wO1e%u+p^hODtC17dGdfT@b8-#Hh*D+;R|X_4W@vDuO8bRc~~~QRKG-ws{2ZR-aE1 zX+K(+nKRudDqFj_m2yc6{TP-~Cxqkd&c64AFKl_^7UzE#tUc8;9lP(;~B`}nq z{bsAQZ%*MV3hXVMpHs&kloR)kSI1zkw35SB1QgaagIMKht+vM;PHFVsFU7*o2qm3ApXT%8W}NEXy=bM|@@l)3D7f^gMGAETk^1;aFv`RKFo+MeqQQzJ=wm(?)1H6-4=)BDlrDnwoWyUP~M^s)UKl^9eqR zJe(>k(qsCo^J_g8diFWe)sXdznK^x3{XH(ZN0kVx_=^_dg9N2*(|TsLiy9$<&-M|C zXR<%JNw~>65->mQl51DMoXz}et7xLI7F=sd-yF81^ILIq{Gj=Qco(UdFC^Hxyi$9< zjq~BnWaIo^X9xsd)t{EyGCU?!%awn$*fiv>LY9?LHLX%?-cjn5tDjo{)C~@{ai*f; zsN*~7JYx_tAbvg?Vd8W*A;f+CY^`Fivs$RzKD=)oKSS6g{Rg!I2c{`Ss81eoFH0d#~o7?HC;Aw4`y*Qc| zRpQu}aG_ZSx*&@BPKDbXOcxmKsHk){yyK{cg^ruuF4%P8^VOd|*_psSG=9jLPfs}u zOxIMVPePZswp|sc4%mEv+PkpI{G=DAiAHMR!35S!boC>M3%0OnUa@DHxX60de4aZqT)7`Q zq%dNF2lORro-9{hHDiUwNhE*Q|4y=_>w;aCZU%gjkm3hWF(xTOpEm~*Q zQ1Pw4^Mm!?wtGniTn}J3+7%&c853-CAe)4S)pdy9lAydk+p3~JA+8R`j#mSJ z0^7=oYJ^oEWtG(__FT`PMuMJqEOA{P~$)IZw;}zH2Gw`W2!wIL^`!Y_(C^&J^#Xr10P&)^t2we7Q4u zR7IwrO=W(zNSli2=gk)h-^I4s_w9{J6^DGpR>%DXo{WDD)QJu;^lw%{dg&@J^pRd5 z7{m#^ZD~C=`whU|>ogEPfra6k?=$aNFn^W$zF!ifF=ITW%z+p6Azn3RojwU&lbk*% zjBDCB(cBhRv8P+|Yz-mBuX;Fn!zIRj?Y|y`U6rYM_4=0;I42c*L5eyeVFYLkBV&wN zCn9_sA7lGKP!79vr(hG7t2ELq&h{Ii*M4Y|YF5p*7Xsa_aj*Jv!BqAIURu^{>t5D8 zUQw10HNX3uk-B*V%P?m8*pZOas(OdEIxk|mFEp3ad8j)q_PY2FI(zh-;56C9D>Erp&YZw3#nud}KmkS{%{qS3Xrw zikpiKs0(@ywo@*`w9WKXD_6l!2I!|${Yf0Xl>JGfrN|p~^O_u)D7xdfip5wbO$Bn2 zzm`Zq^x8{>4D8$sFGTXc(tn5295B%ApM0{@TiueHQCMAzUbXWvR1(wQ)=Saf(n}d) z$b)!`Zg~xFrVL(C*Nahmcy$earONa0qE51l9Y{JY*pr#DAtuO*=x1KkY@o6cR&>Y4 zJ@XIAv%e94h~T{#1sNfWy#6Nd)p~yVH?gee`?!J+S2l>mx;ffcsrx+IwZ)d%{EkPB z3&>B}Pvnipi^|s*!yc$E{0v>Dm@LiCL&t3G~G zDtDoW=7jY~@!S3Rp@Sp^jWS)S%warxo7ykByIdozJ`Go~CwgAwHyU@vS%tJ;^E-Z< zS}JJ$x5|{pov_B~)XM3awRO!0e^7-WsCvHLs)IUXYMcS3Kn zuN$wIuJ2_txU^jd6-FCEl*Rf=#OEZsN+kN!GccJ1i#_4AwmI`IffjK3GFaRjwjgMi zY$#~?Ya%e`#4oVp-6v0xh1`RQ1+I<~|FFvb}Uc8#}l!*K5t(rgD*zkXh*53AJqW`-G zrjMsYb?hheNBbN8{=^+^Pv-i+e`oPS3S*Yz!c#h$2e_zDxLVbQ^i8EW;PaHUswTco z1g-0@l`FzS_E}-b6%cv5QFAu1V#hM!_Tc+O_S4UX?z|EjG~5C08(-u9gKT2P)9?oL z{&&I>pMM|65>LY)FoH~ye@~FY|0D@Cf=Hpty>KRDlG5a`6Ng;4 zk|>yN8l6D9ONqp)VOO0-t%_?vvy@uX)&=T(o`{%`3@lG<`Z+7eh zZz01^oHuJF1Mf*iz=8Ik5K^cxr1K{=k|97cUij4al73`*Btw8?{z&c__kT*<@u?IB zKmKe&O8&)AA|;xFuYG3-otxNd@Z=LeCa~_F6AVSzAa^~n=n7mQtUWf6*E!Na-P7UX z-JIeIO0KT*R>AX~{8hw?=?hnF59h-PsrK@grt|sy<-a0#=fhg5=Koc+h*+U~VXN)t ze3&5BP~IYVKA69VSYCc%rtRu{=q^=T-rRKFl0T1F&UvAy?P7hXDOFkC)O4PaKZ{s4 zMT(rAGRk6IoK|dg5U^N1Mx4tN5Qn1L+0cPSV;OOfb>EQACmtDOobu$ zc=(XVtx-`>(b3T#prZZV`awY@L?fa{C*XTZOed#{!62){%P(*3RY>Cbs%ZVs77ubW zNCxFDmUI%rS}$~NkYN&1{vlW(aigJfBeLuOQQyE5aic8dbzQ&W(V5--WYF{1JB{R0 zM00V0B%_*E4^&c{5PwX#XDcHZ5tR*EI9bJQd3+Un{^7=8X`d^7%-n6ZfXhp{EhAz~ zxx|zczF@cH7D1&P%&+yaR5WFdsqLtYlPxI6lxI~p?o5(A4oADP$O@dmknmi7aPiB> z#=XQXpAYOTSV50EDE)AwRbG=e ze|G}&zIX3s7tpfAmQO4Gs5g)!#9ac_sM9toEamw0T$;0*xbdcK#Fs@%J3|u`T;ko_ z$j}TCcLb%RhZe`?mmBg?VV6ujA~qtd+Dd;eu{!e+rb}-8%bsf>VW_BMKRBYC{7f>~ zawE<7k~ttJoiCwu(fyLIt+Z{GV$)_?-!9-c0JPy|n-14)w!1pcDTr+^V^OqqvoRP` z2Sy?qighC!?2C3HGUfHJd}aqn#1;34&_89^zQ8MCW5bF|ryAiO=2=@jOO>{%Us z@Yf!3NTwd?reS@V*9IaDo+Kvp0EuJYbR?+@orki zW#mv$O#6>cR}z*bFnN!>lfY>ouu8E=wNxJVPKzV^W`=!im$9aKaQ-Woq@8(MO(Bw! zO0ZF#U4GWtA)K%%7QPd0KiWwqZQy7z$}tjLH`2kl74m}6XY9Q^VN{HWi}YQkNSDzq z^jFw}f)Os=%Ff$Ove~eUg^wGIeM6B$qC-3BSEuEQ7WGUdMj|Br6~Vc13#59tlbLt7 z(br-%=E_@%>x}J2Jt5?DT0a3SG`zrQp5XltLiOy&j}}_DpgW>#g~RA`7vvWYdEbrS z_Y98vo&i9|Kt}^0|4i`5{p}gN1jKZFI2{>IKH{+M#W1QbCOEXNI znoN;FCD=5QIUX-xaIodef`42ycs4Y+6ihZiqMJ6VYoQ9CP-Cr^Y+*@?jM~>Q{-wQ| zC``Q#I-6GM!4*1n9jc9Q_(jcdUCgO>*j$dwGtEOiuv_{;L4J&LcA=CqJS4lQDW4xI3@ zkMQxqM>Q}Ahx0ccoW;)5x?AFzhedLY9I@Fc&-Gv?DQ^}_KK`0kX?;TY>-ctzv#UfZ za&4e4Ui*t@k(2P)Ow7k`wU5R%ToWi%R>!R#a`8Pj-B&pNm2^fWr1}x6PcIc9TE+?s zCef(Kh^eMl>7$+D@N(yQY@cD%P4-LhIWhI_4#l(=jjme!W_k)tUx@fjW#2L~!*b=v z+jj;eI^*(?^@_nIw{8e)5f}DRP%PnHfDr~f8vf3$Gfk(o-beCwpg@4yc)l{X>%9w&RV}esVo1qgj8KXu&O`$~OcwL}d-2PT zAcJrDKYRgkuex>Ttgrb6G&kBl#--Z79}Kz}jt*J|zPSz}`Hr<5iS3t^ zPWZ2SJo^lj|GeE=OzboJ#&{xs!pC^ZI*@}2M_q>#46?37x>-MaFz}=9PWYYasrCW> zZuPiT#S7dS8R8$)R!3@^$W_Y!kDK&2puPY(NEs3!&w8MuW8z?AVWVJT+>cZDM>GhD z==u0Di0K#vt zjUz>UgXH3$|2W3+KnC^HI1igL8%AHOts)xs{)V@T>)m%IpSS7z)y%!7^6PKhsyXLU z3{!F6x0!T|ZZvbg`tV*9;%G`xYZGrrRbn}<@k$JX`i4KwjGJ8DScRA-e0!&cI6!0d zrRQ%zke=2I24VQoYwf~YhXt80721z@gIH(yJ?KHRu#O_!h}qiH)VQ#{49#$5IW=qa ztQNI23Fvq7RyG0RM_)}fB1NMJH@O`8Te*Ut&Sy!QwoU7Z@ah{dY}Isa#QWl=sm~Yl zqkqTm!~ek9+_WCi8VQ~xaH|!Vu>7deKkzGVXkT&GOil{t%3N--gx&rIpX%kRrUyKr zal^2P^h>;V#b%i^Xx~eCdwA&D{nh$OioOeRO}ktk-=kvTugdiBvt-IX-Z&P@K$2wG z1{oR){n%6RjU1a1*E__6@0bu4T<~Mvctf(@?~HrppRog|@OtpSfhVL3v%+wBJp_9$ z2I)ujCc0X zv+Q5kb*WmwAI!yc84R=mU%>t8R4YtE3q>c z{jK_h9#eBvOMW8q)=Z)_lWt3&Q6T;mqu*-|jph=8h%XsVp-=iu@$(|MsiLI>0tZG6 z;lpn&9?RXO^r{Noona`M$-~}JLVl)Yelr692JmfU8DbA+6d3dm_vya&Z0P7U!z1ub zy+rS`PA9{MNNI8KSvS18c2)q2@qW%|YNLJS!FZydKHRknW;$h5Nmr^JPkM zOq6rGg3^zpPngc`gwj|85;=FbI4YxOaooL6f4cF#HVdJwWQHH$#2?9X7u-}2G4Atv zlDl9Gnrl{i@nds7iNM=^W=eRH6Gj&!lK+zxar^o!IB7}BroQ0QYwsa5L0S{^r_FQm zEbB%y2EPF@nSdlL<7c70bu%)1RmB%rGFbFK6eQL7H@WQJ3X%7fMeC@^ozSB3V`4>S&QnS z3^C15{tO!4;h#IXb5|_D>ddIWZX?elB+ye-$8oo?W8gJcv)huWa<>b%^M1&Gyt73# z`NRUlzwH|jpa%4`PV`2ZP_W&l5|JB8K-QH5|}Q_yW0fn32kMcB)INfy6^ti}{ zj=cFJw3zeH+E>aC0(veVAX@6f@cD6$4tj@8gk63E0^s2tVefbX9C5$2MG6r=gqvxx z=*9$#k3-kfvC7&Xk(QqHTrc48_J3ocPRTk+q;*abT|dvt{-uJyc0?#mx=B>w)AyM- z!bpT5ouq?V@!`_@AI9BD!n766>J-o!(X3SiYV;;^v!Y}5T{Md^`rmC3tOS74xm-*@Ky|jPlWNS{ zT3SM@$N-tcm|qaKqeje-23kU+h-4WT?f$?ajPtZ4(J!GhDPKt*FM}mF!>`p;@{(no zRZk$ehio)nav`M*VTaVnIF6(GKTuyi9$lM;GERPba^4@Tkla8+{AGyBi#feWR}~s_ z)o=K)H)TSxk7!Rp8c_lhd=iPMkO@C3aiM&bSNPYr;++;gBY&o4I zVf{iGJ0qC$b;)z^bE_B@DqTvAGG&!#<3Fs)Q^&1~O*>w)(BoGdFEdO&?l0fd=jh`)BmZ34{!xKg(#$;KU=J@7INo_| zYL~dFTztU)i)JelhlxQf-qbH|j!U*t5n^M9yc#^8#gp}Nswq3u>V~V41aAZ?HZ800 zqpus=r^K7JrBUd+$Q2kUoOOgw7G15&IO^Pb6f{0%G-BhMB$Bc z6)p21H+lB?KrH+c_&ZLo<#%RuPKZjF^#glYBCzDuXjJKm!i;u>E$4L0s|P4`)q=w;xlWPh^i7 zPtt8u5gYD%=HvIO`$aSGVR@#ROnR$zy5d6m2p%j`#R!u*z$biC-J9)rdu&uvh_S*N zV+6P(9bfd%XJ?Z1&n_*EQqsO-lHKzzZ&!eN4@ZF)M2e)5r{LAxq@b4>JUBCx3Siea zj=KJ@!HJEn^lThnN>b&}Yu`rJbn{CdMcSIH7Q*2kyx9*-bE=07hJ}hNqikfQIP8AP zdU=(0IRuRix*$arr_>aWsugpo=ik{roT=G#`Q`6}D$0rF({VWX(?(UAUdbt~t7e*j z#&f*RC{?fcS-q)c5>?_wD9g;f_{9jHu=$>b2WFK|u(PFX=m`F#U6Ms8hS{TO65gia zar_1>$$Di)&zCzp5{-g~{d*VEyHr{QeMED91F&z#aKCJ_-yx4ehO7S^QQz&3!_NXa zNf(J-;KWQ-7#OPM$ruRm#vZGC%jvSz!B#UgE}Xn4Wv5<-(iSPD;E`Upg){CNKKtMu zu)+8y>S@`r`hhV^0_cP=mbj!I_B3xR@0k9miE_8|;jy{gDONBCR%I)}sJV(<+MTTs z>plaavH6tHkO+K3PCx%!4iL_rBK+CuYU&HKXB6!GkqrdFxFJ~{Q)}wXYq)V zrB9L>x!dn75HioV%Gma`A8e*J8+dYx-SlxazxWkkFJ8$i53m~Cc(%W?CN)6lt+*p#QDTl9 zeS6FI>*TG9dv0auyL#z54EV|mEqif1IA?<$Uepv2*>||=&Kia%m}O5II`7qRJg%yQ zj8)JJhS*ft7}yQQM_E^N^fyF-rR;#E(2fCgF7GP^nJz}LwAi-E_a4XTd;{%l9!6=` zQkc+ks80^OgeZ|=*g85>r6HfDY1?GnMR%yF8Y zOfj&s?1lK?0*AMS)b@-7ZsOu8${#XBUA*DZACss_taPQZEZHd+0yXVsj|Nqz_(j?r z&1R%k?6Ot+U=5d_HU^aen@iX}7}yk(&z6(`{p^f6hX;;7+9zA9M+Qs_H0r!tvol?@ zKjc7>mWBiUsWcsetIA3yH3N|2o6RO@ug>*A=j7$C2Xvl4W9u zUQZV*oBSx}yd&dPXEim*Q#cB0Qc?8jf0B+P+nakXBo9XlWd7 zsHzrD87_6+uXyd=69wJ`Yl@bwLesXzSSwsKDTl8Q9@h3?{nW}3U1O<8$*a&|VALh` zkqU~$gh1N*AU>oX**=_f^pH));e9%t18X1k1xmS#({r?695Rj@G<$t9I8T zZ#-+mD!?d^I>sKil|dNwS|yeB>zL=qT}pt@Yp)xJ^U8qLLO=*?wW{t_319GlLx=1uZ?a5F|f9g$rYnP3l59iHHwSfeB>bg9Ss;a7LY5T_0=lOo0@B6;LKYnrNKG${KpZjy}lbmzqcE)uX!_E>z zP{#;Aw_}Pgkc4RQ1d)xY)Et{UgF;5S{7=H|wflr}juZ-k`~*v*BoX9mlUCFA+6@(V zu_w$q%njw7wZ1o7cc?6SbM1DQ#VzJbb9}QrJ8z;*)Uus2wFH^7?)Y-66zqomgh3RqHMZ?b@j_w_lpeA~6Sa1FS)$tAEe2Y8i8pn^YrY9^5y2y}CZAZt*AY383Jz_Lh>X=%OIR^(Cad;0IL(%eBm^>#raI ztlw>tPW!)>ZwtGk?m-ebbE}t}*Dw+ORZ8H zlifuLJ$$$>*oVQ}lF#J&RYf&_Tv3qc<@fbPGyblkqXXlrKKcoeBr#}4^;0bYF=}$B z{4rmMkU%<$nSeaxy^>;>UxW0LxtmKy9j|TQv@WEY(3! z5uumUfH5|m-2=d;-91uzQ7SIwoDG;_n%g*R7d1|{mOog)ysYaZ|W|Vcrc_kPoFK! z=w>wzfktJY8Kw-mvDX+0*DVDxbQ^1;Q<{73KY+WwGG!OmSLaN$Pw{6m&dJ)mTZnwZ z=4h4{-Xv)KU|7x2@Qk_Y6N{R=ao{&ejwZG#>%(N^rd>BA)7gO6lBSouA*Cmyz<)%o z-i3s611S4WU&~1Dt;mveXF-58Pe^enuv_#l?uRw1v#|?&c%yIUmDa+E8H-T=!n6q6 zlOW;O+Be{_j0>>bqz4wNt%BD$?%0^5e&(x5zL!WKRDstP2>WK4D?NQlg62L7!U}6B zH7miAI?pA@6PBVJct+M9S=O#1WX_aPRnA7J;rrJmCgMC8et|vl1#}G3;Z+MUzHBqu z-r&cb#APW6DJrWj^RdL=IJ9i~#gB{MT>6qDZuv@aaS0ZQ*PNgtTxLRHgx(N5Z>{w# z4vHn%cNel(bhc9C5=)P-t~16tM`WMKP8rpO&fMi$jCMh#kKDR%@(CW*)u_2nd=A?( z!|O_0obt&Q;NX@ zmz!Wi_lh5zy*FFxR*pM!01ojO!QLtcm2)K8WLl~% z6dc+ka(2&~V@XW(bIMk3yogjnj<@a`?ybDa3~ca~hPw>@R$n_&8i}`=v}4h7E1ypj zgxTf%+qdcC1B`yFRl2&ox@f79k$Gwgu`$~4l2IEvk@u_%UpP=nh zs`RsBIMM9(WZO8_lsughib-6suvj!X!qm%uY+{?hx;@CO^ zNSb>?^$)8DWvaj2YIO{&>D zm`E{l=FX$vfD%UKUEDj;mk~l)E9HSX%^c0FDFhBY3?|N^A|()LVQFIW?E>}r#W(o^ zwecWqjqL^UhPw@iqQO~FbP6f;=0@MhM>uxN$;jC^w@<;J!^`VZ>X$6F9vLJLccf;U zPc=TKFGz70qBba5!`?K#&~nH|_c28(j*%(+?qTP4HAFnw+JX8wUHElwSWuNa%h}aqbvm#YNl}CKP<3E*U^;Rz?FShMQ%xQzsnaCFfZFmK+t3g zkRC=JNQF2f50k(CO#fb*xCe;e zl;Z2SpsxYk{kF&Y5zM#0=otNWaVMzvh9@d7tnq`xLfIGot3ilbj;BVNw-OI~Yw#=C zlGS#VGh32RUhnwn_qVY`!B4dBCvcv~w2 z5xmtW_7NjUwyLmksIYO>75mZAZf`qn(1**EJ3i4#wA6Z7q@};m8wOqmVFM#U?(|i) zJR8v-+z)W8FOJdHOQ?OrjP=8uYv#F^=rxvGi_D6XL2il#vIamzdKVPnjQzuI6Ld;f ze3Q2kkcK?#+B~ITEeo6WTN&=mPjhR|+>4qmz68;g-U|!cQY-#dPOmt>d%B(Sg zo`E>#H&ofPw_)BVjgHZUKZFJrvb*07+0x!ho;|hv76GN;{aJj?BI;3IQ|?;yFy6Gf zYlaW&$(#?^bqDpO)P`~FF)7pZr3;yTLzM5QYro{R_*>w--LFx-pDB7;J*l;GnE5Yd z{^xA{X*ID!@qRp)c;A;MUy_xY zeAcyJI`!e^r*Pt;YQ0~Q&46eDql@V(>!spMohVA~3!T?Jw5m4@bJ);6Ph1Z%dzqqA zag)?UX<4J=nRfY#5ObNp?V(B0iss zZ55MxB0vL}slHa-^M&9eRWWF^kWL0+MyOK(w3kk*4%8^+!Egd^AYys&e-^P7hG=ib z6@dyv*Th&J+@HlcgfhGOyc5HWP`kcP#t<#B^B)c(;Sjxup{qCJ^54DA;UFRj6U<`e z2-yZIHAT~CGV}F3B4o~Ff(6uHF`!E?)HpPqss9GV7N&;Eg@IJAHSa8!ZI-)K$|tS_ z_{JnpZ|m)zdH)8Gj<^ccp+z`5nNWCdwIi8 zqewz8EvHQA7tjze)(fbjLxI==|09uujM? z(s&UjrHxG9cZ*#E&S||zdQwTO*IiQYz^}~EGw&HXrmidBRb7(z5|`e%64>5DUE6+H z3iIBN&DgcyiF|HZIv@Q9sJx3E;r3w9If0a_q?hWeNl|OB} zk%C06aap>a*zf;a&byyOA_X^ZP-FK}8~?Xp|MdF{b%Scoi6T(aw`7+*GeV@%^MGOr zgsC(`Zf5w}xm5G$d?ESdfl$zg|F;m;|0#xR=eqtM&|kI3x#^GDgV>RXhyM-vyCYHk zyZM}pI+DCd@+guVv(qb`dR|du)`?XWvHD9*{Y(ARdftFp@BbTeE}b7l|55+by3;Rt zR7{Q;3c1WmT}4!g2OehU9Q=P>{pmL3+BLVw>bcVA+HNn&8sL!Y^%nE=33+i3k$31X z+y6o6`VFXjeSX^w12G~gDLE;{-w_ASuV^z0$TH|!5U*k5Dm#W|4?gqjY?#Zq{u6CL zTi~Z64A?0}u{aCg$Onm4-coMJZnSqIB#T|$faS8a-%mn@(A-#zc4AF(6}RPG_$qW| z_uF_? zg^?b!JXFQcyEt-5eHzdr_Z@@O)a69E1`gO+Y@7CYaN8P=9E?(_O_FW4l%xn{z;U;Z zLr&W6qk~3q8O6ctb6s}(a=sF`($(4|A;PY@oZ}{R;>=s|8qun_{kojcAI-@IG%E># z`H30>0TKyY-`Q9iRlh_R>hQcu-5l2xQfyl?M-)p7Pn;T%P<=lDKfQf$bJUW;PIt+t zdTT1v{)TssMv?_N7YCLpZdqw?jFvX=>NUla+{D+HFGr(AJLD4MmoPHjtg51-lexpb zE`pL@Gm+k@uJzjqMcmUurm@gdmRD_ITOT-Zls;O>7jw znsjD5O;Zn<^%BAG2cDY=2*%5D!FWi2<8d#4lRK%;x!6!ZqFR*xxa^qDA-k~+RR*mR0o+tIR&%iy<3naZPh zp_bl#te)d=d=^ep!MoDayo?ifmz8$ZhT8XeO>5^Dy1=dd-fZBr z#`wJ3_kEG$McLOvNF-|o)g)`}RG>t%smwYyXPY_MqAtXBdfS+`~ee#JGC*511MG(R3-3!zu;GNj`{UlwjYAz7nw}v zCo(oMNl{6r@Rj7-d#jF@)f+giBV?9!2saIoz18Hw?X_zk2DQ@Gd_q543TTcdn~}1X z&{ok{*$A?DJ}@3uJfyU+eZGCUp@uQpSg|sAtSVDm-sW;3Y>GIIc4d zGO6GG5hG&@WovZ?|D;gxQVFh^(A(a@px3wLD&4!syID3lH>@bF3iiBThlX+;(I#f* zP1W3tJ6^i#l_(UI|I>gfR9KEnqBDuG=kNebKa>sBImH7iJob4m>+LAbn_eM?jv zBW!*aF=KI3nz(xQ4E%_?J!$G^lEm821VyLoIo&U3(3^1*dX@7hLgA8f?AutunnY+V znf1_4Oy{FG_4u=|tS(R1G9HoPx$56F6kki~{bjK2b?erfsrKea`;LWTGzz-Of%=^W zw2JM$b{mc9>e4Tn1u6*sstMwCEmp1)wbCp+9qQjw)_uIfo+zF@&BR3TaUN-T?&#hw z?Km{kUoT4<(xk^n&^>K$`~Z|xtDR6ZI}2C3CWwlyKYNjo?dcf@n>r9r9!zd9Ccw)e zZ@ceeD{$0M*Zr(!L1umAcxMQC#Bm3Ezp}TIY27n{$&9HaDa%||=PFq#aK_iIn}VL( z>Qr~_eKv$~_ixTv6vdf)b7$1lz`X^9g68_oY?X}3Xm?~@46dl9r=dAnAoqIJMWow4 zpWOo%f7-??$36E^p^bVMunuztSse7CCvH0Z! z4v9+?lIyAr@4bt-ViQ^4WxGxW2`|RA%JioblrA;pd%O%HpDQ(A9^cbv4Rg+j0PR$Y zhFm@KeeWop+xP7R3}2B8Lu(5kxaPj(Tm!N9rIv|->Pxb5f?l6~0$c4Y-C3&y?OKEO zo$sJTl@?a9T2om@WGt6Z(Htu@_}G?y+RX-0g;E3JoSr{NxVf<~bRbQS1UE%#u*`7L zQB%9hUz95Xw@-Rxg`Jp5D5(vK@84#A5mH!_?^ZR{P@%^;PiQzZe?^IIv~3<8knCr5 zDbpbaoY0HcL~dSQ_1kKQNVzGaB} zyR1ruXE0GY3sNiOr=P5x6pvYynuLlVALJI24S775Z<8L%YuS-yuHO)R^lbUAm3X=U zv@y;@GWzNbfAy2AXNZZ`X{)J7CdpFTc1L&4Bqftjv9&~-$k9#4Zj0?I#}p_gSR%V( zb3;B>p!u>>fe<{O+y!^GX=L32ksh|fbfA-)6H5(kj$WpC7OZTj=PX{jWOO!B7xpROzKgrUI&;VBx9Vl@^9K1oZcNZ495 z&Rc=HNcIU^2R>a878kE8!E&IuJF14TSt-B#i;HG1n!ZIOBiagL%>#mGg)Of(KBH>; zrGLa>gBTrXE);g^ha0I__GxUaDHOOq=6MXp;$Hm~G{H`{D_BOBvmft$-Wk664}n^K5t{>nfs|c=0A}0H-4! zo-);OA9lIsefdFY3N60Laxd%(ow0DI^008$3dBFYTh{ncM1WKey=9V8oP9u%z@hk< z%$$Xpaxm#)cAOyUN$*xoSRYTYb;`ZQS-KJ7OSM~x6kmm1J$DxC67C!6n~?>`tg;kF ze0|8tP`dIea@hQr&z5o&JxSMgIPINsCbtr^6SRT^na3NAKHCM;1zFFX@sr!@4~s8U znSi)AuEI>DIz=T4JGih^Cz2L=c2cHx0ubR44RP=;@^$u&JJInh`rhWAjwgavf(2L* zJgwj{JBmuYu148hVI$ypjtfB?RXyNm=~M>7qqsk@$c-9NQ8SDDfgz(=5{kLN+_}938q)hTSvHG3 z!O4kvdSz@T6NJ@@+quGhMwG!HmA2+hCX~Jk%j4g2wM{L`z*wAGj#m(kX(uG`o5c{kq&Wv4?^hg7&c!HP94`yTB-k6uzVUkUww zp9yEa0r6SPSDR>KnF(BM@tAw#8uF^Wd+lw){uh3e5Y8MiQWx-(!8>oQ#o-;6mCxwR zeX==%t#mu4eP3aAc4xK{Omr-baLcb4I+Gwim$*kcZaS1Ti>D}g?q_v5)+$a&5S_x5@dNX<3_0#bg0*D# zHn(jyPV+2NVj3sFfO09IO#S zD+(o0BelR)Dg9_J7XIdI2m}PwL3nGP%@iggh%#tplWX`5Xkfo)v0^Er${r-@OQ~Od z#F`os^#OQiRG1ltf;P6Q^SrQG`}lL=f=O+2$PbYiM@az%7YK*C>`*uQ5-4`Ziw=3n zZ`E&dj13^68tr#0^|qM7%G6&JK3qN{orTz7^lzHq%^M%SxXCGTqvpvYhWPm1sx@J6 zSY3}Htq9!yUC2~}3Qs-EvN1zM(S3yLiKm{|6GcU1Bbx%D6z@qZ(@@vhpP)pD!btL9jisYu;223(? zb`30ODoUW$o|F{9h~I$FbiZZAg!_hz*&PkIj|Sw&R3x8&=5kR`_6UkI`lww8;cnd_!!=`3h-xL*FVmvN^ z-sOsytS_ynPQdil^cI)K>yw7o;O>$iq=LKs0bQv0iHB+Ic zJn*KQeFCpKN-#}~xwt#6ot_1cnD;N%UN7Q*X7uGFZ_&&w{I=>S3Os0Mx&E8?xORM z#YB})hbBp-HupL3$xUsR9dq`uggBPW#!o#&@!rZ%Yzh-@ zR;V}iXOCZEvtb`)FfMg!usKMjz2IW!r5q8`h*N@|IJKz;(j6gBcrIp$B^RtRPaCd- z6|#88=WubT^9{#}HQmz#k2O^{*99*dPddLWV73gMHRHpS?m#nHPB=-gI1{-O--N7HYBM^n88 zi6qd-YVS9|bLN4`Jc=)Q2U!cge=ioy+6lvoGIxpGio5IECqiOW%aLX#ad_0WK6+Qk z#uL|Q4fAB)X}+e*5*%a{D&m-{nIK~6OcH9fj;G17UFH5BqTE4B-ZNwHya{53| ztoc5Ikrca%2>*ML3J!@_3ahwW>m7BY91GsrM9R6&9~;WPT<#JqHu%=7esgj{Iu|Ji zhHBJ?y{dt~z&d?)-ya zQ!g!@gYRvo=h2}lB$G39#7sVEoLnBi2Y+QDppnwa3?zsX>TXI^2Rydxq~?VBsTC9q z4x?L_@Vo44M%FpxY>1CXUJ7s|UJ%|8z>7?h97D3ejQwXzHwk>(H+A0L^LKl)BE4yU zD3)mzqRgSU+~(fYT&N#^eJ$IkFCc@zx%5s)kVH{`O5lo*>qT}OCnLRism5W5QMUQZ z%6?X^8HkKlYLiHSB2uk{rLx1&WJ|PbedFhEbb-)*!tx;(? z!`IiCu_AtcO2~2QPnuFMsRjp`^wfMqeumga&0&3!x_S9tm0G>3^fYWKzp$0fc09vP z2IY%*IhtD(<(wPHJ8Q zL9*r5<`?{JcHnM))TjbQl2Kbz6I}Sh*0S0DwFTIQg8^^jKe~tW8ILbD zG+bmlNS+#sQZTm?fzJ#X8Jzk`J0Nd_Sr2Do?{3X4s+y>$FnO*9Usrt%LNW)#NT3yp zef)C|T73<~jdn&S$y#QE>4oB}93t~It3UjtO;0c6rp>`nHM(CI*tgi};bi%`$_(bfsExCfw zLL5uuXrb&J$qldlIMin{FNXCWC z3gOP5WPMgA;F++NPq!;sVT?E=QMxcT^NEWxv5=gYDQu(<;boK) zGO28B&^1~EHz7J%?XQmFElA$K(l63RC}FwkH`LRUqXH`K6N*)^LC44y?bHhoLYImylIDTk<|Nt`r2w0hiD%q^_T$e6?5 z-tF{tu^i04Q$|XLuv5|m*Lz&l6-2dGQ(;=0XB=sgHK;fz9T^Xq8~h9skk8nk-{?$` zTafXeAG+?ubw_M2ZXNVpb{^Cg3$E>L~OX+4@*-c>bN;${<7Xwp;&b0(X6 z=;%a?R#q`(76B{8J`kI{l-c#w^*L#Kb(p<6exjmy%9lB&)UaEeLDb5$I+*RyH-6`h zrjeB3`RA-s3Q8&HxRM5kb}FxAxKXl{#|@}| z!Mq_0i+tBlqw6e_zphtO=ZaVmo{*C%1v+yE>)C4RQW=QHG2U-xm)&Bq$8|ssTt9$# zDsth&MvCOCu+zj(gD;_?iA`{L+3Axy_m(s&B@H{vg80Ey4BmdTqUUPN zAmqBrlJQH$Kl7;SJ^bvT?b*E0AMP|Gd4jdZJeE2}hSvBheab~*PdJC9H z>($g%G#hl8>|&U{XxYxyu^iRrtHkiXOez=UYY<1o2>=_{+42Oh`YqZxb31R#jY(x~ z;mC2gZ^d`s z+{3Bv@OovjzXv_4PJ( z$Gfc2fgQF94sHahItgYUJIR;o<YQa+)pI*Q!rX zi4Fq{3`B=dAB3NIJ-U`uROfv>rfnEou5mOvEq|uk`eNhVLPz^_UWA)ho4Y7rwsr{m z3xWy`!f8Oa>@QsvVM~g5gktD%w{E|#57B_PT+t&&+YTg#-1fr<8jApTKZ}6>{K4O- zpo9kdpc^U^g6M4GQajx}HrFOgO5)ekA+>dVvbU21ulAgVIvrG$UGa#6(h1^N|CC|W z&_kILXi5A59wl%BK|wp@&Rd4BLe~q4N0XfU8O=jDbM9U?!AwEqHvlpI`HGcYi@$T0 zM^n3}wTia~FKs7kNc)JC8!IA*-a-+XO^GacvvnxGz?3PTxSs54Xb!SaFqrs8Z#XXX zbwyl$!OVpB_;oRpaev)nkvo^Oty3#LeFK_i%7ldyUIrppR7AjQB}}O_Ebf74zz$a; zOUe0o|Ef$%P=f`9(A+@>jR&94fG2)15xxVzYXm|z^+|_KSVkNd5ju(wL_s@=10gQ5 zi(p`p;IN@{hCd}cB@h|EiBf?UKy|@PP?J#MlfeoTK>fJeSMCtk;+i@Cf_LUfOmv2A1e(hAdk9cDD`rfN|E79ZSxA&vt)=t}ciE)>|Y0d9P z{|2m`n)Mxjy1rlbZcTH7n{7{I<>B z%vX`+LEp4a_q9K1KBXg~%=*4%Ue|x{O>1S};FIQbS7dqAH?24O7xpxtUMtVu8+c>p zw688DD}t7f*?Nc#^_+{9DU&NXesYyL2SPa*6hA7l{)$GPJ*Ztl5IDpxd(0oSgXhK3 zo{~?u-v%oFVE92Bd_b#}G)z%$scp$e{L{92L#{pXCGHLIR^2CX`+#|r>xu4{xDCo- z`glHemHT|6S~AG`uR~Gmx0$0{zw7)0rJvQ0Q%SrUF7%Faoboeb8f8E5P_uEc|5~hmDkCz-owW3rXif>7eRXhQ;&A&sWx(`qqmgtp>vma_YPSsR_-LfHD4DR22j6VOK4yOtdl-j({H38S{#FPXBlqZS zmZ-ql5n(Ys6ESmcrHfr22aGb}?s-yZ1(}&AlI4WW}q+w9u26^l2$I^lr1rnq&mYkr9lx6<*Lwu8AM>m61xMc!WT-Sp}9uE?g5;{tz zm>%i?pt%#=To>3Q1R9z;l=R-U`?z0c zrqB?TUjpaDDKQmcIv>}W6_$tC_ZN~by#1_ia3h@%uQ#r}9b-7o*xhL@AFzh#g{8l~j#(=-_e*(?}+7KU*|Ldib6NAcO*ZEr` zJ~jUz>2HCAnV2den>_yiZU3)MOvON&3}*h5f#JXAe@PfHMHUE{>isX%zeN&?EFB;Y z2}t&<__z7LG6{4}2S5S_klEM$*Z99u781ar3yeWh*#EEnKN?;akSz+x(&1kP{m1ri zf!~}2fCB@Gp-lk%|F-`}hC%@RI8kD%4E}80|6c@<0R<%vl9-kQ1B!|HPrv^N#MBlb zKr%Rx+}=9|7(q+* zMEUDnD!nb_;-X|$fk42_|1f0f0PwCr3ge_+_65?A8Z20FLQLo13$I-%sS_)_iq41G;dIc;;DMf*7zsAj}T+G znpNcBzt%y);Mo%krr0~xRAFKm^W>lPqnH$`jrlJH5TKLg2m(^&r)eiXxSmPM;kV?*m|{_zwUO zg9H!&;puV}o&>6+(}v^nEya`?Cu5AIIX^SMu%gge|DI)k7$bt1Yns%`2aj@tSrVswH{pK(sgiXd8fJSquox^y zY68^pW>|IWi7~(sgxmij0I;L8X3_11Qc5pGm4?L>aQ;=3!VFB3czXlVzZm#azzR&{ z{ETirlTgx0+8Rd_1(28m)-xWX+w*4?g(LuKRJWyQ4{^0RZp?$aa=OBGLl^UwNxCt_ zb%6icMqLI1xLw~Lg8~DMbZTb&d$8y_ya{nP0}#DgoGw3}7RIHULjbU@3e*%`teGHJ zC<0ZG&?sPZ0L0urj9~sOZvZjPPaL?;$fqZcrfSYViv-k}>=~c+SE43jwku+$AW{GT z0tUp85VQ2~$M6I3-oPxKm>3j)j4qVn{HKc_LPBgM-VjH0xj^Dh4$%cLAc@BUkXRUW zfW(A9c#;|h9ipcKW`X$`bf6HTOalEYQxK4WgvbWP5beb8l*o@fKTL>DiAX|(;fY@g z(SZ})I2d@IJ_yNARAY3209^p)91jGL5W5gZ2xI^NF#sYz@tXx?5oHn}1PmqBCDueL zASsBSfv6HaJhA8kvp~=+;s>Y$CGKgYI>Z40iN6I90Fe`bK|vWvpa2wc?dO|AgkbmT?(!+F;;;z>J)PPp9|L?G|o%ta*G!?-n_@ZPJS#1wVNguC1fPh zaBZJrov(!4+z?m(XgB(p`0Vh99L-Y|YA-AwC%#EQk`z{ zcywY-k}(uMf;%9G)DD)yE`Fmh>W%dD<@TeQq;J8jdYoc zSBA*Uo%=$WWJ)2dcM?H<`Tyr{cIdt)!Fx!6DP*wXL&5pz1&JclXk{ijbZET9T+7RX$hI>=Z5k|X32U-$L8 zUvy3zu=t%%ei3iDJ-ZXcj%Y{dfayWtN)l1RTPAm`8(R`m_bbTZLjA~efVc5D+@B4{ z!3G{fl>SUan(ut^Grc%lt)vvU{DN86{q3?c4DsNMH!(539{gg?A;jI*ppT->Fd&VC z2BAH;qvOXTuSa8o0rwHZ8-mS}S24b9On2{wBTQ)A#BiQlcBpj(!IQACp;Sh37hH|C z6wmc>od`B0^`&VvbSD1{v5Ir}_<~mHq{wIV@pBIX%L2cm>Tu3M2>Y6Yjl04NmK_*X ze|!UH=Ek~TgwRLpMz*=@4MiNhV1;DNAZE56NA-S&bCzyH91_>c^@~CvS%j93cHK1H zbY}b$mEO|T;T7*2PD4tS^*yboeI_+GNPL6=R}>{Mc4>rXDCut~RuTJS9ep@qW-Ksy zP98IZE{qKai>x1QNOM16iTQw;IECR+Bf)#NKMuXC3nDUp=U-lU>+p zzl4t5+w%m?ad|-EmOody&arv)3Nf6jt7G1zKHUt&?}e+e7s?v)c`LX{2aj70O!*4z zm{OBo>3m4-g(zqi3s#@G)OrKCf;Yey-SFnefcP_fR;)@~j@60IP3$k{MoL0X3|9De z0M9?pjp*9U&u^J_#RXPo9sG&ubsnRT;kZrjak2G$!d22?rbio%d=j{DfMi-=S z4`!1^s8UQ(Zl9ae7Rr-}fGhk!?qG z(B4q0D0%#>_r+1WnOj9yq6qhGl~>VHkL%mLX8W1UwpZI`18C&#u?{j=1S{F?!?3MUU<3`6yDgB%>iKz6ghS2XO57Vu&rv>@8W z{ovD^r{SKmT8K5pO=++2o% z@W;vaJWYT2-6}fGmX<-G?d$QC{Ka4I?B!|R9u{)V@jutAo#jIqc-d#yoGJ*+>(6pY zASP6>;aXZOJB|nFV7fYszBdu9eb++ke<&FL%DMwJJK^XO3x5wr5Bi4=C%#~T`}s;c z2a5z+TU%QeA4Hu=piZW;(yAayrqD9N0J$u%)w63x+jotg;6(4qw#| zOYc=K^Z(rLcw+EDGw3znM8~b<`Ay;MmaOHyC~QGJaf9K*30+6K*UoHZh)9#g|5 zb_!%sVzc6Pj&bHgYzkHPC{1t!>6M;AvutAKE6fN4!f<^t3i7;W_+WSgjbO|;i5sp- zP6~X=SE5Yyyj*ya ziqsYhm2_DZY)w_@E*`3s_ZoLF;96;sHwc+HG?J}iP;kD$H{6{HBIdb}gE~X7?txV- z?RSj=XrOy>5dz~TO;aD^oh;eE(eyXY#I;u?|3dI;g*;5g4X{q}l{uppKh=E63T0mp zS30w7`8@l|yG%bscdoy z){}-R4=JuTkq;Yl#@Hx}N0fDsk7?&*7J{5pjA`gybEV~D`Y@M44_c_-A3PGhX7)pp zy_=EMBpD8Ozz9Zv4jRAd7w}!-)>rjCi>Z9>=Rc`9%5?SGpm~gH%woFPEZGN;Ju&1Z zIiu_<*~$r=L6oE?4yK68kT*&?@|L(a<2xX`GsJP_&<6{!Cu6mOtS|(2PGR%1GC;op z?7~stuH^--%C71gCPfAVHg9 zf$&O~juC_;a5c<{9;kR^zT&OEty|w0_S89)_6>#evz-S@exJxE9otKc| z%k@Lz$jaUQx~B_T=%}YxRWf;9ErlIbu+q*NQXK0!`~t$vsLRo*v+T&L`ZLR5RR1EF zv6XEvEyOA@GwG4;k8fC0j_2}Z=ARPUC|(X0<+uve#Lq<;DY_F_NiP!q!ml@0|27T+Y)@gN;gWhaFDsfP3%ckfLr~`eq4_D655ni`BWGvrag3qB8Ttk3?C&L8mUXt21Hd+;gc2h&sT2BUPeZx%LvPu|*A zaveiW3x^gm4-UhB$a&J^9T$h_ z%2%0Hx5(@a)RBL@fCBBhNY*S!4KJvFKEp+{p4XrFXPe9>G~em%jP#69PV+-Bev6~ zGGUe+*qw(5?LSi=bee&-GF3%}J%?bPLkR{f8R0#aOtt#y)O1|5>0LtBH^G81VVXi9 z81zQ6VT>EHKC1?SPbVvCkQ$w`-BE+dDP>EChb5Uf%a31S@X@-=HB_3bmrvo7qwC}~ ziyyZVy{8vqlj<>)UujKvUtoQ!&?`jzJEkoz5hxar1Wyy>s52_OHQ~TcOqAHEp#?J? z4;#Nm?QX7T?tA!x$)k0ck%e6v(KvH=sM6aP8(mDyl$q)2XYXNC#8YGLcZY`^=H2d< zO%}ujuR`jh3hI3Fo(f6vFghBHZKSew3D$fcIY{|@eRDK%)T;olxBQ96)tXRZz**h? zfr67Yu~VbtDy0MSO)Rvs?Dt_lG^K9XHX#kf*%n-7usiJuJS`twvB2Kfw9~u~HlRHZY%~ zmN0%|FC88bNKmGkZBiM_xGZ>T_{b=*H-N1Tlsf#ttw1lKS02%@i2xTNppTn}ymw3j za7D`%&pO3*WkpQ9lW*$%*npXUXPXS+yebZ1g~O+to*Np0i*mg;Aql5qa*77y&TtLE z-b=1Fd-D*O@&D7*TSmpvMD5yxJIvq^f(Ca8L4w2J?(PKl;O>JApyB^Hw?P&T0*> z=Utbhy-~$P2baax;T!kF`L8gzd#6|%NCgWhMMawoltRU$Kz+UbUsFiKGemv0|Iz!KRz})@HI;D3X(@bMMC?(O2L5Fs=fa$+FLju z21;t|A!z@fsy*P#til&yhRlAV?oFP(8&rm?7L%n$}pU}FJGiij$OIR0GpXOE=_ZIchve}E^vSC;CEzHk=C21!Q`3*(4o zn`f|%09E=g@&q-DL}k7XSt)V4LvlL-Vilxywzr_BFhzU)2Kvt<>b)l!L6DnBM#&^? zuFSNFR44ENZ41j1@w@zi1vymQ!YT7~gXH++eT=0~C=f+8$smY^fTKTYP~@VnqVcv8 zS|R%hrsYI;x!jkhyEeaY6n!WMF@?ROXsH+stNEz~Vz1TU;{rlK8W|0pA$Yw+a= zxAB7`xy{gbA?tO-*!#LoeRT&Px=|UuwmlnWJq2ZgzJI)w^_Yx|H(4^>;eGzJF4^Up zahN-FS`U2DA_B>G;%LFvw=mm}9ircP%I^*|%$9yo)4FN>28`@eo<~l_Mg4v{NiRkY z93pM=tPJ94ozIDE^Z| z`CQB%^o|TVQNHX~9aS68F*8Y1PrsRvjG~s#(y*(HZD|w4_aLx=qSu{D$FZdfM6uuczWAM4HG#k4?N9jo2e$lZMvBb^Js#H~7 zpDC-NvhFIt#gzG5P5HF!FCbkwZG0;Jkj*9Wk(^k}7c&h?j)CQo{?;N#z1Dm_fN7&H zVe(A*h`m}&5sN9@EQKrmoy=E!7SlI%BCUMw#ih--2UhR?DrA$IuoRKXXo%@Sc-t!bxcTZZVVT zex+hSDVxJ!dq3WO_dxKcNQ2!DHPLnN!kN2rYKNJ^QW^=rH|lLC6`QN<!=O z>+3#zH7W6qTwbxr_GJ^f%W zP!dk#u@mH?k<6iC@gyN3ZwY@a$tY7HGxtM6p=9HkW?^2W9pORT#YxR*%P>*KN6c&s z;x}tcg_N;mrt1N5&(k`Hu!)uxJEHnnjJC3>`st=R@K_`TUksPH%3UdZ)P{!3;0W?W zPWCYdKtH4MXm?H467lk92|1n2ZqxAsXvM`i*5otAv_ZRk#vCMAnpgWX!t=NxCD&4) z&3T41Kca`6xlK7Q>`oRBsx|MyddKdeuwq9N$P^tMoK4Kbyy1Mg*Dt<__Ime$R zW3Sbgduw^Q>E{Qy&X3^TjnIR|pqd$yvI+2)j|r=-Cp#H6W8Z8J=x=e6(P z6;(>Q!N^+Pk8qu2aSEJFvY}2OYWtfEC0f{_QB_QFAA-UM?Tq%vgd-9o5WuCal?xw$ zsHY1Ac524F2?5Qc=>w#eaZ;JwB97@F|f0xcyqxDnL~Q$$an;`{<$5C zI68Y_d&I*cXI4-=JnaeX4A+Tk{|>d%DHK{eu{68#D$6^SL%ycGI<10Ms6H_r z*KHG8JzJHI3>w6DWrB$@x`=~?+3%zujKk^sy_}xs>l$y)1e#NP?~8rqMME5{Wz}Oz{>cP^@D^msiccrQ#-8&L^Mp{j8&ui}vohEvNQ`wC^sS<1a?VRoDpJ~N)RxiJ}M>lB7 zmUM3jQV_8DaZ8Uns7V%g(fJyY<{=riXoFE)`9u_LmZ+A$UqJ*!U>E>##u4vKp@^`v z^8|byBx3!tG;ihMbenW|`)zb;$yEJpGl6e~#OGO(zrddr>R546io0R!SrH$JyOVTq zWJ^c4HUjD0vkU}4>}DZ13U3A>^~JZ4o<$O*++rMJY6f(RLsEq$J5}*{x(1~gq3WJ} zy+>tk@DIvcw?8@6D7q6GxO%wxv)gK|mdQRdt!&SUj}2$hY2SiWAwB`na#a}jOm%9O zuv=@7#|sI)2zA~+x^r%jf9YwN<4wK7H5?Q94mw2I@u@<9CZ|brJH=s;;(cqB`&o(a z!>E!R$-7E2x<$7?$2hYHLh`-(X+BOit?Gmh2Db{4Wr|<2^Y_ zScDnzNZgmg1jdLl@s+36a{4+BJQZS_15T+Gsiqq5)b#J&Xx`beLqo376uK_4ONr(?SC6HID^-h%u*W{ z3GJOL|8&ClGRY{$eY#?}o%(lO2mQizwx%*iH#rjTt>-Q1_D*uY7C7=ROJVw!M}<)V zi$;c*?y&QD+r%X{-?$FY>NLx^D9II?S$s1pz`D&1e80UQxzuD&{oYkl|Ugz3u zAkO_=3AAekRn=g5V^r)K?Herb`;+rVYt7-ebtSvyVug+2$TWW1G8!j?RH2*cBedpk zf0EezZL+WIG<4LQFCu;p6pBO@n5@KdAkXs`pA&|1Ff8=Su}7`8PLsJpa=gn*-fdDh zbok3<^#g9S6s!B*(v8DG@bhYgxDWpex}lA8l<&B#f9q+&==+}{^6ywoMZtF1*zE4$ zgO$poS-E^=tZ)2r% zfW+Z}AIIrf+=FJ1+uW_!PzEgdM}d5^OPgPh2CR!Z*P$Y(4o~D_P)hyIo*}}4jD6_Z zu=Q~u;rA29Of5-Zu&wZ*gB>t&mN~^>U{uCInlD=)z#31dHOwJee^I%wTQ1rKBho>s za`_Ly^znRijXX55xnC@b8=PIZMvSZxvyNFglGpLR`E|A}Q zR}cq9twhbG2Tnyj&*J*LOS%(5FbsLcWnEGgxlX8BEllnn{P2H}o8zL;^{FjXxOy+V zHJ5Dlo^|!2a57oLEsLeNq0fuo#&&z>co#Xjomi%=qowYMl4po7u}&CV8XvK1$J?oK zx+{E@Y+F#caK*5w&6uy#sre1IfjZ0#y#TYJ_$KvUwPH3}nICCPv8!0h>E?bdaRzQC zIpXyMIpUGI!nP9rVQ&4?K&R@=(SuTQ^F{YxK;y0YlxJ4{h-$Bka-VA%Dt;}AkwN;C zu$}_UIM?tQ&x5-n*LAuVqmW*rfvKrW!Umcq?!#@x){zG5S>h>s@KFAlA&@HlzgZJr zX|r<5!VSQIvnt6L_u6|GnPm)=i_=Ok2G}{lzvI9Gm)v@=|T|>uCsSZ1* zSeC6JS22SI->kVu{Q7=(Jo+60(8&2dj#%gt%|BG}tt1af*{EdkgY+4;kaO4fm6ESN zRkrRcF>SZGy(EB?wz59jv6v6Ehcm#yq8hR??%eaLh#=-F_f4|jpJOe_aZ1<&i9%Cu z0TV%~BIxy`L+43?FjOqKhY<`aA~DoQxI@~Xa9Ar^?jx6EopIYRTX z^P|vV{1BBRp0)=!`PrK-GE4r1XcmM&Z9mc$2`=}fFR{Y_cMg~KfVDe&h$V3wxMMF- zh3orZ8y}y_7q{o|o|Xt~ZdskLzo?t=6PHm${c{qwTe*!o;)=8oF(hQVS%QU^1S)`& zr&pBzFB7E3z8XzlS&zv@hrA>$XhM{`ng0PYwe}ugfiHHdr9F{D z4I7GwjDzzS7LDPYmTa)6l-3vMstDEWr=juk&IGHl7kU@#VNiz989Lv=FZmAE*!7K@ zBs@LhRT{4%#jGt>aIe0z0F!P|W{jQ-obq4t;Xf`s9bTpAFbwe+oLAN-%OzE%jyn#P zGGDkohcpL$Wc+m{@|C<>FFyn?_$1Dq>krX+4m>=(M=|9koWygLN`lA5#KXpjn#bm8 z+(L3M`rsl+5?b69gdJS_my0<(;jwf^<^DFEShJHN8-utp&hh6^v(=mtjSSVw zM)yQ#H7*;g6&L!gI`#|WupJ%G=diYe$`rN>4Gzu&71Xv)GpaJ zNyOFfH@m`F#oR(_u_z?&RDe#Vjq;#lh`dcZ2u}v1Wg~ceo&y~eCu5z%FF?+v*#=v!) z#*gino5lr#6UK&FK`f+o*sOmpse z(5}tnayWkzvC84Jmk*RR>;V5{jbngPJNlLzs(u2}!ogXG`~NNN`liewQ zpYdj8Ozc*?Q0m#!oh*Y7F!ojaNONFm4jg_OO~A!MS)1_Aq1~WSh{v87>MzFgZ4c;8 z*O9HIZF}DUHq9U=y+K2BWZ#t|wyZ@+zn32}^9j3W*NnI7eawfjw>bxQ_(f1Knh=g9SRDUF znKZi;OA7Y}j9@1u_5BgHX3nRC+#!eIqM!d1ljM*)LGKvce@WlJ9D>qn(>N{8nOX4? z@qym;7Pu`9_jo|}FGx-Ja2O2(cLvDs{;nKfp5Gkmym_0|U*em;axjMy6dK6cqCsA> zs{Cdzkgy(5fu{7vI@Rc5*b>TK6<%(siF6lcalJXy?Qf`QLe%*Xx{tdVzDRm~=ag23@|~b430YLaS8pX15U4b_C}x z{I7{T66?TYCM7jvDrb|@b44mf#EaEvhfq;d{MN6PTRQtJM;c?4ZPw`h>R3h(e8DQ{ zH~Veds^nuHT;ReHJIiHH7CCVcB_@lrRZDMnJFX);t@|o#O1F?oqVgYp+7cl&>+W2N zV`J|Uak5rs)b=6c^aw6gU_B@^zN|sW$SqkEK}J@|gXz~|brGe4JH$c-DV>*HRHfbd zV}jJ|Za>4xPwNxrzLBXEmuRLwv(9B++1-;pwl>0&!1p&>#)qGzMrgo-#BT~|iR0He z7&`Tae=(%~rcfIi{CuAU9*5E>_Pc&KCEx(GjSQ|jGp-2`$x95u0@wnTl|TOG38_XW zc8bs}_=3U}%#hxfYqfpawZuSKkm&4?!TkPI_qXDqzQnI0+nyYh6&8PsanAR2e}Wc`k3xLg8Lbd+QMmhO;GkIRE! zPqU5s-NB~KD=GxOb{m&iIsssR2-^T{v(X5WKYMq29oLiesQV882ziS@UdPjozA>r|20iD?UH*{IW)MAE0EDCi;0h(~H*0JJp;{?eHG? z>{=jtRR-rhFZRm56kM-F{--T--%_t-oNmwvo$C^wbOmLml5&+zwN*l*t$M}$)6}l+ z0#f*7b2T%&9B~FlaxsH!k|V)qrByU}DGko{wvRofbOzk1l2Q6juk;O( zcC`5#$wa&!C9H3a+dHuy))lpB%*NC{+*hie(^ zdBTEmDNlgNT%=t-T>=`I4HPO{bz54w3I3Yc3Y8dJtH8DQMp&h%wxfm|=fuy33n-D% zjKxi4ZeBS7)SalZc0Gi~*YTB&nNi?@GhCve^r?52w5-MUaB(TOHRz(i`_;emR~6-;QEa0Br^~ z8IF@15n3J;Pj#{@=U^#E`lsuMyZ`vLr~!;7+!;i^%~Mg)c2WB{PT0}Rhl%5nlOcJ5 zU@=(6Lr)>8{;(uzQth*P7;e~?o`pYGj+PW`3G$!`6Z_~#Cuh7%+#^a%Jzs`Aa)gQE zJ?WpPY3;fCA0S5z`B4VV z{%jiAY?<%Hq^szSWi=IG5e{JJ7Uu8bAq&%%m4{8kt>Mtq*$Qq=95dW1BxBy)`gKVd z5x|B@7vN(L{gCYqxy{@r;E=K_H1s0oCgJ4G8@&WAO_P8i7_yyI-fw@3rNwispUoW< zn8-oesyDRN744RpXu>gC_8SFfn7PG2QCWS0qLz0Z2_MsKZ`%@(nKsCd+*PF-pD;S# zW}R=fGhSYjFc#iYHGz-26MP0SN63F8^&Tr%t>A@vD8z5P=P~1E&)kiuYZIeKbEmdd zLQnf;Rf2_?+PbLUyn~s!kIcr76rthiiYJ(E4JF(bJ7!yH2fCwsH9|3+rD%|c|9oQ9 z{e_9Zk?+RV9Mx6SY8I&iGNJd9OxZpO_&MQJG0XG zR6?8J=*4mp0a}atq%SPkQpaGz+<SGW|~C141+~=IyQz+j|G!Cy%KF!(j71p)^Cg-Ls~NGh^GX@x=v@+ z&=5i-FTFX$>0O%ETV@D+!?bwtWf$C>0f@o5>{*uEH?k@mjC7O1IbSt-nff2VwfHcK z!qF69`r}<%r1{B=jxPZ z=(>};@DQ6OO)>0~%mAj)v7>h>W+h|VT~iklogqNwEDsj*npLsTmsX;G!qTNYzsr@9@@4SvW%tYw-Q`!JY=0$uD#@-YXa$U)1JJjicpJ;; z#dvdu^d!qCbjihbM&EZw4zKrr-4D4ABhBQo(mj=`!KdctE-GczZS{PLoaLK)H^WqI zDTUkki7>_a%R7VP3HFrf?oRV)Uf=O@3=Q~yfWEh3_fL!i0WS)`{U%#=D$Po9faqQJ zR`q#kcU2`j54zMp!p^9-<0=&@4hEu{g?s4}@p5e+MR`}XovKr@ak{M7H4PL5Gk_i{ zvmQhXjjy}T1YsO6=1q)LCinyN0|Q+2fAer)%(1(<( z&m>nEZALo&mGnnBkgqa#iwCw{v)hp}A6d*#Vd(qDZ(vgPJfc>ATpKr%vd^vck z+TNaDuH5XoEE-Uyy?-j}sPcon*ABffoaRKZu(SU?fbhFZF>vms%*{b93Xs5e zF?!b?S}8^R$?~SfGy<2P*YTXOsR9lFv|0Wl;oQKZxmvV;vS!sQ(i|JUH;IGUE|4Txx_2WIpniy+KTbB%f z{h8^~k-Y3YPz$j=)vOij@zT?j?%eweCF2;frUe8(Kk#>Tj`cRXVQ?kl>CB7=iljFO zeDRr9Nt0v0<_X>_h+{omGP8g3%W@pLvLJP26}Zk=(T5tdgyxRI1oap}R(BAiZ!KYr zoBv+_1Nwa%x|-Bl;ZsrFLba7;%Oykj^kf9(6YtkN1R~*qDge+CEz#n8-a7KF6tR4| z3IwiafHG*LI#PAHwP2f`apO0LTyZMFDA1NHGR0rF9?3H|1!$ij+&wDlh&Ekv$T9%R zCEFy_a?;M?rpz*a^$wYqf7+0?)+Mo%R1(2CTw+`ZS(e(Fuf1H_*oeXVL=jWEEt@N{ zr42*R!YFkK6(_lc?VXYC$oGYc!8RW=PLFoOPP3=EXq0rbTsvSkam(AXAFb(4Kb0aq zYX_|B_tLA9alJ$(0ls~2EH6>Mj_dG+b7UGoO(6R9ZZSqUF-{=U-eldB+;;FEe=BSo zhK5_hD`LrF)KmYOC9^V9Wz4IoK5LLZuc1hSTG@{#>19t#bJWT0k$3s7A8Cd~}Yj?4HxrDvZEW(3sx>5ruwsS%T zvLqa8^bdpz^rl2_hMc#c9#BTw${Qw7{UdR2(Fn{p{_NvL9x1opXnX7N6oue>clox& zEv~4FZzX19hSh5IX|yfgbh)1bQ4R50R>i1`i|(JS)Zz4DedU!7cUoYuwfiMYdaM z&nmu+%5`#ash3$9kFQEhnc}U!gkQFNy|eQid*SoR{T45TQX zywMFNb^`9!jrJ!pa8B&y@-k|M36x>VQ8)4dy7C1f_puTM%&XB8Do59SU@cUe-Oh|2 z#!t*f#`Yi!=)KCw7>o;Lk#s=OA*?RQcw?zE?Ogk$5`$rRSM;iXgjxB*kB~@_huK$E z?dGtD9#!KHT0<2bA6|<%=0fGqi%LU@Qm)0A2maASQ9CJ+iw&M56?;(~SNJ1IC`5MF zdu&^8s5mW()xnI-eYEexEnV-EXj-XLvbaXf&VPgIR|!94b>+H{xA683SlM;kUR3uL zq0?Y^Jm<5)OJ_7E)}=o_3MO5X@mr)CbaTfb7O+hgL)t2ge~9s9C7NW@<{koQP&RFqSd6tPEBg;X>I)?EBAI=XukR(&Rk@JG z;5D3Oem@_wV}Ci`H)&uU=j3Q1>{eZ=?hFQd(@+ai?jN$2)MN`@@{g}_R*JzXRiLvC z18MAnMzZpmUaKbOF zSNT)8LArhW3B30FV`T=Ep-y)O za`%MwzNd_DYVESqk?KGb>>q&`&!SSAEWn+Of7m69H)#zUqv(;TYn_9s zzQaf9W=&y+1Zt5^h2aEj2}P;N)92JlK472vEgd{%LRj#pLsU z+7*I*rcvTSs)J~~?7}&OHVfH}0J2p4ONCUAyv+M_8kg5JzMq#d6MJa6SJ0a%?Ln>e zr7AzeA^uz$kJm`mYq{O_rm##a5ren_4?L+8oBGrsor8Fh8qY`hhKQ%IZP+mGTuiBiSVWiM1R(s^l7bFyRhQRN%T^9y#7h`M2fBB`Mud88RT_dK1R@)|*QB`9@hm+~9tXzyDTY5HlQ)~>(Ht^v43)%JGExEd9+{J(r z#q!NQ({D;|vhrLwinLuPeK1ZMix>fRz^dppDa9&k!{QfDzK^Ael_d(~?ozkZkMm%c z!l^U|EW-$}rdF#f2EIJUMRkouyk-BE8iwna-(l{cr6{Xf^NgD2SUV8?reF6!9e z(wS@SxKB2B68B>|mM5qgZSBi5;qYmK8;SH`IAPny4lI1ntYz|NW6?ObOXC_aQ0OLv zJSZpm4{OFnpfsZE8G**3u6~_$O!5e`;R<;OZ@3LP7F2n@gS5Y95kd|7f3!Y6w7m^z%|n^=e~ttS?4SWPw*;2?@iM|jr$yaL3u_r%HBN?>Dn57Fv+I^ zS>$qC2ooAJdKR||0Ra$bILfo)7ERZQ^#y)oG3{C!HyPZ=fP?n=lYl=xM+lZME(To zPxEgXOG5vrH9lwI#X3fKY)Tm}o!l2H3m1Xbjt&k3 zpO&W|=#TsNo$^;&Q83ytK*3LPn_?C0iBP_?eDBc*zWh(mcRAJ1gG5C)&-CzM`E%vV zhr;yqNP-cI#uEs2m~$H)h7YW)Xql<~75 zc_8k~UF_?!6_pz+EWYgO*v#%)RPr2kB}6#kI%Mf41;(Atd{T`rrhcb_ytejGGP)aa z@gG2D(fT>G?Om!Yw&rABjKEyb7#8;T(`1r3_Rm?DfmwSdWt6h?Ry@$H((K|5KUH zi~IG-KoI?E`i+<^JuZ61t?VKB#~E|JWui$`hpfXjkd2txxqg>v?}HTPrDY5)4Az~E z!#IYNtWPcV{~DS*q{YoD4(AB2&t7MHN{M6YS?8ZSWu9hG36ci8VaB zHtiH6gF0r$$Ot*7A0tjyQ-B5P&HKsKq}e~)D*2WzC&B#(wdnLWJM$ivoi_It^p+|6 zu$HW;38b-1BN++uiwnch>81Nb?B~nY)q%QELNs*eJQ>CV+?3SzH%5j z!L@T$c0jXMs^+T#^V({-+Z zU(+mN6{)RGHU89xuQQB=3KH4S#yQ`=D*4a;C0JoyuXDkyjPs-n`=UwhKfXc>7W$8h zZY6(}hG*X?2+6A3=XDOy|Ay1?lXb3yEkX8jlE6BOGn3nJiVnR7=S*Jb(|T!-OFj>r z-uv*LS3n-?XwdApROWZ`98y<5}`w|4PRGn45K`eZ|S6t4TsGjk%0cUy=L9o_-axZ>%V227h*1&d!teS)Sh zpg(b0vRoK@GpxJb)kbbq>t||OKAvNuZgphFMju2D&+wVQ@=9=9#(t^1N-L(Q*?OqS zFY&H8@?w`ks#;lwN%l`j0+ZGx_|Zh6a5KTTqT_ff&0Q7Su+mNQdiT-*+dM}c{cfAc zmbYLNuC&F&)~_+nD99Ao%5NjdMny^Zx_gm$6l5uHKKn9`J*|ZJ^g){7sCz}>LD*HP8hXpD6bLn z;ZsZD=&W;Kbx9gtVqn*o*$(FF*Mho4wykx}NPRc1$yk8)dQ37zT^;1jXG}8s5bs9E!GJm2k=>^e{I85s=zOu#_&8 zK^vbIjYa_lfyuT%*Eg$C7gu6SL6;8D7AZ2`8T6$}7eAFhHpz z|8fur%6d#M@)nvZ>pkc6|54{vr9g<7Lt4`iq#+=A1cdAc zd?QYK+X*RnZkA##WYaA6h5QkZGebhWdG+B|Ebk&1l&=!(AHT%>@v^WXI+$ zYumxR3F2(WgO&2Dpbm06?jg)443$Md69R|Gm0^-6zD^nyZ$Si&4uTYEu&rWzfpcep zs4Nu3H+(7=uO3%)$9&4z@T#{?1Nq>DU|(pA3kz-uSBJ6ho5P16zwYlM#((yALxUb6vxk%B9>)b7=gfwJQ{4*62V?I)lWUj(s{ zm;m+UU5eM0jKyYNTGfgM|ArBCq9;l(}33ywpmM zaxDXpI-IRoj3pet5KMviC+S2gADJ2iQqLnuPCU*hjX1*?`XtUs{@C<{|BmW9T7N!SEcwYdzIG8C0+gP$ux-^&wxXaB*! zvxI%{V9Qr{ceW1)WZ%riF6tc@0iPB2%(i4hXB64Iu3nd(lkEED5Rxa`P#86h)hm+0 z(3D2@%6e=dYJ3I8@C8Az4Dm3JGks27FNzxyhoUy-DWTD*H2kJfAc`F(%A|&3HU&vu zgwT!+0z23d_!iXjn-ai`NEniy2Ml{OFzQ=c_sy6f2{>B6PpTH8rjx-V9bfGiy=q&r zrOd{d@#7${Jx5}>Jqt?}5FoTq?f|PnQ_KAYVeu~-Rp}xB4j6#^naWLkvyNt{g5EI+sFXqbLLRJ}6 z`s=^!2I5VB;DADwY#Vtx{BjH=00O_!(DBy-vMe95C(z-0HZ zbFgt=BJt*YkUZl?d4($Epnh zF%VBhM>9(eMIgIBDV@#Z>qG0;JWizV9%%<*Bode;ozT}0VUG`CeEX!tlbbTWz~X%s zsjHQJUr@H7%}agDs}#+?Fw%LTkNgL~R4W1zpf)P1y`I`pjf!UJ{o=NMMDt2l zh3Wd`ul*waMWw5ZBi4yR3}_>&Ad_FwpZbE8TPWq@p{m5ZD8`k7vs4~^dm8%^oOpqI z0mYCOpH?LLnyrUUjn3rR!Us-<$*X0D1jd+a+$KSrh`(?fdabW5a_9>mgNNeApz_c67uYwu<#nTId z35yWKd7~mBjQ?xQ4csGzZG#RWi_eFT)3@3A!`os+i%&|Q|HmZr&F5bta2*3u;>`A4 z6|n1-{4x-%FuG`A#`OxF>p3Jgdx;XV8naxrfz-<&buB-sf{`}AstC>HIaH!i>3mns zg;$2}+b^S{tos?{g{-i`f~((EV!}srYJOGmepLw%(e})Ly>7Z9Jz)Rylr>_#1d0IP zQWKw7oihKQ#_%8D{rH_a4g#=$1b7`zkC+rS4_J@?PkV?nrTG7w9q3O1iKzCdC=eYY uX!&|W?EJs)eU>0L?C|>!P>KlkaXb1C@O4RM@l~v9_22o&$54m=HvT{8ni8V` literal 0 HcmV?d00001 -- 2.30.2